]> granicus.if.org Git - clang/commitdiff
<rdar://problem/13358795> Teach CMake to check Subversion version information at...
authorDouglas Gregor <dgregor@apple.com>
Mon, 25 Mar 2013 23:16:38 +0000 (23:16 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 25 Mar 2013 23:16:38 +0000 (23:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177939 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/CMakeLists.txt
lib/Basic/Version.cpp

index 324be06ebc379a84801914ea034cc84f4e14e5fd..34111691c82e6dc1f5df7c7fcaa0a75377681ab4 100644 (file)
@@ -29,9 +29,25 @@ if( NOT IS_SYMLINK "${CLANG_SOURCE_DIR}" )  # See PR 8437
   find_package(Subversion)
 endif()
 if (Subversion_FOUND AND EXISTS "${CLANG_SOURCE_DIR}/.svn")
-  Subversion_WC_INFO(${CLANG_SOURCE_DIR} CLANG)
+  # 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 "SVN_REVISION=\"${CLANG_WC_REVISION}\"")
+    PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")
+
 endif()
 
 add_dependencies(clangBasic
@@ -50,3 +66,8 @@ add_dependencies(clangBasic
   ClangDiagnosticSema
   ClangDiagnosticSerialization
   )
+
+# 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
index cd8c10f215a275ef605e4e01d4852a4371edeb08..e219a3def71deaf081ffc0dc82bcc549ddb62c59 100644 (file)
 #include <cstdlib>
 #include <cstring>
 
+#ifdef HAVE_SVN_VERSION_INC
+#  include "SVNVersion.inc"
+#endif
+
 namespace clang {
 
 std::string getClangRepositoryPath() {