cmake: add module version.cmake
parent
7fcdd2b7ec
commit
3f86a6be42
@ -0,0 +1,100 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
|
||||
|
||||
function(get_commit_isdirty)
|
||||
|
||||
execute_process(COMMAND
|
||||
"${GIT_EXECUTABLE}" status --short --untracked-files=no
|
||||
WORKING_DIRECTORY "${WORK_DIR}"
|
||||
OUTPUT_VARIABLE COMMIT_ISDIRTY_OUT
|
||||
RESULT_VARIABLE exit_code
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if(exit_code EQUAL 0 AND "${COMMIT_ISDIRTY_OUT}" STREQUAL "")
|
||||
set(COMMIT_ISDIRTY 0 PARENT_SCOPE)
|
||||
else()
|
||||
set(COMMIT_ISDIRTY 1 PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
|
||||
function(get_commit_hash)
|
||||
|
||||
execute_process(COMMAND
|
||||
"${GIT_EXECUTABLE}" rev-parse --short=12 HEAD
|
||||
WORKING_DIRECTORY "${WORK_DIR}"
|
||||
OUTPUT_VARIABLE COMMIT_HASH_VAR
|
||||
RESULT_VARIABLE exit_code
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if(exit_code EQUAL 0)
|
||||
set(COMMIT_HASH ${COMMIT_HASH_VAR} PARENT_SCOPE)
|
||||
else()
|
||||
set(COMMIT_HASH unknown PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
|
||||
function(get_patch_version)
|
||||
|
||||
|
||||
if(${DAEMON_PATCH_VERSION} STREQUAL patch)
|
||||
|
||||
execute_process(COMMAND
|
||||
"${GIT_EXECUTABLE}" describe --tags --first-parent --abbrev=0
|
||||
WORKING_DIRECTORY "${WORK_DIR}"
|
||||
OUTPUT_VARIABLE LAST_TAG
|
||||
RESULT_VARIABLE exit_code
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
execute_process(COMMAND
|
||||
"${GIT_EXECUTABLE}" rev-list HEAD...${LAST_TAG} --count
|
||||
WORKING_DIRECTORY "${WORK_DIR}"
|
||||
OUTPUT_VARIABLE NUMBER_PATCH
|
||||
RESULT_VARIABLE exit_code
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if(exit_code EQUAL 0)
|
||||
set(DAEMON_PATCH_VERSION ${NUMBER_PATCH} PARENT_SCOPE)
|
||||
else()
|
||||
set(DAEMON_PATCH_VERSION 0 PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
|
||||
find_package(Git QUIET)
|
||||
if(Git_FOUND)
|
||||
|
||||
get_commit_isdirty()
|
||||
get_commit_hash()
|
||||
get_patch_version()
|
||||
|
||||
else()
|
||||
|
||||
if(${DAEMON_PATCH_VERSION} STREQUAL patch)
|
||||
set(DAEMON_PATCH_VERSION 0)
|
||||
endif()
|
||||
|
||||
set(COMMIT_ISDIRTY 1)
|
||||
set(COMMIT_HASH unknown)
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
configure_file(${IN_FILE} ${OUT_FILE} @ONLY)
|
||||
@ -0,0 +1,15 @@
|
||||
#ifndef VERSION_HEADER
|
||||
#define VERSION_HEADER
|
||||
|
||||
|
||||
|
||||
#define DAEMON_MAJOR_VERSION @DAEMON_MAJOR_VERSION@
|
||||
#define DAEMON_MINOR_VERSION @DAEMON_MINOR_VERSION@
|
||||
#define DAEMON_PATCH_VERSION @DAEMON_PATCH_VERSION@
|
||||
|
||||
#define COMMIT_HASH "@COMMIT_HASH@"
|
||||
#define COMMIT_ISDIRTY @COMMIT_ISDIRTY@
|
||||
|
||||
|
||||
|
||||
#endif //VERSION_HEADER
|
||||
Loading…
Reference in New Issue