Skip to content

Commit

Permalink
Update submodules iff no path given.
Browse files Browse the repository at this point in the history
  • Loading branch information
spahrenk committed Jul 8, 2024
1 parent 6c71651 commit 072351c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 49 deletions.
51 changes: 18 additions & 33 deletions cmake/initialize-submodules.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,47 +7,32 @@ macro(add_submodule module_name)
set(Args ${ARGN})
list(LENGTH Args NumArgs)

set(target_name ${module_name})
if(NumArgs GREATER 0)
set(module_path ${ARGV1})
set(target_name "${ARGV1}")
else()
set(module_path ${module_name})
set(target_name "${module_name}")
endif()
set(full_module_path ${module_path})

if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
set(git_modules_file "${PROJECT_SOURCE_DIR}/.gitmodules")
if (EXISTS ${git_modules_file})
file(STRINGS ${git_modules_file} file_lines)

foreach(line ${file_lines})

if (${line} MATCHES "url =")
string(REGEX REPLACE "\\s*url = .*/(.*).git" "\\1" submodule "${line}")
string(STRIP "${submodule}" submodule)

string(COMPARE EQUAL ${submodule} ${module_path} is_submodule)
if(${is_submodule})
message(STATUS "Updating submodule \"${submodule}\"")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive "${submodule}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(GIT_SUBMOD_RESULT EQUAL "0")
set(full_module_path ${CMAKE_CURRENT_SOURCE_DIR}/${module_path})
else()
message(FATAL_ERROR "Unable to update submodule \"${submodule}\"")
endif()
break()
endif()
endif()

endforeach()
set(module_path "${CMAKE_CURRENT_SOURCE_DIR}/${module_name}")
if(NumArgs GREATER 1)
set(module_path "${ARGV2}/vendor/${module_name}")
set(is_submodule false)
else()
set(is_submodule true)
endif()

if(${is_submodule} AND GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
message(STATUS "Updating submodule \"${module_name}\"")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive "${module_path}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "Unable to update submodule \"${module_name}\"")
endif()
endif()

if (NOT TARGET ${target_name} AND (EXISTS "${full_module_path}"))
message(STATUS "Adding subdirectory \"${module_path}\" to project \"${PROJECT_NAME}\"")
if (NOT TARGET ${target_name} AND (EXISTS "${module_path}"))
message(STATUS "Adding subdirectory \"${module_path}\"")
add_subdirectory(${module_path})
endif()

Expand Down
28 changes: 12 additions & 16 deletions vendor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
include(initialize-submodules)

add_submodule(fmt)
if (NOT TARGET fmt)
set(FMT_INSTALL OFF CACHE BOOL "" FORCE)
mark_as_advanced(FMT_CMAKE_DIR FMT_CUDA_TEST FMT_DEBUG_POSTFIX FMT_DOC FMT_FUZZ FMT_INC_DIR FMT_INSTALL FMT_INSTALL
FMT_LIB_DIR FMT_MODULE FMT_OS FMT_PEDANTIC FMT_PKGCONFIG_DIR FMT_SYSTEM_HEADERS FMT_TEST FMT_WERROR)
endif ()
set(FMT_INSTALL OFF CACHE BOOL "" FORCE)
mark_as_advanced(FMT_CMAKE_DIR FMT_CUDA_TEST FMT_DEBUG_POSTFIX FMT_DOC FMT_FUZZ FMT_INC_DIR FMT_INSTALL FMT_INSTALL
FMT_LIB_DIR FMT_MODULE FMT_OS FMT_PEDANTIC FMT_PKGCONFIG_DIR FMT_SYSTEM_HEADERS FMT_TEST FMT_WERROR)


# googletest library
if (${PROJECT_NAME}_BUILD_TESTING)
add_submodule(gtest googletest)
if (NOT TARGET gtest)

# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(BUILD_GTEST ON CACHE BOOL "" FORCE MARK)
set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
mark_as_advanced(BUILD_GTEST BUILD_GMOCK INSTALL_GTEST)
endif()
# googletest library
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(BUILD_GTEST ON CACHE BOOL "" FORCE MARK)
set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
mark_as_advanced(BUILD_GTEST BUILD_GMOCK INSTALL_GTEST)
add_submodule(googletest gtest)

endif()

0 comments on commit 072351c

Please sign in to comment.