@@ -1271,6 +1271,12 @@ endmacro()
1271
1271
1272
1272
function (NBL_UPDATE_SUBMODULES )
1273
1273
ProcessorCount (_GIT_SUBMODULES_JOBS_AMOUNT_ )
1274
+
1275
+ if (NBL_CI_GIT_SUBMODULES_SHALLOW )
1276
+ set (NBL_SHALLOW "--depth=1" )
1277
+ else ()
1278
+ set (NBL_SHALLOW "" )
1279
+ endif ()
1274
1280
1275
1281
macro (NBL_WRAPPER_COMMAND_EXCLUSIVE GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH )
1276
1282
set (SHOULD_RECURSIVE ${SHOULD_RECURSIVE} )
@@ -1280,12 +1286,6 @@ function(NBL_UPDATE_SUBMODULES)
1280
1286
else ()
1281
1287
set (NBL_EXCLUDE "-c submodule.\" ${EXCLUDE_SUBMODULE_PATH} \" .update=none" )
1282
1288
endif ()
1283
-
1284
- if (NBL_CI_GIT_SUBMODULES_SHALLOW )
1285
- set (NBL_SHALLOW "--depth=1" )
1286
- else ()
1287
- set (NBL_SHALLOW "" )
1288
- endif ()
1289
1289
1290
1290
if (SHOULD_RECURSIVE )
1291
1291
string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${GIT_EXECUTABLE} \" ${NBL_EXCLUDE} -C \" ${NBL_ROOT_PATH} /${GIT_RELATIVE_ENTRY} \" submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW} ${GIT_SUBMODULE_PATH} \n " )
@@ -1298,8 +1298,19 @@ function(NBL_UPDATE_SUBMODULES)
1298
1298
set (_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmd" )
1299
1299
get_filename_component (_NBL_UPDATE_IMPL_CMAKE_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmake" ABSOLUTE )
1300
1300
1301
- set (NBL_IMPL_SCRIPT
1301
+ # Proxy script for inclusive submodule updating
1302
+ string (APPEND NBL_IMPL_SCRIPT "set(NBL_ROOT_PATH \" ${NBL_ROOT_PATH} \" )\n set(_GIT_SUBMODULES_JOBS_AMOUNT_ ${_GIT_SUBMODULES_JOBS_AMOUNT_} )\n set(GIT_EXECUTABLE \" ${GIT_EXECUTABLE} \" )\n set(NBL_SHALLOW \" ${NBL_SHALLOW} \" )\n\n " )
1303
+ string (APPEND NBL_IMPL_SCRIPT
1302
1304
[=[
1305
+ if(NOT DEFINED GIT_RELATIVE_ENTRY)
1306
+ message(FATAL_ERROR "GIT_RELATIVE_ENTRY must be defined to use this script!")
1307
+ endif()
1308
+
1309
+ if(NOT DEFINED INCLUDE_SUBMODULE_PATHS)
1310
+ message(FATAL_ERROR "INCLUDE_SUBMODULE_PATHS must be defined to use this script!")
1311
+ endif()
1312
+
1313
+ # update an inclusive submodule first
1303
1314
execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}" submodule update --init "${GIT_RELATIVE_ENTRY}")
1304
1315
1305
1316
if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
@@ -1309,34 +1320,31 @@ else()
1309
1320
OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
1310
1321
)
1311
1322
1312
- string(REGEX MATCH "submodule\\.(.*)\\.path" extracted_content "${original_string}")
1313
-
1314
1323
string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
1315
1324
1316
1325
foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
1317
1326
string(REGEX MATCH "submodule\\.(.*)\\.path" NBL_SUBMODULE_NAME "${NBL_SUBMODULE_NAME}")
1327
+ list(APPEND NBL_ALL_SUBMODULES "${CMAKE_MATCH_1}")
1328
+ endforeach()
1329
+
1330
+ foreach(NBL_SUBMODULE_NAME ${NBL_ALL_SUBMODULES})
1318
1331
list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_NAME}" NBL_FOUND)
1319
-
1332
+
1320
1333
if("${NBL_FOUND}" STREQUAL "-1")
1321
- list(APPEND NBL_CONFIG_SETUP_CMD "-c")
1322
- list(APPEND NBL_CONFIG_SETUP_CMD "submodule.\"${CMAKE_MATCH_1}\".update=none") # if a submodule is not on the INCLUDE_SUBMODULE_PATHS list of a currently handedled submodule - do not let it to be updated
1334
+ list(APPEND NBL_CONFIG_SETUP_CMD "-c;submodule.${NBL_SUBMODULE_NAME}.update=none") # filter submodules - only those on the INCLUDE_SUBMODULE_PATHS list will be updated when recursive update is requested, all left will be skipped
1323
1335
endif()
1324
1336
endforeach()
1325
1337
endif()
1326
1338
1327
- if(NBL_CI_GIT_SUBMODULES_SHALLOW)
1328
- set(NBL_SHALLOW "--depth=1")
1329
- else()
1330
- set(NBL_SHALLOW "")
1331
- endif()
1332
-
1333
- execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}" ${NBL_CONFIG_SETUP_CMD} submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW} ./)
1339
+ execute_process(COMMAND "${GIT_EXECUTABLE}" ${NBL_CONFIG_SETUP_CMD} submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} --recursive ${NBL_SHALLOW}
1340
+ WORKING_DIRECTORY "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}"
1341
+ )
1334
1342
]=]
1335
1343
)
1336
1344
file (WRITE "${_NBL_UPDATE_IMPL_CMAKE_FILE_} " "${NBL_IMPL_SCRIPT} " )
1337
1345
1338
1346
macro (NBL_WRAPPER_COMMAND_INCLUSIVE GIT_RELATIVE_ENTRY INCLUDE_SUBMODULE_PATHS )
1339
- string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${CMAKE_COMMAND} \" \" -DNBL_ROOT_PATH= ${NBL_ROOT_PATH} \" \" -D_GIT_SUBMODULES_JOBS_AMOUNT_= ${_GIT_SUBMODULES_JOBS_AMOUNT_} \" \" -DNBL_CI_GIT_SUBMODULES_SHALLOW= ${NBL_CI_GIT_SUBMODULES_SHALLOW} \" \" - DGIT_RELATIVE_ENTRY=${GIT_RELATIVE_ENTRY} \" \" -DINCLUDE_SUBMODULE_PATHS=${INCLUDE_SUBMODULE_PATHS} \" \" -DGIT_EXECUTABLE= ${GIT_EXECUTABLE }\" -P \" ${_NBL_UPDATE_IMPL_CMAKE_FILE_} \"\n " )
1347
+ string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${CMAKE_COMMAND} \" \" -DGIT_RELATIVE_ENTRY=${GIT_RELATIVE_ENTRY} \" \" -DINCLUDE_SUBMODULE_PATHS=${INCLUDE_SUBMODULE_PATHS} \" -P \" ${_NBL_UPDATE_IMPL_CMAKE_FILE_} \"\n " )
1340
1348
endmacro ()
1341
1349
1342
1350
if (NBL_UPDATE_GIT_SUBMODULE )
@@ -1349,7 +1357,7 @@ execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_
1349
1357
NBL_WRAPPER_COMMAND_EXCLUSIVE ("" ./3rdparty TRUE 3rdparty/boost/superproject )
1350
1358
1351
1359
# boost's 3rdaprties, special case
1352
- set (NBL_BOOST_LIBS_TO_INIT ${NBL_BOOST_LIBS} wave )
1360
+ set (NBL_BOOST_LIBS_TO_INIT ${NBL_BOOST_LIBS} wave numeric_conversion ) # wave and all of its deps, numeric_conversion is nested in conversion submodule (for some reason boostdep tool doesn't output it properly )
1353
1361
foreach (NBL_TARGET ${NBL_BOOST_LIBS_TO_INIT} )
1354
1362
list (APPEND NBL_BOOST_SUBMODULES_TO_INIT ${NBL_TARGET} )
1355
1363
endforeach ()
@@ -1384,9 +1392,7 @@ clear
1384
1392
sleep 1
1385
1393
clear
1386
1394
tput setaf 2; echo -e "Submodules have been updated!
1387
- Created nbl-update-submodules.log in your build directory.
1388
- This window will be closed in 5 seconds..."
1389
- sleep 5
1395
+ Created nbl-update-submodules.log in your build directory."
1390
1396
]=]
1391
1397
WORKING_DIRECTORY ${NBL_ROOT_PATH_BINARY}
1392
1398
OUTPUT_VARIABLE _NBL_TMP_OUTPUT_
@@ -1400,6 +1406,8 @@ sleep 5
1400
1406
else ()
1401
1407
execute_process (COMMAND "${_NBL_UPDATE_SUBMODULES_CMD_FILE_} " )
1402
1408
endif ()
1409
+
1410
+ message (STATUS "Submodules have been updated! Check \" ${NBL_ROOT_PATH_BINARY} /nbl-update-submodules.log\" for more details." )
1403
1411
else ()
1404
1412
execute_process (COMMAND ${CMAKE_COMMAND} -E echo "NBL_UPDATE_GIT_SUBMODULE is turned OFF therefore submodules won't get updated." )
1405
1413
endif ()
0 commit comments