1
1
# Assigns builtin resources to a bundle a target library will be created with
2
2
# _BUNDLE_NAME_ is a bundle name, must be a valid CMake list variable
3
3
# _LBR_PATH_ is a path to builtin resource
4
+ # optional aliases may be preset after the _LBR_PATH_
4
5
5
6
macro (LIST_BUILTIN_RESOURCE _BUNDLE_NAME_ _LBR_PATH_ )
6
7
math (EXPR _ALIAS_C_ "${ARGC} - 2" OUTPUT_FORMAT DECIMAL )
@@ -69,7 +70,6 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
69
70
endif ()
70
71
71
72
set (NBL_TEMPLATE_RESOURCES_ARCHIVE_HEADER "${CMAKE_CURRENT_FUNCTION_LIST_DIR} /template/CArchive.h.in" )
72
- set (NBL_TEMPLATE_RESOURCES_ARCHIVE_SOURCE "${CMAKE_CURRENT_FUNCTION_LIST_DIR} /template/CArchive.cpp.in" )
73
73
set (NBL_BUILTIN_HEADER_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR} /builtinHeaderGen.py" )
74
74
set (NBL_BUILTIN_DATA_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR} /builtinDataGen.py" )
75
75
set (NBL_BS_HEADER_FILENAME "builtinResources.h" )
@@ -90,36 +90,19 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
90
90
set (_ITR_ 0 )
91
91
foreach (X IN LISTS _LBR_${_BUNDLE_NAME_}_ ) # iterate over builtin resources bundle list given bundle name
92
92
set (_CURRENT_ITEM_ "${X} " )
93
- string (FIND "${_CURRENT_ITEM_} " "," _FOUND_ REVERSE )
94
93
95
94
string (REPLACE "," ";" _ITEM_DATA_ "${_CURRENT_ITEM_} " )
96
95
list (LENGTH _ITEM_DATA_ _ITEM_D_SIZE_ )
97
96
list (GET _ITEM_DATA_ 0 _CURRENT_PATH_ ) # _LBR_PATH_ path for given bundle
98
97
99
- if (_ITEM_D_SIZE_ GREATER 1 )
100
- list (SUBLIST _ITEM_DATA_ "1" "${_ITEM_D_SIZE_} " _ITEM_ALIASES_ ) # optional aliases for given builtin resource
101
- else ()
102
- unset (_ITEM_ALIASES_ )
103
- endif ()
104
-
105
98
set (_BUNDLE_ARCHIVE_ABSOLUTE_PATH_ "${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} " )
106
99
set (NBL_BUILTIN_RESOURCE_ABS_PATH "${_BUNDLE_SEARCH_DIRECTORY_} /${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} /${_CURRENT_PATH_} " ) # an absolute path to a resource a builtin resource will be created as
100
+
107
101
list (APPEND NBL_BUILTIN_RESOURCES "${NBL_BUILTIN_RESOURCE_ABS_PATH} " )
108
102
list (APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_RESOURCE_ABS_PATH} " )
109
103
110
- if (EXISTS "${NBL_BUILTIN_RESOURCE_ABS_PATH} " )
111
- file (SIZE "${NBL_BUILTIN_RESOURCE_ABS_PATH} " _FILE_SIZE_ ) # determine size of builtin resource in bytes
112
-
113
- macro (LIST_RESOURCE_FOR_ARCHIVER _LBR_PATH_ _LBR_FILE_SIZE_ _LBR_ID_ )
114
- string (APPEND _RESOURCES_INIT_LIST_ "\t\t\t\t\t {\" ${_LBR_PATH_} \" , ${_LBR_FILE_SIZE_} , 0xdeadbeefu, ${_LBR_ID_} , nbl::system::IFileArchive::E_ALLOCATOR_TYPE::EAT_NULL},\n " ) # initializer list
115
- endmacro ()
116
-
117
- LIST_RESOURCE_FOR_ARCHIVER ("${_CURRENT_PATH_} " "${_FILE_SIZE_} " "${_ITR_} " ) # pass builtin resource path to an archive without _BUNDLE_ARCHIVE_ABSOLUTE_PATH_
118
-
119
- foreach (_CURRENT_ALIAS_ IN LISTS _ITEM_ALIASES_ )
120
- LIST_RESOURCE_FOR_ARCHIVER ("${_CURRENT_ALIAS_} " "${_FILE_SIZE_} " "${_ITR_} " )
121
- endforeach ()
122
- else ()
104
+ # validate
105
+ if (NOT EXISTS "${NBL_BUILTIN_RESOURCE_ABS_PATH} " )
123
106
get_source_file_property (NBL_BUILTIN_IS_GENERATED "${NBL_BUILTIN_RESOURCE_ABS_PATH} " GENERATED )
124
107
125
108
if (NOT NBL_BUILTIN_IS_GENERATED )
@@ -130,8 +113,8 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
130
113
math (EXPR _ITR_ "${_ITR_} + 1" )
131
114
endforeach ()
132
115
133
- configure_file ( " ${NBL_TEMPLATE_RESOURCES_ARCHIVE_HEADER} " "${_OUTPUT_HEADER_DIRECTORY_} /CArchive.h" )
134
- configure_file ( " ${NBL_TEMPLATE_RESOURCES_ARCHIVE_SOURCE} " "${_OUTPUT_SOURCE_DIRECTORY_} /CArchive.cpp" )
116
+ set ( NBL_BUILTIN_DATA_ARCHIVE_H "${_OUTPUT_HEADER_DIRECTORY_} /CArchive.h" )
117
+ set ( NBL_BUILTIN_DATA_ARCHIVE_CPP "${_OUTPUT_SOURCE_DIRECTORY_} /CArchive.cpp" )
135
118
136
119
list (APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_HEADER_GEN_PY} " )
137
120
list (APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_DATA_GEN_PY} " )
@@ -141,29 +124,28 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
141
124
string (REPLACE ";" "\n " RESOURCES_ARGS "${_LBR_${_BUNDLE_NAME_} _}" )
142
125
file (WRITE "${NBL_RESOURCES_LIST_FILE} " "${RESOURCES_ARGS} " )
143
126
144
- set (NBL_BUILTIN_RESOURCES_HEADER "${_OUTPUT_HEADER_DIRECTORY_} /${NBL_BS_HEADER_FILENAME} " )
145
- set (NBL_BUILTIN_RESOURCE_DATA_SOURCE "${_OUTPUT_SOURCE_DIRECTORY_} /${NBL_BS_DATA_SOURCE_FILENAME} " )
127
+ set (NBL_BUILTIN_RESOURCES_H "${_OUTPUT_HEADER_DIRECTORY_} /${NBL_BS_HEADER_FILENAME} " )
128
+ set (NBL_BUILTIN_RESOURCE_DATA_CPP "${_OUTPUT_SOURCE_DIRECTORY_} /${NBL_BS_DATA_SOURCE_FILENAME} " )
146
129
147
130
if (NBL_BR_FORCE_CONSTEXPR_HASH )
148
131
set (_NBL_BR_RUNTIME_HASH_ 0 )
149
132
else ()
150
133
set (_NBL_BR_RUNTIME_HASH_ 1 )
151
134
endif ()
152
135
153
- add_custom_command (
154
- OUTPUT "${NBL_BUILTIN_RESOURCES_HEADER} " "${NBL_BUILTIN_RESOURCE_DATA_SOURCE} "
155
- COMMAND "${_Python3_EXECUTABLE} " "${NBL_BUILTIN_HEADER_GEN_PY} " "${NBL_BUILTIN_RESOURCES_HEADER} " "${_BUNDLE_SEARCH_DIRECTORY_} /${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} " "${NBL_RESOURCES_LIST_FILE} " "${_NAMESPACE_} " "${_GUARD_SUFFIX_} " "${_SHARED_} "
156
- COMMAND "${_Python3_EXECUTABLE} " "${NBL_BUILTIN_DATA_GEN_PY} " "${NBL_BUILTIN_RESOURCE_DATA_SOURCE} " "${_BUNDLE_SEARCH_DIRECTORY_} /${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} " "${NBL_RESOURCES_LIST_FILE} " "${_NAMESPACE_} " "${NBL_BS_HEADER_FILENAME} " "$<${_NBL_BR_RUNTIME_HASH_} :$<TARGET_FILE:xxHash256>>"
157
- COMMENT "Generating builtin resources for ${_TARGET_NAME_} target"
136
+ add_custom_command (OUTPUT "${NBL_BUILTIN_RESOURCES_H} " "${NBL_BUILTIN_RESOURCE_DATA_CPP} " "${NBL_BUILTIN_DATA_ARCHIVE_H} " "${NBL_BUILTIN_DATA_ARCHIVE_CPP} "
137
+ COMMAND "${_Python3_EXECUTABLE} " "${NBL_BUILTIN_HEADER_GEN_PY} " "${NBL_BUILTIN_RESOURCES_H} " "${NBL_BUILTIN_DATA_ARCHIVE_H} " "${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} " "${NBL_RESOURCES_LIST_FILE} " "${_NAMESPACE_} " "${_GUARD_SUFFIX_} " "${_SHARED_} "
138
+ COMMAND "${_Python3_EXECUTABLE} " "${NBL_BUILTIN_DATA_GEN_PY} " "${NBL_BUILTIN_RESOURCE_DATA_CPP} " "${NBL_BUILTIN_DATA_ARCHIVE_CPP} " "${_BUNDLE_SEARCH_DIRECTORY_} /${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_} " "${NBL_RESOURCES_LIST_FILE} " "${_NAMESPACE_} " "${NBL_BS_HEADER_FILENAME} " "$<${_NBL_BR_RUNTIME_HASH_} :$<TARGET_FILE:xxHash256>>"
139
+ COMMENT "Generating \" ${_TARGET_NAME_} \" 's sources & headers"
158
140
DEPENDS ${NBL_DEPENDENCY_FILES}
159
141
VERBATIM
160
142
)
161
143
162
144
add_library (${_TARGET_NAME_} ${_LIB_TYPE_}
163
- "${NBL_BUILTIN_RESOURCES_HEADER } "
164
- "${NBL_BUILTIN_RESOURCE_DATA_SOURCE } "
165
- "${_OUTPUT_SOURCE_DIRECTORY_} /CArchive.cpp "
166
- "${_OUTPUT_HEADER_DIRECTORY_} /CArchive.h "
145
+ "${NBL_BUILTIN_RESOURCES_H } "
146
+ "${NBL_BUILTIN_RESOURCE_DATA_CPP } "
147
+ "${NBL_BUILTIN_DATA_ARCHIVE_H} "
148
+ "${NBL_BUILTIN_DATA_ARCHIVE_CPP} "
167
149
)
168
150
169
151
if (NBL_FORCE_RELEASE_3RDPARTY ) # priority over RWDI
@@ -229,8 +211,8 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
229
211
set (NBL_BUILTIN_RESOURCES ${NBL_BUILTIN_RESOURCES} ) # turn builtin resources paths list into variable
230
212
231
213
set (NBL_BUILTIN_RESOURCES_HEADERS
232
- "${NBL_BUILTIN_RESOURCES_HEADER } "
233
- "${_OUTPUT_HEADER_DIRECTORY_} /CArchive.h "
214
+ "${NBL_BUILTIN_RESOURCES_H } "
215
+ "${NBL_BUILTIN_DATA_ARCHIVE_H} "
234
216
)
235
217
236
218
macro (_ADD_PROPERTY_ _BR_PROPERTY_ _BR_PROXY_VAR_ )
0 commit comments