diff --git a/.gitignore b/.gitignore index 86b71dadf945..a7d344bca5a7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ scripts/docs/en/components_schema scripts/docs/en/dynamic_configs scripts/docs/en/versions.md scripts/docs/scripts/versions.js +universal/include/userver/version.hpp diff --git a/cmake/GetUserverVersion.cmake b/cmake/GetUserverVersion.cmake index ec3817666bf2..5f6c8ce1b25e 100644 --- a/cmake/GetUserverVersion.cmake +++ b/cmake/GetUserverVersion.cmake @@ -23,14 +23,15 @@ endif() file(READ ${USERVER_ROOT_DIR}/version.txt VERSION) string(STRIP ${VERSION} VERSION) -string(REGEX MATCH "^([0-9]+)\.([0-9]+[\-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") +string(REGEX MATCH "^([0-9]+)\.([0-9]+)([\-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") if(NOT USERVER_MATCHED_VERSION_STRING STREQUAL VERSION) message(FATAL_ERROR "Failed to retrieve userver major/minor version number from '${VERSION}'") endif() set(USERVER_MAJOR_VERSION ${CMAKE_MATCH_1}) set(USERVER_MINOR_VERSION ${CMAKE_MATCH_2}) +set(USERVER_RELEASE_CANDIDATE ${CMAKE_MATCH_3}) -set(USERVER_VERSION "${USERVER_MAJOR_VERSION}.${USERVER_MINOR_VERSION}") +set(USERVER_VERSION "${USERVER_MAJOR_VERSION}.${USERVER_MINOR_VERSION}${USERVER_RELEASE_CANDIDATE}") string(REPLACE "-" "_" USERVER_VERSION_STR "${USERVER_VERSION}") string(REPLACE "." "_" USERVER_VERSION_STR "${USERVER_VERSION_STR}") set(USERVER_VERSION_STR "v${USERVER_VERSION_STR}") diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index e8b6e73a3a8f..36fe09e1a1ea 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -163,6 +163,13 @@ target_compile_definitions( "USERVER_NAMESPACE_END=${USERVER_NAMESPACE_END}" "USERVER=1" ) +set(VERSION_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/include/userver/version.hpp) +math(EXPR USERVER_VERSION_FULL "10000 * ${USERVER_MAJOR_VERSION} + 100 * ${USERVER_MINOR_VERSION}") +if(USERVER_RELEASE_CANDIDATE) + math(EXPR USERVER_VERSION_FULL "${USERVER_VERSION_FULL} - 1") +endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.hpp.in ${VERSION_CONFIG} ESCAPE_QUOTES @ONLY) + # https://github.com/jemalloc/jemalloc/issues/820 if(USERVER_FEATURE_JEMALLOC AND NOT USERVER_SANITIZE diff --git a/universal/version.hpp.in b/universal/version.hpp.in new file mode 100644 index 000000000000..4e42a6fbc94b --- /dev/null +++ b/universal/version.hpp.in @@ -0,0 +1,18 @@ +#pragma once + +/// @file userver/version.hpp +/// @brief Version macro + +/// @brief Version in form of `10000*major + 100*minor - (is_rc ? 1 : 0)` +/// +/// Examples: +/// @code +/// 2.1 -> 20100 +/// 2.16 -> 21600 +/// 2.16-rc -> 21599 +/// 3.0 -> 30000 +/// 3.0-rc -> 29999 +/// @endcode +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#define USERVER_VERSION_FULL @USERVER_VERSION_FULL@ + diff --git a/ydb/functional_tests/basic/CMakeLists.txt b/ydb/functional_tests/basic/CMakeLists.txt index b8513317e633..45462714609c 100644 --- a/ydb/functional_tests/basic/CMakeLists.txt +++ b/ydb/functional_tests/basic/CMakeLists.txt @@ -2,7 +2,7 @@ project(userver-ydb-tests-basic CXX) add_executable( ${PROJECT_NAME} "ydb_service.cpp" "views/describe-table/post/view.cpp" "views/select-list/post/view.cpp" - "views/select-rows/post/view.cpp" "views/upsert-row/post/view.cpp" "views/upsert-row-old/post/view.cpp"" + "views/select-rows/post/view.cpp" "views/upsert-row/post/view.cpp" "views/upsert-row-old/post/view.cpp" ) target_link_libraries(${PROJECT_NAME} userver::ydb) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})