Last active
July 11, 2025 00:16
-
-
Save likema/f5c04dad837d2f5068ae7a8860c180e7 to your computer and use it in GitHub Desktop.
CMake macro to detect glibc version by filename.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# - Check glibc version | |
# CHECK_GLIBC_VERSION() | |
# | |
# Once done this will define | |
# | |
# GLIBC_VERSION - glibc version | |
# | |
MACRO (CHECK_GLIBC_VERSION) | |
EXECUTE_PROCESS ( | |
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.so.6 | |
OUTPUT_VARIABLE GLIBC | |
OUTPUT_STRIP_TRAILING_WHITESPACE) | |
GET_FILENAME_COMPONENT (GLIBC ${GLIBC} REALPATH) | |
GET_FILENAME_COMPONENT (GLIBC_VERSION ${GLIBC} NAME) | |
STRING (REPLACE "libc-" "" GLIBC_VERSION ${GLIBC_VERSION}) | |
STRING (REPLACE ".so" "" GLIBC_VERSION ${GLIBC_VERSION}) | |
IF (NOT GLIBC_VERSION MATCHES "^[0-9.]+$") | |
MESSAGE (FATAL_ERROR "Unknown glibc version: ${GLIBC_VERSION}") | |
ENDIF (NOT GLIBC_VERSION MATCHES "^[0-9.]+$") | |
ENDMACRO (CHECK_GLIBC_VERSION) |
MACRO (CHECK_GLIBC_VERSION)
message("Checking GLIBC Version.")
EXECUTE_PROCESS (
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.so.6
OUTPUT_VARIABLE GLIBC
OUTPUT_STRIP_TRAILING_WHITESPACE)
GET_FILENAME_COMPONENT (GLIBC ${GLIBC} REALPATH)
EXECUTE_PROCESS (
COMMAND ${GLIBC}
OUTPUT_VARIABLE GLIBC_OUTPUT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING (REGEX MATCH "release version ([0-9]+\\.[0-9]+)" GLIBC_VERSION ${GLIBC_OUTPUT})
STRING (REPLACE "release version " "" GLIBC_VERSION ${GLIBC_VERSION})
IF (NOT GLIBC_VERSION MATCHES "^[0-9.]+$")
MESSAGE (FATAL_ERROR "Unknown glibc version: ${GLIBC_VERSION}")
ENDIF (NOT GLIBC_VERSION MATCHES "^[0-9.]+$")
ENDMACRO (CHECK_GLIBC_VERSION)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Even added this line, it seems that only the major version of
glibc
can be extracted