From: Jordan Rose Date: Wed, 11 Sep 2013 22:46:46 +0000 (+0000) Subject: [CMake] Always include the Clang repo version, just like the autoconf build. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f9a8e9c88cd93b98b8871363717269f43ffb8aa;p=clang [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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190557 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/CMakeLists.txt b/lib/Basic/CMakeLists.txt index 34111691c8..03bf260ff0 100644 --- a/lib/Basic/CMakeLists.txt +++ b/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)