]> granicus.if.org Git - clang/commitdiff
[CMake] Always include the Clang repo version, just like the autoconf build.
authorJordan Rose <jordan_rose@apple.com>
Wed, 11 Sep 2013 22:46:46 +0000 (22:46 +0000)
committerJordan Rose <jordan_rose@apple.com>
Wed, 11 Sep 2013 22:46:46 +0000 (22:46 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190557 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/CMakeLists.txt

index 34111691c82e6dc1f5df7c7fcaa0a75377681ab4..03bf260ff0287592aa30f9e698bb9cca24b27e05 100644 (file)
@@ -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)
+# 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.
-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)
+# 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")
-
-endif()
+# 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)