aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt244
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()