Skip to content
Snippets Groups Projects
Unverified Commit c6bc1049 authored by Tomáš Pecka's avatar Tomáš Pecka
Browse files

CMake: Support for providing snapshot versions manually

parent d74eca6f
No related branches found
No related tags found
No related merge requests found
Pipeline #53050 passed with warnings
......@@ -35,9 +35,11 @@ docs/userGuide/command_doc.tex
/release
/debug
/build
/snapshot
/release/
/debug/
/build/
/snapshot/
 
# CMakeList.txt files are generated
**/CMakeLists.txt
......
function(set_git_version)
find_package(Git)
if (NOT Git_FOUND)
message ( "[Git] Git not found" )
endif()
execute_process (
COMMAND ${GIT_EXECUTABLE} describe --tags --match "v*" HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALIB_GIT_DESCRIBE
RESULT_VARIABLE RET_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${RET_CODE}" STREQUAL "0")
message ( "[Git] Describe: '${ALIB_GIT_DESCRIBE}'" )
SET ( ALIB_GIT_DESCRIBE "${ALIB_GIT_DESCRIBE}" PARENT_SCOPE )
else()
message ( WARNING "[Git] Failed retrieving current commit (return code ${RET_CODE})" )
SET ( ALIB_GIT_DESCRIBE "<unknown commit>" PARENT_SCOPE )
return()
endif()
execute_process (
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALIB_GIT_BRANCH
RESULT_VARIABLE RET_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${RET_CODE}" STREQUAL "0")
message ( "[Git] Branch: '${ALIB_GIT_BRANCH}'" )
SET ( ALIB_GIT_BRANCH "${ALIB_GIT_BRANCH}" PARENT_SCOPE )
else()
message ( WARNING "[Git] Failed retrieving current branch (return code ${RET_CODE})" )
SET ( ALIB_GIT_BRANCH "<unknown branch>" PARENT_SCOPE )
return()
endif()
endfunction(set_git_version)
function(set_git_snapshot_version)
set(ALIB_SNAPSHOT_VERSION ${ALIB_GIT_DESCRIBE})
string(REGEX REPLACE "^v" "" ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
string(REGEX REPLACE "\([^-]*-g\)" "r\\1" ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
string(REPLACE "-" "." ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
set(ALIB_SNAPSHOT_VERSION "${ALIB_SNAPSHOT_VERSION}" PARENT_SCOPE )
message("[Git] Snapshot version: ${ALIB_SNAPSHOT_VERSION}")
endfunction(set_git_snapshot_version)
find_package(Git)
# check if GIT executable present
if (NOT Git_FOUND)
message ( WARNING "[Git] Git not found" )
return ()
endif()
# check if GIT repository
execute_process (
COMMAND ${GIT_EXECUTABLE} status
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_REPOSITORY
RESULT_VARIABLE RET_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_QUIET
ERROR_QUIET
)
if("${RET_CODE}" STREQUAL "0")
else()
message ( WARNING "[Git] Not a git repository. Git version info for debug and snapshot versions not provided." )
set ( ALIB_GIT_BRANCH "<unknown branch>" )
set ( ALIB_GIT_DESCRIBE "<unknown commit>" )
return ()
endif()
# current branch
execute_process (
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALIB_GIT_BRANCH
RESULT_VARIABLE RET_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${RET_CODE}" STREQUAL "0")
message ( "[Git] Branch: '${ALIB_GIT_BRANCH}'" )
SET ( ALIB_GIT_BRANCH "${ALIB_GIT_BRANCH}" )
else()
message ( WARNING "[Git] Failed retrieving current branch (return code ${RET_CODE})" )
endif()
# describe
execute_process (
COMMAND ${GIT_EXECUTABLE} describe --tags --match "v*" HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ALIB_GIT_DESCRIBE
RESULT_VARIABLE RET_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${RET_CODE}" STREQUAL "0")
message ( "[Git] Describe: '${ALIB_GIT_DESCRIBE}'" )
SET ( ALIB_GIT_DESCRIBE "${ALIB_GIT_DESCRIBE}" )
else()
message ( WARNING "[Git] Failed retrieving current commit (return code ${RET_CODE})" )
endif()
......@@ -5,14 +5,27 @@ message("[Versioning] Current version is ${PROJECT_VERSION}")
 
include(git)
 
if(BUILD_TYPE MATCHES "(Debug|Snapshot)")
# sets ALIB_GIT_BRANCH
# sets ALIB_GIT_DESCRIBE
set_git_version()
# git describe into version string
if(ALIB_GIT_DESCRIBE MATCHES ".*unknown*")
set(ALIB_SNAPSHOT_VERSION ${ALIB_GIT_DESCRIBE})
string(REGEX REPLACE "^v" "" ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
string(REGEX REPLACE "\([^-]*-g\)" "r\\1" ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
string(REPLACE "-" "." ALIB_SNAPSHOT_VERSION ${ALIB_SNAPSHOT_VERSION})
endif()
# overwrite git info, if -DVERSION provided
if(DEFINED VERSION)
set(ALIB_SNAPSHOT_VERSION ${VERSION})
endif()
if(BUILD_TYPE STREQUAL "Snapshot")
# sets ALIB_SNAPSHOT_VERSION
set_git_snapshot_version()
if(DEFINED ALIB_SNAPSHOT_VERSION)
message("[Versioning] Snapshot version: ${ALIB_SNAPSHOT_VERSION}")
else()
message(WARNING "[Versioning] Snapshot version not defined (could not reach GIT and -D was not provided")
set(ALIB_SNAPSHOT_VERSION "${PROJECT_VERSION}.r<unknown>.g<unknown>")
endif()
endif()
 
if(BUILD_TYPE STREQUAL "Debug")
......
......@@ -40,12 +40,13 @@ usage_and_exit() {
Usage: $0 -d DIRECTORY -m MODE [-j THREADS]
$0 debug [-j THREADS] ( shortcut for => $0 -d debug -m Debug [-j THREADS] )
$0 release [-j THREADS] ( shortcut for => $0 -d release -m Release [-j THREADS] )
$0 snapshot [-j THREADS] ( shortcut for => $0 -d snapshot -m Snapshot [-j THREADS] )
 
Algorithms Library Core builder helper script.
 
Arguments:
-d DIRECTORY Build directory (relative to ALT root)
-m MODE 'Release' or 'Debug'
-m MODE 'Release' or 'Debug' or 'Snapshot'
-j THREADS Number of build threads. Default: Number of CPU cores ($(grep -c processor /proc/cpuinfo))
-n Do not run tests
EOF
......@@ -62,9 +63,12 @@ ARGS_SHORTCUT=
if [[ $# -ge 1 ]] && [[ $1 == "release" || $1 == "debug" || $1 == "snapshot" ]]; then
ARGS_SHORTCUT=1
 
if [[ $1 == "release" || $1 == "snapshot" ]]; then
if [[ $1 == "release" ]]; then
BUILD_DIR="release"
BUILD_MODE="Release"
elif [[ $1 == "snapshot" ]]; then
BUILD_DIR="snapshot"
BUILD_MODE="Snapshot"
elif [[ $1 == "debug" ]]; then
BUILD_DIR="debug"
BUILD_MODE="Debug"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment