Skip to content

Commit c110ce0

Browse files
committed
move builtin resources creation macro and function to src/nbl/builtin/utils.cmake
1 parent 446e301 commit c110ce0

File tree

2 files changed

+93
-92
lines changed

2 files changed

+93
-92
lines changed

src/nbl/builtin/CMakeLists.txt

Lines changed: 1 addition & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,4 @@
1-
find_package(Python3 REQUIRED)
2-
3-
macro(LIST_BUILTIN_RESOURCE _BUNDLE_NAME_ _LBR_PATH_)
4-
set(_OPTIONAL_ALIAS_ "${ARGV2}")
5-
6-
list(APPEND ${_BUNDLE_NAME_} "${_LBR_PATH_}")
7-
set(${_BUNDLE_NAME_} ${${_BUNDLE_NAME_}} PARENT_SCOPE) # override
8-
9-
list(APPEND _LBR_${_BUNDLE_NAME_}_ "${_LBR_PATH_},${_OPTIONAL_ALIAS_}")
10-
set(_LBR_${_BUNDLE_NAME_}_ ${_LBR_${_BUNDLE_NAME_}_} PARENT_SCOPE) # override
11-
endmacro()
1+
include("${CMAKE_CURRENT_SOURCE_DIR}/utils.cmake")
122

133
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/utils/acceleration_structures.glsl")
144
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/shader/loader/mtl/vertex_impl.glsl")
@@ -246,87 +236,6 @@ LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalizatio
246236
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalization/descriptors.glsl")
247237
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalization/shared_normalization.glsl")
248238

249-
function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH_DIRECTORY_ _NAMESPACE_ _OUTPUT_DIRECTORY_)
250-
file(MAKE_DIRECTORY "${_OUTPUT_DIRECTORY_}")
251-
252-
set(NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/CArchive.h.in")
253-
set(NBL_BUILTIN_HEADER_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinHeaderGen.py")
254-
set(NBL_BUILTIN_DATA_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinDataGen.py")
255-
set(NBL_BS_HEADER_FILENAME "builtinResources.h")
256-
set(NBL_BS_DATA_SOURCE_FILENAME "builtinResourceData.cpp")
257-
258-
string(REPLACE "::" "/" _PATH_PREFIX_ "${_NAMESPACE_}")
259-
string(REPLACE "::" "_" _GUARD_SUFFIX_ "${_NAMESPACE_}")
260-
string(REGEX REPLACE "^[0-9]+\." "" _GUARD_SUFFIX_ ${_GUARD_SUFFIX_})
261-
string(TOUPPER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
262-
string(MAKE_C_IDENTIFIER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
263-
264-
set(_ITR_ 0)
265-
foreach(X IN LISTS _LBR_${_BUNDLE_NAME_}_)
266-
set(_CURRENT_ITEM_ "${X}")
267-
string(FIND "${_CURRENT_ITEM_}" "," _FOUND_ REVERSE)
268-
269-
string(REGEX REPLACE ",.*" "" _CURRENT_PATH_ "${_CURRENT_ITEM_}")
270-
string(REGEX REPLACE ".*," "" _CURRENT_ALIAS_ "${_CURRENT_ITEM_}")
271-
272-
if(EXISTS "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
273-
list(APPEND NBL_DEPENDENCY_FILES "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
274-
file(SIZE "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}" _FILE_SIZE_)
275-
276-
string(APPEND _RESOURCES_INIT_LIST_ "\t\t\t\t\t{\"${_CURRENT_PATH_}\", ${_FILE_SIZE_}, 0xdeadbeefu, ${_ITR_}, nbl::system::IFileArchive::E_ALLOCATOR_TYPE::EAT_NULL},\n") # initializer list
277-
else()
278-
message(FATAL_ERROR "!") # TODO: set GENERATED property, therefore we could turn some input into output and list it as builtin resource
279-
endif()
280-
281-
math(EXPR _ITR_ "${_ITR_} + 1")
282-
endforeach()
283-
284-
configure_file("${NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER}" "${_OUTPUT_DIRECTORY_}/CArchive.h")
285-
286-
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_HEADER_GEN_PY}")
287-
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_DATA_GEN_PY}")
288-
289-
set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_DIRECTORY_}/resources.txt")
290-
291-
string(REPLACE ";" "," RESOURCES_ARGS "${${_BUNDLE_NAME_}}")
292-
file(WRITE "${NBL_RESOURCES_LIST_FILE}" "${RESOURCES_ARGS}")
293-
294-
set(NBL_BUILTIN_RESOURCES_HEADER "${_OUTPUT_DIRECTORY_}/${NBL_BS_HEADER_FILENAME}")
295-
set(NBL_BUILTIN_RESOURCE_DATA_SOURCE "${_OUTPUT_DIRECTORY_}/${NBL_BS_DATA_SOURCE_FILENAME}")
296-
297-
set(_NBL_SOURCES_
298-
"${NBL_BUILTIN_RESOURCES_HEADER}"
299-
"${NBL_BUILTIN_RESOURCE_DATA_SOURCE}"
300-
)
301-
302-
add_custom_command(
303-
OUTPUT "${NBL_BUILTIN_RESOURCES_HEADER}" "${NBL_BUILTIN_RESOURCE_DATA_SOURCE}"
304-
COMMAND "${PYTHON_EXECUTABLE}" "${NBL_BUILTIN_HEADER_GEN_PY}" "${NBL_BUILTIN_RESOURCES_HEADER}" "${_BUNDLE_SEARCH_DIRECTORY_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${_GUARD_SUFFIX_}"
305-
COMMAND "${PYTHON_EXECUTABLE}" "${NBL_BUILTIN_DATA_GEN_PY}" "${NBL_BUILTIN_RESOURCE_DATA_SOURCE}" "${_BUNDLE_SEARCH_DIRECTORY_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${NBL_BS_HEADER_FILENAME}"
306-
COMMENT "Generating built-in resources"
307-
DEPENDS ${NBL_DEPENDENCY_FILES}
308-
VERBATIM
309-
)
310-
311-
add_library(${_TARGET_NAME_} STATIC
312-
${_NBL_SOURCES_}
313-
)
314-
315-
target_include_directories(${_TARGET_NAME_} PUBLIC "${NBL_ROOT_PATH}/include")
316-
317-
if(NBL_DYNAMIC_MSVC_RUNTIME)
318-
set_property(TARGET ${_TARGET_NAME_} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
319-
else()
320-
set_property(TARGET ${_TARGET_NAME_} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
321-
endif()
322-
323-
list(APPEND _NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ "${_OUTPUT_DIRECTORY_}/CArchive.h")
324-
set(_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ ${_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_} PARENT_SCOPE)
325-
326-
list(APPEND _NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_TARGET_NAME_})
327-
set(_NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_NBL_BUILTIN_RESOURCES_LIBRARIES_} PARENT_SCOPE) # override
328-
endfunction()
329-
330239
macro(NBL_ADD_BUILTIN_RESOURCES)
331240
ADD_CUSTOM_BUILTIN_RESOURCES(nblBuiltinResourceData NBL_RESOURCES_TO_EMBED "${NBL_ROOT_PATH}/include" "nbl::builtin" "${NBL_ROOT_PATH_BINARY}/include/nbl/builtin")
332241
endmacro()

src/nbl/builtin/utils.cmake

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
find_package(Python3 REQUIRED)
2+
3+
macro(LIST_BUILTIN_RESOURCE _BUNDLE_NAME_ _LBR_PATH_)
4+
set(_OPTIONAL_ALIAS_ "${ARGV2}")
5+
6+
list(APPEND ${_BUNDLE_NAME_} "${_LBR_PATH_}")
7+
set(${_BUNDLE_NAME_} ${${_BUNDLE_NAME_}} PARENT_SCOPE) # override
8+
9+
list(APPEND _LBR_${_BUNDLE_NAME_}_ "${_LBR_PATH_},${_OPTIONAL_ALIAS_}")
10+
set(_LBR_${_BUNDLE_NAME_}_ ${_LBR_${_BUNDLE_NAME_}_} PARENT_SCOPE) # override
11+
endmacro()
12+
13+
function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH_DIRECTORY_ _NAMESPACE_ _OUTPUT_DIRECTORY_)
14+
file(MAKE_DIRECTORY "${_OUTPUT_DIRECTORY_}")
15+
16+
set(NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/CArchive.h.in")
17+
set(NBL_BUILTIN_HEADER_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinHeaderGen.py")
18+
set(NBL_BUILTIN_DATA_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinDataGen.py")
19+
set(NBL_BS_HEADER_FILENAME "builtinResources.h")
20+
set(NBL_BS_DATA_SOURCE_FILENAME "builtinResourceData.cpp")
21+
22+
string(REPLACE "::" "/" _PATH_PREFIX_ "${_NAMESPACE_}")
23+
string(REPLACE "::" "_" _GUARD_SUFFIX_ "${_NAMESPACE_}")
24+
string(REGEX REPLACE "^[0-9]+\." "" _GUARD_SUFFIX_ ${_GUARD_SUFFIX_})
25+
string(TOUPPER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
26+
string(MAKE_C_IDENTIFIER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
27+
28+
set(_ITR_ 0)
29+
foreach(X IN LISTS _LBR_${_BUNDLE_NAME_}_)
30+
set(_CURRENT_ITEM_ "${X}")
31+
string(FIND "${_CURRENT_ITEM_}" "," _FOUND_ REVERSE)
32+
33+
string(REGEX REPLACE ",.*" "" _CURRENT_PATH_ "${_CURRENT_ITEM_}")
34+
string(REGEX REPLACE ".*," "" _CURRENT_ALIAS_ "${_CURRENT_ITEM_}")
35+
36+
if(EXISTS "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
37+
list(APPEND NBL_DEPENDENCY_FILES "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
38+
file(SIZE "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}" _FILE_SIZE_)
39+
40+
string(APPEND _RESOURCES_INIT_LIST_ "\t\t\t\t\t{\"${_CURRENT_PATH_}\", ${_FILE_SIZE_}, 0xdeadbeefu, ${_ITR_}, nbl::system::IFileArchive::E_ALLOCATOR_TYPE::EAT_NULL},\n") # initializer list
41+
else()
42+
message(FATAL_ERROR "!") # TODO: set GENERATED property, therefore we could turn some input into output and list it as builtin resource
43+
endif()
44+
45+
math(EXPR _ITR_ "${_ITR_} + 1")
46+
endforeach()
47+
48+
configure_file("${NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER}" "${_OUTPUT_DIRECTORY_}/CArchive.h")
49+
50+
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_HEADER_GEN_PY}")
51+
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_DATA_GEN_PY}")
52+
53+
set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_DIRECTORY_}/resources.txt")
54+
55+
string(REPLACE ";" "," RESOURCES_ARGS "${${_BUNDLE_NAME_}}")
56+
file(WRITE "${NBL_RESOURCES_LIST_FILE}" "${RESOURCES_ARGS}")
57+
58+
set(NBL_BUILTIN_RESOURCES_HEADER "${_OUTPUT_DIRECTORY_}/${NBL_BS_HEADER_FILENAME}")
59+
set(NBL_BUILTIN_RESOURCE_DATA_SOURCE "${_OUTPUT_DIRECTORY_}/${NBL_BS_DATA_SOURCE_FILENAME}")
60+
61+
set(_NBL_SOURCES_
62+
"${NBL_BUILTIN_RESOURCES_HEADER}"
63+
"${NBL_BUILTIN_RESOURCE_DATA_SOURCE}"
64+
)
65+
66+
add_custom_command(
67+
OUTPUT "${NBL_BUILTIN_RESOURCES_HEADER}" "${NBL_BUILTIN_RESOURCE_DATA_SOURCE}"
68+
COMMAND "${PYTHON_EXECUTABLE}" "${NBL_BUILTIN_HEADER_GEN_PY}" "${NBL_BUILTIN_RESOURCES_HEADER}" "${_BUNDLE_SEARCH_DIRECTORY_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${_GUARD_SUFFIX_}"
69+
COMMAND "${PYTHON_EXECUTABLE}" "${NBL_BUILTIN_DATA_GEN_PY}" "${NBL_BUILTIN_RESOURCE_DATA_SOURCE}" "${_BUNDLE_SEARCH_DIRECTORY_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${NBL_BS_HEADER_FILENAME}"
70+
COMMENT "Generating built-in resources"
71+
DEPENDS ${NBL_DEPENDENCY_FILES}
72+
VERBATIM
73+
)
74+
75+
add_library(${_TARGET_NAME_} STATIC
76+
${_NBL_SOURCES_}
77+
)
78+
79+
target_include_directories(${_TARGET_NAME_} PUBLIC "${NBL_ROOT_PATH}/include")
80+
81+
if(NBL_DYNAMIC_MSVC_RUNTIME)
82+
set_property(TARGET ${_TARGET_NAME_} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
83+
else()
84+
set_property(TARGET ${_TARGET_NAME_} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
85+
endif()
86+
87+
list(APPEND _NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ "${_OUTPUT_DIRECTORY_}/CArchive.h")
88+
set(_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ ${_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_} PARENT_SCOPE)
89+
90+
list(APPEND _NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_TARGET_NAME_})
91+
set(_NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_NBL_BUILTIN_RESOURCES_LIBRARIES_} PARENT_SCOPE) # override
92+
endfunction()

0 commit comments

Comments
 (0)