################################################################################ # Copyright (C) 2018-2021 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH # # # # This software is distributed under the terms of the # # GNU Lesser General Public Licence (LGPL) version 3, # # copied verbatim in the file "LICENSE" # ################################################################################ include_guard(GLOBAL) if(NOT DEFINED ${GIT_EXECUTABLE}) find_program(GIT_EXECUTABLE NAMES git) endif() # get_git_version([DEFAULT_VERSION version] [DEFAULT_DATE date] [OUTVAR_PREFIX prefix]) # # Sets variables #prefix#_VERSION, #prefix#_GIT_VERSION, #prefix#_DATE, #prefix#_GIT_DATE function(get_git_version) cmake_parse_arguments(ARGS "" "DEFAULT_VERSION;DEFAULT_DATE;OUTVAR_PREFIX" "" ${ARGN}) if(NOT ARGS_OUTVAR_PREFIX) set(ARGS_OUTVAR_PREFIX PROJECT) endif() if(GIT_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/.git) execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --dirty --match "v*" OUTPUT_VARIABLE ${ARGS_OUTVAR_PREFIX}_GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) if(${ARGS_OUTVAR_PREFIX}_GIT_VERSION) # cut first two characters "v-" string(SUBSTRING ${${ARGS_OUTVAR_PREFIX}_GIT_VERSION} 1 -1 ${ARGS_OUTVAR_PREFIX}_GIT_VERSION) endif() execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%cd OUTPUT_VARIABLE ${ARGS_OUTVAR_PREFIX}_GIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) endif() if(NOT ${ARGS_OUTVAR_PREFIX}_GIT_VERSION) if(ARGS_DEFAULT_VERSION) set(${ARGS_OUTVAR_PREFIX}_GIT_VERSION ${ARGS_DEFAULT_VERSION}) else() set(${ARGS_OUTVAR_PREFIX}_GIT_VERSION 0.0.0.0) endif() endif() if(NOT ${ARGS_OUTVAR_PREFIX}_GIT_DATE) if(ARGS_DEFAULT_DATE) set(${ARGS_OUTVAR_PREFIX}_GIT_DATE ${ARGS_DEFAULT_DATE}) else() set(${ARGS_OUTVAR_PREFIX}_GIT_DATE "Thu Jan 1 00:00:00 1970 +0000") endif() endif() string(REGEX MATCH "^([^-]*)" blubb ${${ARGS_OUTVAR_PREFIX}_GIT_VERSION}) # return values set(${ARGS_OUTVAR_PREFIX}_VERSION ${CMAKE_MATCH_0} PARENT_SCOPE) set(${ARGS_OUTVAR_PREFIX}_DATE ${${ARGS_OUTVAR_PREFIX}_GIT_DATE} PARENT_SCOPE) set(${ARGS_OUTVAR_PREFIX}_GIT_VERSION ${${ARGS_OUTVAR_PREFIX}_GIT_VERSION} PARENT_SCOPE) set(${ARGS_OUTVAR_PREFIX}_GIT_DATE ${${ARGS_OUTVAR_PREFIX}_GIT_DATE} PARENT_SCOPE) endfunction()