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