1# update submodules automatically 2 3OPTION(UPDATE_SUBMODULES "Update submodules automatically" ON) 4IF(NOT UPDATE_SUBMODULES) 5 RETURN() 6ENDIF() 7 8IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") 9 EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" config --get cmake.update-submodules 10 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 11 OUTPUT_VARIABLE cmake_update_submodules 12 RESULT_VARIABLE git_config_get_result) 13 IF(cmake_update_submodules MATCHES no) 14 SET(update_result 0) 15 SET(SUBMODULE_UPDATE_CONFIG_MESSAGE 16"\n\nTo update submodules automatically, set cmake.update-submodules to 'yes', or 'force' to update automatically: 17 ${GIT_EXECUTABLE} config cmake.update-submodules yes") 18 ELSEIF(git_config_get_result EQUAL 128) 19 SET(update_result 0) 20 ELSEIF (cmake_update_submodules MATCHES force) 21 MESSAGE(STATUS "Updating submodules (forced)") 22 EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --force --recursive --depth=1 23 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 24 RESULT_VARIABLE update_result) 25 ELSEIF (cmake_update_submodules MATCHES yes) 26 EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --recursive --depth=1 27 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 28 RESULT_VARIABLE update_result) 29 ELSE() 30 MESSAGE(STATUS "Updating submodules") 31 EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --recursive --depth=1 32 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 33 RESULT_VARIABLE update_result) 34 ENDIF() 35ENDIF() 36 37IF(update_result OR NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt) 38 MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run 39 ${GIT_EXECUTABLE} submodule update --init --recursive 40Then restart the build.${SUBMODULE_UPDATE_CONFIG_MESSAGE}") 41ENDIF() 42