]> git.uio.no Git - u/mrichter/AliRoot.git/blame - cmake/CheckGitVersion.cmake
HMPID DA
[u/mrichter/AliRoot.git] / cmake / CheckGitVersion.cmake
CommitLineData
b22a7396 1# **************************************************************************
2# * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
3# * *
4# * Author: The ALICE Off-line Project. *
5# * Contributors are mentioned in the code where appropriate. *
6# * *
7# * Permission to use, copy, modify and distribute this software and its *
8# * documentation strictly for non-commercial purposes is hereby granted *
9# * without fee, provided that the above copyright notice appears in all *
10# * copies and that both the copyright notice and this permission notice *
11# * appear in the supporting documentation. The authors make no claims *
12# * about the suitability of this software for any purpose. It is *
13# * provided "as is" without express or implied warranty. *
14# **************************************************************************
15
16# Configure ARVerion.h using Git informatiion
17# Sets 4 git variables
18# - GIT_REFSPEC - complete name of the current reference
19# - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference
20# - GIT_SHA1 - current hash in the long format
21# - GIT_SHORT_SHA1 - current hash in the short format
22if(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
23 include(GetGitRevisionDescription)
24
25 find_package(Git)
26
27 if(GIT_FOUND)
28 get_git_head_revision(GIT_REFSPEC GIT_SHA1)
29
30 # GIT_REFSPEC is empty for detached mode = tags in detached mode or checkout to specific hash
31
32 # returns the closest reference to the current hash
33 # name of the current tag or heads/branch in the case of branches
34 git_describe(ALIROOT_GIT_TAG "--all" "--abbrev=0")
35
36 STRING(REGEX REPLACE "^(.+/)(.+)/(.*)$" "\\2" BRANCH_TYPE "${GIT_REFSPEC}" )
37
38 # the revision is not set in the case of a branch, it means we are doing development
39 # and the revision will trigger a reconfiguration
40 if(BRANCH_TYPE STREQUAL "heads")
41 set(ALIROOT_REVISION "ThisIsaBranchNoRevisionProvided")
42 STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" )
43 else()
44 set(SHORT_BRANCH ${ALIROOT_GIT_TAG})
45 set(ALIROOT_REVISION ${GIT_SHA1})
46 endif()
47
48 set(ALIROOT_BRANCH ${SHORT_BRANCH})
49
50 # generate the short version of the revision hash
51 execute_process(COMMAND git rev-parse --short ${GIT_SHA1}
427d561c 52 WORKING_DIRECTORY ${AliRoot_SOURCE_DIR}
b22a7396 53 OUTPUT_STRIP_TRAILING_WHITESPACE
54 RESULT_VARIABLE res
55 OUTPUT_VARIABLE GIT_SHORT_SHA1)
56
57 # if the rev-parse fails we set the short sha to the long initial one
58 if(NOT res EQUAL 0)
59 set(GIT_SHORT_SHA1 ${GIT_SHA1})
60 endif()
61
62 message(STATUS "Aliroot branch/tag: \"${ALIROOT_BRANCH}\" - Revision: \"${GIT_SHORT_SHA1}\" ")
63
64 else()
65 message(STATUS "Git not installed. I can't tell you which revision you are using!")
66 endif(GIT_FOUND)
67else()
68 message("AliRoot sources not downloaded from a Version Control System. I can't tell which revision you are using!")
69endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
70
71configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_BINARY_DIR}/version/ARVersion.h @ONLY)
72install(FILES ${PROJECT_BINARY_DIR}/version/ARVersion.h DESTINATION include)
73
74string (REPLACE "-" "." ALIROOT_BRANCH_SPEC "${ALIROOT_BRANCH}")