diff options
author | Douglas Gregor <dgregor@apple.com> | 2013-03-25 23:16:38 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2013-03-25 23:16:38 +0000 |
commit | 7aac45a08236891bffdf1959dee2f340a0387725 (patch) | |
tree | 2f99fa9590b169c4f8a2e153d10a03f6851164a2 /lib/Basic | |
parent | b27564e87575101d37ccfd2f9647f1274aeaa5cf (diff) |
<rdar://problem/13358795> Teach CMake to check Subversion version information at build time, not configure time.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177939 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic')
-rw-r--r-- | lib/Basic/CMakeLists.txt | 25 | ||||
-rw-r--r-- | lib/Basic/Version.cpp | 4 |
2 files changed, 27 insertions, 2 deletions
diff --git a/lib/Basic/CMakeLists.txt b/lib/Basic/CMakeLists.txt index 324be06ebc..34111691c8 100644 --- a/lib/Basic/CMakeLists.txt +++ b/lib/Basic/CMakeLists.txt @@ -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 diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index cd8c10f215..e219a3def7 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -18,6 +18,10 @@ #include <cstdlib> #include <cstring> +#ifdef HAVE_SVN_VERSION_INC +# include "SVNVersion.inc" +#endif + namespace clang { std::string getClangRepositoryPath() { |