1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
diff -purN kdelibs-4.3.80.orig/config.h.cmake kdelibs-4.3.80/config.h.cmake
--- kdelibs-4.3.80.orig/config.h.cmake 2009-10-26 05:15:52.000000000 -0400
+++ kdelibs-4.3.80/config.h.cmake 2009-12-14 16:56:15.667194286 -0500
@@ -12,6 +12,7 @@
#define kde_socklen_t socklen_t
#define KDELIBSUFF "${KDELIBSUFF}"
+#define KDE_MODULE_SUFFIX "${CMAKE_SHARED_MODULE_SUFFIX}"
/****************************/
diff -purN kdelibs-4.3.80.orig/kdecore/util/klibloader.cpp kdelibs-4.3.80/kdecore/util/klibloader.cpp
--- kdelibs-4.3.80.orig/kdecore/util/klibloader.cpp 2008-05-21 07:09:15.000000000 -0400
+++ kdelibs-4.3.80/kdecore/util/klibloader.cpp 2009-12-14 16:56:15.668194094 -0500
@@ -57,7 +57,7 @@ KLibLoader::~KLibLoader()
{
}
-extern QString makeLibName( const QString &libname );
+extern QString makeLibName( const QString &libname, const QString &type );
extern QString findLibrary(const QString &name, const KComponentData &cData);
diff -purN kdelibs-4.3.80.orig/kdecore/util/klibrary.cpp kdelibs-4.3.80/kdecore/util/klibrary.cpp
--- kdelibs-4.3.80.orig/kdecore/util/klibrary.cpp 2009-10-02 10:55:11.000000000 -0400
+++ kdelibs-4.3.80/kdecore/util/klibrary.cpp 2009-12-14 16:57:24.317056608 -0500
@@ -27,7 +27,7 @@
#include <kpluginfactory.h>
#include <kdebug.h>
-extern QString makeLibName( const QString &libname );
+extern QString makeLibName( const QString &libname, const QString &type );
extern QString findLibraryInternal(const QString &name, const KComponentData &cData);
int kLibraryDebugArea() {
diff -purN kdelibs-4.3.80.orig/kdecore/util/kpluginloader.cpp kdelibs-4.3.80/kdecore/util/kpluginloader.cpp
--- kdelibs-4.3.80.orig/kdecore/util/kpluginloader.cpp 2009-10-15 12:35:55.000000000 -0400
+++ kdelibs-4.3.80/kdecore/util/kpluginloader.cpp 2009-12-14 16:57:58.533877037 -0500
@@ -27,6 +27,8 @@
#include "klibrary.h"
#include <kdebug.h>
+#include <config.h>
+
#include <QtCore/QLibrary>
#include <QtCore/QDir>
#include <QtCore/QFileInfo>
@@ -54,25 +56,37 @@ protected:
KLibrary *lib;
};
-inline QString makeLibName( const QString &libname )
+inline QString makeLibName( const QString &libname, const QString &type )
{
#if defined(Q_OS_WIN) || defined(Q_OS_CYGWIN)
if (!libname.endsWith(".dll"))
return libname + ".dll";
return libname;
-#else
+#else // Q_OS_WIN
int pos = libname.lastIndexOf('/');
if (pos < 0)
pos = 0;
if (libname.indexOf('.', pos) < 0) {
- const char* const extList[] = { ".so", ".dylib", ".bundle", ".sl" };
+#ifdef Q_OS_MAC
+ // Libraries are always .dylib
+ if (type.compare("lib") == 0) {
+ return libname + ".dylib";
+ }
+ // Modules mostly go .bundle but we'll use CMake smartness
+ else {
+ return libname + KDE_MODULE_SUFFIX;
+ }
+#else // Q_OS_MAC
+ // Prefer the value specified by cmake for the target, fall back to standard
+ const char* const extList[] = { KDE_MODULE_SUFFIX, ".so", ".sl" };
for (uint i = 0; i < sizeof(extList) / sizeof(*extList); ++i) {
if (QLibrary::isLibrary(libname + extList[i]))
return libname + extList[i];
}
+#endif // Q_OS_MAC
}
return libname;
-#endif
+#endif // Q_OS_WIN
}
#ifdef Q_OS_WIN
@@ -81,12 +95,13 @@ extern QString fixLibPrefix(const QStrin
QString findLibraryInternal(const QString &name, const KComponentData &cData)
{
- // Convert name to a valid platform libname
- QString libname = makeLibName(name);
QFileInfo fileinfo(name);
bool hasPrefix = fileinfo.fileName().startsWith("lib");
bool kdeinit = fileinfo.fileName().startsWith("libkdeinit4_");
+ // Convert name to a valid platform libname depending on requested type.
+ QString libname = makeLibName(name, kdeinit ? "lib" : "module");
+
if (hasPrefix && !kdeinit)
kDebug(kLibraryDebugArea()) << "plugins should not have a 'lib' prefix:" << libname;
#ifdef Q_CC_MSVC
|