From 635ab930f6185d1ec3e4d99109e2edf0533b0d00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Wed, 23 Jun 2021 21:03:15 +0200 Subject: [PATCH] testDynamicLoader: Use LIBDL_SO macro if defined. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Starting with glibc v2.34 there is no external version of libdl.so anymore. It has been merged into the glibc libc.so. Assuming libdl.so will be present will break the test, thus the LIBDL_SO macro should be used. If the macro is not defined on the system, we ensure it will be defined using the previously hardcoded value. Signed-off-by: Björn Esser --- cmake-3.20.4/Source/kwsys/testDynamicLoader.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) Index: cmake-3.21.0-rc1/Source/kwsys/testDynamicLoader.cxx =================================================================== --- cmake-3.21.0-rc1.orig/Source/kwsys/testDynamicLoader.cxx +++ cmake-3.21.0-rc1/Source/kwsys/testDynamicLoader.cxx @@ -8,6 +8,25 @@ # include /* disable_debugger() API. */ #endif +// Needed for __GLIBC__ test macro. +#ifdef __linux__ +# include +#endif + +// Will define LIBDL_SO macro on systems with glibc. +#ifdef __GLIBC__ +# include +// Define to LIBC_SO, if not defined by above header. +# ifndef LIBDL_SO +# define LIBDL_SO LIBC_SO +# endif +#endif + +// Define the LIBDL_SO macro, if not defined above. +#ifndef LIBDL_SO +# define LIBDL_SO "libdl.so" +#endif + // Work-around CMake dependency scanning limitation. This must // duplicate the above list of headers. #if 0 @@ -107,8 +126,8 @@ int testDynamicLoader(int argc, char* ar // This one is actually fun to test, since dlopen is by default // loaded...wonder why :) res += TestDynamicLoader("foobar.lib", "dlopen", 0, 1, 0); - res += TestDynamicLoader("libdl.so", "dlopen", 1, 1, 1); - res += TestDynamicLoader("libdl.so", "TestDynamicLoader", 1, 0, 1); + res += TestDynamicLoader(LIBDL_SO, "dlopen", 1, 1, 1); + res += TestDynamicLoader(LIBDL_SO, "TestDynamicLoader", 1, 0, 1); #endif // Now try on the generated library std::string libname = GetLibName(KWSYS_NAMESPACE_STRING "TestDynload");