aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Walch <florian@fwalch.com>2015-09-29 21:22:55 +0200
committerFlorian Walch <florian@fwalch.com>2015-11-01 16:19:52 +0100
commit90909e9362dacb5ece17c7baaffe33b16d106ce7 (patch)
tree890c66eaead7703d394512d6f301c07640b561ee
parenta83020922d0dcdde4ca29394342901ea4bc71e8f (diff)
downloadrneovim-90909e9362dacb5ece17c7baaffe33b16d106ce7.tar.gz
rneovim-90909e9362dacb5ece17c7baaffe33b16d106ce7.tar.bz2
rneovim-90909e9362dacb5ece17c7baaffe33b16d106ce7.zip
CMake: Force use of project directory to look for Git data.
Before this change, building Neovim would recursively search parent directories for a .git directory. If Neovim was downloaded as a tarball (i.e. without a .git directory), but placed in a subdirectory of a Git repository, this caused a CMake error. Such a situation could occur when packaging Neovim, for example. Unfortunately, the previous attempt in #3317 did not fix this problem.
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/GetGitRevisionDescription.cmake8
2 files changed, 8 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f4e5e51bcb..70be0be6d4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,8 +52,8 @@ set(NVIM_VERSION_MINOR 0)
set(NVIM_VERSION_PATCH 0)
set(NVIM_VERSION_PRERELEASE "-alpha")
+file(TO_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git FORCED_GIT_DIR)
include(GetGitRevisionDescription)
-file(TO_NATIVE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git GIT_DIR)
if(NVIM_VERSION_PRERELEASE)
get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT)
diff --git a/cmake/GetGitRevisionDescription.cmake b/cmake/GetGitRevisionDescription.cmake
index 1e0968ec3b..5044c682e4 100644
--- a/cmake/GetGitRevisionDescription.cmake
+++ b/cmake/GetGitRevisionDescription.cmake
@@ -42,7 +42,13 @@ set(__get_git_revision_description YES)
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
function(get_git_dir _gitdir)
- # check GIT_DIR in environment first
+ # check FORCED_GIT_DIR first
+ if(FORCED_GIT_DIR)
+ set(${_gitdir} ${FORCED_GIT_DIR} PARENT_SCOPE)
+ return()
+ endif()
+
+ # check GIT_DIR in environment
set(GIT_DIR $ENV{GIT_DIR})
if(NOT GIT_DIR)
set(GIT_PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR})