[llvm] r222391 - [CMake] Update GetSVN.cmake to use LLVM version control helper scripts.

Jordan Rose jordan_rose at apple.com
Wed Nov 19 14:03:21 PST 2014


Author: jrose
Date: Wed Nov 19 16:03:21 2014
New Revision: 222391

URL: http://llvm.org/viewvc/llvm-project?rev=222391&view=rev
Log:
[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.

Modified:
    llvm/trunk/cmake/modules/GetSVN.cmake

Modified: llvm/trunk/cmake/modules/GetSVN.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/GetSVN.cmake?rev=222391&r1=222390&r2=222391&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/GetSVN.cmake (original)
+++ llvm/trunk/cmake/modules/GetSVN.cmake Wed Nov 19 16:03:21 2014
@@ -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")
-
-  # 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 ()
-
-  # Copy the file only if it has changed.
-  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
-    ${HEADER_FILE}.txt ${HEADER_FILE})
+#
+# 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")
+
+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()
+
+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")
+





More information about the llvm-commits mailing list