diff options
| author | Jordan Rose <jordan_rose@apple.com> | 2013-09-11 22:46:46 +0000 |
|---|---|---|
| committer | Jordan Rose <jordan_rose@apple.com> | 2013-09-11 22:46:46 +0000 |
| commit | 206d4c46784e175293e486980f0dd9b1ebab7a0d (patch) | |
| tree | d01c65836090cfee8e29e64acc301b9e23427c66 /clang | |
| parent | 04801d549ac167e7a7b2829eaad0b3ca9f9cb6de (diff) | |
| download | bcm5719-llvm-206d4c46784e175293e486980f0dd9b1ebab7a0d.tar.gz bcm5719-llvm-206d4c46784e175293e486980f0dd9b1ebab7a0d.zip | |
[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.
llvm-svn: 190557
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Basic/CMakeLists.txt | 50 |
1 files changed, 20 insertions, 30 deletions
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index 34111691c82..03bf260ff02 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -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) |

