Compare commits
No commits in common. "01697f9df4613ae004b59d40185452122c2f9fb4" and "10cb7970842b2081651c2012c588219cd1edabe9" have entirely different histories.
01697f9df4
...
10cb797084
9 changed files with 6 additions and 222 deletions
128
CMakeLists.txt
128
CMakeLists.txt
|
@ -1,131 +1,11 @@
|
||||||
cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
|
||||||
project(BillySheet LANGUAGES CXX C)
|
project(BillySheet)
|
||||||
|
|
||||||
find_package(OpenGL REQUIRED)
|
add_executable(BillySheet src/main.cpp)
|
||||||
|
|
||||||
set(PRECOMPILE_HEADERS
|
set_target_properties(BillySheet PROPERTIES
|
||||||
include/gui.hpp
|
|
||||||
include/gui_data.hpp
|
|
||||||
include/window.hpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(SOURCE_HEADERS
|
|
||||||
include/imgui/imconfig.h
|
|
||||||
include/imgui/imgui.h
|
|
||||||
include/imgui/imgui_impl_glfw.h
|
|
||||||
include/imgui/imgui_impl_opengl3.h
|
|
||||||
include/imgui/imgui_impl_opengl3_loader.h
|
|
||||||
include/imgui/imgui_internal.h
|
|
||||||
include/imgui/imstb_rectpack.h
|
|
||||||
include/imgui/imstb_textedit.h
|
|
||||||
include/imgui/imstb_truetype.h
|
|
||||||
include/gui.hpp
|
|
||||||
include/gui_data.hpp
|
|
||||||
include/window.hpp)
|
|
||||||
|
|
||||||
set(SOURCE_FILES
|
|
||||||
src/imgui/imgui.cpp
|
|
||||||
src/imgui/imgui_draw.cpp
|
|
||||||
src/imgui/imgui_impl_glfw.cpp
|
|
||||||
src/imgui/imgui_impl_opengl3.cpp
|
|
||||||
src/imgui/imgui_tables.cpp
|
|
||||||
src/imgui/imgui_widgets.cpp
|
|
||||||
src/main.cpp
|
|
||||||
src/gui.cpp
|
|
||||||
src/gui_data.cpp
|
|
||||||
src/window.cpp)
|
|
||||||
|
|
||||||
set(SOURCES
|
|
||||||
${SOURCE_HEADERS}
|
|
||||||
${SOURCE_FILES})
|
|
||||||
|
|
||||||
find_program(CCACHE_FOUND ccache)
|
|
||||||
if (CCACHE_FOUND)
|
|
||||||
message(STATUS "ccache found !")
|
|
||||||
set_property(GLOBAL PROPERTY C_COMPILER_LAUNCHER ccache)
|
|
||||||
set_property(GLOBAL PROPERTY C_LINKER_LAUNCHER ccache)
|
|
||||||
set_property(GLOBAL PROPERTY CXX_COMPILER_LAUNCHER ccache)
|
|
||||||
set_property(GLOBAL PROPERTY CXX_LINKER_LAUNCHER ccache)
|
|
||||||
else ()
|
|
||||||
message(STATUS "ccache not found")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
|
||||||
option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF)
|
|
||||||
option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF)
|
|
||||||
option(GLFW_BUILD_DOCS "Build the GLFW documentation" OFF)
|
|
||||||
option(GLFW_INSTALL "Generate installation target" OFF)
|
|
||||||
option(GLFW_VULKAN_STATIC "Assume the Vulkan loader is linked with the application" OFF)
|
|
||||||
add_subdirectory(external/glfw)
|
|
||||||
|
|
||||||
option(SPDLOG_ENABLE_PCH "Build static or shared library using precompiled header to speed up compilation time" ON)
|
|
||||||
option(SPDLOG_BUILD_WARNINGS "Enable compiler warnings" ON)
|
|
||||||
option(SPDLOG_PREVENT_CHILD_FD "Prevent from child processes to inherit log file descriptors" ON)
|
|
||||||
option(SPDLOG_NO_THREAD_ID "prevent spdlog from querying the thread id on each log call if thread id is not needed" ON)
|
|
||||||
option(SPDLOG_NO_TLS "prevent spdlog from using thread local storage" ON)
|
|
||||||
option(SPDLOG_NO_ATOMIC_LEVELS "prevent spdlog from using of std::atomic log levels (use only if your code never modifies log levels concurrently" ON)
|
|
||||||
add_subdirectory(external/spdlog)
|
|
||||||
|
|
||||||
set(COMPILE_FLAGS
|
|
||||||
-pipe
|
|
||||||
-march=skylake # change to native or your architecture.
|
|
||||||
-mtune=skylake # same as above
|
|
||||||
-mrdseed # be careful about this, this is linked to the x86 architecture.
|
|
||||||
-mrdrnd # same as above
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Wpedantic
|
|
||||||
-pedantic
|
|
||||||
-ffunction-sections
|
|
||||||
-fdata-sections
|
|
||||||
-fuse-ld=gold
|
|
||||||
-funroll-loops
|
|
||||||
-fdevirtualize-at-ltrans
|
|
||||||
-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
|
|
||||||
)
|
|
||||||
set(LINKER_OPTIONS
|
|
||||||
-Wl,--sort-common,--as-needed,--gc-sections,--strip-all
|
|
||||||
-fuse-ld=gold
|
|
||||||
-fdevirtualize-at-ltrans
|
|
||||||
)
|
|
||||||
|
|
||||||
set(LINKER_FLAGS
|
|
||||||
jemalloc
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(BillySheet ${SOURCES})
|
|
||||||
|
|
||||||
target_include_directories(BillySheet PRIVATE include include/imgui)
|
|
||||||
|
|
||||||
set_target_properties(BillySheet spdlog PROPERTIES
|
|
||||||
CXX_STANDARD 17
|
CXX_STANDARD 17
|
||||||
CXX_STANDARD_REQUIRED ON
|
CXX_STANDARD_REQUIRED ON
|
||||||
CXX_EXTENSIONS OFF
|
CXX_EXTENSIONS OFF
|
||||||
INTERPROCEDURAL_OPTIMIZATION ON
|
INTERPROCEDURAL_OPTIMIZATION ON
|
||||||
# UNITY_BUILD ON
|
UNITY_BUILD ON)
|
||||||
)
|
|
||||||
set_target_properties(glfw PROPERTIES
|
|
||||||
C_STANDARD 11
|
|
||||||
C_STANDARD_REQUIRED ON
|
|
||||||
C_EXTENSIONS OFF
|
|
||||||
INTERPROCEDURAL_OPTIMIZATION ON
|
|
||||||
# UNITY_BUILD ON
|
|
||||||
)
|
|
||||||
|
|
||||||
#target_precompile_headers(BillySheet PRIVATE ${PRECOMPILE_HEADERS})
|
|
||||||
target_compile_definitions(BillySheet PRIVATE
|
|
||||||
$<$<CONFIG:Debug>:_GLIBCXX_DEBUG>
|
|
||||||
$<$<CONFIG:Debug>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG>
|
|
||||||
$<$<CONFIG:Release>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_ERROR>)
|
|
||||||
|
|
||||||
target_compile_options(spdlog PRIVATE ${COMPILE_FLAGS})
|
|
||||||
target_compile_options(glfw PRIVATE ${COMPILE_FLAGS})
|
|
||||||
target_compile_options(BillySheet PRIVATE ${COMPILE_FLAGS})
|
|
||||||
|
|
||||||
target_link_options(spdlog PRIVATE ${LINKER_OPTIONS})
|
|
||||||
target_link_options(glfw PRIVATE ${LINKER_OPTIONS})
|
|
||||||
target_link_options(BillySheet PRIVATE ${LINKER_OPTIONS})
|
|
||||||
|
|
||||||
target_link_libraries(spdlog PRIVATE ${LINKER_FLAGS})
|
|
||||||
target_link_libraries(glfw PRIVATE ${LINKER_FLAGS})
|
|
||||||
target_link_libraries(BillySheet glfw spdlog OpenGL::OpenGL ${LINKER_FLAGS})
|
|
||||||
|
|
|
@ -2,12 +2,6 @@
|
||||||
This project is about to digitally control your character sheet from the book "La Forteresse du Chaudron Noir" from Bob Lennon.
|
This project is about to digitally control your character sheet from the book "La Forteresse du Chaudron Noir" from Bob Lennon.
|
||||||
|
|
||||||
## External dependencies
|
## External dependencies
|
||||||
Some dependencies are inside the "external" directory. The followings are inside:
|
All dependencies are inside the "external" directory. The followings are inside:
|
||||||
- GLFW: windowing
|
- GLFW: windowing
|
||||||
- Spdlog: logging the app.
|
- Spdlog: logging the app.
|
||||||
|
|
||||||
The others are:
|
|
||||||
- jemalloc
|
|
||||||
- ccache
|
|
||||||
- the gold linker
|
|
||||||
- OpenGL
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
#ifndef BILLYSHEET_GUI_HPP
|
|
||||||
#define BILLYSHEET_GUI_HPP
|
|
||||||
|
|
||||||
|
|
||||||
namespace gui {
|
|
||||||
class Gui final {
|
|
||||||
private:
|
|
||||||
|
|
||||||
public:
|
|
||||||
Gui() = delete;
|
|
||||||
|
|
||||||
~Gui() noexcept;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //BILLYSHEET_GUI_HPP
|
|
|
@ -1,21 +0,0 @@
|
||||||
#ifndef BILLYSHEET_GUI_DATA_HPP
|
|
||||||
#define BILLYSHEET_GUI_DATA_HPP
|
|
||||||
|
|
||||||
#include "window.hpp"
|
|
||||||
|
|
||||||
namespace gui {
|
|
||||||
class GuiData final {
|
|
||||||
private:
|
|
||||||
Window &window;
|
|
||||||
|
|
||||||
public:
|
|
||||||
GuiData() = delete;
|
|
||||||
|
|
||||||
explicit GuiData(Window &wwindow) : window(wwindow) {}
|
|
||||||
|
|
||||||
~GuiData() noexcept = default;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif //BILLYSHEET_GUI_DATA_HPP
|
|
|
@ -1,25 +0,0 @@
|
||||||
#ifndef BILLYSHEET_WINDOW_HPP
|
|
||||||
#define BILLYSHEET_WINDOW_HPP
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <GLFW/glfw3.h>
|
|
||||||
|
|
||||||
namespace gui {
|
|
||||||
class Window final {
|
|
||||||
private:
|
|
||||||
static void delete_glfw_window(GLFWwindow *glfWwindow) {
|
|
||||||
glfwDestroyWindow(glfWwindow);
|
|
||||||
glfwTerminate();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<GLFWwindow, decltype(&delete_glfw_window)> wwindow{ nullptr, delete_glfw_window };
|
|
||||||
|
|
||||||
public:
|
|
||||||
Window();
|
|
||||||
|
|
||||||
~Window() noexcept = default;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif //BILLYSHEET_WINDOW_HPP
|
|
|
@ -1,5 +0,0 @@
|
||||||
#include "gui.hpp"
|
|
||||||
|
|
||||||
gui::Gui::~Gui() noexcept {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
#include "gui_data.hpp"
|
|
|
@ -1,10 +1,6 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <spdlog/spdlog.h>
|
|
||||||
#include <spdlog/sinks/stdout_sinks.h>
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
std::ios::sync_with_stdio(false);
|
std::cout << "Hello, World!" << std::endl;
|
||||||
spdlog::set_default_logger(spdlog::stdout_logger_st("console"));
|
|
||||||
SPDLOG_WARN("Hello world !");
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
#include "window.hpp"
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <spdlog/spdlog.h>
|
|
||||||
|
|
||||||
static void glfwErrorCallback(int error, const char *message) {
|
|
||||||
spdlog::error("Error code {}: {}", error, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
gui::Window::Window() {
|
|
||||||
glfwSetErrorCallback(glfwErrorCallback);
|
|
||||||
if (glfwInit() == GLFW_FALSE) {
|
|
||||||
throw std::runtime_error("GLFW init failed.");
|
|
||||||
}
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
|
||||||
wwindow = std::unique_ptr<GLFWwindow, decltype(&delete_glfw_window)>(glfwCreateWindow(600, 800, "Billy Sheet tracker", nullptr, nullptr),
|
|
||||||
delete_glfw_window);
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue