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 #include -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 +#include + #include #include #include @@ -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