From e9628fbd391972d4ffe5882d283d512df7fa705c Mon Sep 17 00:00:00 2001 From: Oleksandr Tymoshenko Date: Mon, 16 May 2016 23:24:36 -0700 Subject: [PATCH] Fix dynamic librariy support detection for platforms without libdl Some platforms (e.g. FreeBSD) do not have libdl, but dlopen and related functions are part of libc. So first check for dlopen in libc, and only if that fails, look for it in libdl. Task-number: QTBUG-52951 Change-Id: I65a8ed18fce157da32f4e1ffeba30d7513385a8f Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- config.tests/unix/{libdl/libdl.cpp => dlopen/dlopen.cpp} | 0 config.tests/unix/dlopen/dlopen.pro | 2 ++ config.tests/unix/libdl/libdl.pro | 5 ++--- configure | 8 ++++++-- 4 files changed, 10 insertions(+), 5 deletions(-) rename config.tests/unix/{libdl/libdl.cpp => dlopen/dlopen.cpp} (100%) create mode 100644 config.tests/unix/dlopen/dlopen.pro diff --git a/config.tests/unix/libdl/libdl.cpp b/config.tests/unix/dlopen/dlopen.cpp similarity index 100% rename from config.tests/unix/libdl/libdl.cpp rename to config.tests/unix/dlopen/dlopen.cpp diff --git a/config.tests/unix/dlopen/dlopen.pro b/config.tests/unix/dlopen/dlopen.pro new file mode 100644 index 00000000000..1d343143325 --- /dev/null +++ b/config.tests/unix/dlopen/dlopen.pro @@ -0,0 +1,2 @@ +SOURCES = $$PWD/dlopen.cpp +CONFIG -= qt dylib diff --git a/config.tests/unix/libdl/libdl.pro b/config.tests/unix/libdl/libdl.pro index 8ed5231a8f3..4016395d35d 100644 --- a/config.tests/unix/libdl/libdl.pro +++ b/config.tests/unix/libdl/libdl.pro @@ -1,3 +1,2 @@ -SOURCES = libdl.cpp -CONFIG -= qt dylib -!qnx: LIBS += -ldl +include(../dlopen/dlopen.pro) +LIBS += -ldl diff --git a/configure b/configure index 7c65fbd8b51..109c0bbbac0 100755 --- a/configure +++ b/configure @@ -4743,9 +4743,13 @@ if [ "$CFG_LIBPNG" = "auto" ]; then fi # detect dl -if ! compileTest unix/libdl "libdl"; then - QMakeVar add DEFINES QT_NO_DYNAMIC_LIBRARY +if compileTest unix/dlopen "dlopen"; then QMAKE_CONFIG="$QMAKE_CONFIG no-libdl" +else + if ! compileTest unix/libdl "libdl"; then + QMAKE_CONFIG="$QMAKE_CONFIG no-libdl" + QMakeVar add DEFINES QT_NO_DYNAMIC_LIBRARY + fi fi if [ "$CFG_EGLFS" = "yes" ]; then