Skip to content

Commit 1bffdc7

Browse files
committed
ok Nabla target builds with refactored single config build options header, now need to get rid of define.h and move it to interface compile definition properties to support install usage requirements
1 parent 944ea28 commit 1bffdc7

File tree

6 files changed

+81
-116
lines changed

6 files changed

+81
-116
lines changed

CMakeLists.txt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -161,22 +161,13 @@ if(_NBL_AVAILABLE_PHYSICAL_MEMORY_ LESS_EQUAL _NBL_DEBUG_MEMORY_CONSUPTION_WITH_
161161
else()
162162
set(_NBL_CMAKE_STATUS_ FATAL_ERROR)
163163
endif()
164-
164+
165165
message(${_NBL_CMAKE_STATUS_} "Memory consumption issue detected! To protect you from compile and linker errors, please read this message.\n\nYour total physical memory is ${_NBL_TOTAL_PHYSICAL_MEMORY_} MBs, your OS is currently using ${_NBL_CURRENTLY_USED_PHYSICAL_MEMORY_} MBs and consumption of your memory with requested ${_NBL_JOBS_AMOUNT_} jobs in Debug configuration may be around ${_NBL_DEBUG_MEMORY_CONSUPTION_WITH_ALL_JOBS_} MBs. Please override '_NBL_JOBS_AMOUNT_' variable by setting it as cache variable and lower the jobs! If you want to continue anyway, please define 'NBL_MEMORY_CONSUMPTION_CHECK_SKIP' but be aware - you are doing it on your own risk of possible build failures.")
166166
endif()
167167

168168
include(adjust/flags)
169169
include(adjust/definitions)
170170

171-
if(WIN32)
172-
set(_NBL_PLATFORM_WINDOWS_ 1)
173-
elseif(ANDROID)
174-
set(_NBL_PLATFORM_ANDROID_ 1)
175-
elseif(UNIX)
176-
set(_NBL_PLATFORM_LINUX_ 1)
177-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
178-
endif()
179-
180171
if(NBL_STATIC_BUILD)
181172
unset(_NBL_SHARED_BUILD_ CACHE)
182173
else()
@@ -185,7 +176,7 @@ endif()
185176

186177
option(NBL_BUILD_DPL "Enable DPL (Dynamic Parallelism Library)" OFF)
187178
option(NBL_PCH "Enable pre-compiled header" ON)
188-
option(NBL_FAST_MATH "Enable fast low-precision math" ON)
179+
option(NBL_FAST_MATH "Enable fast low-precision math" OFF) # the reason OFF is by default now is the var controling it at build time was set AFTER BuildConfigOptions was generated - resulting in the feature being always OFF regardless the value xD - so just for sanity, keeping the same behaviour by default
189180
option(NBL_BUILD_EXAMPLES "Enable building examples" ON)
190181
option(NBL_BUILD_MITSUBA_LOADER "Enable nbl::ext::MitsubaLoader?" OFF) # TODO: once it compies turn this ON by default!
191182
option(NBL_BUILD_IMGUI "Enable nbl::ext::ImGui?" ON)

cmake/common.cmake

Lines changed: 6 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -202,45 +202,12 @@ macro(nbl_create_ext_library_project EXT_NAME LIB_HEADERS LIB_SOURCES LIB_INCLUD
202202
)
203203
endmacro()
204204

205-
function(nbl_get_conf_dir _OUTVAR _CONFIG)
206-
string(TOLOWER ${_CONFIG} CONFIG)
207-
set(${_OUTVAR} "${NBL_ROOT_PATH_BINARY}/include/nbl/config/${CONFIG}" PARENT_SCOPE)
208-
endfunction()
209-
210-
macro(nbl_generate_conf_files)
211-
nbl_get_conf_dir(NBL_CONF_DIR_DEBUG Debug)
212-
nbl_get_conf_dir(NBL_CONF_DIR_RELEASE Release)
213-
nbl_get_conf_dir(NBL_CONF_DIR_RELWITHDEBINFO RelWithDebInfo)
214-
215-
set(_NBL_DEBUG 0)
216-
set(_NBL_RELWITHDEBINFO 0)
217-
218-
configure_file("${NBL_ROOT_PATH}/include/nbl/config/BuildConfigOptions.h.in" "${NBL_CONF_DIR_RELEASE}/BuildConfigOptions.h.conf")
219-
file(GENERATE OUTPUT "${NBL_CONF_DIR_RELEASE}/BuildConfigOptions.h" INPUT "${NBL_CONF_DIR_RELEASE}/BuildConfigOptions.h.conf" CONDITION $<CONFIG:Release>)
220-
221-
set(_NBL_DEBUG 0)
222-
set(_NBL_RELWITHDEBINFO 1)
223-
224-
configure_file("${NBL_ROOT_PATH}/include/nbl/config/BuildConfigOptions.h.in" "${NBL_CONF_DIR_RELWITHDEBINFO}/BuildConfigOptions.h.conf")
225-
file(GENERATE OUTPUT "${NBL_CONF_DIR_RELWITHDEBINFO}/BuildConfigOptions.h" INPUT "${NBL_CONF_DIR_RELWITHDEBINFO}/BuildConfigOptions.h.conf" CONDITION $<CONFIG:RelWithDebInfo>)
226-
227-
set(_NBL_DEBUG 1)
228-
set(_NBL_RELWITHDEBINFO 0)
229-
230-
configure_file("${NBL_ROOT_PATH}/include/nbl/config/BuildConfigOptions.h.in" "${NBL_CONF_DIR_DEBUG}/BuildConfigOptions.h.conf")
231-
file(GENERATE OUTPUT "${NBL_CONF_DIR_DEBUG}/BuildConfigOptions.h" INPUT "${NBL_CONF_DIR_DEBUG}/BuildConfigOptions.h.conf" CONDITION $<CONFIG:Debug>)
232-
233-
unset(NBL_CONF_DIR_DEBUG)
234-
unset(NBL_CONF_DIR_RELEASE)
235-
unset(NBL_CONF_DIR_RELWITHDEBINFO)
236-
endmacro()
237-
238205
###########################################
239206
# Nabla install rules, directory structure:
240207
#
241-
# - $<CONFIG>/include (header files)
242-
# - $<CONFIG>/lib (import/static/shared libraries)
243-
# - $<CONFIG>/runtime (DLLs/PDBs)
208+
# - include (portable header files)
209+
# - $<CONFIG>/lib (static or import shared libraries)
210+
# - $<CONFIG>/runtime (DLLs/SOs/PDBs)
244211
# - $<CONFIG>/exe (executables and media)
245212
#
246213
# If $<CONFIG> == Release, then the directory structure doesn't begin with $<CONFIG>
@@ -251,9 +218,7 @@ function(nbl_install_headers_spec _HEADERS _BASE_HEADERS_DIR)
251218
foreach (file ${_HEADERS})
252219
file(RELATIVE_PATH dir ${_BASE_HEADERS_DIR} ${file})
253220
get_filename_component(dir ${dir} DIRECTORY)
254-
install(FILES ${file} DESTINATION include/${dir} CONFIGURATIONS Release COMPONENT Headers)
255-
install(FILES ${file} DESTINATION debug/include/${dir} CONFIGURATIONS Debug COMPONENT Headers)
256-
install(FILES ${file} DESTINATION relwithdebinfo/include/${dir} CONFIGURATIONS RelWithDebInfo COMPONENT Headers)
221+
install(FILES ${file} DESTINATION include/${dir} COMPONENT Headers)
257222
endforeach()
258223
endfunction()
259224

@@ -266,19 +231,15 @@ function(nbl_install_headers _HEADERS)
266231
endfunction()
267232

268233
function(nbl_install_file_spec _FILES _RELATIVE_DESTINATION)
269-
install(FILES ${_FILES} DESTINATION include/${_RELATIVE_DESTINATION} CONFIGURATIONS Release COMPONENT Headers)
270-
install(FILES ${_FILES} DESTINATION debug/include/${_RELATIVE_DESTINATION} CONFIGURATIONS Debug COMPONENT Headers)
271-
install(FILES ${_FILES} DESTINATION relwithdebinfo/include/${_RELATIVE_DESTINATION} CONFIGURATIONS RelWithDebInfo COMPONENT Headers)
234+
install(FILES ${_FILES} DESTINATION include/${_RELATIVE_DESTINATION} COMPONENT Headers)
272235
endfunction()
273236

274237
function(nbl_install_file _FILES)
275238
nbl_install_file_spec("${_FILES}" "")
276239
endfunction()
277240

278241
function(nbl_install_dir_spec _DIR _RELATIVE_DESTINATION)
279-
install(DIRECTORY ${_DIR} DESTINATION include/${_RELATIVE_DESTINATION} CONFIGURATIONS Release COMPONENT Headers)
280-
install(DIRECTORY ${_DIR} DESTINATION debug/include/${_RELATIVE_DESTINATION} CONFIGURATIONS Debug COMPONENT Headers)
281-
install(DIRECTORY ${_DIR} DESTINATION relwithdebinfo/include/${_RELATIVE_DESTINATION} CONFIGURATIONS RelWithDebInfo COMPONENT Headers)
242+
install(DIRECTORY ${_DIR} DESTINATION include/${_RELATIVE_DESTINATION} COMPONENT Headers)
282243
endfunction()
283244

284245
function(nbl_install_dir _DIR)
@@ -396,18 +357,6 @@ function(nbl_install_builtin_resources _TARGET_)
396357
nbl_install_headers_spec("${_BUILTIN_RESOURCES_HEADERS_}" "${_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_}")
397358
endfunction()
398359

399-
function(nbl_install_config_header _CONF_HDR_NAME)
400-
nbl_get_conf_dir(dir_deb Debug)
401-
nbl_get_conf_dir(dir_rel Release)
402-
nbl_get_conf_dir(dir_relWithDebInfo RelWithDebInfo)
403-
set(file_deb "${dir_deb}/${_CONF_HDR_NAME}")
404-
set(file_rel "${dir_rel}/${_CONF_HDR_NAME}")
405-
set(file_relWithDebInfo "${dir_relWithDebInfo}/${_CONF_HDR_NAME}")
406-
install(FILES ${file_rel} DESTINATION include CONFIGURATIONS Release)
407-
install(FILES ${file_deb} DESTINATION debug/include CONFIGURATIONS Debug)
408-
install(FILES ${file_relWithDebInfo} DESTINATION relwithdebinfo/include CONFIGURATIONS RelWithDebInfo)
409-
endfunction()
410-
411360
function(NBL_TEST_MODULE_INSTALL_FILE _NBL_FILEPATH_)
412361
file(RELATIVE_PATH _NBL_REL_INSTALL_DEST_ "${NBL_ROOT_PATH}" "${_NBL_FILEPATH_}")
413362
cmake_path(GET _NBL_REL_INSTALL_DEST_ PARENT_PATH _NBL_REL_INSTALL_DEST_)

include/nbl/config/BuildConfigOptions.h.in

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,17 @@
22
#define __NBL_BUILD_CONFIG_OPTIONS_H_INCLUDED__
33

44
// TODO: figure out _ and _ suffixes and prefixes
5-
6-
#cmakedefine _NBL_DEBUG
7-
#cmakedefine _NBL_RELWITHDEBINFO
8-
9-
// architecture (TODO: rethink)
10-
#cmakedefine __NBL_COMPILE_WITH_ARM_SIMD_
5+
/*
6+
DO NOT put any defines which are platform, toolset or architecture
7+
specific, such defines go through CMake usage requirements and are
8+
visible both in build & install interface, putting them in headers
9+
breaks portable usage of the library
10+
*/
1111

1212
// libraries
1313
#cmakedefine _NBL_COMPILE_WITH_GLI_
1414
#cmakedefine _NBL_COMPILE_WITH_OPEN_EXR_
1515

16-
// OS
17-
#cmakedefine _NBL_PLATFORM_WINDOWS_
18-
#cmakedefine _NBL_PLATFORM_LINUX_
19-
#cmakedefine _NBL_PLATFORM_OSX_
20-
#cmakedefine _NBL_PLATFORM_ANDROID_
21-
2216
// graphics API backend
2317
#cmakedefine _NBL_COMPILE_WITH_VULKAN_
2418

@@ -32,10 +26,10 @@
3226
#cmakedefine _NBL_COMPILE_WITH_JPG_LOADER_
3327
#cmakedefine _NBL_COMPILE_WITH_PNG_LOADER_
3428
#cmakedefine _NBL_COMPILE_WITH_TGA_LOADER_
35-
#ifdef _NBL_COMPILE_WITH_OPEN_EXR_
29+
#ifdef _NBL_COMPILE_WITH_OPEN_EXR_ // ? TODO
3630
#cmakedefine _NBL_COMPILE_WITH_OPENEXR_LOADER_
3731
#endif
38-
#ifdef _NBL_COMPILE_WITH_GLI_
32+
#ifdef _NBL_COMPILE_WITH_GLI_ // ? TODO
3933
#cmakedefine _NBL_COMPILE_WITH_GLI_LOADER_
4034
#endif
4135
#cmakedefine _NBL_COMPILE_WITH_GLTF_LOADER_
@@ -47,10 +41,10 @@
4741
#cmakedefine _NBL_COMPILE_WITH_TGA_WRITER_
4842
#cmakedefine _NBL_COMPILE_WITH_JPG_WRITER_
4943
#cmakedefine _NBL_COMPILE_WITH_PNG_WRITER_
50-
#ifdef _NBL_COMPILE_WITH_OPEN_EXR_
44+
#ifdef _NBL_COMPILE_WITH_OPEN_EXR_ // ? TODO
5145
#cmakedefine _NBL_COMPILE_WITH_OPENEXR_WRITER_
5246
#endif
53-
#ifdef _NBL_COMPILE_WITH_GLI_
47+
#ifdef _NBL_COMPILE_WITH_GLI_ // ? TODO
5448
#cmakedefine _NBL_COMPILE_WITH_GLI_WRITER_
5549
#endif
5650
#cmakedefine _NBL_COMPILE_WITH_GLTF_WRITER_
@@ -65,12 +59,10 @@
6559

6660
#cmakedefine _NBL_BUILD_DPL_
6761

62+
// !
6863
// TODO: This has to disapppear from the main header and go to the OptiX extension header + config
6964
#cmakedefine OPTIX_INCLUDE_DIR "@OPTIX_INCLUDE_DIR@"
7065

71-
// DXC compile flags
72-
#cmakedefine DXC_COMPILE_FLAGS "@DXC_COMPILE_FLAGS@"
73-
7466
#if defined(_NBL_DEBUG) || defined(_NBL_RELWITHDEBINFO)
7567
#define _NBL_EG_PRFNT_LEVEL @_NBL_EG_PRFNT_LEVEL@
7668
#if _NBL_EG_PRFNT_LEVEL == 1
@@ -82,11 +74,6 @@
8274
#endif
8375
#endif
8476

85-
#define NBL_BUILTIN_RESOURCES_DIRECTORY_PATH "@NBL_BUILTIN_RESOURCES_DIRECTORY_PATH@"
86-
#define SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH "@SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH@"
87-
#define BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH "@BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH@"
88-
#define DEVICEGEN_BUILTIN_RESOURCES_DIRECTORY_PATH "@DEVICEGEN_BUILTIN_RESOURCES_DIRECTORY_PATH@"
89-
9077
// DLL exports
9178
#cmakedefine _NBL_SHARED_BUILD_
9279
#ifdef _NBL_SHARED_BUILD_
@@ -108,8 +95,14 @@
10895
#endif
10996

11097
// any other target definitions for using Nabla as framework in another project
98+
99+
// TODO: not this way, use CMake usage requirements!
100+
/*
101+
111102
#ifndef __NBL_BUILDING_NABLA__
112103
#include "define.h"
113104
#endif // __NBL_BUILDING_NABLA__
114105
106+
*/
107+
115108
#endif // __NBL_BUILD_CONFIG_OPTIONS_H_INCLUDED__

include/nbl/system/ISystem.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,6 @@ class NBL_API2 ISystem : public core::IReferenceCounted
4747
future.set_result(value);
4848
}
4949
};
50-
51-
#ifndef NBL_EMBED_BUILTIN_RESOURCES
52-
constexpr std::string_view getBuiltinResourcesDirectoryPath()
53-
{
54-
std::string_view retval = NBL_BUILTIN_RESOURCES_DIRECTORY_PATH;
55-
return retval;
56-
}
57-
#endif
5850

5951
//
6052
inline void addArchiveLoader(core::smart_refctd_ptr<IArchiveLoader>&& loader)

src/nbl/CMakeLists.txt

Lines changed: 55 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,21 @@ if(NBL_BUILD_ANDROID)
7979
set(NBL_BUILD_MITSUBA_LOADER OFF CACHE BOOL "Android doesn't need this loader, if you want it, pay us.'" FORCE)
8080
endif()
8181

82-
nbl_generate_conf_files()
82+
if(NBL_FAST_MATH)
83+
set(__NBL_FAST_MATH 1) # this could be in BUILD_INTERFACE, the feature is header only and currently install consumer is forced to use what we used at configure time with no option to toggle it
84+
# it should be called _NBL_COMPILE_WITH_FAST_MATH to let user known the lib itself was compiled with the feature and __NBL_FAST_MATH should be separate thing to let control it with install build
85+
endif()
86+
87+
if(NBL_TARGET_ARCH_ARM)
88+
# this should be PRIVATE or at least scoped to build interface only (as currently)
89+
# list(APPEND PUBLIC_DEFINITIONS $<BUILD_INTERFACE:_NBL_TARGET_ARCH_ARM_>) # TODO: uncomment in the future
90+
endif()
8391

84-
nbl_get_conf_dir(NABLA_CONF_DIR_DEBUG Debug)
85-
nbl_get_conf_dir(NABLA_CONF_DIR_RELEASE Release)
86-
nbl_get_conf_dir(NABLA_CONF_DIR_RELWITHDEBINFO RelWithDebInfo)
92+
set(CONFIG_DIRECOTORY "${CMAKE_CURRENT_BINARY_DIR}/include/nbl/config")
93+
set(CONFIG_OUTPUT "${CONFIG_DIRECOTORY}/BuildConfigOptions.h")
94+
configure_file("${NBL_ROOT_PATH}/include/nbl/config/BuildConfigOptions.h.in" "${CONFIG_DIRECOTORY}/.int/BuildConfigOptions.h.conf")
95+
file(GENERATE OUTPUT "${CONFIG_OUTPUT}" INPUT "${CONFIG_DIRECOTORY}/.int/BuildConfigOptions.h.conf")
96+
nbl_install_file_spec("${CONFIG_OUTPUT}" nbl/config)
8797

8898
if (NBL_COMPILE_WITH_CUDA)
8999
message(STATUS "Building with CUDA interop")
@@ -93,10 +103,6 @@ if (NBL_COMPILE_WITH_CUDA)
93103
endif()
94104
endif()
95105

96-
#set(_NBL_TARGET_ARCH_ARM_ ${NBL_TARGET_ARCH_ARM}) #uncomment in the future
97-
98-
set(__NBL_FAST_MATH ${NBL_FAST_MATH})
99-
100106
# a little bit of globbing for headers never hurt anyone
101107
file(GLOB_RECURSE TEMP_GLOB_RES "${NBL_ROOT_PATH}/include/*.h")
102108
set(NABLA_HEADERS_PUBLIC ${NABLA_HEADERS_PUBLIC} ${TEMP_GLOB_RES})
@@ -322,12 +328,7 @@ set(PUBLIC_INCLUDE_DIRS
322328
${CMAKE_BINARY_DIR}/3rdparty/zlib # for dynamically generated zconf.h
323329
${JPEG_STATIC_BINARY_DIR} # for dynamically generated pnglibconf.h
324330
${PNG_STATIC_BINARY_DIR} # for dynamically generated jconfig.h
325-
326-
# -> TODO:
327-
"$<$<CONFIG:DEBUG>:${NABLA_CONF_DIR_DEBUG}>"
328-
"$<$<CONFIG:RELEASE>:${NABLA_CONF_DIR_RELEASE}>"
329-
"$<$<CONFIG:RELWITHDEBINFO>:${NABLA_CONF_DIR_RELWITHDEBINFO}>"
330-
# <-
331+
${CONFIG_DIRECOTORY} # Nabla config directory
331332
)
332333

333334
# just gather all the header files and later put them into project so it's easy to search for things using IDE
@@ -358,6 +359,31 @@ else()
358359
)
359360
endif()
360361

362+
# from old build config template:
363+
#
364+
# // architecture (TODO: rethink)
365+
# cmakedefine __NBL_COMPILE_WITH_ARM_SIMD_ # <- never used, and if even so - should be PRIVATE
366+
#
367+
# // DXC compile flags
368+
# cmakedefine DXC_COMPILE_FLAGS "@DXC_COMPILE_FLAGS@" # <- never used, and if even so - should be PRIVATE
369+
370+
# usage requirements
371+
set(PUBLIC_DEFINITIONS
372+
# configs
373+
$<$<CONFIG:Debug>:_NBL_DEBUG>
374+
$<$<CONFIG:RelWithDebInfo>:_NBL_RELWITHDEBINFO>
375+
376+
# https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_NAME.html#system-names-known-to-cmake
377+
$<$<PLATFORM_ID:Windows>:_NBL_PLATFORM_WINDOWS_>
378+
$<$<PLATFORM_ID:Linux>:_NBL_PLATFORM_LINUX_>
379+
$<$<PLATFORM_ID:Darwin>:_NBL_PLATFORM_OSX_>
380+
$<$<PLATFORM_ID:Android>:_NBL_PLATFORM_ANDROID_>
381+
)
382+
383+
target_compile_definitions(Nabla
384+
PUBLIC ${PUBLIC_DEFINITIONS}
385+
)
386+
361387
nbl_adjust_flags(TARGET Nabla MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug)
362388
nbl_adjust_definitions()
363389

@@ -661,6 +687,7 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
661687
function(NBL_HOOK_INTERNAL_BUILTIN_RESOURCES NBL_TARGETS)
662688
foreach(NBL_TARGET IN LISTS NBL_TARGETS)
663689
get_target_property(_INTERNAL_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_ ${NBL_TARGET} BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
690+
target_compile_definitions(${NBL_TARGET} PUBLIC "$<TARGET_PROPERTY:Nabla,INTERFACE_COMPILE_DEFINITIONS>") # workaround because must use Nabla headers without linking Nabla to itself..
664691
target_include_directories(${NBL_TARGET} PUBLIC "$<TARGET_PROPERTY:Nabla,INCLUDE_DIRECTORIES>")
665692
target_include_directories(Nabla PRIVATE "${_INTERNAL_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}")
666693
endforeach()
@@ -689,6 +716,14 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
689716
get_target_property(_BUILTIN_RESOURCES_BUNDLE_ARCHIVE_ABSOLUTE_PATH_ nblBuiltinResourceData BUILTIN_RESOURCES_BUNDLE_ARCHIVE_ABSOLUTE_PATH)
690717
get_target_property(NABLA_RESOURCES_TO_EMBED_PUBLIC nblBuiltinResourceData BUILTIN_RESOURCES)
691718

719+
# this is only visible in cpps and should never leak to public interface
720+
target_compile_definitions(Nabla
721+
PRIVATE NBL_BUILTIN_RESOURCES_DIRECTORY_PATH="${NBL_BUILTIN_RESOURCES_DIRECTORY_PATH}"
722+
PRIVATE SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH="${SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH}"
723+
PRIVATE BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH="${BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH}"
724+
PRIVATE DEVICEGEN_BUILTIN_RESOURCES_DIRECTORY_PATH="${DEVICEGEN_BUILTIN_RESOURCES_DIRECTORY_PATH}"
725+
)
726+
692727
target_sources(Nabla PRIVATE
693728
${NABLA_RESOURCES_TO_EMBED_PUBLIC}
694729
)
@@ -762,7 +797,6 @@ propagate_changed_variables_to_parent_scope()
762797

763798
nbl_install_headers("${NABLA_HEADERS_PUBLIC}")
764799
nbl_install_file_spec("${NBL_ROOT_PATH_BINARY}/include/nbl/builtin/builtinResources.h" "nbl/builtin")
765-
nbl_install_config_header(BuildConfigOptions.h)
766800

767801
if(NBL_EMBED_BUILTIN_RESOURCES)
768802
nbl_install_builtin_resources(nblBuiltinResourceData)
@@ -773,10 +807,15 @@ endif()
773807
set_target_properties(Nabla PROPERTIES DEBUG_POSTFIX _debug)
774808
set_target_properties(Nabla PROPERTIES RELWITHDEBINFO_POSTFIX _relwithdebinfo)
775809

810+
set(INSTALL_INCLUDE
811+
include
812+
include/nbl/config # TMP, to let #include "BuildConfigOptions.h" work
813+
)
814+
776815
# target_include_directories for Nabla with PUBLIC *must not* be called after following
777816
target_include_directories(Nabla PUBLIC
778817
"$<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS}>"
779-
"$<INSTALL_INTERFACE:include>"
818+
"$<INSTALL_INTERFACE:${INSTALL_INCLUDE}>"
780819
)
781820

782821
if(NBL_STATIC_BUILD)

tools/xxHash256/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ target_include_directories(${EXECUTABLE_NAME} PUBLIC
88
$<TARGET_PROPERTY:argparse,INTERFACE_INCLUDE_DIRECTORIES>
99
$<TARGET_PROPERTY:Nabla,INTERFACE_INCLUDE_DIRECTORIES> # only for xxHash256 include directory, we DO NOT want to link it nor use it
1010
)
11+
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC "$<TARGET_PROPERTY:Nabla,INTERFACE_COMPILE_DEFINITIONS>") # workaround because must use Nabla headers without linking Nabla to itself..
1112

1213
nbl_adjust_flags(MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug)
1314
nbl_adjust_definitions()

0 commit comments

Comments
 (0)