diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index ca9c541..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,244 +0,0 @@ -cmake_minimum_required(VERSION 3.13) -project(ProjectBrussel LANGUAGES C CXX) - -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() - -include(cmake/Exceptions.cmake) -include(cmake/RTTI.cmake) -include(cmake/Win32Subsystem.cmake) - -find_package(OpenGL REQUIRED) -add_subdirectory(3rdparty/glfw) -add_subdirectory(3rdparty/glm) -add_subdirectory(3rdparty/imgui) -add_subdirectory(3rdparty/imguicolortextedit) -add_subdirectory(3rdparty/tracy) - -# ============================================================================== -# Layer 10 (standalone, throw-into-the-buildsystem style) - -file(GLOB_RECURSE 10-common_SOURCES - source/10-common/*.c - source/10-common/*.cpp -) -add_library(10-common OBJECT ${10-common_SOURCES}) - -set_target_properties(10-common PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF - - # Many files include platform headers, we don't want to leak them - it's just simpler to disable unity build for everything - UNITY_BUILD OFF -) - -target_include_directories(10-common PUBLIC source/10-common) -target_link_libraries(10-common PUBLIC - # External dependencies - ${CONAN_LIBS} - glm::glm -) - -# ============================================================================== -# Layer 20 (building tools) - -file(GLOB_RECURSE 20-codegen-runtime_SOURCES - source/20-codegen-runtime/*.c - source/20-codegen-runtime/*.cpp -) -add_library(20-codegen-runtime OBJECT ${20-codegen-runtime_SOURCES}) - -set_target_properties(20-codegen-runtime PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF -) - -target_include_directories(20-codegen-runtime PUBLIC source/20-codegen-runtime) -target_link_libraries(20-codegen-runtime PUBLIC - # External dependencies - ${CONAN_LIBS} - - # Project internal components - 10-common -) - -# NOTE: delibrately not recursive, because this target can contain non-source files with .cpp extensions in the folder -file(GLOB 20-codegen-compiler_SOURCES - source/20-codegen-compiler/*.c - source/20-codegen-compiler/*.cpp -) -add_executable(20-codegen-compiler ${20-codegen-compiler_SOURCES}) - -set_target_properties(20-codegen-compiler PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF -) - -target_link_libraries(20-codegen-compiler PRIVATE - # External dependencies - ${CONAN_LIBS} - - # Project internal components - 10-common -) - -target_flag_exceptions(20-codegen-compiler ON) -target_flag_rtti(20-codegen-compiler OFF) - -option(BRUSSEL_CODEGEN_DEBUG_PRINT "Enable debug printing in the code generator or not." OFF) -if(BRUSSEL_CODEGEN_DEBUG_PRINT) - target_compile_definitions(20-codegen-compiler PRIVATE CODEGEN_DEBUG_PRINT=1) -endif() - -# ============================================================================== -# Layer 30 (final products) - -function(add_projectized_executable) - # Add a library target - # - # Arguments - # TARGET_NAME - # TARGET_SOURCE_DIR - # EXTRA_SOURCES - # ENABLE_CODEGEN - - set(one_value_args TARGET_NAME TARGET_SOURCE_DIR ENABLE_CODEGEN) - set(multi_value_args EXTRA_SOURCES) - cmake_parse_arguments(arg "" "${one_value_args}" "${multi_value_args}" ${ARGN}) - - file(GLOB_RECURSE var_HEADERS - ${arg_TARGET_SOURCE_DIR}/*.h - ${arg_TARGET_SOURCE_DIR}/*.hh - ${arg_TARGET_SOURCE_DIR}/*.hpp - ) - file(GLOB_RECURSE var_SOURCES - ${arg_TARGET_SOURCE_DIR}/*.c - ${arg_TARGET_SOURCE_DIR}/*.cc - ${arg_TARGET_SOURCE_DIR}/*.cpp - ) - add_executable(${arg_TARGET_NAME} - ${var_SOURCES} - ${arg_EXTRA_SOURCES} - ) - - target_include_directories(${arg_TARGET_NAME} PRIVATE - ${arg_TARGET_SOURCE_DIR} - ) - - target_link_libraries(${arg_TARGET_NAME} PRIVATE - 10-common - ) - - set_target_properties(${arg_TARGET_NAME} PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF - ) - - if(arg_ENABLE_CODEGEN) - set(var_OUTPUT_DIR ${CMAKE_BINARY_DIR}/generated/${arg_TARGET_NAME}) - target_include_directories(${arg_TARGET_NAME} PRIVATE ${var_OUTPUT_DIR}) - target_link_libraries(${arg_TARGET_NAME} PRIVATE 20-codegen-runtime) - - foreach(var_HEADER IN LISTS var_HEADERS) - get_filename_component(var_HEADER_ABS "${var_HEADER}" ABSOLUTE) - get_filename_component(var_HEADER_NAME "${var_HEADER}" NAME_WLE) - - # Things that are included by other TUs - set(var_OUTPUT_HEADERS - ${var_OUTPUT_DIR}/generated/${var_HEADER_NAME}.gh.inl - ${var_OUTPUT_DIR}/generated/${var_HEADER_NAME}.gs.inl - ) - - # Things that needs to be compiled - # NOTE: we need at least one of this to make sure the target is rebuilt if the generated files changes - set(var_OUTPUT_SOURCES - ${var_OUTPUT_DIR}/generated/${var_HEADER_NAME}.g.cpp - ) - - # Generate the files - add_custom_command( - OUTPUT ${var_OUTPUT_HEADERS} ${var_OUTPUT_SOURCES} - COMMAND 20-codegen-compiler ${var_OUTPUT_DIR}/generated single:${var_HEADER} - DEPENDS ${var_HEADER} - ) - - # Add generated TUs to the target - target_sources(${arg_TARGET_NAME} PRIVATE ${var_OUTPUT_SOURCES}) - endforeach() - endif() -endfunction() - -add_projectized_executable( - TARGET_NAME 30-game - TARGET_SOURCE_DIR source/30-game/ - ENABLE_CODEGEN ON -) - -set_target_properties(30-game PROPERTIES - UNITY_BUILD_MODE BATCH - UNITY_BUILD_UNIQUE_ID "ProjectBrussel_UNITY_ID" -) - -target_compile_definitions(30-game PRIVATE - RAPIDJSON_HAS_STDSTRING=1 - IMGUI_DISABLE_OBSOLETE_FUNCTIONS -) - -target_link_libraries(30-game PRIVATE - # External dependencies - ${CONAN_LIBS} - OpenGL::GL - glfw - glm::glm - imgui - ImGuiColorTextEdit - tracy - - # Project internal components -) - -target_flag_exceptions(30-game ON) -target_flag_rtti(30-game ON) -target_use_windows_subsystem(30-game) - -option(BRUSSEL_ENABLE_PROFILING "Whether profiling support is enabled or not." OFF) -if(BRUSSEL_ENABLE_PROFILING) - target_compile_definitions(30-game - PRIVATE - TRACY_ENABLE - ) -endif() - -option(BRUSSEL_ENABLE_DEV_ENC "Enable dev environment features or not." ON) -if(BRUSSEL_ENABLE_DEV_ENC) - target_compile_definitions(30-game - PRIVATE - BRUSSEL_DEV_ENV=1 - ) -endif() - -option(BRUSSEL_ENABLE_EDITOR "Enable editor support or not." ON) -if(BRUSSEL_ENABLE_EDITOR) - target_compile_definitions(30-game - PRIVATE - BRUSSEL_ENABLE_EDITOR=1 - ) -endif() - -option(BRUSSEL_ENABLE_ASAN "Enable AddressSanitizer or not." OFF) -if(BRUSSEL_ENABLE_ASAN) - target_compile_options(30-game - PRIVATE - -fsanitize=address - -fno-omit-frame-pointer - ) - target_link_options(30-game - PRIVATE - -fsanitize=address - -fno-omit-frame-pointer - ) -endif() |