summaryrefslogtreecommitdiff
blob: 395cacbfee50b7e28cbda639d7fbbbba3592a5a0 (plain)
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