diff options
| -rw-r--r-- | cmake/include.cmake | 3 | ||||
| -rw-r--r-- | cmake/utils/GenVersionHeader.cmake | 11 | ||||
| -rw-r--r-- | cmake/utils/GetGitHash.cmake | 16 | ||||
| -rw-r--r-- | cmake/version.cmake | 18 | ||||
| -rw-r--r-- | include/ouroboros/version.h.in | 1 | ||||
| -rw-r--r-- | src/irmd/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/irmd/main.c | 6 |
7 files changed, 50 insertions, 7 deletions
diff --git a/cmake/include.cmake b/cmake/include.cmake index ace51d0f..414ea0ad 100644 --- a/cmake/include.cmake +++ b/cmake/include.cmake @@ -2,9 +2,6 @@ set(HEADERS_SOURCE_DIR "${CMAKE_SOURCE_DIR}/include/ouroboros") # SOCK_BUF_SIZE is in cmake/config/global.cmake -configure_file("${CMAKE_SOURCE_DIR}/include/ouroboros/version.h.in" - "${CMAKE_BINARY_DIR}/include/ouroboros/version.h" @ONLY) - configure_file("${CMAKE_SOURCE_DIR}/include/ouroboros/sockets.h.in" "${CMAKE_BINARY_DIR}/include/ouroboros/sockets.h" @ONLY) diff --git a/cmake/utils/GenVersionHeader.cmake b/cmake/utils/GenVersionHeader.cmake new file mode 100644 index 00000000..5f5821b9 --- /dev/null +++ b/cmake/utils/GenVersionHeader.cmake @@ -0,0 +1,11 @@ +include(${CMAKE_CURRENT_LIST_DIR}/GetGitHash.cmake) +get_git_hash(${GIT_DIR} ${PACKAGE_VERSION_MAJOR} ${PACKAGE_VERSION_MINOR} ${PACKAGE_VERSION_PATCH} PACKAGE_VERSION_STRING) + +configure_file(${INPUT_FILE} ${OUTPUT_FILE}.tmp @ONLY) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${OUTPUT_FILE}.tmp ${OUTPUT_FILE} +) + +file(REMOVE ${OUTPUT_FILE}.tmp) diff --git a/cmake/utils/GetGitHash.cmake b/cmake/utils/GetGitHash.cmake new file mode 100644 index 00000000..8a9be41d --- /dev/null +++ b/cmake/utils/GetGitHash.cmake @@ -0,0 +1,16 @@ +function(get_git_hash WORKING_DIR VERSION_MAJ VERSION_MIN VERSION_PAT OUTPUT_VAR) + execute_process( + COMMAND git describe --always --dirty + WORKING_DIRECTORY ${WORKING_DIR} + OUTPUT_VARIABLE _hash + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + + if(NOT _hash) + message(WARNING "Could not determine git hash") + set(_hash "${VERSION_MAJ}.${VERSION_MIN}.${VERSION_PAT}-custom") + endif() + + set(${OUTPUT_VAR} "${_hash}" PARENT_SCOPE) +endfunction() diff --git a/cmake/version.cmake b/cmake/version.cmake index 00183d34..1998e874 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -3,3 +3,21 @@ set(PACKAGE_VERSION_MINOR 22) set(PACKAGE_VERSION_PATCH 0) set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}") + +include(utils/GetGitHash) +get_git_hash(${CMAKE_SOURCE_DIR} ${PACKAGE_VERSION_MAJOR} ${PACKAGE_VERSION_MINOR} ${PACKAGE_VERSION_PATCH} PACKAGE_VERSION_STRING) + +configure_file("${CMAKE_SOURCE_DIR}/include/ouroboros/version.h.in" + "${CMAKE_BINARY_DIR}/include/ouroboros/version.h" @ONLY) + +add_custom_target(version_header ALL + COMMAND ${CMAKE_COMMAND} + -DGIT_DIR=${CMAKE_SOURCE_DIR} + -DINPUT_FILE=${CMAKE_SOURCE_DIR}/include/ouroboros/version.h.in + -DOUTPUT_FILE=${CMAKE_BINARY_DIR}/include/ouroboros/version.h + -DPACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR} + -DPACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR} + -DPACKAGE_VERSION_PATCH=${PACKAGE_VERSION_PATCH} + -P ${CMAKE_SOURCE_DIR}/cmake/utils/GenVersionHeader.cmake + COMMENT "Updating git hash in version.h" +) diff --git a/include/ouroboros/version.h.in b/include/ouroboros/version.h.in index f2ff7ff4..13dd2921 100644 --- a/include/ouroboros/version.h.in +++ b/include/ouroboros/version.h.in @@ -26,5 +26,6 @@ #define OUROBOROS_VERSION_MAJOR @PACKAGE_VERSION_MAJOR@ #define OUROBOROS_VERSION_MINOR @PACKAGE_VERSION_MINOR@ #define OUROBOROS_VERSION_PATCH @PACKAGE_VERSION_PATCH@ +#define OUROBOROS_VERSION_STRING "@PACKAGE_VERSION_STRING@" #endif /* OUROBOROS_VERSION_H */ diff --git a/src/irmd/CMakeLists.txt b/src/irmd/CMakeLists.txt index d65635af..9aa747ca 100644 --- a/src/irmd/CMakeLists.txt +++ b/src/irmd/CMakeLists.txt @@ -44,6 +44,8 @@ set(IRMD_SOURCES add_executable(irmd ${IRMD_SOURCES}) +add_dependencies(irmd version_header) + target_include_directories(irmd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} diff --git a/src/irmd/main.c b/src/irmd/main.c index 9a927c46..c7a5715b 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -2192,10 +2192,8 @@ static void irm_argparse(int argc, argc--; argv++; } else if (strcmp(*argv, "--version") == 0) { - printf("Ouroboros version %d.%d.%d\n", - OUROBOROS_VERSION_MAJOR, - OUROBOROS_VERSION_MINOR, - OUROBOROS_VERSION_PATCH); + printf("Ouroboros version %s\n", + OUROBOROS_VERSION_STRING); exit(EXIT_SUCCESS); #ifdef HAVE_TOML } else if (strcmp (*argv, "--config") == 0) { |
