X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=CMakeLists.txt;h=be1159d7ac393dcaed2b674c88aba365b3ad116b;hb=4efded5491e991b2f6668bbe930d55a008224614;hp=44d1c9aac6dfd5172580c90488afc670a8583b9b;hpb=7377baa39e2029aef48cbaedfbe1b6003c95da7c;p=u%2Fmrichter%2FAliRoot.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 44d1c9aac6d..be1159d7ac3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# -*- mode: cmake -*- +# -*- mode: cmake -*-/usr/share/applications/thunderbird.desktop # Top level CMakeList.txt file for the AliRoot Build System # @@ -6,7 +6,7 @@ # Port of previous Makefile build to cmake -cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR) +cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR) #--------------------------------------------------------------------------------# # Set Basic CMake Configuration # @@ -27,8 +27,8 @@ endif(NOT ALICE_ROOT) set(ALICE_INSTALL $ENV{ALICE_INSTALL}) # Set AliRoot Installation directory -# If CMAKE_INSTALL_PREFIX was not set than we set it to ALICE_INSTALL. -# If ALICE_INSTALL was not defined than it will default to source directory +# If CMAKE_INSTALL_PREFIX was not set, then we set it to ALICE_INSTALL. +# If ALICE_INSTALL was not defined, then it will default to the source directory if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) if(ALICE_INSTALL) message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}") @@ -187,7 +187,12 @@ set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS}) # Configure ARVerion.h # ------------------------------ -#If the sources were taken from Git +# If the sources were taken from Git +# Sets 3 git variables +# - GIT_REFSPEC - complete name of the current reference +# - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference +# - GIT_SHA1 - current hash in the long format +# - GIT_SHORT_SHA1 - current hash in the short format if(EXISTS ${PROJECT_SOURCE_DIR}/.git/) include(GetGitRevisionDescription) @@ -195,19 +200,41 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/.git/) if(GIT_FOUND) get_git_head_revision(GIT_REFSPEC GIT_SHA1) - message(STATUS "Aliroot branch - ${GIT_REFSPEC} Revision - ${GIT_SHA1} ") + + # GIT_REFSPEC is empty for detached mode = tags in detached mode or checkout to specific hash + + + # returns the closest reference to the current hash + # name of the current tag or heads/branch in the case of branches + git_describe(ALIROOT_GIT_TAG "--all" "--abbrev=0") STRING(REGEX REPLACE "^(.+/)(.+)/(.*)$" "\\2" BRANCH_TYPE "${GIT_REFSPEC}" ) - + + # the revision is not set in the case of a branch, it means we are doing development + # and the revision will trigger a reconfiguration if(BRANCH_TYPE STREQUAL "heads") set(ALIROOT_REVISION "ThisIsaBranchNoRevisionProvided") + STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" ) else() + set(SHORT_BRANCH ${ALIROOT_GIT_TAG}) set(ALIROOT_REVISION ${GIT_SHA1}) endif() - STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" ) - set(ALIROOT_BRANCH ${SHORT_BRANCH}) + + # generate the short version of the revision hash + execute_process(COMMAND git rev-parse --short ${GIT_SHA1} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE res + OUTPUT_VARIABLE GIT_SHORT_SHA1) + + # if the rev-parse fails we set the short sha to the long initial one + if(NOT res EQUAL 0) + set(GIT_SHORT_SHA1 ${GIT_SHA1}) + endif() + + message(STATUS "Aliroot branch/tag: \"${ALIROOT_BRANCH}\" - Revision: \"${GIT_SHORT_SHA1}\" ") else() message("Git not installed. I can't tell you which revision you are using!") @@ -323,7 +350,7 @@ set(AEXT a) set(LIBPATH ${CMAKE_BINARY_DIR}/lib/tgt_${ALICE_TARGET}) set(BINPATH ${CMAKE_BINARY_DIR}/bin/tgt_${ALICE_TARGET}) set(EXPORTDIR ${ALICE_ROOT}/include) -#set(BINLIBDIRS -L${ALICE_ROOT}/${LIBPATH}) +set(BINLIBDIRS -L${ALICE_ROOT}/${LIBPATH}) set(RAWDIRO ${CMAKE_BINARY_DIR}/RAW) set(ALIMDCSPECFILE ${RAWDIRO}/alimdc.spec) set(RAWDatabaseALIB ${LIBPATH}/libRAWDatabase.${AEXT})