| 12345678910111213141516171819202122 |
- # can be passed a relative path (to CMAKE_SOURCE_DIR) to update/checkout that submodule
- macro(update_submodule SUBMODULE)
- find_package(Git QUIET)
- if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
- option(GIT_SUBMODULE "Check submodules during build" ON)
- if(GIT_SUBMODULE)
- message(STATUS "Updating submoudle ${SUBMODULE}")
- execute_process(COMMAND ${GIT_EXECUTABLE} submodule update ${SUBMODULE}
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- RESULT_VARIABLE GIT_SUBMOD_RESULT)
- if(NOT GIT_SUBMOD_RESULT EQUAL "0")
- message(FATAL_ERROR "git submodule update ${SUBMODULE} failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
- endif()
- endif()
- else()
- message("Git not found - skipping submodule update")
- endif()
- if(NOT EXISTS "${CMAKE_SOURCE_DIR}/${SUBMODULE}/.git")
- message(FATAL_ERROR "The submodule was not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
- endif()
- endmacro()
|