@@ -56,21 +56,19 @@ if(NBL_BOOST_GENERATE_DEP_LIST) # internal, for Nabla devs
56
56
57
57
set (NBL_BOOSTDEP_EXE_FILEPATH "${CMAKE_CURRENT_BINARY_DIR} /superproject/tools/boostdep/bin/${NBL_BOOSTDEP_EXE} " )
58
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 ()
59
+ macro (NBL_BOOST_EXECUTE )
60
+ execute_process (COMMAND ${ARGV} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /superproject" )
61
+ endmacro ()
65
62
63
+ if (NOT EXISTS "${NBL_BOOSTDEP_EXE_FILEPATH} " )
66
64
NBL_BOOST_EXECUTE (cmd /C bootstrap.bat )
67
65
NBL_BOOST_EXECUTE (cmd /C b2.exe tools/boostdep/build )
68
66
NBL_BOOST_EXECUTE ("${CMAKE_COMMAND} " -E copy "./dist/bin/${NBL_BOOSTDEP_EXE} " "${NBL_BOOSTDEP_EXE_FILEPATH} " )
69
67
NBL_BOOST_EXECUTE (git clean -fdx )
70
68
NBL_BOOST_EXECUTE (git reset --hard )
71
69
endif ()
72
70
73
- execute_process ( COMMAND "${NBL_BOOSTDEP_EXE_FILEPATH} " --boost-root "${CMAKE_CURRENT_SOURCE_DIR} /superproject" --brief wave
71
+ NBL_BOOST_EXECUTE ( "${NBL_BOOSTDEP_EXE_FILEPATH} " --boost-root "${CMAKE_CURRENT_SOURCE_DIR} /superproject" --brief wave
74
72
OUTPUT_VARIABLE NBL_OUTPUT_VAR
75
73
)
76
74
@@ -83,29 +81,22 @@ if(NBL_BOOST_GENERATE_DEP_LIST) # internal, for Nabla devs
83
81
list (FILTER NBL_BOOST_LIBS EXCLUDE REGEX "(unknown)" )
84
82
string (REPLACE "~" "/" NBL_BOOST_LIBS "${NBL_BOOST_LIBS} " )
85
83
86
- # we override boost's .gitmodules to pick only those modules we really use (reported by boost's dep executable)
87
- # boost hosts now like 200 repositories, some of them are really big however atm we reference around 60
88
- set (BOOST_SUBMODULE_TEMPLATE
89
- [=[
90
-
91
- [submodule "@NAME@"]
92
- path = libs/@NAME@
93
- url = ../@FLATTEN_NAME@.git
94
- fetchRecurseSubmodules = on-demand
95
- branch = .
96
- ]=]
97
- )
84
+ # NOTE: you commit this file to version control AND boost's .gitmodules *if got changed*, use when updating boost to more recent version
85
+ file (WRITE "${NBL_BOOST_WAVE_DEP_FILE} " "set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS} )" )
98
86
99
- unset (BOOST_GITMODULES )
100
- foreach (NAME ${NBL_BOOST_LIBS} )
101
- string (REPLACE "/" "_" FLATTEN_NAME "${NAME} " )
102
- string (CONFIGURE "${BOOST_SUBMODULE_TEMPLATE} " TEMPLATE )
103
- string (APPEND BOOST_GITMODULES "${TEMPLATE} " )
104
- endforeach ()
87
+ NBL_BOOST_EXECUTE (git config --file .gitmodules --get-regexp path OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE )
105
88
106
- # NOTE: this you commit to version control
107
- file (WRITE "${NBL_BOOST_WAVE_DEP_FILE} " "set(NBL_BOOST_LIBS ${NBL_BOOST_LIBS} )" )
89
+ string (REGEX REPLACE "\n " ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE} " )
108
90
109
- # and this one too + you update boost submodule pointer with the update!
110
- file (WRITE "${CMAKE_CURRENT_SOURCE_DIR} /superproject/.gitmodules" "${BOOST_GITMODULES} " )
111
- endif ()
91
+ message (STATUS "Updating boost .gitmodules" )
92
+ foreach (NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST} )
93
+ string (REGEX MATCH "submodule\\ .(.*)\\ .path" NBL_SUBMODULE_NAME "${NBL_SUBMODULE_NAME} " )
94
+ NBL_BOOST_EXECUTE (git config --file .gitmodules submodule.${CMAKE_MATCH_1}.update none ) # fallback, ignore all
95
+ endforeach ()
96
+
97
+ foreach (NAME ${NBL_BOOST_LIBS} )
98
+ string (REPLACE "/" "_" SUBMODULE "${NAME} " )
99
+ message (STATUS "BOOST SUBMODULE = ${SUBMODULE} " )
100
+ NBL_BOOST_EXECUTE (git config --file .gitmodules submodule.${SUBMODULE}.update checkout ) # pick only those reported by the module we use
101
+ endforeach ()
102
+ endif ()
0 commit comments