diff --git a/cmake/initialize-submodules.cmake b/cmake/initialize-submodules.cmake index 4bf2bfa..3e30e23 100644 --- a/cmake/initialize-submodules.cmake +++ b/cmake/initialize-submodules.cmake @@ -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() diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index f5fb04f..a1f32e3 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -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() \ No newline at end of file