Skip to content

Commit 9e50a13

Browse files
Merge pull request #404 from FlyAndNotDown/master
Feat: Misc Update
2 parents c9e6912 + b965697 commit 9e50a13

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+3581
-368
lines changed

CMake/Common.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
option(BUILD_EDITOR "Build Explosion editor" ON)
22
option(CI "Build in CI" OFF)
33
option(USE_UNITY_BUILD "Use unity build" ON)
4+
option(EXPORT_COMPILE_COMMANDS "Whether to export all compile commands" OFF)
45

56
set(CMAKE_CXX_STANDARD 20)
67
set(CMAKE_UNITY_BUILD ${USE_UNITY_BUILD})
8+
set(CMAKE_EXPORT_COMPILE_COMMANDS ${EXPORT_COMPILE_COMMANDS})
79

810
get_cmake_property(GENERATOR_IS_MULTI_CONFIG GENERATOR_IS_MULTI_CONFIG)
911
if (${GENERATOR_IS_MULTI_CONFIG})

CMake/Target.cmake

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ else()
1212
add_definitions(-DBUILD_TEST=0)
1313
endif()
1414

15-
function(CombineRuntimeDependencies)
15+
function(exp_combine_runtime_deps)
1616
cmake_parse_arguments(PARAMS "" "NAME" "RUNTIME_DEP" ${ARGN})
1717

1818
get_target_property(RESULT ${PARAMS_NAME} RUNTIME_DEP)
@@ -27,7 +27,7 @@ function(CombineRuntimeDependencies)
2727
)
2828
endfunction()
2929

30-
function(LinkLibraries)
30+
function(exp_link_libs)
3131
cmake_parse_arguments(PARAMS "" "NAME" "LIB" ${ARGN})
3232

3333
foreach(L ${PARAMS_LIB})
@@ -61,28 +61,28 @@ function(LinkLibraries)
6161

6262
get_target_property(RUNTIME_DEP ${L} 3RD_RUNTIME_DEP)
6363
if (NOT ("${RUNTIME_DEP}" STREQUAL "RUNTIME_DEP-NOTFOUND"))
64-
CombineRuntimeDependencies(
64+
exp_combine_runtime_deps(
6565
NAME ${PARAMS_NAME}
6666
RUNTIME_DEP "${RUNTIME_DEP}"
6767
)
6868
endif()
6969
endforeach()
7070
endfunction()
7171

72-
function(LinkBasicLibs)
72+
function(exp_link_basic_libs)
7373
cmake_parse_arguments(PARAMS "" "NAME" "LIB" ${ARGN})
7474

7575
foreach(L ${PARAMS_LIB})
7676
if (NOT (${PARAMS_NAME} STREQUAL ${L}))
77-
LinkLibraries(
77+
exp_link_libs(
7878
NAME ${PARAMS_NAME}
7979
LIB ${L}
8080
)
8181
endif()
8282
endforeach()
8383
endfunction()
8484

85-
function(GetTargetRuntimeDependenciesRecurse)
85+
function(exp_get_target_runtime_deps_recurse)
8686
cmake_parse_arguments(PARAMS "" "NAME;OUTPUT" "" ${ARGN})
8787

8888
get_target_property(RUNTIME_DEP ${PARAMS_NAME} RUNTIME_DEP)
@@ -99,7 +99,7 @@ function(GetTargetRuntimeDependenciesRecurse)
9999
continue()
100100
endif()
101101

102-
GetTargetRuntimeDependenciesRecurse(
102+
exp_get_target_runtime_deps_recurse(
103103
NAME ${L}
104104
OUTPUT TEMP
105105
)
@@ -113,10 +113,10 @@ function(GetTargetRuntimeDependenciesRecurse)
113113
set(${PARAMS_OUTPUT} ${RESULT} PARENT_SCOPE)
114114
endfunction()
115115

116-
function(AddRuntimeDependenciesCopyCommand)
116+
function(exp_add_runtime_deps_copy_command)
117117
cmake_parse_arguments(PARAMS "NOT_INSTALL" "NAME" "" ${ARGN})
118118

119-
GetTargetRuntimeDependenciesRecurse(
119+
exp_get_target_runtime_deps_recurse(
120120
NAME ${PARAMS_NAME}
121121
OUTPUT RUNTIME_DEPS
122122
)
@@ -158,7 +158,7 @@ function(AddRuntimeDependenciesCopyCommand)
158158
endforeach()
159159
endfunction()
160160

161-
function(ExpandResourcePathExpression)
161+
function(exp_expand_resource_path_expression)
162162
cmake_parse_arguments(PARAMS "" "INPUT;OUTPUT_SRC;OUTPUT_DST" "" ${ARGN})
163163

164164
string(REPLACE "->" ";" TEMP ${PARAMS_INPUT})
@@ -169,11 +169,11 @@ function(ExpandResourcePathExpression)
169169
set(${PARAMS_OUTPUT_DST} ${DST} PARENT_SCOPE)
170170
endfunction()
171171

172-
function(AddResourcesCopyCommand)
172+
function(exp_add_resources_copy_command)
173173
cmake_parse_arguments(PARAMS "NOT_INSTALL" "NAME" "RES" ${ARGN})
174174

175175
foreach(R ${PARAMS_RES})
176-
ExpandResourcePathExpression(
176+
exp_expand_resource_path_expression(
177177
INPUT ${R}
178178
OUTPUT_SRC SRC
179179
OUTPUT_DST DST
@@ -196,7 +196,7 @@ function(AddResourcesCopyCommand)
196196
add_dependencies(${PARAMS_NAME} ${COPY_RES_TARGET_NAME})
197197
endfunction()
198198

199-
function(GetTargetIncludeDirectoriesRecurse)
199+
function(exp_get_target_include_dirs_recurse)
200200
cmake_parse_arguments(PARAMS "" "NAME;OUTPUT" "" ${ARGN})
201201

202202
if (NOT (TARGET ${PARAMS_NAME}))
@@ -215,7 +215,7 @@ function(GetTargetIncludeDirectoriesRecurse)
215215
get_target_property(TARGET_LIBS ${PARAMS_NAME} LINK_LIBRARIES)
216216
if (NOT ("${TARGET_LIBS}" STREQUAL "TARGET_LIBS-NOTFOUND"))
217217
foreach(TARGET_LIB ${TARGET_LIBS})
218-
GetTargetIncludeDirectoriesRecurse(
218+
exp_get_target_include_dirs_recurse(
219219
NAME ${TARGET_LIB}
220220
OUTPUT LIB_INCS
221221
)
@@ -237,8 +237,8 @@ function(GetTargetIncludeDirectoriesRecurse)
237237
set(${PARAMS_OUTPUT} ${RESULT} PARENT_SCOPE)
238238
endfunction()
239239

240-
function(AddMirrorInfoSourceGenerationTarget)
241-
cmake_parse_arguments(PARAMS "DYNAMIC" "NAME;OUTPUT_SRC;OUTPUT_TARGET_NAME" "SEARCH_DIR;PUBLIC_INC;PRIVATE_INC;LIB" ${ARGN})
240+
function(exp_add_mirror_info_source_generation_target)
241+
cmake_parse_arguments(PARAMS "DYNAMIC" "NAME;OUTPUT_SRC;OUTPUT_TARGET_NAME" "SEARCH_DIR;PUBLIC_INC;PRIVATE_INC;LIB;FRAMEWORK_DIR" ${ARGN})
242242

243243
if (DEFINED PARAMS_PUBLIC_INC)
244244
list(APPEND INC ${PARAMS_PUBLIC_INC})
@@ -248,7 +248,7 @@ function(AddMirrorInfoSourceGenerationTarget)
248248
endif()
249249
if (DEFINED PARAMS_LIB)
250250
foreach (L ${PARAMS_LIB})
251-
GetTargetIncludeDirectoriesRecurse(
251+
exp_get_target_include_dirs_recurse(
252252
NAME ${L}
253253
OUTPUT TARGET_INCS
254254
)
@@ -262,10 +262,20 @@ function(AddMirrorInfoSourceGenerationTarget)
262262
list(APPEND INC_ARGS "-I")
263263
foreach (I ${INC})
264264
get_filename_component(ABSOLUTE_I ${I} ABSOLUTE)
265-
list(APPEND ABSOLUTE_INC ${ABSOLUTE_I})
266265
list(APPEND INC_ARGS ${ABSOLUTE_I})
267266
endforeach()
268267

268+
if (DEFINED PARAMS_FRAMEWORK_DIR)
269+
list(APPEND FWK_DIR ${PARAMS_FRAMEWORK_DIR})
270+
list(APPEND FWK_DIR_ARGS "-F")
271+
endif ()
272+
list(REMOVE_DUPLICATES FWK_DIR)
273+
274+
foreach (F ${FWK_DIR})
275+
get_filename_component(ABSOLUTE_F ${F} ABSOLUTE)
276+
list(APPEND FWK_DIR_ARGS ${ABSOLUTE_F})
277+
endforeach ()
278+
269279
if (${PARAMS_DYNAMIC})
270280
list(APPEND DYNAMIC_ARG "-d")
271281
endif ()
@@ -282,7 +292,7 @@ function(AddMirrorInfoSourceGenerationTarget)
282292

283293
add_custom_command(
284294
OUTPUT ${OUTPUT_SOURCE}
285-
COMMAND "$<TARGET_FILE:MirrorTool>" ${DYNAMIC_ARG} "-i" ${INPUT_HEADER_FILE} "-o" ${OUTPUT_SOURCE} ${INC_ARGS}
295+
COMMAND "$<TARGET_FILE:MirrorTool>" ${DYNAMIC_ARG} "-i" ${INPUT_HEADER_FILE} "-o" ${OUTPUT_SOURCE} ${INC_ARGS} ${FWK_DIR_ARGS}
286296
DEPENDS MirrorTool ${INPUT_HEADER_FILE}
287297
)
288298
endforeach()
@@ -301,7 +311,7 @@ function(AddMirrorInfoSourceGenerationTarget)
301311
endif()
302312
endfunction()
303313

304-
function(AddExecutable)
314+
function(exp_add_executable)
305315
cmake_parse_arguments(PARAMS "SAMPLE;NOT_INSTALL" "NAME" "SRC;INC;LINK;LIB;DEP_TARGET;RES;REFLECT" ${ARGN})
306316

307317
if (${PARAMS_SAMPLE} AND (NOT ${BUILD_SAMPLE}))
@@ -315,7 +325,7 @@ function(AddExecutable)
315325
endif ()
316326

317327
if (DEFINED PARAMS_REFLECT)
318-
AddMirrorInfoSourceGenerationTarget(
328+
exp_add_mirror_info_source_generation_target(
319329
NAME ${PARAMS_NAME}
320330
OUTPUT_SRC GENERATED_SRC
321331
OUTPUT_TARGET_NAME GENERATED_TARGET
@@ -338,19 +348,19 @@ function(AddExecutable)
338348
${PARAMS_NAME}
339349
PRIVATE ${PARAMS_LINK}
340350
)
341-
LinkBasicLibs(
351+
exp_link_basic_libs(
342352
NAME ${PARAMS_NAME}
343353
LIB ${BASIC_LIBS}
344354
)
345-
LinkLibraries(
355+
exp_link_libs(
346356
NAME ${PARAMS_NAME}
347357
LIB ${PARAMS_LIB}
348358
)
349-
AddRuntimeDependenciesCopyCommand(
359+
exp_add_runtime_deps_copy_command(
350360
NAME ${PARAMS_NAME}
351361
${NOT_INSTALL_FLAG}
352362
)
353-
AddResourcesCopyCommand(
363+
exp_add_resources_copy_command(
354364
NAME ${PARAMS_NAME}
355365
RES ${PARAMS_RES}
356366
${NOT_INSTALL_FLAG}
@@ -378,7 +388,7 @@ function(AddExecutable)
378388
endif ()
379389
endfunction()
380390

381-
function(AddLibrary)
391+
function(exp_add_library)
382392
cmake_parse_arguments(PARAMS "NOT_INSTALL" "NAME;TYPE" "SRC;PRIVATE_INC;PUBLIC_INC;PRIVATE_LINK;LIB;REFLECT" ${ARGN})
383393

384394
if ("${PARAMS_TYPE}" STREQUAL "SHARED")
@@ -390,7 +400,7 @@ function(AddLibrary)
390400
list(APPEND EXTRA_PARAMS DYNAMIC)
391401
endif ()
392402

393-
AddMirrorInfoSourceGenerationTarget(
403+
exp_add_mirror_info_source_generation_target(
394404
NAME ${PARAMS_NAME}
395405
OUTPUT_SRC GENERATED_SRC
396406
OUTPUT_TARGET_NAME GENERATED_TARGET
@@ -420,11 +430,11 @@ function(AddLibrary)
420430
PRIVATE ${PARAMS_PRIVATE_LINK}
421431
PUBLIC ${PARAMS_PUBLIC_LINK}
422432
)
423-
LinkBasicLibs(
433+
exp_link_basic_libs(
424434
NAME ${PARAMS_NAME}
425435
LIB ${BASIC_LIBS}
426436
)
427-
LinkLibraries(
437+
exp_link_libs(
428438
NAME ${PARAMS_NAME}
429439
LIB ${PARAMS_LIB}
430440
)
@@ -481,15 +491,15 @@ function(AddLibrary)
481491
endif ()
482492
endfunction()
483493

484-
function(AddTest)
494+
function(exp_add_test)
485495
if (NOT ${BUILD_TEST})
486496
return()
487497
endif()
488498

489499
cmake_parse_arguments(PARAMS "META" "NAME" "SRC;INC;LINK;LIB;DEP_TARGET;RES;REFLECT" ${ARGN})
490500

491501
if (DEFINED PARAMS_REFLECT)
492-
AddMirrorInfoSourceGenerationTarget(
502+
exp_add_mirror_info_source_generation_target(
493503
NAME ${PARAMS_NAME}
494504
OUTPUT_SRC GENERATED_SRC
495505
OUTPUT_TARGET_NAME GENERATED_TARGET
@@ -512,19 +522,19 @@ function(AddTest)
512522
${PARAMS_NAME}
513523
PRIVATE ${PARAMS_LINK}
514524
)
515-
LinkBasicLibs(
525+
exp_link_basic_libs(
516526
NAME ${PARAMS_NAME}
517527
LIB ${BASIC_LIBS} ${BASIC_TEST_LIBS}
518528
)
519-
LinkLibraries(
529+
exp_link_libs(
520530
NAME ${PARAMS_NAME}
521531
LIB ${PARAMS_LIB}
522532
)
523-
AddRuntimeDependenciesCopyCommand(
533+
exp_add_runtime_deps_copy_command(
524534
NAME ${PARAMS_NAME}
525535
NOT_INSTALL
526536
)
527-
AddResourcesCopyCommand(
537+
exp_add_resources_copy_command(
528538
NAME ${PARAMS_NAME}
529539
RES ${PARAMS_RES}
530540
NOT_INSTALL

0 commit comments

Comments
 (0)