Configure gerrit hook at CMake time
If the source directory is a clone, at CMake time the commit-msg hook gets
downloaded and installed in the right location.
Change-Id: I5fee17d050ca22d8b92a49fdcc2a1cd6659f209b
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c6cce47..afc8fe5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,32 @@
PROJECT(CERES C CXX)
+# Set up the git hook to make Gerrit Change-Id: lines in commit messages.
+SET (LOCAL_GIT_DIRECTORY)
+IF (EXISTS ${CMAKE_SOURCE_DIR}/.git)
+ # .git directory can be found on Unix based system, or on Windows with
+ # Git Bash (shipped with msysgit)
+ SET (LOCAL_GIT_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
+ELSE (EXISTS ${CMAKE_SOURCE_DIR}/.git)
+ # TODO(keir) Add proper windows support
+ENDIF (EXISTS ${CMAKE_SOURCE_DIR}/.git)
+
+IF (EXISTS ${LOCAL_GIT_DIRECTORY})
+ IF (NOT EXISTS ${LOCAL_GIT_DIRECTORY}/hooks/commit-msg)
+ # Download the hook only if it is not already present
+ FILE(DOWNLOAD https://ceres-solver-review.googlesource.com/tools/hooks/commit-msg
+ ${CMAKE_BINARY_DIR}/commit-msg)
+
+ # Make the downloaded file executable, since it is not by default.
+ FILE(COPY ${CMAKE_BINARY_DIR}/commit-msg
+ DESTINATION ${LOCAL_GIT_DIRECTORY}/hooks/
+ FILE_PERMISSIONS
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ GROUP_READ GROUP_WRITE GROUP_EXECUTE
+ WORLD_READ WORLD_EXECUTE)
+ ENDIF (NOT EXISTS ${LOCAL_GIT_DIRECTORY}/hooks/commit-msg)
+ENDIF (EXISTS ${LOCAL_GIT_DIRECTORY})
+
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)