r190557 - [CMake] Always include the Clang repo version, just like the autoconf build.

Jordan Rose jordan_rose at apple.com
Wed Sep 11 15:46:47 PDT 2013


Author: jrose
Date: Wed Sep 11 17:46:46 2013
New Revision: 190557

URL: http://llvm.org/viewvc/llvm-project?rev=190557&view=rev
Log:
[CMake] Always include the Clang repo version, just like the autoconf build.

Now that LLVM's helper script GetSVN.cmake actually works consistently,
there's no reason not to use it. This does mean that the clangBasic target
is potentially always dirty, because CMake-generated projects do not
necessarily recalculate dependencies after running each target.

This should end the issues of the AST format changing and breaking old
module files; CMake-Clang should now detect that the version changed just
like Autoconf-Clang has.

Modified:
    cfe/trunk/lib/Basic/CMakeLists.txt

Modified: cfe/trunk/lib/Basic/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/CMakeLists.txt?rev=190557&r1=190556&r2=190557&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/CMakeLists.txt (original)
+++ cfe/trunk/lib/Basic/CMakeLists.txt Wed Sep 11 17:46:46 2013
@@ -20,35 +20,26 @@ add_clang_library(clangBasic
   TokenKinds.cpp
   Version.cpp
   VersionTuple.cpp
+  ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc
   )
 
-# Determine Subversion revision.
-# FIXME: This only gets updated when CMake is run, so this revision number
-# may be out-of-date!
-if( NOT IS_SYMLINK "${CLANG_SOURCE_DIR}" )  # See PR 8437
-  find_package(Subversion)
-endif()
-if (Subversion_FOUND AND EXISTS "${CLANG_SOURCE_DIR}/.svn")
-  # Create custom target to generate the Subversion version include.
-  add_custom_target(clang_revision_tag  ALL
-    COMMAND ${CMAKE_COMMAND} -DFIRST_SOURCE_DIR=${LLVM_MAIN_SRC_DIR}
-                             -DFIRST_REPOSITORY=LLVM_REPOSITORY
-                             -DSECOND_SOURCE_DIR=${CLANG_SOURCE_DIR}
-                             -DSECOND_REPOSITORY=SVN_REPOSITORY
-                             -DHEADER_FILE=${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc
-   -P ${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake)
-
-  # Mark the generated header as being generated.
-message(STATUS "Expecting header to go in ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc")
-  set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc
-    PROPERTIES GENERATED TRUE
-               HEADER_FILE_ONLY TRUE)
-
-  # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC.
-  set_source_files_properties(Version.cpp
-    PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")
-
-endif()
+# Create custom target to generate the Subversion version include.
+add_custom_target(clang_revision_tag
+  ${CMAKE_COMMAND} -DFIRST_SOURCE_DIR=${LLVM_MAIN_SRC_DIR}
+                   -DFIRST_NAME=LLVM
+                   -DSECOND_SOURCE_DIR=${CLANG_SOURCE_DIR}
+                   -DSECOND_NAME=SVN
+                   -DHEADER_FILE=${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc
+                   -P ${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake)
+
+# Mark the generated header as being generated.
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc
+  PROPERTIES GENERATED TRUE
+             HEADER_FILE_ONLY TRUE)
+
+# Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC.
+set_source_files_properties(Version.cpp
+  PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")
 
 add_dependencies(clangBasic
   ClangARMNeon
@@ -65,9 +56,8 @@ add_dependencies(clangBasic
   ClangDiagnosticParse
   ClangDiagnosticSema
   ClangDiagnosticSerialization
-  )
+  clang_revision_tag
+)
 
-# clangBasic depends on the version.
-if (Subversion_FOUND AND EXISTS "${CLANG_SOURCE_DIR}/.svn")
-  add_dependencies(clangBasic clang_revision_tag)
-endif()
\ No newline at end of file
+add_custom_command(TARGET clangBasic POST_BUILD
+  COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc)





More information about the cfe-commits mailing list