diff options
Diffstat (limited to 'clang/lib/Basic')
| -rw-r--r-- | clang/lib/Basic/CMakeLists.txt | 68 |
1 files changed, 43 insertions, 25 deletions
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index 3bcbc89f8ca..62748a08e51 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -4,6 +4,48 @@ set(LLVM_LINK_COMPONENTS Support ) +# Figure out if we can track VC revisions. +function(find_first_existing_file out_var) + foreach(file ${ARGN}) + if(EXISTS "${file}") + set(${out_var} "${file}" PARENT_SCOPE) + return() + endif() + endforeach() +endfunction() + +find_first_existing_file(llvm_vc + "${LLVM_MAIN_SRC_DIR}/.git/logs/HEAD" + "${LLVM_MAIN_SRC_DIR}/.svn/entries") +find_first_existing_file(clang_vc + "${CLANG_SOURCE_DIR}/.git/logs/HEAD" + "${CLANG_SOURCE_DIR}/.svn/entries") + +if(DEFINED llvm_vc AND DEFINED clang_vc) + # Create custom target to generate the VC revision include. + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc" + DEPENDS "${llvm_vc}" "${clang_vc}" + COMMAND + ${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. + 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") + set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc") +else() + set(version_inc) +endif() + add_clang_library(clangBasic Attributes.cpp Builtins.cpp @@ -29,30 +71,6 @@ add_clang_library(clangBasic VersionTuple.cpp VirtualFileSystem.cpp Warnings.cpp + ${version_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") - set(FIRST_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}) - set(FIRST_REPOSITORY LLVM_REPOSITORY) - set(SECOND_SOURCE_DIR ${CLANG_SOURCE_DIR}) - set(SECOND_REPOSITORY SVN_REPOSITORY) - set(HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc) - include(GetSVN) - - # 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 "HAVE_SVN_VERSION_INC") - -endif() |

