CMake: Use the svn revision information from git-svn if available.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 8 Sep 2010 20:49:40 +0000 (20:49 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Wed, 8 Sep 2010 20:49:40 +0000 (20:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113405 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/VersionFromVCS.cmake

index 1016df22590dab3497f45548e96408284fb13b38..55142c648aed5d36b849433457e8170f6c1d0e15 100644 (file)
@@ -10,7 +10,7 @@ function(add_version_info_from_vcs VERS)
     if( Subversion_FOUND )
       subversion_wc_info( ${CMAKE_CURRENT_SOURCE_DIR} Project )
       if( Project_WC_REVISION )
-       set(result "${result}-r${Project_WC_REVISION}")
+        set(result "${result}-r${Project_WC_REVISION}")
       endif()
     endif()
   elseif( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git )
@@ -19,13 +19,23 @@ function(add_version_info_from_vcs VERS)
     find_program(git_executable NAMES git git.exe git.cmd)
     if( git_executable )
       execute_process(COMMAND ${git_executable} show-ref HEAD
-       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-       TIMEOUT 5
-       RESULT_VARIABLE git_result
-       OUTPUT_VARIABLE git_output)
+                      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                      TIMEOUT 5
+                      RESULT_VARIABLE git_result
+                      OUTPUT_VARIABLE git_output)
       if( git_result EQUAL 0 )
-       string(SUBSTRING ${git_output} 0 7 git_ref_id)
-       set(result "${result}-${git_ref_id}")
+        string(SUBSTRING ${git_output} 0 7 git_ref_id)
+        set(result "${result}-${git_ref_id}")
+      else()
+        execute_process(COMMAND ${git_executable} svn log --limit=1 --oneline
+                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                        TIMEOUT 5
+                        RESULT_VARIABLE git_result
+                        OUTPUT_VARIABLE git_output)
+        if( git_result EQUAL 0 )
+          string(REGEX MATCH r[0-9]+ git_svn_rev ${git_output})
+          set(result "${result}-svn-${git_svn_rev}")
+        endif()
       endif()
     endif()
   endif()