aboutsummaryrefslogtreecommitdiff
path: root/core/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'core/CMakeLists.txt')
-rw-r--r--core/CMakeLists.txt60
1 files changed, 51 insertions, 9 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index f2077a3..0eb4900 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -1,6 +1,6 @@
-project(CpltCore LANGUAGES CXX)
-set(CMAKE_CXX_STANDARD 20)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+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)
function(add_source_group GROUP_NAME GROUP_SOURCES)
set(${GROUP_NAME} ${GROUP_SOURCES})
@@ -11,9 +11,26 @@ function(add_source_group GROUP_NAME GROUP_SOURCES)
endfunction()
set(ENTRYPOINT_MODULE_SOURCES
+ src/Entrypoint/main.cpp
+ src/Entrypoint/Common.hpp
+ src/Entrypoint/Common.cpp
+ src/Entrypoint/OpenGL2.hpp
+ src/Entrypoint/OpenGL2.cpp
+ src/Entrypoint/OpenGL3.hpp
+ src/Entrypoint/OpenGL3.cpp
+ src/Entrypoint/Vulkan.hpp
+ src/Entrypoint/Vulkan.cpp
+ src/Entrypoint/DirectX11.hpp
+ src/Entrypoint/DirectX11.cpp
+ src/Entrypoint/DirectX12.hpp
+ src/Entrypoint/DirectX12.cpp
+ src/Entrypoint/Metal.hpp
+ src/Entrypoint/Metal.mm
)
add_source_group(UI_MODULE_SOURCES
+ src/UI/Export.hpp
+ src/UI/Export.cpp
)
add_source_group(UTILS_MODULE_SOURCES
@@ -33,6 +50,7 @@ set(UTILS_DIALOG_MODULE_SOURCES
src/Utils/Dialog/Dialog.cpp
)
if(APPLE)
+ find_library(COCOA_LIBRARY Cocoa)
list(APPEND UTILS_DIALOG_MODULE_SOURCES
src/Utils/Dialog/Dialog_macos.mm
)
@@ -41,6 +59,8 @@ elseif(WIN32)
src/Utils/Dialog/Dialog_win32.cpp
)
elseif(LINUX)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
list(APPEND UTILS_DIALOG_MODULE_SOURCES
src/Utils/Dialog/Dialog_linux.cpp
)
@@ -60,14 +80,32 @@ function(add_executable_variant TARGET_NAME)
${CMAKE_SOURCE_DIR}/3rdparty/imgui
${CMAKE_SOURCE_DIR}/3rdparty/imnodes
)
- target_link_libraries(${TARGET_NAME} PRIVATE ${CONAN_LIBS})
+ target_link_libraries(${TARGET_NAME}
+ PRIVATE
+ ${CONAN_LIBS}
+ imgui
+ imnodes
+ )
target_compile_definitions(${TARGET_NAME}
PRIVATE
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(APPLE)
+ target_link_libraries(${TARGET_NAME} PUBLIC ${COCOA_LIBRARY})
+ elseif(LINUX)
+ target_link_libraries(${TARGET_NAME} PUBLIC ${GTK3_LIBRARIES})
+ target_include_directories(${TARGET_NAME} PRIVATE ${GTK3_INCLUDE_DIRS})
+ endif()
+
# No console window when targetting windows
if(WIN32)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
@@ -81,11 +119,11 @@ function(add_executable_variant TARGET_NAME)
endif()
endif()
- if(${CMAKE_UNITY_BUILD})
+ if(BUILD_CORE_WITH_UNITY_BUILD)
message("CpltCore: - using unity build")
set_target_properties(${TARGET_NAME}
PROPERTIES
- # UNITY_BUILD property is automatically set when CMAKE_UNITY_BUILD is set
+ UNITY_BUILD ON
UNITY_BUILD_MODE GROUP
)
else()
@@ -93,7 +131,11 @@ function(add_executable_variant TARGET_NAME)
endif()
endfunction()
-add_executable_variant(CpltCore_main)
-target_compile_definitions(CpltCore_main PRIVATE DOCTEST_CONFIG_DISABLE=1)
+if(BUILD_CORE_MAIN)
+ add_executable_variant(CpltCore_main)
+ target_compile_definitions(CpltCore_main PRIVATE DOCTEST_CONFIG_DISABLE=1)
+endif()
-add_executable_variant(CpltCore_test)
+if(BUILD_CORE_TESTS)
+ add_executable_variant(CpltCore_test)
+endif()