mirror of https://github.com/encounter/SDL.git
cmake: use check_symbol_exists to check dlopen + need for dl library
This commit is contained in:
parent
4e375996d3
commit
bfecd78159
|
@ -65,6 +65,7 @@ include(CheckCCompilerFlag)
|
|||
include(CheckCXXCompilerFlag)
|
||||
include(CheckStructHasMember)
|
||||
include(CMakeDependentOption)
|
||||
include(CMakePushCheckState)
|
||||
include(FindPkgConfig)
|
||||
include(GNUInstallDirs)
|
||||
set(CMAKE_MODULE_PATH "${SDL2_SOURCE_DIR}/cmake")
|
||||
|
|
|
@ -30,28 +30,19 @@ macro(FindLibraryAndSONAME _LIB)
|
|||
endmacro()
|
||||
|
||||
macro(CheckDLOPEN)
|
||||
check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN)
|
||||
if(NOT HAVE_DLOPEN)
|
||||
check_library_exists(dl dlopen "" DLOPEN_LIB)
|
||||
if(DLOPEN_LIB)
|
||||
cmake_push_check_state(RESET)
|
||||
check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBC)
|
||||
if(NOT HAVE_DLOPEN_IN_LIBC)
|
||||
set(CMAKE_REQUIRED_LIBRARIES dl)
|
||||
check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBDL)
|
||||
if(HAVE_DLOPEN_IN_LIBDL)
|
||||
list(APPEND EXTRA_LIBS dl)
|
||||
set(_DLLIB dl)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_DLOPEN_IN_LIBC OR HAVE_DLOPEN_IN_LIBDL)
|
||||
set(HAVE_DLOPEN TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_DLOPEN)
|
||||
if(_DLLIB)
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${_DLLIB})
|
||||
endif()
|
||||
check_c_source_compiles("
|
||||
#include <dlfcn.h>
|
||||
int main(int argc, char **argv) {
|
||||
void *handle = dlopen(\"\", RTLD_NOW);
|
||||
const char *loaderror = (char *) dlerror();
|
||||
return 0;
|
||||
}" HAVE_DLOPEN)
|
||||
set(CMAKE_REQUIRED_LIBRARIES)
|
||||
endif()
|
||||
cmake_pop_check_state()
|
||||
endmacro()
|
||||
|
||||
macro(CheckO_CLOEXEC)
|
||||
|
|
Loading…
Reference in New Issue