Skip to content

Commit d63b34a

Browse files
committed
Resolved conflicts, merged dtm
2 parents 048ff07 + 9ddd2e2 commit d63b34a

File tree

8 files changed

+301
-257
lines changed

8 files changed

+301
-257
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
url = git@github.com:Devsh-Graphics-Programming/Nabla-Continous-Integration-Python-Framework.git
9191
[submodule "3rdparty/boost/superproject"]
9292
path = 3rdparty/boost/superproject
93-
url = git@github.com:boostorg/boost.git
93+
url = ../boost.git
9494
[submodule "3rdparty/argparse"]
9595
path = 3rdparty/argparse
9696
url = git@github.com:p-ranav/argparse.git

3rdparty/boost/CMakeLists.txt

Lines changed: 79 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,81 @@
1+
get_filename_component(NBL_BOOST_WAVE_DEP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dep/wave.cmake" ABSOLUTE)
2+
3+
# Boost uses it's own tool for generating dependency list for targets, therefore we
4+
# can make sure manually added dependency subdirectories for a library are valid
5+
# https://www.boost.org/doc/libs/1_83_0/tools/boostdep/doc/html/index.html#boostdep.introduction.building_boostdep
6+
7+
if(NBL_BOOST_GENERATE_DEP_LIST) # internal, for Nabla devs
8+
if(NOT WIN32)
9+
message(FATAL_ERROR "NBL_BOOST_GENERATE_DEP_LIST only for Windows host!")
10+
endif()
11+
12+
macro(NBL_BOOST_EXECUTE)
13+
execute_process(COMMAND ${ARGV} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/superproject")
14+
endmacro()
15+
16+
NBL_BOOST_EXECUTE(git config --file .gitmodules --get-regexp path OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE)
17+
string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
18+
19+
foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
20+
string(REGEX MATCH "submodule\\.(.*)\\.path" NBL_SUBMODULE_NAME "${NBL_SUBMODULE_NAME}")
21+
list(APPEND BOOST_SUBMODULES "${CMAKE_MATCH_1}")
22+
endforeach()
23+
24+
# sync & force update of all boost modules first for the tool purpose (sry guys who use the tool, you need to clone all, I want to keep it simple)
25+
NBL_BOOST_EXECUTE(git submodule sync)
26+
list(APPEND BOOST_FORCE_ALL_CONFIG -c url.https://github.com/.insteadOf=git@github.com:)
27+
foreach(SUBMODULE ${BOOST_SUBMODULES})
28+
list(APPEND BOOST_FORCE_ALL_CONFIG -c submodule.${SUBMODULE}.update=checkout)
29+
endforeach()
30+
31+
NBL_BOOST_EXECUTE(git ${BOOST_FORCE_ALL_CONFIG} submodule update --init --recursive -f)
32+
33+
# build boost dep executable
34+
set(NBL_BOOSTDEP_EXE "boostdep.exe")
35+
set(NBL_BOOSTDEP_EXE_FILEPATH "${CMAKE_CURRENT_BINARY_DIR}/superproject/tools/boostdep/bin/${NBL_BOOSTDEP_EXE}")
36+
if(NOT EXISTS "${NBL_BOOSTDEP_EXE_FILEPATH}")
37+
NBL_BOOST_EXECUTE(cmd /C bootstrap.bat)
38+
NBL_BOOST_EXECUTE(cmd /C b2.exe tools/boostdep/build)
39+
NBL_BOOST_EXECUTE("${CMAKE_COMMAND}" -E copy "./dist/bin/${NBL_BOOSTDEP_EXE}" "${NBL_BOOSTDEP_EXE_FILEPATH}")
40+
NBL_BOOST_EXECUTE(git clean -fdx)
41+
NBL_BOOST_EXECUTE(git reset --hard)
42+
endif()
43+
44+
# get wave dependency info
45+
NBL_BOOST_EXECUTE("${NBL_BOOSTDEP_EXE_FILEPATH}" --boost-root "${CMAKE_CURRENT_SOURCE_DIR}/superproject" --brief wave
46+
OUTPUT_VARIABLE NBL_OUTPUT_VAR
47+
)
48+
49+
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "${NBL_OUTPUT_VAR}")
50+
51+
file(STRINGS "${NBL_BOOST_WAVE_DEP_FILE}" NBL_BOOST_LIBS)
52+
set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})
53+
list(POP_FRONT NBL_BOOST_LIBS)
54+
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "#")
55+
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "(unknown)")
56+
string(REPLACE "~" "/" NBL_BOOST_LIBS "${NBL_BOOST_LIBS}")
57+
58+
# update boost .gitmodules configuration, discard all but modules reported by wave
59+
# NOTE: you commit this file to version control AND boost's .gitmodules *if got changed*,
60+
# use when updating boost to more recent version
61+
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})")
62+
63+
message(STATUS "Updating boost .gitmodules")
64+
foreach(SUBMODULE ${BOOST_SUBMODULES})
65+
# 1) fallback, ignore all
66+
NBL_BOOST_EXECUTE(git config --file .gitmodules submodule.${SUBMODULE}.update none)
67+
endforeach()
68+
69+
foreach(NAME ${NBL_BOOST_LIBS})
70+
string(REPLACE "/" "_" SUBMODULE "${NAME}")
71+
message(STATUS "WAVE BOOST DEP SUBMODULE = ${SUBMODULE}")
72+
# 2) pick only submodules reported by wave
73+
NBL_BOOST_EXECUTE(git config --file .gitmodules submodule.${SUBMODULE}.update checkout)
74+
endforeach()
75+
# 3) and the top module itself
76+
NBL_BOOST_EXECUTE(git config --file .gitmodules submodule.wave.update checkout)
77+
endif()
78+
179
set(BOOST_PREPROCESSOR_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/superproject/libs/preprocessor/include" CACHE PATH "" FORCE)
280

381
get_filename_component(_BOOST_PREPROCESSOR_BR_BUNDLE_SEARCH_DIRECTORY_ "${BOOST_PREPROCESSOR_INCLUDE}" ABSOLUTE)
@@ -17,8 +95,6 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
1795
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")
1896
endif()
1997

20-
get_filename_component(NBL_BOOST_WAVE_DEP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dep/wave.cmake" ABSOLUTE)
21-
2298
if(NOT EXISTS "${NBL_BOOST_WAVE_DEP_FILE}")
2399
message(FATAL_ERROR "Internal error, generate NBL_BOOST_WAVE_DEP_FILE by enabling NBL_BOOST_GENERATE_DEP_LIST!")
24100
endif()
@@ -41,47 +117,4 @@ endforeach()
41117

42118
set(NBL_BOOST_TARGETS
43119
${NBL_BOOST_TARGETS}
44-
PARENT_SCOPE)
45-
46-
# Boost uses it's own tool for generating dependency list for targets, therefore we
47-
# can make sure manually added dependnecy subdirectories for a library are valid
48-
# https://www.boost.org/doc/libs/1_83_0/tools/boostdep/doc/html/index.html#boostdep.introduction.building_boostdep
49-
50-
if(NBL_BOOST_GENERATE_DEP_LIST) # internal, for Nabla devs
51-
if(WIN32)
52-
set(NBL_BOOSTDEP_EXE "boostdep.exe")
53-
else()
54-
set(NBL_BOOSTDEP_EXE "boostdep")
55-
endif()
56-
57-
set(NBL_BOOSTDEP_EXE_FILEPATH "${CMAKE_CURRENT_BINARY_DIR}/superproject/tools/boostdep/bin/${NBL_BOOSTDEP_EXE}")
58-
59-
if(NOT EXISTS "${NBL_BOOSTDEP_EXE_FILEPATH}")
60-
macro(NBL_BOOST_EXECUTE)
61-
execute_process(COMMAND ${ARGV}
62-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/superproject"
63-
)
64-
endmacro()
65-
66-
NBL_BOOST_EXECUTE(cmd /C bootstrap.bat)
67-
NBL_BOOST_EXECUTE(cmd /C b2.exe tools/boostdep/build)
68-
NBL_BOOST_EXECUTE("${CMAKE_COMMAND}" -E copy "./dist/bin/${NBL_BOOSTDEP_EXE}" "${NBL_BOOSTDEP_EXE_FILEPATH}")
69-
NBL_BOOST_EXECUTE(git clean -fdx)
70-
NBL_BOOST_EXECUTE(git reset --hard)
71-
endif()
72-
73-
execute_process(COMMAND "${NBL_BOOSTDEP_EXE_FILEPATH}" --boost-root "${CMAKE_CURRENT_SOURCE_DIR}/superproject" --brief wave
74-
OUTPUT_VARIABLE NBL_OUTPUT_VAR
75-
)
76-
77-
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "${NBL_OUTPUT_VAR}")
78-
79-
file(STRINGS "${NBL_BOOST_WAVE_DEP_FILE}" NBL_BOOST_LIBS)
80-
set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})
81-
list(POP_FRONT NBL_BOOST_LIBS)
82-
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "#")
83-
list(FILTER NBL_BOOST_LIBS EXCLUDE REGEX "(unknown)")
84-
string(REPLACE "~" "/" NBL_BOOST_LIBS "${NBL_BOOST_LIBS}")
85-
86-
file(WRITE "${NBL_BOOST_WAVE_DEP_FILE}" "set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS})")
87-
endif()
120+
PARENT_SCOPE)

3rdparty/boost/superproject

0 commit comments

Comments
 (0)