-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
127 lines (104 loc) · 4.06 KB
/
CMakeLists.txt
File metadata and controls
127 lines (104 loc) · 4.06 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
cmake_minimum_required(VERSION 3.19)
set(PROJECT_ASSEMBLER assembler CACHE INTERNAL "")
set(LOCAL_PROJECT ${PROJECT_ASSEMBLER})
find_package(Python3 REQUIRED)
execute_process(
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/.github/release.py --version
OUTPUT_VARIABLE PROJECT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RELEASE_RESULT
)
if(NOT RELEASE_RESULT EQUAL 0 OR PROJECT_VERSION STREQUAL "")
set(PROJECT_VERSION "0.0.0")
endif()
project(${LOCAL_PROJECT} VERSION ${PROJECT_VERSION} LANGUAGES CXX)
include(FetchContent)
include(CMakeDependentOption)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
option(AS_ENABLE_WGSL "Enable WGSL support" OFF)
set(CMAKE_CXX_EXTENSIONS OFF )
set(CXX_EXTENSIONS OFF )
set(CMAKE_CXX_STANDARD 23)
option(AS_DEVMODE "Enable this for slightly easier dev experience where the app doesn't auto-shut by default" OFF)
if(TARGET paradigm::core)
set(PARADIGM_AVAILABLE TRUE)
else()
set(PARADIGM_AVAILABLE FALSE)
endif()
cmake_dependent_option(AS_PARADIGM_EXTERNAL "Enable this if you are including this as a sub-project of paradigm" ON "PARADIGM_AVAILABLE" OFF)
cmake_dependent_option(AS_ENABLE_INSTALL "Enable installation "
ON
"CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR"
OFF
)
add_subdirectory(extern)
# -------------------------------------------------------------------------------------------------
# Paradigm Engine setup
# -------------------------------------------------------------------------------------------------
if(NOT AS_PARADIGM_EXTERNAL)
set(PE_TESTS OFF CACHE INTERNAL "" FORCE)
set(PE_MAKE_EXE OFF)
set(PE_WEBGPU OFF)
set(PE_WEBGPU_NATIVE OFF)
set(PE_ASSEMBLER OFF) # circular dependency, do not enable
set(PE_INCLUDED_BY_ASSEMBLER ON) # triggers the right dawn setup, which paradigm will provide
FetchContent_Declare(paradigm
GIT_REPOSITORY https://github.com/JessyDL/paradigm.git
GIT_TAG 6ca48bdb443646119c4b2adc40b99d09aae688f8
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
GIT_SUBMODULES_RECURSE TRUE
)
FetchContent_MakeAvailable(paradigm)
include(${PE_CMAKE_DIR}/Utils.cmake)
endif()
# -------------------------------------------------------------------------------------------------
# Build binary
# -------------------------------------------------------------------------------------------------
include(inc.txt)
include(src.txt)
include(generators.txt)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/inc" PREFIX "inc" FILES ${INC})
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/src" PREFIX "src" FILES ${SRC})
if(NOT AS_PARADIGM_EXTERNAL)
source_group(TREE "${paradigm_SOURCE_DIR}/${PARADIGM_ROOT}/core/src" PREFIX "src" FILES ${GENERATOR_INFORMATION})
endif()
if(VS_ADD_NATIVE_VISUALIZERS)
file(GLOB_RECURSE NATVIS nvs/*.natvis)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/nvs" PREFIX "natvis" FILES ${NATVIS})
endif()
add_executable(${LOCAL_PROJECT} ${INC} ${SRC} ${GENERATOR_INFORMATION} ${NATVIS})
pe_copy_target_shared_objects(${LOCAL_PROJECT})
if(${AS_ENABLE_INSTALL})
install(TARGETS ${LOCAL_PROJECT} RUNTIME DESTINATION bin)
endif()
set_property(TARGET ${LOCAL_PROJECT} PROPERTY FOLDER "tools")
target_link_libraries(${LOCAL_PROJECT} PUBLIC
paradigm::psl
paradigm::core
assimp
spirv-cross-reflect # reflect spirv
spirv-cross-glsl # spirv to gles
SPIRV # glsl to spirv
glslang # glsl to spirv
glslang-default-resource-limits # default resources required to feed to glsl compiler
$<$<BOOL:${AS_ENABLE_WGSL}>:tint_lang_wgsl_writer tint_lang_spirv_reader>
)
target_include_directories(${LOCAL_PROJECT}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/inc
)
execute_process(
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/.github/release.py --sha1
OUTPUT_VARIABLE GIT_SHA
OUTPUT_STRIP_TRAILING_WHITESPACE
)
target_compile_definitions(${LOCAL_PROJECT}
PUBLIC
$<$<BOOL:${AS_ENABLE_WGSL}>:AS_ENABLE_WGSL>
PRIVATE
AS_VERSION=\"${PROJECT_VERSION}\"
AS_VERSION_SHA=\"${PROJECT_VERSION}-${GIT_SHA}\"
$<$<BOOL:${AS_DEVMODE}>:AS_DEVMODE>
)
message(STATUS "Building ${LOCAL_PROJECT} version ${PROJECT_VERSION} (${GIT_SHA})")