diff options
Diffstat (limited to 'core/CMakeLists.txt')
-rw-r--r-- | core/CMakeLists.txt | 75 |
1 files changed, 68 insertions, 7 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 0eb4900..a8386b2 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -1,7 +1,19 @@ +# We use a custom flag instead of letting user set CMAKE_UNITY_BUILD because we don't want stuff in 3rdparty to be built with unity build +# (they may not support them, and configuring each is very time consuming) option(BUILD_CORE_WITH_UNITY_BUILD OFF) option(BUILD_CORE_MAIN "Whether to compile the main executable or not." ON) option(BUILD_CORE_TESTS "Whether to compile the tests executable or not." OFF) +option(BUILD_CORE_WITH_OPENGL2_BACKEND ON) +option(BUILD_CORE_WITH_OPENGL3_BACKEND ON) +option(BUILD_CORE_WITH_VULKAN_BACKEND ON) +if(WIN32) + option(BUILD_CORE_WITH_DX11_BACKEND ON) + option(BUILD_CORE_WITH_DX12_BACKEND ON) +elseif(APPLE) + option(BUILD_CORE_WITH_METAL_BACKEND ON) +endif() + function(add_source_group GROUP_NAME GROUP_SOURCES) set(${GROUP_NAME} ${GROUP_SOURCES}) set_source_files_properties(${GROUP_SOURCES} @@ -28,6 +40,19 @@ set(ENTRYPOINT_MODULE_SOURCES src/Entrypoint/Metal.mm ) +# macro(option_with_message OPTION_NAME DEFAULT_VALUE MESSAGE) +# option(${OPTION_NAME} ${DEFAULT_VALUE}) +# if(${OPTION_NAME}) +# message(${MESSAGE}) +# endif() +# endmacro() +# option_with_message(BUILD_CORE_WITH_OPENGL2_BACKEND ON "Building with OpenGL2 backend") +# option_with_message(BUILD_CORE_WITH_OPENGL3_BACKEND ON "Building with OpenGL3 backend") +# option_with_message(BUILD_CORE_WITH_VULKAN_BACKEND ON "Building with Vulkan backend") +# option_with_message(BUILD_CORE_WITH_DX11_BACKEND ON "Building with DirectX11 backend") +# option_with_message(BUILD_CORE_WITH_DX12_BACKEND ON "Building with DirectX12 backend") +# option_with_message(BUILD_CORE_WITH_METAL_BACKEND ON "Building with Metal backend") + add_source_group(UI_MODULE_SOURCES src/UI/Export.hpp src/UI/Export.cpp @@ -91,14 +116,50 @@ function(add_executable_variant TARGET_NAME) PLATFORM_WIN32=$<BOOL:${WIN32}> PLATFORM_MACOS=$<BOOL:${APPLE}> PLATFORM_LINUX=$<BOOL:${LINUX}> - IMGUI_INCLUDE_OPENGL2_BACKEND=$<BOOL:${IMGUI_INCLUDE_OPENGL2_BACKEND}> - IMGUI_INCLUDE_OPENGL3_BACKEND=$<BOOL:${IMGUI_INCLUDE_OPENGL3_BACKEND}> - IMGUI_INCLUDE_VULKAN_BACKEND=$<BOOL:${IMGUI_INCLUDE_VULKAN_BACKEND}> - IMGUI_INCLUDE_DX11_BACKEND=$<BOOL:${IMGUI_INCLUDE_DX11_BACKEND}> - IMGUI_INCLUDE_DX12_BACKEND=$<BOOL:${IMGUI_INCLUDE_DX12_BACKEND}> - IMGUI_INCLUDE_METAL_BACKEND=$<BOOL:${IMGUI_INCLUDE_METAL_BACKEND}> ) + if(WIN32) + message("CpltCore: - building with DirectX11 backend ${BUILD_CORE_WITH_DX11_BACKEND}") + message("CpltCore: - building with DirectX12 backend ${BUILD_CORE_WITH_DX12_BACKEND}") + target_compile_definitions(${TARGET_NAME} + PRIVATE + BUILD_CORE_WITH_DX11_BACKEND=$<BOOL:${BUILD_CORE_WITH_DX11_BACKEND}> + BUILD_CORE_WITH_DX12_BACKEND=$<BOOL:${BUILD_CORE_WITH_DX12_BACKEND}> + ) + else() + target_compile_definitions(${TARGET_NAME} + PRIVATE + BUILD_CORE_WITH_DX11_BACKEND=0 + BUILD_CORE_WITH_DX12_BACKEND=0 + ) + endif() + + if(APPLE) + message("CpltCore: - building with Metal backend ${BUILD_CORE_WITH_METAL_BACKEND}") + target_compile_definitions(${TARGET_NAME} + PRIVATE + BUILD_CORE_WITH_METAL_BACKEND=$<BOOL:${BUILD_CORE_WITH_METAL_BACKEND}> + ) + else() + target_compile_definitions(${TARGET_NAME} + PRIVATE + BUILD_CORE_WITH_METAL_BACKEND=0 + ) + endif() + + if(NOT APPLE) + message("CpltCore: - building with OpenGL2 backend ${BUILD_CORE_WITH_OPENGL2_BACKEND}") + message("CpltCore: - building with OpenGL3 backend ${BUILD_CORE_WITH_OPENGL3_BACKEND}") + message("CpltCore: - building with Vulkan backend ${BUILD_CORE_WITH_VULKAN_BACKEND}") + target_compile_definitions(${TARGET_NAME} + PRIVATE + BUILD_CORE_WITH_OPENGL2_BACKEND=$<BOOL:${BUILD_CORE_WITH_OPENGL2_BACKEND}> + BUILD_CORE_WITH_OPENGL3_BACKEND=$<BOOL:${BUILD_CORE_WITH_OPENGL3_BACKEND}> + BUILD_CORE_WITH_VULKAN_BACKEND=$<BOOL:${BUILD_CORE_WITH_VULKAN_BACKEND}> + ) + endif() + + # Platform specific dependencies for Utils/Dialog, not covered by conan if(APPLE) target_link_libraries(${TARGET_NAME} PUBLIC ${COCOA_LIBRARY}) elseif(LINUX) @@ -106,8 +167,8 @@ function(add_executable_variant TARGET_NAME) target_include_directories(${TARGET_NAME} PRIVATE ${GTK3_INCLUDE_DIRS}) endif() - # No console window when targetting windows if(WIN32) + # No console window when targetting windows if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") # Supposedly the flag -mwindows would automatically make the executable use GUI subsystem # But, when subsystem is set to GUI, linker will only search WinMain and wWinMain but not the standard main (it seems like) |