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