@@ -1271,6 +1271,12 @@ endmacro()
12711271
12721272function (NBL_UPDATE_SUBMODULES)
12731273 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 ()
12741280
12751281 macro (NBL_WRAPPER_COMMAND_EXCLUSIVE GIT_RELATIVE_ENTRY GIT_SUBMODULE_PATH SHOULD_RECURSIVE EXCLUDE_SUBMODULE_PATH)
12761282 set (SHOULD_RECURSIVE ${SHOULD_RECURSIVE} )
@@ -1280,12 +1286,6 @@ function(NBL_UPDATE_SUBMODULES)
12801286 else ()
12811287 set (NBL_EXCLUDE "-c submodule.\" ${EXCLUDE_SUBMODULE_PATH} \" .update=none" )
12821288 endif ()
1283-
1284- if (NBL_CI_GIT_SUBMODULES_SHALLOW)
1285- set (NBL_SHALLOW "--depth=1" )
1286- else ()
1287- set (NBL_SHALLOW "" )
1288- endif ()
12891289
12901290 if (SHOULD_RECURSIVE)
12911291 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)
12981298 set (_NBL_UPDATE_SUBMODULES_CMD_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmd" )
12991299 get_filename_component (_NBL_UPDATE_IMPL_CMAKE_FILE_ "${NBL_ROOT_PATH_BINARY} /${_NBL_UPDATE_SUBMODULES_CMD_NAME_} .cmake" ABSOLUTE )
13001300
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
13021304[=[
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
13031314execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}" submodule update --init "${GIT_RELATIVE_ENTRY}")
13041315
13051316if("${INCLUDE_SUBMODULE_PATHS}" STREQUAL "")
@@ -1309,34 +1320,31 @@ else()
13091320 OUTPUT_VARIABLE NBL_OUTPUT_VARIABLE
13101321 )
13111322
1312- string(REGEX MATCH "submodule\\.(.*)\\.path" extracted_content "${original_string}")
1313-
13141323 string(REGEX REPLACE "\n" ";" NBL_SUBMODULE_CONFIG_LIST "${NBL_OUTPUT_VARIABLE}")
13151324
13161325 foreach(NBL_SUBMODULE_NAME ${NBL_SUBMODULE_CONFIG_LIST})
13171326 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})
13181331 list(FIND INCLUDE_SUBMODULE_PATHS "${NBL_SUBMODULE_NAME}" NBL_FOUND)
1319-
1332+
13201333 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
13231335 endif()
13241336 endforeach()
13251337endif()
13261338
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+ )
13341342]=]
13351343)
13361344 file (WRITE "${_NBL_UPDATE_IMPL_CMAKE_FILE_} " "${NBL_IMPL_SCRIPT} " )
13371345
13381346 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 " )
13401348 endmacro ()
13411349
13421350 if (NBL_UPDATE_GIT_SUBMODULE)
@@ -1349,7 +1357,7 @@ execute_process(COMMAND "${GIT_EXECUTABLE}" -C "${NBL_ROOT_PATH}/${GIT_RELATIVE_
13491357 NBL_WRAPPER_COMMAND_EXCLUSIVE("" ./3rdparty TRUE 3rdparty/boost/superproject)
13501358
13511359 # 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 )
13531361 foreach (NBL_TARGET ${NBL_BOOST_LIBS_TO_INIT} )
13541362 list (APPEND NBL_BOOST_SUBMODULES_TO_INIT ${NBL_TARGET} )
13551363 endforeach ()
@@ -1384,9 +1392,7 @@ clear
13841392sleep 1
13851393clear
13861394tput 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."
13901396]=]
13911397 WORKING_DIRECTORY ${NBL_ROOT_PATH_BINARY}
13921398 OUTPUT_VARIABLE _NBL_TMP_OUTPUT_
@@ -1400,6 +1406,8 @@ sleep 5
14001406 else ()
14011407 execute_process (COMMAND "${_NBL_UPDATE_SUBMODULES_CMD_FILE_} " )
14021408 endif ()
1409+
1410+ message (STATUS "Submodules have been updated! Check \" ${NBL_ROOT_PATH_BINARY} /nbl-update-submodules.log\" for more details." )
14031411 else ()
14041412 execute_process (COMMAND ${CMAKE_COMMAND} -E echo "NBL_UPDATE_GIT_SUBMODULE is turned OFF therefore submodules won't get updated." )
14051413 endif ()
0 commit comments