summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-02-10 17:39:47 +0100
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-02-27 12:20:44 +0000
commit0d7ed8f5f3b8a308c495c71c7427b41157d769b1 (patch)
tree2b845dac80393aca91ae685798e796ec9da27b4a /src
parent1b81f931839229fbc2e1769d2d3ea62a108727c4 (diff)
streamline libdl detection and linking
instead of having a library and a test, use a library with two sources, the first being empty (i.e., just libc). this allows us doing away with the "libdl" feature, and using just the "dlopen" one. subsequently, replace all LIBS+=$$QMAKE_LIBS_DYNLOAD with QMAKE_USE+=libdl. the definitions of QMAKE_LIBS_DYNLOAD remain in the qmakespecs for backwards compat only. n.b.: the only specs where it is not empty or "-ldl" (i.e., what we support now) are the hpux ones, where the library is called 'dld'. technically, the "library" feature should depend on '!unix || dlopen', but that's for a later patch. Change-Id: Ib8546affc4b7bc757f1a76729573ddd00e152176 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/configure.json17
-rw-r--r--src/corelib/plugin/plugin.pri2
-rw-r--r--src/platformsupport/eglconvenience/eglconvenience.pro2
-rw-r--r--src/plugins/platforms/eglfs/eglfsdeviceintegration.pro2
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp4
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro2
6 files changed, 9 insertions, 20 deletions
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 76dfed3128..c13ad25c15 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -74,10 +74,10 @@
]
},
"libdl": {
- "label": "dlopen() in libdl",
- "export": "",
+ "label": "dlopen()",
"test": "unix/dlopen",
"sources": [
+ "",
"-ldl"
]
},
@@ -131,11 +131,6 @@
"type": "compile",
"test": "unix/cloexec"
},
- "dlopen": {
- "label": "dlopen() in libc",
- "type": "compile",
- "test": "unix/dlopen"
- },
"eventfd": {
"label": "eventfd",
"type": "compile",
@@ -211,12 +206,8 @@
},
"dlopen": {
"label": "dlopen()",
- "condition": "tests.dlopen || libs.libdl"
- },
- "libdl": {
- "label": "dlopen() in libdl",
- "condition": "!tests.dlopen && libs.libdl",
- "output": [ { "type": "privateConfig", "negative": true } ]
+ "condition": "config.unix && libs.libdl",
+ "output": [ "privateFeature" ]
},
"doubleconversion": {
"label": "DoubleConversion",
diff --git a/src/corelib/plugin/plugin.pri b/src/corelib/plugin/plugin.pri
index 473480eb55..bb3843cc36 100644
--- a/src/corelib/plugin/plugin.pri
+++ b/src/corelib/plugin/plugin.pri
@@ -35,4 +35,4 @@ integrity {
SOURCES += plugin/qlibrary_unix.cpp
}
-!no-libdl: LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
+qtConfig(dlopen): QMAKE_USE_PRIVATE += libdl
diff --git a/src/platformsupport/eglconvenience/eglconvenience.pro b/src/platformsupport/eglconvenience/eglconvenience.pro
index d364a42b3b..4301d63574 100644
--- a/src/platformsupport/eglconvenience/eglconvenience.pro
+++ b/src/platformsupport/eglconvenience/eglconvenience.pro
@@ -38,6 +38,6 @@ qtConfig(xlib) {
}
CONFIG += egl
-LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
+qtConfig(dlopen): QMAKE_USE += libdl
load(qt_module)
diff --git a/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro b/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro
index 35af3615bd..2593df937b 100644
--- a/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro
+++ b/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro
@@ -17,8 +17,6 @@ QT += \
qtHaveModule(input_support-private): \
QT += input_support-private
-LIBS += $$QMAKE_LIBS_DYNLOAD
-
# Avoid X11 header collision, use generic EGL native types
DEFINES += QT_EGL_NO_X11
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 1f36a1ad2a..56b2b1fd23 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -54,7 +54,7 @@
#include <QtGlxSupport/private/qglxconvenience_p.h>
#include <QtPlatformHeaders/QGLXNativeContext>
-#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
+#if !defined(QT_STATIC) && QT_CONFIG(dlopen)
#include <dlfcn.h>
#endif
@@ -564,7 +564,7 @@ QFunctionPointer QGLXContext::getProcAddress(const char *procName)
if (!glXGetProcAddressARB) {
QList<QByteArray> glxExt = QByteArray(glXGetClientString(m_display, GLX_EXTENSIONS)).split(' ');
if (glxExt.contains("GLX_ARB_get_proc_address")) {
-#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
+#if QT_CONFIG(dlopen)
void *handle = dlopen(NULL, RTLD_LAZY);
if (handle) {
glXGetProcAddressARB = (qt_glXGetProcAddressARB) dlsym(handle, "glXGetProcAddressARB");
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro
index 8aa6e1febd..215f5a3fe1 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro
@@ -12,7 +12,7 @@ qtConfig(xcb-glx) {
QMAKE_USE += xcb_glx
}
-LIBS += $$QMAKE_LIBS_DYNLOAD
+!static:qtConfig(dlopen): QMAKE_USE += libdl
HEADERS += \
qxcbglxintegration.h \