@@ -16,134 +16,50 @@ include_guard(GLOBAL)
16
16
17
17
include (ProcessorCount )
18
18
19
- function (nbl_handle_dll_definitions _TARGET_ _SCOPE_ )
20
- if (NOT TARGET Nabla )
21
- message (FATAL_ERROR "Internal error, Nabla target must be defined!" )
22
- endif ()
23
-
24
- if (NOT TARGET ${_TARGET_} )
25
- message (FATAL_ERROR "Internal error, requsted \" ${_TARGET_} \" is not defined!" )
26
- endif ()
27
-
28
- if (NBL_COMPILER_DYNAMIC_RUNTIME )
29
- set (_NABLA_OUTPUT_DIR_ "${NBL_ROOT_PATH_BINARY} /src/nbl/$<CONFIG>/devshgraphicsprogramming.nabla" )
30
-
31
- target_compile_definitions (${_TARGET_} ${_SCOPE_}
32
- _NABLA_DLL_NAME_= "$<PATH:REMOVE_EXTENSION,$<TARGET_FILE_NAME:Nabla>>" ;_NABLA_OUTPUT_DIR_= "${_NABLA_OUTPUT_DIR_} "
33
- )
34
- endif ()
35
-
36
- target_compile_definitions (${_TARGET_} ${_SCOPE_}
37
- _DXC_DLL_= "${DXC_DLL} "
38
- )
39
- endfunction ()
40
-
41
- function (nbl_handle_runtime_lib_properties _TARGET_ )
42
- if (NOT TARGET ${_TARGET_} )
43
- message (FATAL_ERROR "Internal error, requsted \" ${_TARGET_} \" is not defined!" )
44
- endif ()
45
-
46
- set_target_properties (${_TARGET_} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>$<$<BOOL:${NBL_COMPILER_DYNAMIC_RUNTIME} >:DLL>" )
47
- endfunction ()
48
-
49
19
# Macro creating project for an executable
50
20
# Project and target get its name from directory when this macro gets executed (truncating number in the beginning of the name and making all lower case)
51
21
# Created because of common cmake code for examples and tools
52
22
macro (nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDES _EXTRA_LIBS )
53
23
get_filename_component (_NBL_PROJECT_DIRECTORY_ "${CMAKE_CURRENT_SOURCE_DIR} " ABSOLUTE )
54
- include ("scripts/nbl/projectTargetName" ) # sets EXECUTABLE_NAME
55
-
56
- if (MSVC )
57
- set_property (DIRECTORY PROPERTY VS_STARTUP_PROJECT ${EXECUTABLE_NAME} )
58
- endif ()
24
+ get_filename_component (EXECUTABLE_NAME ${_NBL_PROJECT_DIRECTORY_} NAME )
25
+ string (REGEX REPLACE "^[0-9]+\. " "" EXECUTABLE_NAME ${EXECUTABLE_NAME} )
26
+ string (TOLOWER ${EXECUTABLE_NAME} EXECUTABLE_NAME )
27
+ string (MAKE_C_IDENTIFIER ${EXECUTABLE_NAME} EXECUTABLE_NAME )
59
28
60
29
project (${EXECUTABLE_NAME} )
30
+ set_directory_properties (PROPERTIES VS_STARTUP_PROJECT ${EXECUTABLE_NAME} )
31
+
32
+ set (NBL_EXECUTABLE_SOURCES
33
+ main.cpp
34
+ ${_EXTRA_SOURCES}
35
+ )
61
36
62
37
if (ANDROID )
63
- add_library (${EXECUTABLE_NAME} SHARED main.cpp ${_EXTRA_SOURCES } )
38
+ add_library (${EXECUTABLE_NAME} SHARED ${NBL_EXECUTABLE_SOURCES } )
64
39
else ()
65
- set (NBL_EXECUTABLE_SOURCES
66
- main.cpp
67
- ${_EXTRA_SOURCES}
68
- )
69
-
70
40
add_executable (${EXECUTABLE_NAME} ${NBL_EXECUTABLE_SOURCES} )
71
- nbl_handle_runtime_lib_properties (${EXECUTABLE_NAME} )
72
41
endif ()
73
-
74
- nbl_handle_dll_definitions (${EXECUTABLE_NAME} PUBLIC )
75
42
76
43
target_compile_definitions (${EXECUTABLE_NAME} PUBLIC _NBL_APP_NAME_= "${EXECUTABLE_NAME} " )
77
-
78
- if ("${EXECUTABLE_NAME} " STREQUAL commonpch )
79
- add_dependencies (${EXECUTABLE_NAME} Nabla )
80
- else ()
81
- # TODO: let arek figure out how to redo the PCH
82
- #[===[
83
- string(FIND "${_NBL_PROJECT_DIRECTORY_}" "${NBL_ROOT_PATH}/examples_tests" _NBL_FOUND_)
84
-
85
- if(NOT "${_NBL_FOUND_}" STREQUAL "-1") # the call was made for a target defined in examples_tests, request common api PCH
86
- if(NOT TARGET ${NBL_EXECUTABLE_COMMON_API_TARGET})
87
- message(FATAL_ERROR "Internal error, NBL_EXECUTABLE_COMMON_API_TARGET target must be defined to create an example target!")
88
- endif()
89
-
90
- add_dependencies(${EXECUTABLE_NAME} ${NBL_EXECUTABLE_COMMON_API_TARGET})
91
- target_link_libraries(${EXECUTABLE_NAME} PUBLIC ${NBL_EXECUTABLE_COMMON_API_TARGET})
92
- target_precompile_headers("${EXECUTABLE_NAME}" REUSE_FROM "${NBL_EXECUTABLE_COMMON_API_TARGET}")
93
- endif()
94
- ]===]
95
- endif ()
96
44
97
45
target_include_directories (${EXECUTABLE_NAME}
98
46
PUBLIC "${NBL_ROOT_PATH} /examples_tests/common"
99
- PUBLIC "${NBL_ROOT_PATH_BINARY} /include"
100
- PUBLIC ../../include # in macro.. relative to what? TODO: correct
101
47
PRIVATE ${_EXTRA_INCLUDES}
102
48
)
103
49
target_link_libraries (${EXECUTABLE_NAME} PUBLIC Nabla ${_EXTRA_LIBS} )
104
50
105
- add_compile_options (${_EXTRA_OPTIONS} )
106
-
107
- if (NBL_SANITIZE_ADDRESS )
108
- if (MSVC )
109
- target_compile_options (${EXECUTABLE_NAME} PUBLIC /fsanitize=address )
110
- else ()
111
- target_compile_options (${EXECUTABLE_NAME} PUBLIC -fsanitize=address )
112
- endif ()
113
- endif ()
114
-
115
- if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
116
- # add_compile_options("-msse4.2 -mfpmath=sse") ????
117
- add_compile_options (
118
- "$<$<CONFIG:DEBUG>:-fstack-protector-all>"
119
- )
120
-
121
- set (COMMON_LINKER_OPTIONS "-msse4.2 -mfpmath=sse -fuse-ld=gold" )
122
- set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${COMMON_LINKER_OPTIONS} " )
123
- set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${COMMON_LINKER_OPTIONS} -fstack-protector-strong" )
124
- if (NBL_GCC_SANITIZE_ADDRESS )
125
- set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address" )
126
- endif ()
127
- if (NBL_GCC_SANITIZE_THREAD )
128
- set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=thread" )
129
- endif ()
130
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.1 )
131
- add_compile_options (-Wno-error=ignored-attributes )
132
- endif ()
133
- endif ()
134
-
135
51
nbl_adjust_flags (TARGET ${EXECUTABLE_NAME} MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug )
136
- nbl_adjust_definitions () # macro defined in root CMakeLists
137
- add_definitions (-D_NBL_PCH_IGNORE_PRIVATE_HEADERS )
52
+ nbl_adjust_definitions ()
138
53
139
- set_target_properties (${EXECUTABLE_NAME} PROPERTIES DEBUG_POSTFIX _d )
140
- set_target_properties (${EXECUTABLE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX _rwdi )
141
- set_target_properties (${EXECUTABLE_NAME}
142
- PROPERTIES
54
+ add_compile_options (${_EXTRA_OPTIONS} )
55
+ add_definitions (-D_NBL_PCH_IGNORE_PRIVATE_HEADERS ) # TODO: wipe when we finally make Nabla PCH work as its supposed to
56
+ set_target_properties (${EXECUTABLE_NAME} PROPERTIES
57
+ DEBUG_POSTFIX _d
58
+ RELWITHDEBINFO_POSTFIX _rwdi
143
59
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR} /bin"
144
60
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_SOURCE_DIR} /bin"
145
61
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR} /bin"
146
- VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /bin" # for visual studio
62
+ VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /bin"
147
63
)
148
64
if (MSVC )
149
65
# nothing special
@@ -251,66 +167,28 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
251
167
nbl_project_process_test_module ()
252
168
endmacro ()
253
169
254
- # TODO this macro needs more love
255
170
macro (nbl_create_ext_library_project EXT_NAME LIB_HEADERS LIB_SOURCES LIB_INCLUDES LIB_OPTIONS DEF_OPTIONS )
256
171
set (LIB_NAME "NblExt${EXT_NAME} " )
257
172
project (${LIB_NAME} )
258
173
259
174
add_library (${LIB_NAME} ${LIB_SOURCES} )
260
-
261
- target_include_directories (${LIB_NAME}
262
- PUBLIC $< TARGET_PROPERTY:Nabla,INCLUDE_DIRECTORIES>
263
- PRIVATE ${LIB_INCLUDES}
264
- )
265
-
266
- if (NBL_EMBED_BUILTIN_RESOURCES )
267
- get_target_property (_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_ nblBuiltinResourceData BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY )
268
-
269
- target_include_directories (${LIB_NAME}
270
- PUBLIC ${_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_}
271
- )
272
- endif ()
273
175
274
- add_dependencies (${LIB_NAME} Nabla )
275
176
target_link_libraries (${LIB_NAME} PUBLIC Nabla )
276
- target_compile_options (${LIB_NAME} PUBLIC ${LIB_OPTIONS} )
277
- target_compile_definitions (${LIB_NAME} PUBLIC ${DEF_OPTIONS} )
278
-
279
- nbl_handle_dll_definitions (${LIB_NAME} PUBLIC )
280
- nbl_handle_runtime_lib_properties (${LIB_NAME} )
281
-
282
- if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
283
- add_compile_options (
284
- "$<$<CONFIG:DEBUG>:-fstack-protector-all>"
285
- )
286
-
287
- set (COMMON_LINKER_OPTIONS "-msse4.2 -mfpmath=sse -fuse-ld=gold" )
288
- set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${COMMON_LINKER_OPTIONS} " )
289
- set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${COMMON_LINKER_OPTIONS} -fstack-protector-strong -fsanitize=address" )
290
- endif ()
177
+ target_include_directories (${LIB_NAME} PRIVATE ${LIB_INCLUDES} )
291
178
292
179
nbl_adjust_flags (TARGET ${LIB_NAME} MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug )
293
- nbl_adjust_definitions () # macro defined in root CMakeLists
180
+ nbl_adjust_definitions ()
294
181
295
- set_target_properties (${LIB_NAME} PROPERTIES DEBUG_POSTFIX "" )
296
- set_target_properties (${LIB_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX _rwdb )
297
- set_target_properties (${LIB_NAME}
298
- PROPERTIES
299
- RUNTIME_OUTPUT_DIRECTORY " ${PROJECT_SOURCE_DIR} /bin"
182
+ target_compile_options (${LIB_NAME} PUBLIC ${LIB_OPTIONS} )
183
+ target_compile_definitions (${LIB_NAME} PUBLIC ${DEF_OPTIONS} )
184
+ set_target_properties (${LIB_NAME} PROPERTIES
185
+ DEBUG_POSTFIX _d
186
+ RELWITHDEBINFO_POSTFIX _rwdi
300
187
)
301
- if (MSVC )
302
- set_target_properties (${LIB_NAME}
303
- PROPERTIES
304
- RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR} /bin"
305
- RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR} /bin"
306
- RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_SOURCE_DIR} /bin"
307
- VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /bin" # seems like has no effect
308
- )
309
- endif ()
310
188
311
189
if (LIB_HEADERS )
312
190
nbl_install_file_spec (${LIB_HEADERS} "nbl/ext/${EXT_NAME} " )
313
- endif ()
191
+ endif ()
314
192
315
193
nbl_install_lib_spec (${LIB_NAME} "nbl/ext/${EXT_NAME} " )
316
194
@@ -1337,4 +1215,17 @@ macro(NBL_DOCKER)
1337
1215
RESULT_VARIABLE DOCKER_EXIT_CODE
1338
1216
OUTPUT_VARIABLE DOCKER_OUTPUT_VAR
1339
1217
)
1340
- endmacro ()
1218
+ endmacro ()
1219
+
1220
+ function (NBL_ADJUST_FOLDERS NS )
1221
+ NBL_GET_ALL_TARGETS (TARGETS )
1222
+ foreach (T IN LISTS TARGETS )
1223
+ get_target_property (NBL_FOLDER ${T} FOLDER )
1224
+
1225
+ if (NBL_FOLDER )
1226
+ set_target_properties (${T} PROPERTIES FOLDER "nabla/${NS} /${NBL_FOLDER} " )
1227
+ else ()
1228
+ set_target_properties (${T} PROPERTIES FOLDER "nabla/${NS} " )
1229
+ endif ()
1230
+ endforeach ()
1231
+ endfunction ()
0 commit comments