-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
125 lines (102 loc) · 3.83 KB
/
CMakeLists.txt
File metadata and controls
125 lines (102 loc) · 3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
cmake_minimum_required(VERSION 3.20)
project(IXRay)
# CMake options
option(IXRAY_UTILS "Apply utils to solution" OFF)
option(IXRAY_EDITORS "Apply editors to solution" OFF)
option(IXRAY_MP "Apply multiplayer xrGame and multiplayer utilities to solution" OFF)
option(IXRAY_MP_SQL "Use SQL Database system for FreeMP mode" ON)
option(IXRAY_PLUGINS "Enable X-Ray Plugins" OFF)
option(IXRAY_ASAN "Enable Address Sanitizer" OFF)
option(IXRAY_LDEBUG "Enable LUA_DEBUG mode" OFF)
option(IXRAY_USE_R1 "Enable DirectX 9 static render" ON)
option(IXRAY_USE_R2 "Enable DirectX 9 dynamic render" ON)
option(IXRAY_USE_COMPRESSOR "Enable xrCompresor" ON)
option(IXRAY_UNITYBUILD "Enable UnityBuild for xrGame" ON)
option(IXRAY_PROFILER "Enable Optick for perf debug" OFF)
# CI trash
option(IXRAY_COMPRESSOR_ONLY "Build only compressor" OFF)
option(IXRAY_CI "GitHub Actions build" OFF)
set(IXR_TEST_CI NOT IXRAY_UTILS OR NOT IXRAY_CI)
# SDL stuff
set(SDL_STATIC OFF)
set(SDL_TEST_LIBRARY OFF)
set(SDL_SHARED ON)
# CMake Dev options
option(DEVIXRAY_ENABLE_SHIPPING "Enable shipping build cfg" OFF)
option(DEVIXRAY_ENABLE_OGL_RENDER "Enable OGL Render" OFF)
# CXX options
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (MSVC)
include("cmake/msvc.cmake")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR NOT WIN32)
include("cmake/clang.cmake")
endif()
# Add new build types
include("cmake/shipping.cmake")
# Wrap CMake general configs
set(CMAKE_CONFIGURATION_TYPES ${IXR_CONFIGURATIONS_STR} CACHE STRING "" FORCE)
set(PREDEFINED_TARGETS_FOLDER "CustomTargets")
# ASan
if (IXRAY_ASAN)
add_compile_options(-fsanitize=address)
endif()
## Disable user-cheats for Release/Shipping build
add_compile_definitions("$<$<CONFIG:Debug>:DEBUG>")
add_compile_definitions("$<$<CONFIG:Debug>:DEBUG_DRAW>")
add_compile_definitions("$<$<CONFIG:RelWithDebInfo>:DEBUG_DRAW>")
add_compile_definitions("$<$<CONFIG:Release>:MASTER_GOLD>")
if (DEVIXRAY_ENABLE_SHIPPING)
add_compile_definitions("$<$<CONFIG:Shipping>:MASTER_GOLD>")
add_compile_definitions("$<$<CONFIG:Shipping>:SHIPPING_BUILD>")
endif()
# Download API from GitHub Releases
include("cmake/github.cmake")
# Help functions
function(target_copy_dependency TARGET_NAME FILE_PATH)
if(WIN32)
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${FILE_PATH}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/
)
else()
get_filename_component(FILE_NAME ${FILE_PATH} NAME)
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "Copying ${FILE_NAME}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${FILE_PATH}
$<TARGET_FILE_DIR:${TARGET_NAME}>/${FILE_NAME}
COMMENT "Copying ${FILE_NAME} to output directory"
)
endif()
endfunction()
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
# Configure NuGet
if (WIN32)
include("cmake/windows/nuget.cmake")
else()
include("cmake/linux/nuget.cmake")
endif()
# SDK folders
set(IXRAY_SDK_LIB ${CMAKE_CURRENT_SOURCE_DIR}/sdk/libraries/${CMAKE_VS_PLATFORM_NAME}/)
set(IXRAY_SDK_BIN ${CMAKE_CURRENT_SOURCE_DIR}/sdk/binaries/${CMAKE_VS_PLATFORM_NAME}/)
set(IXRAY_SDK_INC ${CMAKE_CURRENT_SOURCE_DIR}/sdk/include/)
set(IXRAY_OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/)
include("${CMAKE_MODULE_PATH}/FindSDL3.cmake")
include("${CMAKE_MODULE_PATH}/FindLuaBind.cmake")
# CMake targets
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# 3rd libraries
add_subdirectory("src/3rd-party")
# Engine libraries
add_subdirectory("src")
# Plugins
if (IXRAY_PLUGINS)
add_subdirectory("src/plugins")
endif()
# Utils
add_subdirectory("src/utils")
# Editors
add_subdirectory("src/Editors")