diff --git a/cmake/utils/add_git_dependency.cmake b/cmake/utils/add_git_dependency.cmake index 30cec055..e942a0e3 100644 --- a/cmake/utils/add_git_dependency.cmake +++ b/cmake/utils/add_git_dependency.cmake @@ -6,6 +6,17 @@ function(add_git_dependency SOURCE_FILE) return() endif() + # If we're a submodule, .git won't be a directory + if(NOT IS_DIRECTORY ${GIT_DIR}) + file(READ ${GIT_DIR} GIT_FILE_CONTENT) + string(REGEX MATCH "gitdir: (.+)" MATCHED_PATH ${GIT_FILE_CONTENT}) + if(NOT MATCHED_PATH) + return() + endif() + + string(STRIP ${CMAKE_MATCH_1} GIT_DIR) + endif() + set(GIT_FILES) list(APPEND GIT_FILES ${GIT_DIR}/HEAD) list(APPEND GIT_FILES ${GIT_DIR}/packed-refs)