summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2014-11-19 22:03:21 +0000
committerJordan Rose <jordan_rose@apple.com>2014-11-19 22:03:21 +0000
commit61fd8ea5209bc246b956710e4340e419922f5c82 (patch)
tree2cb19733724caeeb3f3be5c3d114edae9c360bf5 /cmake
parent06f9f40a1ecc47ded712d846b6e23a749e2b591f (diff)
[CMake] Update GetSVN.cmake to use LLVM version control helper scripts.
This allows the logic to work with Git, and also uses the variable names to match what Clang is actually looking for. This is a re-application of r190556 and r190808. This changes the interface of GetSVN.cmake. Clang change to follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222391 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/GetSVN.cmake54
1 files changed, 37 insertions, 17 deletions
diff --git a/cmake/modules/GetSVN.cmake b/cmake/modules/GetSVN.cmake
index acccc12a94e..4e32c09061e 100644
--- a/cmake/modules/GetSVN.cmake
+++ b/cmake/modules/GetSVN.cmake
@@ -2,24 +2,44 @@
#
# Input variables:
# FIRST_SOURCE_DIR - First source directory
-# FIRST_REPOSITORY - The macro to define to the first revision number.
-# SECOND_SOURCE_DIR - Second source directory
-# SECOND_REPOSITORY - The macro to define to the second revision number.
+# FIRST_NAME - The macro prefix for the first repository's info
+# SECOND_SOURCE_DIR - Second source directory (opt)
+# SECOND_NAME - The macro prefix for the second repository's info (opt)
# HEADER_FILE - The header file to write
-include(FindSubversion)
-if (Subversion_FOUND AND EXISTS "${FIRST_SOURCE_DIR}/.svn")
- # Repository information for the first repository.
- Subversion_WC_INFO(${FIRST_SOURCE_DIR} MY)
- file(WRITE ${HEADER_FILE}.txt "#define ${FIRST_REPOSITORY} \"${MY_WC_REVISION}\"\n")
+#
+# The output header will contain macros FIRST_REPOSITORY and FIRST_REVISION,
+# and SECOND_REPOSITORY and SECOND_REVISION if requested, where "FIRST" and
+# "SECOND" are substituted with the names specified in the input variables.
+
+# Chop off cmake/modules/GetSVN.cmake
+get_filename_component(LLVM_DIR "${CMAKE_SCRIPT_MODE_FILE}" PATH)
+get_filename_component(LLVM_DIR "${LLVM_DIR}" PATH)
+get_filename_component(LLVM_DIR "${LLVM_DIR}" PATH)
+
+# Handle strange terminals
+set(ENV{TERM} "dumb")
- # Repository information for the second repository.
- if (EXISTS "${SECOND_SOURCE_DIR}/.svn")
- Subversion_WC_INFO(${SECOND_SOURCE_DIR} MY)
- file(APPEND ${HEADER_FILE}.txt
- "#define ${SECOND_REPOSITORY} \"${MY_WC_REVISION}\"\n")
- endif ()
+function(append_info name path)
+ execute_process(COMMAND "${LLVM_DIR}/utils/GetSourceVersion" "${path}"
+ OUTPUT_VARIABLE revision)
+ string(STRIP "${revision}" revision)
+ execute_process(COMMAND "${LLVM_DIR}/utils/GetRepositoryPath" "${path}"
+ OUTPUT_VARIABLE repository
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(STRIP "${repository}" repository)
+ file(APPEND "${HEADER_FILE}.txt"
+ "#define ${name}_REVISION \"${revision}\"\n")
+ file(APPEND "${HEADER_FILE}.txt"
+ "#define ${name}_REPOSITORY \"${repository}\"\n")
+endfunction()
- # Copy the file only if it has changed.
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
- ${HEADER_FILE}.txt ${HEADER_FILE})
+append_info(${FIRST_NAME} "${FIRST_SOURCE_DIR}")
+if(DEFINED SECOND_SOURCE_DIR)
+ append_info(${SECOND_NAME} "${SECOND_SOURCE_DIR}")
endif()
+
+# Copy the file only if it has changed.
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ "${HEADER_FILE}.txt" "${HEADER_FILE}")
+file(REMOVE "${HEADER_FILE}.txt")
+