1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-10-30 07:25:34 +03:00
Files
mariadb-columnstore-engine/cmapi/cmake/cmapi_misc.cmake

116 lines
4.5 KiB
CMake

# Read value for a variable from VERSION.
macro(MYSQL_GET_CONFIG_VALUE keyword var)
if(NOT ${var})
file(STRINGS ${SERVER_SOURCE_DIR}/VERSION str REGEX "^[ ]*${keyword}=")
if(str)
string(REPLACE "${keyword}=" "" str ${str})
string(REGEX REPLACE "[ ].*" "" str "${str}")
set(${var} ${str})
endif()
endif()
endmacro()
function(get_linux_lsb_release_information)
# Try lsb_release first
find_program(LSB_RELEASE_EXEC lsb_release)
if(LSB_RELEASE_EXEC)
execute_process(
COMMAND "${LSB_RELEASE_EXEC}" --short --id
OUTPUT_VARIABLE LSB_RELEASE_ID_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TOLOWER "${LSB_RELEASE_ID_SHORT}" LSB_RELEASE_ID_SHORT)
execute_process(
COMMAND "${LSB_RELEASE_EXEC}" --short --release
OUTPUT_VARIABLE LSB_RELEASE_VERSION_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND "${LSB_RELEASE_EXEC}" --short --codename
OUTPUT_VARIABLE LSB_RELEASE_CODENAME_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
# Fallback: parse /etc/os-release
if(EXISTS "/etc/os-release")
file(READ "/etc/os-release" OS_RELEASE_CONTENT)
string(REGEX MATCH "ID=([^\n]*)" _match "${OS_RELEASE_CONTENT}")
set(LSB_RELEASE_ID_SHORT "${CMAKE_MATCH_1}")
# Remove quotes if present
string(REGEX REPLACE "^\"(.*)\"$" "\\1" LSB_RELEASE_ID_SHORT "${LSB_RELEASE_ID_SHORT}")
string(TOLOWER "${LSB_RELEASE_ID_SHORT}" LSB_RELEASE_ID_SHORT)
string(REGEX MATCH "VERSION_ID=([^\n]*)" _match "${OS_RELEASE_CONTENT}")
set(LSB_RELEASE_VERSION_SHORT "${CMAKE_MATCH_1}")
# Remove quotes if present
string(REGEX REPLACE "^\"(.*)\"$" "\\1" LSB_RELEASE_VERSION_SHORT "${LSB_RELEASE_VERSION_SHORT}")
string(REGEX MATCH "VERSION_CODENAME=([^\n]*)" _match "${OS_RELEASE_CONTENT}")
if(CMAKE_MATCH_1)
set(LSB_RELEASE_CODENAME_SHORT "${CMAKE_MATCH_1}")
# Remove quotes if present
string(REGEX REPLACE "^\"(.*)\"$" "\\1" LSB_RELEASE_CODENAME_SHORT "${LSB_RELEASE_CODENAME_SHORT}")
else()
set(LSB_RELEASE_CODENAME_SHORT "")
endif()
else()
message(FATAL_ERROR "Could not detect lsb_release or /etc/os-release, cannot gather required information")
endif()
endif()
message(STATUS "LSB_RELEASE_ID_SHORT ${LSB_RELEASE_ID_SHORT}")
message(STATUS "LSB_RELEASE_VERSION_SHORT ${LSB_RELEASE_VERSION_SHORT}")
message(STATUS "LSB_RELEASE_CODENAME_SHORT ${LSB_RELEASE_CODENAME_SHORT}")
set(LSB_RELEASE_ID_SHORT
"${LSB_RELEASE_ID_SHORT}"
PARENT_SCOPE
)
set(LSB_RELEASE_VERSION_SHORT
"${LSB_RELEASE_VERSION_SHORT}"
PARENT_SCOPE
)
set(LSB_RELEASE_CODENAME_SHORT
"${LSB_RELEASE_CODENAME_SHORT}"
PARENT_SCOPE
)
endfunction()
# Read mysql version for configure script
macro(GET_MYSQL_VERSION)
mysql_get_config_value("MYSQL_VERSION_MAJOR" MAJOR_VERSION)
mysql_get_config_value("MYSQL_VERSION_MINOR" MINOR_VERSION)
mysql_get_config_value("MYSQL_VERSION_PATCH" PATCH_VERSION)
mysql_get_config_value("MYSQL_VERSION_EXTRA" EXTRA_VERSION)
mysql_get_config_value("SERVER_MATURITY" SERVER_MATURITY)
if(NOT "${MAJOR_VERSION}" MATCHES "[0-9]+"
OR NOT "${MINOR_VERSION}" MATCHES "[0-9]+"
OR NOT "${PATCH_VERSION}" MATCHES "[0-9]+"
)
message(FATAL_ERROR "VERSION file cannot be parsed.")
endif()
if((NOT TINY_VERSION) AND (EXTRA_VERSION MATCHES "[\\-][0-9]+"))
string(REPLACE "-" "" TINY_VERSION "${EXTRA_VERSION}")
else()
set(TINY_VERSION "0")
endif()
set(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}${EXTRA_VERSION}")
set(SERVER_VERSION ${VERSION})
message(STATUS "MariaDB ${VERSION}")
set(MYSQL_BASE_VERSION
"${MAJOR_VERSION}.${MINOR_VERSION}"
CACHE INTERNAL "MySQL Base version"
)
set(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
math(EXPR MYSQL_VERSION_ID "10000*${MAJOR_VERSION} + 100*${MINOR_VERSION} + ${PATCH_VERSION}")
mark_as_advanced(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION)
set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION}${EXTRA_VERSION})
endmacro()