Eliminate QT_NO_DYNAMIC_LIBRARY
The library feature already covers this. As library depends on the dlopen compile check, we can assume dlopen to be available, also on vxworks. Change-Id: Idcdb07ab4688c6158651d9a5ad5e2ba126bd7d9e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
parent
0f730ef7b6
commit
1aaf45e106
@ -211,8 +211,7 @@
|
|||||||
},
|
},
|
||||||
"dlopen": {
|
"dlopen": {
|
||||||
"label": "dlopen()",
|
"label": "dlopen()",
|
||||||
"condition": "tests.dlopen || libs.libdl",
|
"condition": "tests.dlopen || libs.libdl"
|
||||||
"output": [ { "type": "define", "negative": true, "name": "QT_NO_DYNAMIC_LIBRARY" } ]
|
|
||||||
},
|
},
|
||||||
"libdl": {
|
"libdl": {
|
||||||
"label": "dlopen() in libdl",
|
"label": "dlopen() in libdl",
|
||||||
@ -456,6 +455,7 @@
|
|||||||
"label": "QLibrary",
|
"label": "QLibrary",
|
||||||
"purpose": "Provides a wrapper for dynamically loaded libraries.",
|
"purpose": "Provides a wrapper for dynamically loaded libraries.",
|
||||||
"section": "File I/O",
|
"section": "File I/O",
|
||||||
|
"condition": "config.win32 || config.hpux || (!config.nacl && features.dlopen)",
|
||||||
"output": [ "publicFeature", "feature" ]
|
"output": [ "publicFeature", "feature" ]
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
|
@ -50,13 +50,9 @@
|
|||||||
# include <private/qcore_mac_p.h>
|
# include <private/qcore_mac_p.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(Q_OS_VXWORKS) && !defined(VXWORKS_RTP)) || defined (Q_OS_NACL)
|
|
||||||
#define QT_NO_DYNAMIC_LIBRARY
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#if !defined(QT_HPUX_LD) && !defined(QT_NO_DYNAMIC_LIBRARY)
|
#if !defined(QT_HPUX_LD)
|
||||||
QT_BEGIN_INCLUDE_NAMESPACE
|
QT_BEGIN_INCLUDE_NAMESPACE
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
QT_END_INCLUDE_NAMESPACE
|
QT_END_INCLUDE_NAMESPACE
|
||||||
@ -64,9 +60,7 @@ QT_END_INCLUDE_NAMESPACE
|
|||||||
|
|
||||||
static QString qdlerror()
|
static QString qdlerror()
|
||||||
{
|
{
|
||||||
#if defined(QT_NO_DYNAMIC_LIBRARY)
|
#if !defined(QT_HPUX_LD)
|
||||||
const char *err = "This platform does not support dynamic libraries.";
|
|
||||||
#elif !defined(QT_HPUX_LD)
|
|
||||||
const char *err = dlerror();
|
const char *err = dlerror();
|
||||||
#else
|
#else
|
||||||
const char *err = strerror(errno);
|
const char *err = strerror(errno);
|
||||||
@ -131,7 +125,6 @@ QStringList QLibraryPrivate::prefixes_sys()
|
|||||||
bool QLibraryPrivate::load_sys()
|
bool QLibraryPrivate::load_sys()
|
||||||
{
|
{
|
||||||
QString attempt;
|
QString attempt;
|
||||||
#if !defined(QT_NO_DYNAMIC_LIBRARY)
|
|
||||||
QFileSystemEntry fsEntry(fileName);
|
QFileSystemEntry fsEntry(fileName);
|
||||||
|
|
||||||
QString path = fsEntry.path();
|
QString path = fsEntry.path();
|
||||||
@ -250,7 +243,6 @@ bool QLibraryPrivate::load_sys()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif // QT_NO_DYNAMIC_LIBRARY
|
|
||||||
if (!pHnd) {
|
if (!pHnd) {
|
||||||
errorString = QLibrary::tr("Cannot load library %1: %2").arg(fileName).arg(qdlerror());
|
errorString = QLibrary::tr("Cannot load library %1: %2").arg(fileName).arg(qdlerror());
|
||||||
}
|
}
|
||||||
@ -263,29 +255,27 @@ bool QLibraryPrivate::load_sys()
|
|||||||
|
|
||||||
bool QLibraryPrivate::unload_sys()
|
bool QLibraryPrivate::unload_sys()
|
||||||
{
|
{
|
||||||
#if !defined(QT_NO_DYNAMIC_LIBRARY)
|
#if defined(QT_HPUX_LD)
|
||||||
# if defined(QT_HPUX_LD)
|
|
||||||
if (shl_unload((shl_t)pHnd)) {
|
if (shl_unload((shl_t)pHnd)) {
|
||||||
# else
|
#else
|
||||||
if (dlclose(pHnd)) {
|
if (dlclose(pHnd)) {
|
||||||
# endif
|
#endif
|
||||||
# if defined (Q_OS_QNX) // Workaround until fixed in QNX; fixes crash in
|
#if defined (Q_OS_QNX) // Workaround until fixed in QNX; fixes crash in
|
||||||
char *error = dlerror(); // QtDeclarative auto test "qqmlenginecleanup" for instance
|
char *error = dlerror(); // QtDeclarative auto test "qqmlenginecleanup" for instance
|
||||||
if (!qstrcmp(error, "Shared objects still referenced")) // On QNX that's only "informative"
|
if (!qstrcmp(error, "Shared objects still referenced")) // On QNX that's only "informative"
|
||||||
return true;
|
return true;
|
||||||
errorString = QLibrary::tr("Cannot unload library %1: %2").arg(fileName)
|
errorString = QLibrary::tr("Cannot unload library %1: %2").arg(fileName)
|
||||||
.arg(QLatin1String(error));
|
.arg(QLatin1String(error));
|
||||||
# else
|
#else
|
||||||
errorString = QLibrary::tr("Cannot unload library %1: %2").arg(fileName).arg(qdlerror());
|
errorString = QLibrary::tr("Cannot unload library %1: %2").arg(fileName).arg(qdlerror());
|
||||||
# endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
errorString.clear();
|
errorString.clear();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_LINUX) && !defined(QT_NO_DYNAMIC_LIBRARY)
|
#if defined(Q_OS_LINUX)
|
||||||
Q_CORE_EXPORT QFunctionPointer qt_linux_find_symbol_sys(const char *symbol)
|
Q_CORE_EXPORT QFunctionPointer qt_linux_find_symbol_sys(const char *symbol)
|
||||||
{
|
{
|
||||||
return QFunctionPointer(dlsym(RTLD_DEFAULT, symbol));
|
return QFunctionPointer(dlsym(RTLD_DEFAULT, symbol));
|
||||||
@ -305,8 +295,6 @@ QFunctionPointer QLibraryPrivate::resolve_sys(const char* symbol)
|
|||||||
QFunctionPointer address = 0;
|
QFunctionPointer address = 0;
|
||||||
if (shl_findsym((shl_t*)&pHnd, symbol, TYPE_UNDEFINED, &address) < 0)
|
if (shl_findsym((shl_t*)&pHnd, symbol, TYPE_UNDEFINED, &address) < 0)
|
||||||
address = 0;
|
address = 0;
|
||||||
#elif defined (QT_NO_DYNAMIC_LIBRARY)
|
|
||||||
QFunctionPointer address = 0;
|
|
||||||
#else
|
#else
|
||||||
QFunctionPointer address = QFunctionPointer(dlsym(pHnd, symbol));
|
QFunctionPointer address = QFunctionPointer(dlsym(pHnd, symbol));
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user