Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 35 additions & 43 deletions cmake/common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -350,13 +350,6 @@ function(nbl_install_media _FILE)
nbl_install_lib_spec("${_FILE}" "")
endfunction()

function(nbl_install_builtin_resources _TARGET_)
get_target_property(_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_ ${_TARGET_} BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
get_target_property(_BUILTIN_RESOURCES_HEADERS_ ${_TARGET_} BUILTIN_RESOURCES_HEADERS)

nbl_install_headers_spec("${_BUILTIN_RESOURCES_HEADERS_}" "${_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_}")
endfunction()

function(NBL_TEST_MODULE_INSTALL_FILE _NBL_FILEPATH_)
file(RELATIVE_PATH _NBL_REL_INSTALL_DEST_ "${NBL_ROOT_PATH}" "${_NBL_FILEPATH_}")
cmake_path(GET _NBL_REL_INSTALL_DEST_ PARENT_PATH _NBL_REL_INSTALL_DEST_)
Expand Down Expand Up @@ -1484,42 +1477,41 @@ namespace @IMPL_NAMESPACE@ {
file(WRITE "${CONFIG_FILE}" "${CONFIG_CONTENT}")

# generate keys and commands for compiling shaders
foreach(BUILD_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES})
set(FINAL_KEY_REL_PATH "${BUILD_CONFIGURATION}/${FINAL_KEY}")
set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY_REL_PATH}")

set(NBL_NSC_COMPILE_COMMAND
"$<TARGET_FILE:nsc>"
-Fc "${TARGET_OUTPUT}"
${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
"${CONFIG_FILE}"
)

add_custom_command(OUTPUT "${TARGET_OUTPUT}"
COMMAND ${NBL_NSC_COMPILE_COMMAND}
DEPENDS ${DEPENDS_ON}
COMMENT "Creating \"${TARGET_OUTPUT}\""
VERBATIM
COMMAND_EXPAND_LISTS
)

set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}")
target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE})

set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES
HEADER_FILE_ONLY ON
VS_TOOL_OVERRIDE None
)

set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES
NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}"
NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}"
NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}"
NBL_SPIRV_ACCESS_KEY "${FINAL_KEY_REL_PATH}"
)

set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}")
endforeach()
set(FINAL_KEY_REL_PATH "$<CONFIG>/${FINAL_KEY}")
set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY_REL_PATH}")

set(NBL_NSC_COMPILE_COMMAND
"$<TARGET_FILE:nsc>"
-Fc "${TARGET_OUTPUT}"
${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
"${CONFIG_FILE}"
)

add_custom_command(OUTPUT "${TARGET_OUTPUT}"
COMMAND ${NBL_NSC_COMPILE_COMMAND}
DEPENDS ${DEPENDS_ON}
COMMENT "Creating \"${TARGET_OUTPUT}\""
VERBATIM
COMMAND_EXPAND_LISTS
)
set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES GENERATED TRUE)

set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}")
target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE})

set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES
HEADER_FILE_ONLY ON
VS_TOOL_OVERRIDE None
)

set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES
NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}"
NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}"
NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}"
NBL_SPIRV_ACCESS_KEY "${FINAL_KEY_REL_PATH}"
)

set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}")
return()
endif()

Expand Down
9 changes: 1 addition & 8 deletions src/nbl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,7 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
target_compile_definitions(${NBL_TARGET} PUBLIC "$<TARGET_PROPERTY:Nabla,INTERFACE_COMPILE_DEFINITIONS>") # workaround because must use Nabla headers without linking Nabla to itself..
target_include_directories(${NBL_TARGET} PUBLIC "$<TARGET_PROPERTY:Nabla,INCLUDE_DIRECTORIES>")
target_include_directories(Nabla PRIVATE "${_INTERNAL_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}")
target_include_directories(Nabla INTERFACE "$<BUILD_INTERFACE:${_INTERNAL_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}>")
endforeach()

add_dependencies(Nabla ${NBL_TARGETS})
Expand Down Expand Up @@ -780,14 +781,6 @@ add_subdirectory(ext EXCLUDE_FROM_ALL)
propagate_changed_variables_to_parent_scope()

nbl_install_headers("${NABLA_HEADERS_PUBLIC}")
nbl_install_file_spec("${NBL_ROOT_PATH_BINARY}/include/nbl/builtin/builtinResources.h" "nbl/builtin")

if(NBL_EMBED_BUILTIN_RESOURCES)
nbl_install_builtin_resources(nblBuiltinResourceData)
nbl_install_builtin_resources(spirvBuiltinResourceData)
nbl_install_builtin_resources(boostBuiltinResourceData)
endif()

set_target_properties(Nabla PROPERTIES DEBUG_POSTFIX _debug)
set_target_properties(Nabla PROPERTIES RELWITHDEBINFO_POSTFIX _relwithdebinfo)

Expand Down
25 changes: 17 additions & 8 deletions src/nbl/builtin/utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,18 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
string(MAKE_C_IDENTIFIER ${_GUARD_SUFFIX_} _GUARD_SUFFIX_)

set(_OUTPUT_INCLUDE_SEARCH_DIRECTORY_ "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}")
set(_OUTPUT_HEADER_DIRECTORY_ "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}/${_NAMESPACE_PREFIX_}")
set(_OUTPUT_HEADER_DIRECTORY_BASE "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}/${_NAMESPACE_PREFIX_}")
set(_OUTPUT_SOURCE_DIRECTORY_BASE "${_OUTPUT_SOURCE_DIRECTORY_}")
set(_OUTPUT_INCLUDE_SEARCH_DIRECTORY_CONFIG "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}/$<CONFIG>")
set(_OUTPUT_HEADER_DIRECTORY_ "${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_CONFIG}/${_NAMESPACE_PREFIX_}")
set(_OUTPUT_SOURCE_DIRECTORY_ "${_OUTPUT_SOURCE_DIRECTORY_BASE}/$<CONFIG>")
set(_OUTPUT_INCLUDE_DIRECTORIES_
"${_OUTPUT_HEADER_DIRECTORY_}"
"${_OUTPUT_INCLUDE_SEARCH_DIRECTORY_CONFIG}"
)

file(MAKE_DIRECTORY "${_OUTPUT_HEADER_DIRECTORY_}")
file(MAKE_DIRECTORY "${_OUTPUT_SOURCE_DIRECTORY_}")
file(MAKE_DIRECTORY "${_OUTPUT_HEADER_DIRECTORY_BASE}")
file(MAKE_DIRECTORY "${_OUTPUT_SOURCE_DIRECTORY_BASE}")

set(_ITR_ 0)
foreach(X IN LISTS _LBR_${_BUNDLE_NAME_}_) # iterate over builtin resources bundle list given bundle name
Expand Down Expand Up @@ -119,10 +127,10 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_HEADER_GEN_PY}")
list(APPEND NBL_DEPENDENCY_FILES "${NBL_BUILTIN_DATA_GEN_PY}")

set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_SOURCE_DIRECTORY_}/resources.txt")
set(NBL_RESOURCES_LIST_FILE "${_OUTPUT_SOURCE_DIRECTORY_BASE}/resources-$<CONFIG>.txt")

string(REPLACE ";" "\n" RESOURCES_ARGS "${_LBR_${_BUNDLE_NAME_}_}")
file(WRITE "${NBL_RESOURCES_LIST_FILE}" "${RESOURCES_ARGS}")
file(GENERATE OUTPUT "${NBL_RESOURCES_LIST_FILE}" CONTENT "${RESOURCES_ARGS}")

set(NBL_BUILTIN_RESOURCES_H "${_OUTPUT_HEADER_DIRECTORY_}/${NBL_BS_HEADER_FILENAME}")
set(NBL_BUILTIN_RESOURCE_DATA_CPP "${_OUTPUT_SOURCE_DIRECTORY_}/${NBL_BS_DATA_SOURCE_FILENAME}")
Expand All @@ -139,6 +147,7 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
)

add_custom_command(OUTPUT "${NBL_BUILTIN_RESOURCES_H}" "${NBL_BUILTIN_RESOURCE_DATA_CPP}" "${NBL_BUILTIN_DATA_ARCHIVE_H}" "${NBL_BUILTIN_DATA_ARCHIVE_CPP}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${_OUTPUT_HEADER_DIRECTORY_}" "${_OUTPUT_SOURCE_DIRECTORY_}"
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_HEADER_GEN_PY}" ${NBL_BUILTIN_RESOURCES_COMMON_ARGS} --outputBuiltinPath "${NBL_BUILTIN_RESOURCES_H}" --outputArchivePath "${NBL_BUILTIN_DATA_ARCHIVE_H}" --archiveBundlePath "${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" --guardSuffix "${_GUARD_SUFFIX_}" --isSharedLibrary "${_SHARED_}"
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_DATA_GEN_PY}" ${NBL_BUILTIN_RESOURCES_COMMON_ARGS} --outputBuiltinPath "${NBL_BUILTIN_RESOURCE_DATA_CPP}" --outputArchivePath "${NBL_BUILTIN_DATA_ARCHIVE_CPP}" --bundleAbsoluteEntryPath "${_BUNDLE_SEARCH_DIRECTORY_}/${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" --correspondingHeaderFile "${NBL_BS_HEADER_FILENAME}" --xxHash256Exe "$<${_NBL_BR_RUNTIME_HASH_}:$<TARGET_FILE:xxHash256>>"
COMMENT "Generating \"${_TARGET_NAME_}\"'s sources & headers"
Expand Down Expand Up @@ -204,8 +213,8 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
endif()

target_include_directories(${_TARGET_NAME_} PUBLIC
${_OUTPUT_INCLUDE_DIRECTORIES_}
"${_NABLA_INCLUDE_DIRECTORIES_}"
"${_OUTPUT_HEADER_DIRECTORY_}"
)
set_target_properties(${_TARGET_NAME_} PROPERTIES CXX_STANDARD 20)

Expand Down Expand Up @@ -242,9 +251,9 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
_ADD_PROPERTY_(BUILTIN_RESOURCES_HEADER_DIRECTORY _OUTPUT_HEADER_DIRECTORY_)
_ADD_PROPERTY_(BUILTIN_RESOURCES_SOURCE_DIRECTORY _OUTPUT_SOURCE_DIRECTORY_)
_ADD_PROPERTY_(BUILTIN_RESOURCES_HEADERS NBL_BUILTIN_RESOURCES_HEADERS)
_ADD_PROPERTY_(BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY _OUTPUT_INCLUDE_SEARCH_DIRECTORY_)
_ADD_PROPERTY_(BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY _OUTPUT_INCLUDE_SEARCH_DIRECTORY_CONFIG)

if(MSVC AND NBL_SANITIZE_ADDRESS)
set_property(TARGET ${_TARGET_NAME_} PROPERTY COMPILE_OPTIONS /fsanitize=address)
endif()
endfunction()
endfunction()
Loading