From 7b0ab059d531bd69c11d6ae1c83d8f23e4037ee9 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Tue, 21 Apr 2026 00:26:35 +0200 Subject: [PATCH] update Cmake with git tags --- CMakeLists.txt | 74 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da37c15..27458ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,26 +8,53 @@ enable_language(C) SET (VERSION_MAJOR "0") SET (VERSION_MINOR "99") SET (VERSION_PATCH "26") -SET (VERSION_SUB "0") -SET (VERSION_DEVEL "0") -SET (VERSION_SUFFIX ".0") +SET (MARS_NWE_VERSION_BASE "${VERSION_MAJOR}.${VERSION_MINOR}.pl${VERSION_PATCH}") +SET (MARS_NWE_VERSION "${MARS_NWE_VERSION_BASE}") -IF (VERSION_SUB) - SET (VERSION_PATCH "${VERSION_PATCH}${VERSION_SUFFIX}") -ENDIF (VERSION_SUB) +find_package(Git QUIET) -IF (VERSION_DEVEL) - # for snapshot Version Number - find_package(Subversion) - IF (Subversion_FOUND) - Subversion_WC_INFO(${PROJECT_SOURCE_DIR} CASA) - MESSAGE("Current revision is ${CASA_WC_REVISION}") - ENDIF (Subversion_FOUND) - SET (VERSION_PATCH "${VERSION_PATCH}.${CASA_WC_REVISION})${VERSION_SUFFIX}") -ENDIF (VERSION_DEVEL) +if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --tags --exact-match + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_EXACT_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) -SET (MARS_NWE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.pl${VERSION_PATCH}") + if(GIT_EXACT_TAG STREQUAL "v${MARS_NWE_VERSION_BASE}" OR + GIT_EXACT_TAG STREQUAL "${MARS_NWE_VERSION_BASE}") + set(MARS_NWE_VERSION "${MARS_NWE_VERSION_BASE}") + else() + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-list --count HEAD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_COMMIT_COUNT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_SHORT_SHA + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff --quiet + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE GIT_DIRTY_RESULT + ) + + set(MARS_NWE_VERSION + "${MARS_NWE_VERSION_BASE}-dev.${GIT_COMMIT_COUNT}+g${GIT_SHORT_SHA}") + + if(NOT GIT_DIRTY_RESULT EQUAL 0) + string(APPEND MARS_NWE_VERSION "-dirty") + endif() + endif() +endif() INCLUDE(${CMAKE_ROOT}/Modules/GNUInstallDirs.cmake) INCLUDE(${CMAKE_MODULE_PATH}/MarsNweInstallDirs.cmake) @@ -81,12 +108,8 @@ IF (NOT MAX_FILES) SET (MAX_FILES "256") ENDIF (NOT MAX_FILES) - - -find_package( Crypt REQUIRED) -find_package( GDBM REQUIRED) - - +find_package(Crypt REQUIRED) +find_package(GDBM REQUIRED) message(STATUS "Mars Nwe version: ${MARS_NWE_VERSION}") message(STATUS "bin: ${CMAKE_INSTALL_FULL_BINDIR}") @@ -103,8 +126,6 @@ message(STATUS "Mars Nwe data: ${MARS_NWE_DATA_DIR}") message(STATUS "Mars Nwe log: ${MARS_NWE_LOG_DIR}") message(STATUS "Mars Nwe pid: ${MARS_NWE_PID_DIR}") - - # put the include dirs which are in the source or build tree # before all other include dirs, so the headers in the sources # are prefered over the already installed ones @@ -116,7 +137,6 @@ add_custom_target(uninstall add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) - add_subdirectory(include) add_subdirectory(src) add_subdirectory(opt) @@ -132,7 +152,7 @@ set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "pl${VERSION_PATCH}") set(CPACK_SOURCE_GENERATOR "TBZ2") -SET(CPACK_PACKAGE_INSTALL_DIRECTORY "mars_nwe-${VERSION}") +SET(CPACK_PACKAGE_INSTALL_DIRECTORY "mars_nwe-${MARS_NWE_VERSION}") SET(CPACK_SOURCE_IGNORE_FILES CMakeCache.txt CMakeFiles progress.make cmake_install.cmake CPackConfig.cmake CPackSourceConfig.cmake "\\\\.git" "\\\\.svn" "\\\\.swp$" "\\\\.cvs" "\\\\.tar.gz" "\\\\.o") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${MARS_NWE_VERSION}") include(CPack)