forked from carbonengine/trinity
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
171 lines (140 loc) · 5.67 KB
/
Copy pathCMakeLists.txt
File metadata and controls
171 lines (140 loc) · 5.67 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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# Copyright © 2021 CCP ehf.
cmake_minimum_required(VERSION 3.16)
cmake_policy(SET CMP0111 NEW)
if(BUILD_FOR_PYTHON_2)
set(BUILD_DX11 ON)
set(BUILD_DX12 ON)
set(BUILD_METAL ON)
set(BUILD_SHADER_COMPILER ON)
set(INSTALL_TO_MONOLITH ON)
else()
# Feature options
option(BUILD_SHADER_COMPILER "Build shader compiler." OFF)
if(WIN32)
option(BUILD_DX11 "Build dx11." OFF)
option(BUILD_DX12 "Build dx12." OFF)
elseif(APPLE)
option(BUILD_METAL "Build Metal." OFF)
endif()
# Backend libraries ship generated runtime effects. Keep their compiler in
# the same build graph instead of relying on a sample to generate assets.
if(BUILD_DX11 OR BUILD_DX12 OR BUILD_METAL)
set(BUILD_SHADER_COMPILER ON CACHE BOOL "Build shader compiler." FORCE)
endif()
if (BUILD_DX11)
list(APPEND VCPKG_MANIFEST_FEATURES "dx11")
endif()
if (BUILD_DX12)
list(APPEND VCPKG_MANIFEST_FEATURES "dx12")
endif()
if (BUILD_METAL)
list(APPEND VCPKG_MANIFEST_FEATURES "metal")
endif()
if (BUILD_SHADER_COMPILER)
list(APPEND VCPKG_MANIFEST_FEATURES "shader-compiler")
endif()
set(WITH_GRANNY_DEFAULT_FLAG OFF)
option(WITH_GRANNY "Compile with Granny for .gr2 file support" ${WITH_GRANNY_DEFAULT_FLAG})
if (WITH_GRANNY)
list(APPEND VCPKG_MANIFEST_FEATURES "with-granny")
endif()
if(APPLE AND BUILD_METAL)
set(BUILD_GLTF_IMPORTER_DEFAULT ON)
set(BUILD_ANIMATED_MODEL_SAMPLE_DEFAULT ON)
set(BUILD_EVE_SCENE_PROBE_DEFAULT ON)
else()
set(BUILD_GLTF_IMPORTER_DEFAULT OFF)
set(BUILD_ANIMATED_MODEL_SAMPLE_DEFAULT OFF)
set(BUILD_EVE_SCENE_PROBE_DEFAULT OFF)
endif()
option(BUILD_GLTF_IMPORTER "Build the glTF to CMF importer." ${BUILD_GLTF_IMPORTER_DEFAULT})
option(BUILD_ANIMATED_MODEL_SAMPLE "Build the macOS TrinityAL animated model sample." ${BUILD_ANIMATED_MODEL_SAMPLE_DEFAULT})
option(BUILD_EVE_SCENE_PROBE "Build the macOS EVE scene render driver probe sample." ${BUILD_EVE_SCENE_PROBE_DEFAULT})
option(BUILD_DESTINY_INTEGRATION "Link the embedded Destiny ballpark contract into Trinity." OFF)
if(BUILD_DESTINY_INTEGRATION)
list(APPEND VCPKG_MANIFEST_FEATURES "destiny")
endif()
if(BUILD_GLTF_IMPORTER OR BUILD_ANIMATED_MODEL_SAMPLE OR BUILD_EVE_SCENE_PROBE)
list(APPEND VCPKG_MANIFEST_FEATURES "gltf-importer")
endif()
endif()
project(carbon-trinity VERSION 1.0.0 LANGUAGES C CXX)
if(APPLE AND BUILD_METAL)
enable_language(OBJCXX)
endif()
include(CTest)
if(BUILD_EVE_SCENE_PROBE AND NOT BUILD_SHADER_COMPILER)
message(FATAL_ERROR
"BUILD_EVE_SCENE_PROBE requires BUILD_SHADER_COMPILER. "
"Enable a rendering backend or configure with -DBUILD_SHADER_COMPILER=ON.")
endif()
if(APPLE AND BUILD_METAL)
set(BUILD_HELLO_TRIANGLE_DEFAULT ON)
else()
set(BUILD_HELLO_TRIANGLE_DEFAULT OFF)
endif()
option(BUILD_HELLO_TRIANGLE "Build the macOS TrinityAL hello triangle sample." ${BUILD_HELLO_TRIANGLE_DEFAULT})
option(BUILD_FROXEL_GPU_LAB "Build hazardous, explicitly gated Metal froxel lab binaries." OFF)
if(BUILD_FROXEL_GPU_LAB AND NOT (APPLE AND BUILD_METAL))
message(FATAL_ERROR "BUILD_FROXEL_GPU_LAB requires the macOS Metal backend")
endif()
if (BUILD_FOR_PYTHON_2)
if(NOT DEFINED ENV{CCP_EVE_PERFORCE_BRANCH_PATH})
message(FATAL_ERROR "Missing required environment variable CCP_EVE_PERFORCE_BRANCH_PATH")
elseif(NOT IS_ABSOLUTE $ENV{CCP_EVE_PERFORCE_BRANCH_PATH})
message(FATAL_ERROR "CCP_EVE_PERFORCE_BRANCH_PATH needs to be an absolute path")
elseif(NOT EXISTS $ENV{CCP_EVE_PERFORCE_BRANCH_PATH})
message(FATAL_ERROR "CCP_EVE_PERFORCE_BRANCH_PATH is pointing at a non-existing location $ENV{CCP_EVE_PERFORCE_BRANCH_PATH}")
elseif(NOT IS_DIRECTORY $ENV{CCP_EVE_PERFORCE_BRANCH_PATH})
message(FATAL_ERROR "CCP_EVE_PERFORCE_BRANCH_PATH needs to be a directory")
else()
message(STATUS "Using CCP_EVE_PERFORCE_BRANCH_PATH located at $ENV{CCP_EVE_PERFORCE_BRANCH_PATH}")
endif()
file(TO_CMAKE_PATH "$ENV{CCP_EVE_PERFORCE_BRANCH_PATH}" BRANCH_ROOT_DIR)
list(INSERT CMAKE_MODULE_PATH 0 ${BRANCH_ROOT_DIR}/cmake)
include(CcpGlobalSettings)
include(CcpPackageConfigHelpers)
else()
include(cmake/CcpTargetConfigurations.cmake)
include(cmake/CcpDocsGenerator.cmake)
include(cmake/CcpPackageConfigHelpers.cmake)
include(cmake/CcpBuildConfigurations.cmake)
endif()
function(ccp_enable_vs_analizers target)
set_target_properties(${target} PROPERTIES
VS_GLOBAL_RunCodeAnalysis false
VS_GLOBAL_EnableMicrosoftCodeAnalysis false
VS_GLOBAL_EnableClangTidyCodeAnalysis true
)
endfunction()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
if(BUILD_FOR_PYTHON_2)
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
endif ()
if (BUILD_SHADER_COMPILER OR BUILD_FOR_PYTHON_2)
add_subdirectory(shadercompiler)
endif ()
# CTest is initialized once at the build root; subdirectories gate actual test
# creation on the shared BUILD_TESTING option.
add_subdirectory(trinityal)
if(BUILD_GLTF_IMPORTER OR BUILD_ANIMATED_MODEL_SAMPLE OR BUILD_EVE_SCENE_PROBE)
add_subdirectory(tools/gltf_to_cmf)
endif()
if(BUILD_EVE_SCENE_PROBE)
add_subdirectory(tools/dds_to_rgba)
add_subdirectory(tools/rgba_to_dds)
add_subdirectory(tools/shared_cache_to_gltf)
endif()
if(BUILD_HELLO_TRIANGLE)
add_subdirectory(samples/hello_triangle)
endif()
if(BUILD_ANIMATED_MODEL_SAMPLE)
add_subdirectory(samples/animated_model)
endif()
add_subdirectory(trinity)
if(BUILD_EVE_SCENE_PROBE)
add_subdirectory(samples/eve_scene_probe)
endif()
if(BUILD_FROXEL_GPU_LAB)
add_subdirectory(tools/froxel_lab)
endif()