@@ -1270,52 +1270,113 @@ macro(write_source_definitions NBL_FILE NBL_WRAPPER_CODE_TO_WRITE)
1270
1270
endmacro ()
1271
1271
1272
1272
function (NBL_UPDATE_SUBMODULES )
1273
- macro (NBL_WRAPPER_COMMAND GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH )
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 ()
1280
+
1281
+ macro (NBL_WRAPPER_COMMAND_EXCLUSIVE GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH )
1274
1282
set (SHOULD_RECURSIVE ${SHOULD_RECURSIVE} )
1275
1283
1276
1284
if ("${EXCLUDE_SUBMODULE_PATH} " STREQUAL "" )
1277
1285
set (NBL_EXCLUDE "" )
1278
1286
else ()
1279
1287
set (NBL_EXCLUDE "-c submodule.\" ${EXCLUDE_SUBMODULE_PATH} \" .update=none" )
1280
1288
endif ()
1281
-
1282
- if (NBL_CI_GIT_SUBMODULES_SHALLOW )
1283
- set (NBL_SHALLOW "--depth=1" )
1284
- else ()
1285
- set (NBL_SHALLOW "" )
1286
- endif ()
1287
1289
1288
1290
if (SHOULD_RECURSIVE )
1289
- string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${GIT_EXECUTABLE} \" ${NBL_EXCLUDE} -C \" ${NBL_ROOT_PATH} /${GIT_RELATIVE_ENTRY} \" submodule update --init --recursive ${NBL_SHALLOW} ${GIT_SUBMODULE_PATH} \n " )
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 " )
1290
1292
else ()
1291
- string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${GIT_EXECUTABLE} \" -C \" ${NBL_ROOT_PATH} /${GIT_RELATIVE_ENTRY} \" submodule update --init ${NBL_SHALLOW} ${GIT_SUBMODULE_PATH} \n " )
1293
+ string (APPEND _NBL_UPDATE_SUBMODULES_COMMANDS_ "\" ${GIT_EXECUTABLE} \" -C \" ${NBL_ROOT_PATH} /${GIT_RELATIVE_ENTRY} \" submodule update --init -j ${_GIT_SUBMODULES_JOBS_AMOUNT_} ${NBL_SHALLOW} ${GIT_SUBMODULE_PATH} \n " )
1292
1294
endif ()
1293
1295
endmacro ()
1294
1296
1297
+ set (_NBL_UPDATE_SUBMODULES_CMD_NAME_ "nbl-update-submodules" )
1298
+ set (_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmd" )
1299
+ get_filename_component (_NBL_UPDATE_IMPL_CMAKE_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmake" ABSOLUTE )
1300
+
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
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
1314
+ execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}" submodule update --init "${GIT_RELATIVE_ENTRY}")
1315
+
1316
+ if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
1317
+ set(NBL_SUBMODULE_UPDATE_CONFIG_ENTRY "")
1318
+ else()
1319
+ execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_ENTRY}" config --file .gitmodules --get-regexp path
1320
+ OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
1321
+ )
1322
+
1323
+ string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
1324
+
1325
+ foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
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})
1331
+ list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_NAME}" NBL_FOUND)
1332
+
1333
+ if("${NBL_FOUND}" STREQUAL "-1")
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
1335
+ endif()
1336
+ endforeach()
1337
+ endif()
1338
+
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
+ )
1342
+ ]=]
1343
+ )
1344
+ file (WRITE "${_NBL_UPDATE_IMPL_CMAKE_FILE_} " "${NBL_IMPL_SCRIPT} " )
1345
+
1346
+ macro (NBL_WRAPPER_COMMAND_INCLUSIVE GIT_RELATIVE_ENTRY INCLUDE_SUBMODULE_PATHS )
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 " )
1348
+ endmacro ()
1349
+
1295
1350
if (NBL_UPDATE_GIT_SUBMODULE )
1296
1351
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!" )
1297
- set (_NBL_UPDATE_SUBMODULES_CMD_NAME_ "nbl-update-submodules" )
1298
- set (_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmd" )
1299
-
1352
+
1300
1353
include ("${THIRD_PARTY_SOURCE_DIR} /boost/dep/wave.cmake" )
1301
1354
1302
- if (NBL_UPDATE_GIT_SUBMODULE_INCLUDE_PRIVATE )
1303
- NBL_WRAPPER_COMMAND ("" "" TRUE "" )
1304
- else ()
1355
+ macro (NBL_IMPL_INIT_COMMON_SUBMODULES )
1305
1356
# 3rdparty except boost
1306
- NBL_WRAPPER_COMMAND ("" ./3rdparty TRUE " 3rdparty/boost/superproject" )
1357
+ NBL_WRAPPER_COMMAND_EXCLUSIVE ("" ./3rdparty TRUE 3rdparty/boost/superproject )
1307
1358
1308
- # boost 3rdaprty
1309
- NBL_WRAPPER_COMMAND (3rdparty/boost "./superproject" FALSE "" )
1310
- NBL_WRAPPER_COMMAND (3rdparty/boost/superproject "./libs/wave" TRUE "" ) # boost's wave
1311
- foreach (BOOST_LIB IN LISTS NBL_BOOST_LIBS ) # deps of the wave
1312
- NBL_WRAPPER_COMMAND (3rdparty/boost/superproject "./libs/${BOOST_LIB} " TRUE "" )
1359
+ # boost's 3rdaprties, special case
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)
1361
+ foreach (NBL_TARGET ${NBL_BOOST_LIBS_TO_INIT} )
1362
+ list (APPEND NBL_BOOST_SUBMODULES_TO_INIT ${NBL_TARGET} )
1313
1363
endforeach ()
1314
-
1315
- #NBL_WRAPPER_COMMAND("" ./ci TRUE "") TODO: enable it once we merge Ditt, etc
1316
- NBL_WRAPPER_COMMAND ("" ./examples_tests FALSE "" )
1317
- NBL_WRAPPER_COMMAND (examples_tests ./media FALSE "" )
1318
- NBL_WRAPPER_COMMAND ("" ./tests FALSE "" )
1364
+ NBL_WRAPPER_COMMAND_INCLUSIVE (3rdparty/boost/superproject "${NBL_BOOST_SUBMODULES_TO_INIT} " )
1365
+
1366
+ # tests
1367
+ NBL_WRAPPER_COMMAND_EXCLUSIVE ("" ./tests FALSE "" )
1368
+ endmacro ()
1369
+
1370
+ NBL_IMPL_INIT_COMMON_SUBMODULES ()
1371
+
1372
+ if (NBL_UPDATE_GIT_SUBMODULE_INCLUDE_PRIVATE )
1373
+ NBL_WRAPPER_COMMAND_EXCLUSIVE ("" ./examples_tests TRUE "" )
1374
+ else ()
1375
+ # NBL_WRAPPER_COMMAND_EXCLUSIVE("" ./ci TRUE "") TODO: enable it once we merge Ditt, etc
1376
+
1377
+ # examples and their media
1378
+ NBL_WRAPPER_COMMAND_EXCLUSIVE ("" ./examples_tests FALSE "" )
1379
+ NBL_WRAPPER_COMMAND_EXCLUSIVE (examples_tests ./media FALSE "" )
1319
1380
endif ()
1320
1381
1321
1382
file (WRITE "${_NBL_UPDATE_SUBMODULES_CMD_FILE_} " "${_NBL_UPDATE_SUBMODULES_COMMANDS_} " )
@@ -1331,9 +1392,7 @@ clear
1331
1392
sleep 1
1332
1393
clear
1333
1394
tput setaf 2; echo -e "Submodules have been updated!
1334
- Created nbl-update-submodules.log in your build directory.
1335
- This window will be closed in 5 seconds..."
1336
- sleep 5
1395
+ Created nbl-update-submodules.log in your build directory."
1337
1396
]=]
1338
1397
WORKING_DIRECTORY ${NBL_ROOT_PATH_BINARY}
1339
1398
OUTPUT_VARIABLE _NBL_TMP_OUTPUT_
@@ -1347,6 +1406,8 @@ sleep 5
1347
1406
else ()
1348
1407
execute_process (COMMAND "${_NBL_UPDATE_SUBMODULES_CMD_FILE_} " )
1349
1408
endif ()
1409
+
1410
+ message (STATUS "Submodules have been updated! Check \" ${NBL_ROOT_PATH_BINARY} /nbl-update-submodules.log\" for more details." )
1350
1411
else ()
1351
1412
execute_process (COMMAND ${CMAKE_COMMAND} -E echo "NBL_UPDATE_GIT_SUBMODULE is turned OFF therefore submodules won't get updated." )
1352
1413
endif ()
0 commit comments