Skip to content

Commit 3dced4a

Browse files
Merge branch 'master' of github.com:Devsh-Graphics-Programming/Nabla
2 parents d83f956 + 2d27211 commit 3dced4a

File tree

3 files changed

+78
-10
lines changed

3 files changed

+78
-10
lines changed

3rdparty/boost/CMakeLists.txt

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,60 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
1717
ADD_CUSTOM_BUILTIN_RESOURCES(boostBuiltinResourceData BOOST_RESOURCES_TO_EMBED "${_BOOST_PREPROCESSOR_BR_BUNDLE_SEARCH_DIRECTORY_}" "boost" "boost::builtin" "${_BOOST_PREPROCESSOR_BR_OUTPUT_DIRECTORY_HEADER_}" "${_BOOST_PREPROCESSOR_BR_OUTPUT_DIRECTORY_HEADER_}" "STATIC" "INTERNAL")
1818
endif()
1919

20-
set(BOOST_INCLUDE_LIBRARIES wave)
20+
get_filename_component(NBL_BOOST_WAVE_DEP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dep/wave.cmake" ABSOLUTE)
21+
22+
if(NOT EXISTS "${NBL_BOOST_WAVE_DEP_FILE}")
23+
message(FATAL_ERROR "Internal error, generate NBL_BOOST_WAVE_DEP_FILE by enabling NBL_BOOST_GENERATE_DEP_LIST!")
24+
endif()
25+
2126
set(BOOST_STAGEDIR "${CMAKE_CURRENT_BINARY_DIR}/boost/superproject/stage")
22-
add_subdirectory(superproject superproject EXCLUDE_FROM_ALL)
27+
include("${NBL_BOOST_WAVE_DEP_FILE}")
28+
29+
foreach(BOOST_LIB IN LISTS NBL_BOOST_LIBS)
30+
add_subdirectory(superproject/libs/${BOOST_LIB} EXCLUDE_FROM_ALL)
31+
endforeach()
32+
33+
add_subdirectory(superproject/libs/wave EXCLUDE_FROM_ALL)
34+
35+
# Boost uses it's own tool for generating dependency list for targets, therefore we
36+
# can make sure manually added dependnecy subdirectories for a library are valid
37+
# https://www.boost.org/doc/libs/1_83_0/tools/boostdep/doc/html/index.html#boostdep.introduction.building_boostdep
38+
39+
if(NBL_BOOST_GENERATE_DEP_LIST) # internal, for Nabla devs
40+
if(WIN32)
41+
set(NBL_BOOSTDEP_EXE "boostdep.exe")
42+
else()
43+
set(NBL_BOOSTDEP_EXE "boostdep")
44+
endif()
45+
46+
set(NBL_BOOSTDEP_EXE_FILEPATH "${CMAKE_CURRENT_BINARY_DIR}/superproject/tools/boostdep/bin/${NBL_BOOSTDEP_EXE}")
47+
48+
if(NOT EXISTS "${NBL_BOOSTDEP_EXE_FILEPATH}")
49+
macro(NBL_BOOST_EXECUTE)
50+
execute_process(COMMAND ${ARGV}
51+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/superproject"
52+
)
53+
endmacro()
54+
55+
NBL_BOOST_EXECUTE(cmd /C bootstrap.bat)
56+
NBL_BOOST_EXECUTE(cmd /C b2.exe tools/boostdep/build)
57+
NBL_BOOST_EXECUTE("${CMAKE_COMMAND}" -E copy "./dist/bin/${NBL_BOOSTDEP_EXE}" "${NBL_BOOSTDEP_EXE_FILEPATH}")
58+
NBL_BOOST_EXECUTE(git clean -fdx)
59+
NBL_BOOST_EXECUTE(git reset --hard)
60+
endif()
61+
62+
execute_process(COMMAND "${NBL_BOOSTDEP_EXE_FILEPATH}" --boost-root "${CMAKE_CURRENT_SOURCE_DIR}/superproject" --brief wave
63+
OUTPUT_VARIABLE NBL_OUTPUT_VAR
64+
)
65+
66+
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "${NBL_OUTPUT_VAR}")
67+
68+
file(STRINGS "${NBL_BOOST_WAVE_DEP_FILE}" NBL_BOOST_LIBS)
69+
set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})
70+
list(POP_FRONT NBL_BOOST_LIBS)
71+
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "#")
72+
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "(unknown)")
73+
string(REPLACE "~" "/" NBL_BOOST_LIBS "${NBL_BOOST_LIBS}")
74+
75+
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})")
76+
endif()

3rdparty/boost/dep/wave.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
set(NBL_BOOST_LIBS assert;concept_check;config;core;filesystem;format;iterator;lexical_cast;mpl;multi_index;optional;pool;preprocessor;serialization;smart_ptr;spirit;static_assert;throw_exception;type_traits;atomic;container_hash;detail;io;predef;system;winapi;utility;conversion;function_types;fusion;container;integer;numeric/conversion;bind;move;tuple;array;function;mp11;variant;variant2;endian;phoenix;proto;range;regex;thread;typeof;unordered;align;intrusive;describe;functional;chrono;date_time;exception;type_index;ratio;algorithm;tokenizer)

cmake/common.cmake

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,11 +1277,17 @@ macro(write_source_definitions NBL_FILE NBL_WRAPPER_CODE_TO_WRITE)
12771277
endmacro()
12781278

12791279
function(NBL_UPDATE_SUBMODULES)
1280-
macro(NBL_WRAPPER_COMMAND GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE)
1280+
macro(NBL_WRAPPER_COMMAND GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH)
12811281
set(SHOULD_RECURSIVE ${SHOULD_RECURSIVE})
1282-
1282+
1283+
if("${EXCLUDE_SUBMODULE_PATH}" STREQUAL "")
1284+
set(NBL_EXCLUDE "")
1285+
else()
1286+
set(NBL_EXCLUDE "-c submodule.\"${EXCLUDE_SUBMODULE_PATH}\".update=none")
1287+
endif()
1288+
12831289
if(SHOULD_RECURSIVE)
1284-
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${GIT_EXECUTABLE}\" -C \"${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}\" submodule update --init --recursive ${GIT_SUBMODULE_PATH}\n")
1290+
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${GIT_EXECUTABLE}\" ${NBL_EXCLUDE} -C \"${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}\" submodule update --init --recursive ${GIT_SUBMODULE_PATH}\n")
12851291
else()
12861292
string(APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\"${GIT_EXECUTABLE}\" -C \"${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}\" submodule update --init ${GIT_SUBMODULE_PATH}\n")
12871293
endif()
@@ -1291,14 +1297,21 @@ function(NBL_UPDATE_SUBMODULES)
12911297
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "All submodules are about to get updated and initialized in repository because NBL_UPDATE_GIT_SUBMODULE is turned ON!")
12921298
set(_NBL_UPDATE_SUBMODULES_CMD_NAME_ "nbl-update-submodules")
12931299
set(_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY}/${_NBL_UPDATE_SUBMODULES_CMD_NAME_}.cmd")
1300+
1301+
include("${THIRD_PARTY_SOURCE_DIR}/boost/dep/wave.cmake")
12941302

12951303
if(NBL_UPDATE_GIT_SUBMODULE_INCLUDE_PRIVATE)
1296-
NBL_WRAPPER_COMMAND("" "" TRUE)
1304+
NBL_WRAPPER_COMMAND("" "" TRUE "")
12971305
else()
1298-
NBL_WRAPPER_COMMAND("" ./3rdparty TRUE)
1299-
#NBL_WRAPPER_COMMAND("" ./ci TRUE) TODO: enable it once we merge Ditt, etc
1300-
NBL_WRAPPER_COMMAND("" ./examples_tests FALSE)
1301-
NBL_WRAPPER_COMMAND(examples_tests ./media FALSE)
1306+
NBL_WRAPPER_COMMAND("" ./3rdparty TRUE "3rdparty/boost/superproject")
1307+
NBL_WRAPPER_COMMAND(3rdparty/boost "./superproject" FALSE "")
1308+
foreach(BOOST_LIB IN LISTS NBL_BOOST_LIBS)
1309+
NBL_WRAPPER_COMMAND(3rdparty/boost/superproject "./libs/${BOOST_LIB}" TRUE "")
1310+
endforeach()
1311+
1312+
#NBL_WRAPPER_COMMAND("" ./ci TRUE "") TODO: enable it once we merge Ditt, etc
1313+
NBL_WRAPPER_COMMAND("" ./examples_tests FALSE "")
1314+
NBL_WRAPPER_COMMAND(examples_tests ./media FALSE "")
13021315
endif()
13031316

13041317
file(WRITE "${_NBL_UPDATE_SUBMODULES_CMD_FILE_}" "${_NBL_UPDATE_SUBMODULES_COMMANDS_}")

0 commit comments

Comments
 (0)