From 066e04b74da0e12b4e3aebf4cc9b3c82d412270c Mon Sep 17 00:00:00 2001 From: bergmann Date: Wed, 31 Jul 2019 13:30:36 +0200 Subject: [PATCH] * Improved git version handling * Fixed bug in tool --- cmake/modules | 2 +- .../helloworld/cmake/helloworld-options.cmake | 5 +- .../helloworld/cmake/helloworld-var.cmake | 62 ++++++++++------- .../cmake/libhelloworld-config.cmake | 2 +- .../cmake/libhelloworld-options.cmake | 3 + .../cmake/libhelloworld-var.cmake | 68 +++++++++++-------- tool | 6 +- 7 files changed, 92 insertions(+), 56 deletions(-) diff --git a/cmake/modules b/cmake/modules index 1a32531..4ca86b7 160000 --- a/cmake/modules +++ b/cmake/modules @@ -1 +1 @@ -Subproject commit 1a32531aef2deeebd5637b1873bc4e976628801c +Subproject commit 4ca86b7d92f24e5d8056cada3ff6bd3906b16aca diff --git a/projects/helloworld/cmake/helloworld-options.cmake b/projects/helloworld/cmake/helloworld-options.cmake index d7e4011..705868b 100644 --- a/projects/helloworld/cmake/helloworld-options.cmake +++ b/projects/helloworld/cmake/helloworld-options.cmake @@ -2,5 +2,8 @@ Option ( HELLOWORLD_INSTALL_DEBUG "Install the stripped debug informations of helloworld." OFF ) Option ( HELLOWORLD_NO_STRIP - "Do not strip debug symbols from binary." + "Do not strip debug symbols from helloworld binary." OFF ) +Option ( HELLOWORLD_USE_GIT_VERSION + "Read the git tags to get the version of helloworld" + ON ) diff --git a/projects/helloworld/cmake/helloworld-var.cmake b/projects/helloworld/cmake/helloworld-var.cmake index 5878be7..9878b55 100644 --- a/projects/helloworld/cmake/helloworld-var.cmake +++ b/projects/helloworld/cmake/helloworld-var.cmake @@ -1,28 +1,44 @@ # Version -Set ( HELLOWORLD_VERSION_MAJOR 1 ) -Set ( HELLOWORLD_VERSION_MINOR 0 ) -Set ( HELLOWORLD_VERSION_PATCH 0 ) -Set ( HELLOWORLD_VERSION_BUILD 0 ) -Set ( HELLOWORLD_VERSION_SHORT "${HELLOWORLD_VERSION_MAJOR}.${HELLOWORLD_VERSION_MINOR}" ) -Set ( HELLOWORLD_VERSION "${HELLOWORLD_VERSION_SHORT}.${HELLOWORLD_VERSION_PATCH}.${HELLOWORLD_VERSION_BUILD}" ) -Set ( HELLOWORLD_NAME "helloworld-${HELLOWORLD_VERSION_SHORT}" ) +Set ( HELLOWORLD_VERSION_MAJOR 1 ) +Set ( HELLOWORLD_VERSION_MINOR 0 ) +Set ( HELLOWORLD_VERSION_PATCH 0 ) +Set ( HELLOWORLD_VERSION_BUILD 0 ) +Set ( HELLOWORLD_VERSION_HASH "" ) +Set ( HELLOWORLD_VERSION_BEHIND 0 ) +Set ( HELLOWORLD_VERSION_DIRTY 0 ) + +# Git Version +If ( HELLOWORLD_USE_GIT_VERSION ) + Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER ) + If ( HAS_GIT_HELPER ) + GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/.. + HELLOWORLD_VERSION_MAJOR + HELLOWORLD_VERSION_MINOR + HELLOWORLD_VERSION_PATCH + HELLOWORLD_VERSION_BUILD + HELLOWORLD_VERSION_HASH + HELLOWORLD_VERSION_BEHIND + HELLOWORLD_VERSION_DIRTY ) + EndIf ( ) +EndIf ( ) + +# Strings +Set ( HELLOWORLD_VERSION_SHORT "${HELLOWORLD_VERSION_MAJOR}.${HELLOWORLD_VERSION_MINOR}" ) +Set ( HELLOWORLD_VERSION "${HELLOWORLD_VERSION_SHORT}.${HELLOWORLD_VERSION_PATCH}.${HELLOWORLD_VERSION_BUILD}" ) +Set ( HELLOWORLD_VERSION_COMPLETE "${HELLOWORLD_VERSION}" ) +Set ( HELLOWORLD_NAME "helloworld-${HELLOWORLD_VERSION_SHORT}" ) +Set ( HELLOWORLD_OUTPUTNAME "helloworld" ) +If ( HELLOWORLD_VERSION_BEHIND ) + Set ( HELLOWORLD_VERSION_COMPLETE "${HELLOWORLD_VERSION_COMPLETE}+${HELLOWORLD_VERSION_BEHIND}" ) +EndIf ( ) + +Message ( FATAL_ERROR "Please configure the output name of protject (HELLOWORLD_NAME and HELLOWORLD_OUTPUTNAME)!" ) # Install directories -Set ( HELLOWORLD_INSTALL_DIR_BIN "bin" ) +Set ( HELLOWORLD_INSTALL_DIR_BIN "bin" ) # C Standard -Set ( CMAKE_C_STANDARD 11 ) -Set ( CMAKE_CXX_STANDARD 17 ) -Set ( CMAKE_C_STANDARD_REQUIRED ON ) -Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) - -# Git Version -Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER ) -If ( HAS_GIT_HELPER ) - GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/.. - HELLOWORLD_VERSION_MAJOR - HELLOWORLD_VERSION_MINOR - HELLOWORLD_VERSION_PATCH - HELLOWORLD_VERSION_BUILD - HELLOWORLD_VERSION_HASH ) -EndIf ( ) +Set ( CMAKE_C_STANDARD 11 ) +Set ( CMAKE_CXX_STANDARD 17 ) +Set ( CMAKE_C_STANDARD_REQUIRED ON ) +Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) diff --git a/projects/libhelloworld/cmake/libhelloworld-config.cmake b/projects/libhelloworld/cmake/libhelloworld-config.cmake index a67ec90..bc8d5c0 100644 --- a/projects/libhelloworld/cmake/libhelloworld-config.cmake +++ b/projects/libhelloworld/cmake/libhelloworld-config.cmake @@ -1,6 +1,6 @@ # libhelloworld-config.cmake - package configuration file -Message ( WARNING "Please configure the dependencies of this package!" ) +Message ( FATAL_ERROR "Please configure the dependencies of this package!" ) # Include ( CMakeFindDependencyMacro ) # Find_Dependency ( ) diff --git a/projects/libhelloworld/cmake/libhelloworld-options.cmake b/projects/libhelloworld/cmake/libhelloworld-options.cmake index 21607ab..4d0c0fe 100644 --- a/projects/libhelloworld/cmake/libhelloworld-options.cmake +++ b/projects/libhelloworld/cmake/libhelloworld-options.cmake @@ -13,3 +13,6 @@ Option ( LIBHELLOWORLD_INSTALL_DEBUG Option ( LIBHELLOWORLD_NO_STRIP "Do not strip debug symbols from binary." OFF ) +Option ( LIBHELLOWORLD_USE_GIT_VERSION + "Read the git tags to get the version of libhelloworld" + ON ) diff --git a/projects/libhelloworld/cmake/libhelloworld-var.cmake b/projects/libhelloworld/cmake/libhelloworld-var.cmake index 356e349..a40623f 100644 --- a/projects/libhelloworld/cmake/libhelloworld-var.cmake +++ b/projects/libhelloworld/cmake/libhelloworld-var.cmake @@ -1,32 +1,46 @@ # Version -Set ( LIBHELLOWORLD_VERSION_MAJOR 1 ) -Set ( LIBHELLOWORLD_VERSION_MINOR 0 ) -Set ( LIBHELLOWORLD_VERSION_PATCH 0 ) -Set ( LIBHELLOWORLD_VERSION_BUILD 0 ) -Set ( LIBHELLOWORLD_VERSION_SHORT "${LIBHELLOWORLD_VERSION_MAJOR}.${LIBHELLOWORLD_VERSION_MINOR}" ) -Set ( LIBHELLOWORLD_VERSION "${LIBHELLOWORLD_VERSION_SHORT}.${LIBHELLOWORLD_VERSION_PATCH}.${LIBHELLOWORLD_VERSION_BUILD}" ) -Set ( LIBHELLOWORLD_NAME "libhelloworld-${LIBHELLOWORLD_VERSION_SHORT}" ) -Set ( LIBHELLOWORLD_OUTPUTNAME "helloworld" ) -Message ( WARNING "Please configure the output name of protject!" ) +Set ( LIBHELLOWORLD_VERSION_MAJOR 1 ) +Set ( LIBHELLOWORLD_VERSION_MINOR 0 ) +Set ( LIBHELLOWORLD_VERSION_PATCH 0 ) +Set ( LIBHELLOWORLD_VERSION_BUILD 0 ) +Set ( LIBHELLOWORLD_VERSION_HASH "" ) +Set ( LIBHELLOWORLD_VERSION_BEHIND 0 ) +Set ( LIBHELLOWORLD_VERSION_DIRTY 0 ) + +# Git Version +If ( LIBHELLOWORLD_USE_GIT_VERSION ) + Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER ) + If ( HAS_GIT_HELPER ) + GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/.. + LIBHELLOWORLD_VERSION_MAJOR + LIBHELLOWORLD_VERSION_MINOR + LIBHELLOWORLD_VERSION_PATCH + LIBHELLOWORLD_VERSION_BUILD + LIBHELLOWORLD_VERSION_HASH + LIBHELLOWORLD_VERSION_BEHIND + LIBHELLOWORLD_VERSION_DIRTY ) + EndIf ( ) +EndIf ( ) + +# Strings +Set ( LIBHELLOWORLD_VERSION_SHORT "${LIBHELLOWORLD_VERSION_MAJOR}.${LIBHELLOWORLD_VERSION_MINOR}" ) +Set ( LIBHELLOWORLD_VERSION "${LIBHELLOWORLD_VERSION_SHORT}.${LIBHELLOWORLD_VERSION_PATCH}.${LIBHELLOWORLD_VERSION_BUILD}" ) +Set ( LIBHELLOWORLD_VERSION_COMPLETE "${LIBHELLOWORLD_VERSION}" ) +Set ( LIBHELLOWORLD_NAME "helloworld-${LIBHELLOWORLD_VERSION_SHORT}" ) +Set ( LIBHELLOWORLD_OUTPUTNAME "helloworld" ) +If ( LIBHELLOWORLD_VERSION_BEHIND ) + Set ( LIBHELLOWORLD_VERSION_COMPLETE "${LIBHELLOWORLD_VERSION_COMPLETE}+${LIBHELLOWORLD_VERSION_BEHIND}" ) +EndIf ( ) + +Message ( FATAL_ERROR "Please configure the output name of protject (LIBHELLOWORLD_NAME and LIBHELLOWORLD_OUTPUTNAME)!" ) # Install directories -Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "include/${LIBHELLOWORLD_NAME}" ) -Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "lib" ) -Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "share/${LIBHELLOWORLD_NAME}" ) +Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "include/${LIBHELLOWORLD_NAME}" ) +Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "lib" ) +Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "share/${LIBHELLOWORLD_NAME}" ) # C Standard -Set ( CMAKE_C_STANDARD 11 ) -Set ( CMAKE_CXX_STANDARD 17 ) -Set ( CMAKE_C_STANDARD_REQUIRED ON ) -Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) - -# Git Version -Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER ) -If ( HAS_GIT_HELPER ) - GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/.. - LIBHELLOWORLD_VERSION_MAJOR - LIBHELLOWORLD_VERSION_MINOR - LIBHELLOWORLD_VERSION_PATCH - LIBHELLOWORLD_VERSION_BUILD - LIBHELLOWORLD_VERSION_HASH ) -EndIf ( ) +Set ( CMAKE_C_STANDARD 11 ) +Set ( CMAKE_CXX_STANDARD 17 ) +Set ( CMAKE_C_STANDARD_REQUIRED ON ) +Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) diff --git a/tool b/tool index a8b5a63..e87d873 100755 --- a/tool +++ b/tool @@ -239,7 +239,7 @@ while [ $# -gt 0 ]; do if [ $# -lt 2 ]; then Panic "Parameter $1 expects exactly one parameter!" fi - tmp=$(readlink -f "$2") + tmp=$(readlink -m "$2") Operations+=("grp:$tmp") shift ;; @@ -248,7 +248,7 @@ while [ $# -gt 0 ]; do if [ $# -lt 3 ]; then Panic "Parameter $1 expects exactly two parameter!" fi - tmp=$(readlink -f "$3") + tmp=$(readlink -m "$3") Operations+=("lib:$2:$tmp") shift shift @@ -258,7 +258,7 @@ while [ $# -gt 0 ]; do if [ $# -lt 3 ]; then Panic "Parameter $1 expects exactly two parameter!" fi - tmp=$(readlink -f "$3") + tmp=$(readlink -m "$3") Operations+=("exe:$2:$tmp") shift shift