diff --git a/CMakeLists.txt b/CMakeLists.txt index 89eb743..48dbeb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,28 +26,36 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") -find_package(Git) - -execute_process( - COMMAND git describe --tags --long --always - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_DESCRIBE - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) - -if(GIT_DESCRIBE MATCHES "^[vV]?[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+-g[0-9a-f]+") - string(REGEX REPLACE - "^[vV]?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g([0-9a-f]+)" - "\\1+\\2.git.g\\3" - SEMVER "${GIT_DESCRIBE}" - ) -elseif(GIT_DESCRIBE) - set(SEMVER "${PROJECT_VERSION}+0.git.${GIT_DESCRIBE}") +if(DEFINED CLRSYNC_SEMVER) + set(SEMVER "${CLRSYNC_SEMVER}") else() - set(SEMVER "${PROJECT_VERSION}") + find_package(Git QUIET) + + if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") + execute_process( + COMMAND git describe --tags --long --always + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_DESCRIBE + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + endif() + + if(GIT_DESCRIBE MATCHES "^[vV]?[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+-g[0-9a-f]+") + string(REGEX REPLACE + "^[vV]?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g([0-9a-f]+)" + "\\1+\\2.git.g\\3" + SEMVER "${GIT_DESCRIBE}" + ) + elseif(GIT_DESCRIBE) + set(SEMVER "${PROJECT_VERSION}+0.git.${GIT_DESCRIBE}") + else() + set(SEMVER "${PROJECT_VERSION}") + endif() endif() +message(STATUS "clrsync version: ${SEMVER}") + configure_file( ${CMAKE_SOURCE_DIR}/src/core/version.hpp.in ${CMAKE_SOURCE_DIR}/src/core/version.hpp diff --git a/package.nix b/package.nix index 1235dea..b942336 100644 --- a/package.nix +++ b/package.nix @@ -20,7 +20,14 @@ stdenv.mkDerivation rec { pname = "clrsync"; - version = "unstable-2024-12-15"; + + baseVersion = "0.1.4"; + + version = + if src ? rev then + "${baseVersion}+${toString src.revCount}.git.${lib.substring 0 7 src.rev}" + else + baseVersion; src = lib.cleanSourceWith { src = ./.; @@ -70,6 +77,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DUSE_SYSTEM_GLFW=ON" + "-DCLRSYNC_SEMVER=${version}" ]; installPhase = '' diff --git a/src/core/version.hpp b/src/core/version.hpp index 3800931..14e4a29 100644 --- a/src/core/version.hpp +++ b/src/core/version.hpp @@ -7,7 +7,7 @@ namespace clrsync::core { -const std::string GIT_SEMVER = "0.1.4+2.git.g4b4af0f"; +const std::string GIT_SEMVER = "0.1.4+3.git.g8a2b224"; const std::string version_string(); } // namespace clrsync::core