mdbx: поддержка Semantic Versioning.

Было `MAJOR.MINOR.RELEASE.REVISION`
Теперь `MAJOR.MINOR.PATCH[.TWEAK][-PRERELEASE][+BUILDMETADATA]`

https://semver.org/

 - вместо квартета `MAJOR.MINOR.RELEASE.REVISION`
   триплет c опцинальным четвертым членом `MAJOR.MINOR.PATCH[.TWEAK]`

 - `TWEAK` не входит в тег git, а формируется автоматически и
   соответствует кол-ву коммитов после тега git и опускается если 0.

 - Поле `PRERELEASE` опционально и переносится в версию из тега git.

 - Поле `BUILDMETADATA` опционально, не входит в тег git, а
   добавляется во время сборки если задана опцией `MDBX_BUILD_METADATA`.
This commit is contained in:
Леонид Юрьев (Leonid Yuriev)
2024-11-24 20:46:21 +03:00
parent bcf0a1273f
commit 9daff17c82
12 changed files with 430 additions and 334 deletions

View File

@@ -195,6 +195,15 @@ else()
"PLEASE, AVOID USING ANY OTHER TECHNIQUES.")
endif()
# Provide version
include(cmake/utils.cmake)
set(MDBX_BUILD_METADATA
"${MDBX_BUILD_METADATA}"
CACHE STRING "An extra/custom information provided during libmdbx build")
semver_provide(MDBX "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
"${MDBX_BUILD_METADATA}" FALSE)
message(STATUS "libmdbx version is ${MDBX_VERSION}")
if(DEFINED PROJECT_NAME)
option(
MDBX_FORCE_BUILD_AS_MAIN_PROJECT
@@ -304,7 +313,6 @@ if(NOT DEFINED THREADS_PREFER_PTHREAD_FLAG)
endif()
find_package(Threads REQUIRED)
include(cmake/utils.cmake)
include(cmake/compiler.cmake)
include(cmake/profile.cmake)
@@ -650,10 +658,6 @@ endif()
# ~~~
# ##############################################################################
set(MDBX_BUILD_METADATA
""
CACHE STRING "An extra/custom information provided during libmdbx build")
set(MDBX_BUILD_OPTIONS ENABLE_UBSAN ENABLE_ASAN ENABLE_MEMCHECK ENABLE_GPROF
ENABLE_GCOV)
macro(add_mdbx_option NAME DESCRIPTION DEFAULT)
@@ -812,11 +816,6 @@ if(MDBX_BUILD_CXX)
probe_libcxx_filesystem()
endif()
# Get version
fetch_version(MDBX "${CMAKE_CURRENT_SOURCE_DIR}" FALSE
"${CMAKE_CURRENT_BINARY_DIR}")
message(STATUS "libmdbx version is ${MDBX_VERSION}")
# sources list
set(LIBMDBX_PUBLIC_HEADERS mdbx.h)
set(LIBMDBX_SOURCES mdbx.h "${CMAKE_CURRENT_BINARY_DIR}/config.h")
@@ -1370,11 +1369,9 @@ if(NOT SUBPROJECT)
set(PACKAGE "libmdbx")
set(CPACK_PACKAGE_VERSION_MAJOR ${MDBX_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${MDBX_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${MDBX_VERSION_RELEASE})
set(CPACK_PACKAGE_VERSION_COMMIT ${MDBX_VERSION_REVISION})
set(PACKAGE_VERSION
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${CPACK_PACKAGE_VERSION_COMMIT}"
)
set(CPACK_PACKAGE_VERSION_PATCH ${MDBX_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_TWEAK ${MDBX_VERSION_TWEAK})
set(PACKAGE_VERSION ${MDBX_VERSION})
message(STATUS "libmdbx package version is ${PACKAGE_VERSION}")
endif()