Skip to content

Commit 9daedfa

Browse files
committed
add some docs to src/nbl/builtin/utils.cmake, add new parameters for header and source outputs, rewrite some code lines, add custom properties to builtin resources CMake library target, add install macro for builtin resources, correct CArchive.h.in and save work for tomorrow
1 parent cb5450a commit 9daedfa

File tree

5 files changed

+88
-21
lines changed

5 files changed

+88
-21
lines changed

cmake/common.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,13 @@ function(nbl_install_file _FILE _RELATIVE_DESTINATION)
339339
install(FILES ${_FILE} DESTINATION relwithdebinfo/include/${_RELATIVE_DESTINATION} CONFIGURATIONS RelWithDebInfo)
340340
endfunction()
341341

342+
function(nbl_install_builtin_resources _TARGET_)
343+
get_target_property(_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_ ${_TARGET_} BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
344+
get_target_property(_BUILTIN_RESOURCES_HEADERS_ ${_TARGET_} BUILTIN_RESOURCES_HEADERS)
345+
346+
nbl_install_headers("${_BUILTIN_RESOURCES_HEADERS_}" "${_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_}")
347+
endfunction()
348+
342349
function(nbl_install_config_header _CONF_HDR_NAME)
343350
nbl_get_conf_dir(dir_deb Debug)
344351
nbl_get_conf_dir(dir_rel Release)

src/nbl/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ nbl_get_conf_dir(NABLA_CONF_DIR_DEBUG Debug)
116116
nbl_get_conf_dir(NABLA_CONF_DIR_RELEASE Release)
117117
if(NBL_EMBED_BUILTIN_RESOURCES)
118118
add_subdirectory(builtin)
119-
NBL_ADD_BUILTIN_RESOURCES()
119+
NBL_ADD_BUILTIN_RESOURCES(nblBuiltinResourceData)
120120
endif()
121121
nbl_get_conf_dir(NABLA_CONF_DIR_RELWITHDEBINFO RelWithDebInfo)
122122

@@ -662,6 +662,10 @@ endif()
662662
nbl_install_file("${NBL_ROOT_PATH_BINARY}/include/nbl/builtin/builtinResources.h" "nbl/builtin")
663663
nbl_install_config_header(BuildConfigOptions.h)
664664

665+
if(NBL_EMBED_BUILTIN_RESOURCES)
666+
nbl_install_builtin_resources(nblBuiltinResourceData)
667+
endif()
668+
665669
# TODO: @AnastazIuk change macros to functions! https://github.com/buildaworldnet/IrrlichtBAW/issues/311
666670
macro(nbl_install_program _TRGT)
667671
install(PROGRAMS $<TARGET_FILE:${_TRGT}> DESTINATION lib CONFIGURATIONS Release)

src/nbl/builtin/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalizatio
238238
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalization/descriptors.glsl")
239239
LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "nbl/builtin/glsl/blit/normalization/shared_normalization.glsl")
240240

241-
macro(NBL_ADD_BUILTIN_RESOURCES)
242-
ADD_CUSTOM_BUILTIN_RESOURCES(nblBuiltinResourceData NBL_RESOURCES_TO_EMBED "${NBL_ROOT_PATH}/include" "nbl::builtin" "${NBL_ROOT_PATH_BINARY}/include/nbl/builtin")
241+
macro(NBL_ADD_BUILTIN_RESOURCES _TARGET_) # internal for Nabla only
242+
ADD_CUSTOM_BUILTIN_RESOURCES("${_TARGET_}" NBL_RESOURCES_TO_EMBED "${NBL_ROOT_PATH}/include" "nbl::builtin" "${NBL_ROOT_PATH_BINARY}/include")
243243
endmacro()
244244

src/nbl/builtin/template/CArchive.h.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef _@_GUARD_SUFFIX_@_C_ARCHIVE_H_
22
#define _@_GUARD_SUFFIX_@_C_ARCHIVE_H_
33

4-
#include <nbl/system/CFileArchive.h>
4+
#include "nbl/system/CFileArchive.h"
55
#include "@NBL_BS_HEADER_FILENAME@"
66

77
namespace @_NAMESPACE_@

src/nbl/builtin/utils.cmake

Lines changed: 73 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# Assigns builtin resources to a bundle a target library will be created with
2+
# _BUNDLE_NAME_ is a bundle name, must be a valid CMake variable
3+
# _LBR_PATH_ is a path to builtin resource
4+
15
macro(LIST_BUILTIN_RESOURCE _BUNDLE_NAME_ _LBR_PATH_)
26
set(_OPTIONAL_ALIAS_ "${ARGV2}")
37

@@ -8,14 +12,20 @@ macro(LIST_BUILTIN_RESOURCE _BUNDLE_NAME_ _LBR_PATH_)
812
set(_LBR_${_BUNDLE_NAME_}_ ${_LBR_${_BUNDLE_NAME_}_} PARENT_SCOPE) # override
913
endmacro()
1014

11-
function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH_DIRECTORY_ _NAMESPACE_ _OUTPUT_DIRECTORY_)
15+
# Creates a library with builtin resources for given bundle
16+
# _TARGET_NAME_ is name of a target library that will be created
17+
# _BUNDLE_NAME_ is a bundle name builtin resources are associated with
18+
# _BUNDLE_SEARCH_DIRECTORY_ is an absolute search directory path for builtin resorces for given bundle
19+
# _NAMESPACE_ is a C++ namespace builtin resources will be wrapped into
20+
# _OUTPUT_INCLUDE_SEARCH_DIRECTORY_ is an absolute path to output directory for builtin resources header files which will be a search directory for generated headers outputed to ${_OUTPUT_HEADER_DIRECTORY_}/${_PATH_PREFIX_} where path prefix is the namespace turned into a path
21+
# _OUTPUT_SOURCE_DIRECTORY_ is an absolute path to output directory for builtin resources source files
22+
23+
function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH_DIRECTORY_ _NAMESPACE_ _OUTPUT_INCLUDE_SEARCH_DIRECTORY_ _OUTPUT_SOURCE_DIRECTORY_)
1224
if(NOT DEFINED _Python3_EXECUTABLE)
1325
message(FATAL_ERROR "_Python3_EXECUTABLE must be defined - call find_package(Python3 COMPONENTS Interpreter REQUIRED)")
1426
endif()
1527

16-
file(MAKE_DIRECTORY "${_OUTPUT_DIRECTORY_}")
17-
18-
set(NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/CArchive.h.in")
28+
set(NBL_TEMPLATE_RESOURCES_ARCHIVE_HEADER "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/CArchive.h.in")
1929
set(NBL_BUILTIN_HEADER_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinHeaderGen.py")
2030
set(NBL_BUILTIN_DATA_GEN_PY "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/builtinDataGen.py")
2131
set(NBL_BS_HEADER_FILENAME "builtinResources.h")
@@ -27,38 +37,54 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
2737
string(TOUPPER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
2838
string(MAKE_C_IDENTIFIER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)
2939

40+
set(_OUTPUT_HEADER_DIRECTORY_ "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}/${_PATH_PREFIX_}")
41+
42+
file(MAKE_DIRECTORY "${_OUTPUT_HEADER_DIRECTORY_}")
43+
file(MAKE_DIRECTORY "${_OUTPUT_SOURCE_DIRECTORY_}")
44+
3045
set(_ITR_ 0)
31-
foreach(X IN LISTS _LBR_${_BUNDLE_NAME_}_)
46+
foreach(X IN LISTS _LBR_${_BUNDLE_NAME_}_) # iterate over builtin resources bundle list given bundle name
3247
set(_CURRENT_ITEM_ "${X}")
3348
string(FIND "${_CURRENT_ITEM_}" "," _FOUND_ REVERSE)
3449

35-
string(REGEX REPLACE ",.*" "" _CURRENT_PATH_ "${_CURRENT_ITEM_}")
36-
string(REGEX REPLACE ".*," "" _CURRENT_ALIAS_ "${_CURRENT_ITEM_}")
50+
string(REGEX REPLACE ",.*" "" _CURRENT_PATH_ "${_CURRENT_ITEM_}") # _LBR_PATH_ path for given bundle
51+
string(REGEX REPLACE ".*," "" _CURRENT_ALIAS_ "${_CURRENT_ITEM_}") # optional alias for given builtin resource
52+
53+
set(NBL_BUILTIN_RESOURCE_ABS_PATH "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}") # an absolute path to a builtin resource
54+
list(APPEND NBL_BUILTIN_RESOURCES "${NBL_BUILTIN_RESOURCE_ABS_PATH}")
3755

38-
if(EXISTS "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
39-
list(APPEND NBL_DEPENDENCY_FILES "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}")
40-
file(SIZE "${_BUNDLE_SEARCH_DIRECTORY_}/${_CURRENT_PATH_}" _FILE_SIZE_)
56+
if(EXISTS "${NBL_BUILTIN_RESOURCE_ABS_PATH}")
57+
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_RESOURCE_ABS_PATH}")
58+
file(SIZE "${NBL_BUILTIN_RESOURCE_ABS_PATH}" _FILE_SIZE_) # determine size of builtin resource in bytes
59+
60+
macro(LIST_RESOURCE_FOR_ARCHIVER _LBR_PATH_ _LBR_FILE_SIZE_ _LBR_ID_)
61+
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
62+
endmacro()
63+
64+
LIST_RESOURCE_FOR_ARCHIVER("${_CURRENT_PATH_}" "${_FILE_SIZE_}" "${_ITR_}")
4165

42-
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
66+
if(_CURRENT_ALIAS_) # if an alias is present list it with the same ID of the current handled builtin resource
67+
LIST_RESOURCE_FOR_ARCHIVER("${_CURRENT_ALIAS_}" "${_FILE_SIZE_}" "${_ITR_}")
68+
endif()
4369
else()
4470
message(FATAL_ERROR "!") # TODO: set GENERATED property, therefore we could turn some input into output and list it as builtin resource
4571
endif()
4672

4773
math(EXPR _ITR_ "${_ITR_} + 1")
4874
endforeach()
4975

50-
configure_file("${NBL_TEMPLATE_APK_RESOURCES_ARCHIVE_HEADER}" "${_OUTPUT_DIRECTORY_}/CArchive.h")
76+
configure_file("${NBL_TEMPLATE_RESOURCES_ARCHIVE_HEADER}" "${_OUTPUT_HEADER_DIRECTORY_}/CArchive.h")
5177

5278
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_HEADER_GEN_PY}")
5379
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_DATA_GEN_PY}")
5480

55-
set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_DIRECTORY_}/resources.txt")
81+
set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_SOURCE_DIRECTORY_}/resources.txt")
5682

5783
string(REPLACE ";" "," RESOURCES_ARGS "${${_BUNDLE_NAME_}}")
5884
file(WRITE "${NBL_RESOURCES_LIST_FILE}" "${RESOURCES_ARGS}")
5985

60-
set(NBL_BUILTIN_RESOURCES_HEADER "${_OUTPUT_DIRECTORY_}/${NBL_BS_HEADER_FILENAME}")
61-
set(NBL_BUILTIN_RESOURCE_DATA_SOURCE "${_OUTPUT_DIRECTORY_}/${NBL_BS_DATA_SOURCE_FILENAME}")
86+
set(NBL_BUILTIN_RESOURCES_HEADER "${_OUTPUT_HEADER_DIRECTORY_}/${NBL_BS_HEADER_FILENAME}")
87+
set(NBL_BUILTIN_RESOURCE_DATA_SOURCE "${_OUTPUT_SOURCE_DIRECTORY_}/${NBL_BS_DATA_SOURCE_FILENAME}")
6288

6389
add_custom_command(
6490
OUTPUT "${NBL_BUILTIN_RESOURCES_HEADER}" "${NBL_BUILTIN_RESOURCE_DATA_SOURCE}"
@@ -83,9 +109,39 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
83109
set_property(TARGET ${_TARGET_NAME_} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
84110
endif()
85111

86-
list(APPEND _NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ "${_OUTPUT_DIRECTORY_}/CArchive.h")
112+
set(NBL_BUILTIN_RESOURCES ${NBL_BUILTIN_RESOURCES}) # turn builtin resources paths list into variable
113+
set(NBL_BUILTIN_RESOURCES_HEADERS
114+
"${NBL_BUILTIN_RESOURCES_HEADER}"
115+
"${_OUTPUT_HEADER_DIRECTORY_}/CArchive.h"
116+
)
117+
118+
list(APPEND _NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ "${_OUTPUT_HEADER_DIRECTORY_}/CArchive.h")
87119
set(_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_ ${_NBL_BUILTIN_RESOURCES_ARCHIVE_APK_SOURCES_} PARENT_SCOPE)
88120

89121
list(APPEND _NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_TARGET_NAME_})
90122
set(_NBL_BUILTIN_RESOURCES_LIBRARIES_ ${_NBL_BUILTIN_RESOURCES_LIBRARIES_} PARENT_SCOPE) # override
91-
endfunction()
123+
124+
macro(_ADD_PROPERTY_ _BR_PROPERTY_ _BR_PROXY_VAR_)
125+
get_property(_BR_PROPERTY_DEFINED_
126+
TARGET ${_TARGET_NAME_}
127+
PROPERTY ${_BR_PROPERTY_}
128+
DEFINED
129+
)
130+
131+
if(NOT _BR_PROPERTY_DEFINED_)
132+
define_property(TARGET PROPERTY ${_BR_PROPERTY_})
133+
set_target_properties(${_TARGET_NAME_} PROPERTIES ${_BR_PROPERTY_} "${${_BR_PROXY_VAR_}}")
134+
endif()
135+
136+
unset(_BR_PROPERTY_DEFINED_)
137+
endmacro()
138+
139+
_ADD_PROPERTY_(BUILTIN_RESOURCES NBL_BUILTIN_RESOURCES)
140+
_ADD_PROPERTY_(BUILTIN_RESOURCES_BUNDLE_NAME _BUNDLE_NAME_)
141+
_ADD_PROPERTY_(BUILTIN_RESOURCES_BUNDLE_SEARCH_DIRECTORY _BUNDLE_SEARCH_DIRECTORY_)
142+
_ADD_PROPERTY_(BUILTIN_RESOURCES_NAMESPACE _NAMESPACE_)
143+
_ADD_PROPERTY_(BUILTIN_RESOURCES_HEADER_DIRECTORY _OUTPUT_HEADER_DIRECTORY_)
144+
_ADD_PROPERTY_(BUILTIN_RESOURCES_SOURCE_DIRECTORY _OUTPUT_SOURCE_DIRECTORY_)
145+
_ADD_PROPERTY_(BUILTIN_RESOURCES_HEADERS NBL_BUILTIN_RESOURCES_HEADERS)
146+
_ADD_PROPERTY_(BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY _OUTPUT_INCLUDE_SEARCH_DIRECTORY_)
147+
endfunction()

0 commit comments

Comments
 (0)