1
0
mirror of https://git.tukaani.org/xz.git synced 2025-02-17 14:08:12 +00:00

CMake: Disable symbol versioning on non-glibc Linux.

This better matches what configure.ac does. For example, musl has
only basic symbol versioning support:

https://wiki.musl-libc.org/functional-differences-from-glibc.html#Symbol_versioning

configure.ac tries to enable symbol versioning only with glibc
so now CMake does the same.

(cherry picked from commit 2ad7fad67080e88fa7fc191f9d613d8b7add9c62)
(cherry picked from commit 78a015e753d40d604952d6c1e4428c5f440ea6b9)
This commit is contained in:
Lasse Collin 2024-03-13 21:17:10 +02:00
parent 706134d965
commit 13a0a0fc8f

View File

@ -271,8 +271,26 @@ if(NOT WIN32)
# This includes a few extra compatibility symbols for RHEL/CentOS 7 # This includes a few extra compatibility symbols for RHEL/CentOS 7
# which are pointless on non-glibc non-Linux systems. # which are pointless on non-glibc non-Linux systems.
# #
# FIXME? Avoid symvers on Linux with non-glibc like musl? # Avoid symvers on Linux with non-glibc like musl and uClibc.
set(SYMBOL_VERSIONING_DEFAULT "linux") # In Autoconf it's enough to check that $host_os equals linux-gnu
# instead of, for example, linux-musl. CMake doesn't provide such
# a method.
#
# This check is here for now since it's not strictly required
# by anything else.
check_c_source_compiles(
"#include <features.h>
#if defined(__GLIBC__) && !defined(__UCLIBC__)
int main(void) { return 0; }
#else
compile error
#endif
"
IS_LINUX_WITH_GLIBC)
if(IS_LINUX_WITH_GLIBC)
set(SYMBOL_VERSIONING_DEFAULT "linux")
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(SYMBOL_VERSIONING_DEFAULT "generic") set(SYMBOL_VERSIONING_DEFAULT "generic")