r222393 - [CMake] Always include the Clang repo version, just like the autoconf build.

Nico Weber thakis at chromium.org
Wed Nov 19 17:25:31 PST 2014


On Wed, Nov 19, 2014 at 5:24 PM, Nico Weber <thakis at chromium.org> wrote:

> Nice!
>
> But .svn/entries doesn't seem to be touched when I `svn up` my llvm
> checkout.
>

(sorry, I tried to paste the following but triggered "send message"
somehow.)

llvm-rw$ ls -l .svn/entries
-rw-r--r--  1 thakis  staff  3 Dec 28  2013 .svn/entries

This I tried `svn up` with various revisions close to trunk, which didn't
update this timestamp (…and hence, `ninja clang-format` didn't build
anything.)


>
> On Wed, Nov 19, 2014 at 2:03 PM, Jordan Rose <jordan_rose at apple.com>
> 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
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141119/e36742eb/attachment.html>


More information about the cfe-commits mailing list