diff --git a/CMakeLists.txt b/CMakeLists.txt index 710f3fcfb..e5f4f4687 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,7 +94,11 @@ function(check_submodules_present) endif() endforeach() endfunction() -check_submodules_present() + +if (EXISTS "${PROJECT_SOURCE_DIR}/.git/objects") + # only check submodules when source is obtained via Git + check_submodules_present() +endif() configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake index a011c6cbf..87e9eef35 100644 --- a/CMakeModules/GenerateSCMRev.cmake +++ b/CMakeModules/GenerateSCMRev.cmake @@ -6,15 +6,27 @@ endfunction() list(APPEND CMAKE_MODULE_PATH "${SRC_DIR}/externals/cmake-modules") -# Find the package here with the known path so that the GetGit commands can find it as well -find_package(Git QUIET PATHS "${GIT_EXECUTABLE}") - # generate git/build information -include(GetGitRevisionDescription) -get_git_head_revision(GIT_REF_SPEC GIT_REV) -git_describe(GIT_DESC --always --long --dirty) -git_branch_name(GIT_BRANCH) get_timestamp(BUILD_DATE) +if (EXISTS "${SRC_DIR}/.git/objects") + # Find the package here with the known path so that the GetGit commands can find it as well + find_package(Git QUIET PATHS "${GIT_EXECUTABLE}") + # only use Git to check revision info when source is obtained via Git + include(GetGitRevisionDescription) + get_git_head_revision(GIT_REF_SPEC GIT_REV) + git_describe(GIT_DESC --always --long --dirty) + git_branch_name(GIT_BRANCH) +elseif(EXISTS "${SRC_DIR}/GIT-COMMIT" AND EXISTS "${SRC_DIR}/GIT-TAG") + # unified source archive + file(READ "${SRC_DIR}/GIT-COMMIT" GIT_REV_RAW LIMIT 64) + string(STRIP "${GIT_REV_RAW}" GIT_REV) + string(SUBSTRING "${GIT_REV_RAW}" 0 9 GIT_DESC) + set(GIT_BRANCH "HEAD") +else() + # self-packed archive? + set(GIT_DESC "UNKNOWN") + set(GIT_BRANCH "UNKNOWN") +endif() # Generate cpp with Git revision from template # Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well