CMake: add version control info to PACKAGE_VERSION, if available.
authorOscar Fuentes <ofv@wanadoo.es>
Tue, 3 Aug 2010 17:28:09 +0000 (17:28 +0000)
committerOscar Fuentes <ofv@wanadoo.es>
Tue, 3 Aug 2010 17:28:09 +0000 (17:28 +0000)
Adds "svn" or "git", depending on the VCS used. If svn, adds the
revision number as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110121 91177308-0d34-0410-b5e6-96231b3b80d8

CMakeLists.txt
cmake/modules/VersionFromVCS.cmake [new file with mode: 0644]

index 0ad3a290cbf180b2b9e5df807126e95ce003beb7..63751d6007e8b90d31ab86e3b836f369d0a4290f 100644 (file)
@@ -3,8 +3,18 @@
 project(LLVM)
 cmake_minimum_required(VERSION 2.8)
 
+# Add path for custom modules
+set(CMAKE_MODULE_PATH
+  ${CMAKE_MODULE_PATH}
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
+  )
+
+set(PACKAGE_VERSION "2.8")
+include(VersionFromVCS)
+add_version_info_from_vcs(PACKAGE_VERSION)
+
 set(PACKAGE_NAME llvm)
-set(PACKAGE_VERSION 2.8svn)
 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_BUGREPORT "llvmbugs@cs.uiuc.edu")
 
@@ -124,13 +134,6 @@ configure_file(
 
 set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
 
-# Add path for custom modules
-set(CMAKE_MODULE_PATH
-  ${CMAKE_MODULE_PATH}
-  "${LLVM_MAIN_SRC_DIR}/cmake"
-  "${LLVM_MAIN_SRC_DIR}/cmake/modules"
-  )
-
 include(AddLLVMDefinitions)
 
 if(WIN32)
diff --git a/cmake/modules/VersionFromVCS.cmake b/cmake/modules/VersionFromVCS.cmake
new file mode 100644 (file)
index 0000000..618b232
--- /dev/null
@@ -0,0 +1,20 @@
+# Adds version control information to the variable VERS. For
+# determining the Version Control System used (if any) it inspects the
+# existence of certain subdirectories under CMAKE_CURRENT_SOURCE_DIR.
+
+function(add_version_info_from_vcs VERS)
+  set(result ${${VERS}})
+  if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.svn )
+    set(result "${result}svn")
+    find_package(Subversion)
+    if( Subversion_FOUND )
+      subversion_wc_info( ${CMAKE_CURRENT_SOURCE_DIR} Project )
+      if( Project_WC_REVISION )
+       set(result "${result}-r${Project_WC_REVISION}")
+      endif()
+    endif()
+  elseif( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git )
+    set(result "${result}git")
+  endif()
+  set(${VERS} ${result} PARENT_SCOPE)
+endfunction(add_version_info_from_vcs)