Nice! But .svn/entries doesn't seem to be touched when I `svn up` my llvm checkout.
On Wed, Nov 19, 2014 at 2:03 PM, Jordan Rose <[email protected]> wrote: > Author: jrose > Date: Wed Nov 19 16:03:48 2014 > New Revision: 222393 > > URL: http://llvm.org/viewvc/llvm-project?rev=222393&view=rev > Log: > [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. We avoid having to regenerate > SVNVersion.inc > every time by marking it as dependent on Git's reflog or SVN's entries > file. > > This should end most of 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. > > Based on r190557. Depends on LLVM r222391. > > Modified: > cfe/trunk/lib/Basic/CMakeLists.txt > > Modified: cfe/trunk/lib/Basic/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/CMakeLists.txt?rev=222393&r1=222392&r2=222393&view=diff > > ============================================================================== > --- cfe/trunk/lib/Basic/CMakeLists.txt (original) > +++ cfe/trunk/lib/Basic/CMakeLists.txt Wed Nov 19 16:03:48 2014 > @@ -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() > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
