Ticket #246: qmlpluginfix.diff

File qmlpluginfix.diff, 3.0 KB (added by rudi, 13 years ago)

Name translation for qml plugins

  • src/declarative/qml/qdeclarativeimport.cpp

     
    878878                         << QLatin1String("d.dll") // try a qmake-style debug build first
    879879# endif
    880880                         << QLatin1String(".dll"));
     881
    881882#elif defined(Q_OS_SYMBIAN)
    882883    return resolvePlugin(qmldirPath, qmldirPluginPath, baseName,
    883884                         QStringList()
    884885                         << QLatin1String(".dll")
    885886                         << QLatin1String(".qtplugin"));
    886 #else
    887887
    888 # if defined(Q_OS_DARWIN)
    889 
     888#elif defined(Q_OS_DARWIN)
    890889    return resolvePlugin(qmldirPath, qmldirPluginPath, baseName,
    891890                         QStringList()
    892891# ifdef QT_DEBUG
     
    899898                         << QLatin1String(".so")
    900899                         << QLatin1String(".bundle"),
    901900                         QLatin1String("lib"));
     901
     902#elif defined(Q_OS_OS2)
     903    QString newBaseName;
     904# ifdef QT_DEBUG
     905    QFile pluginLink(qmldirPath.absoluteFilePath(baseName + QLatin1Char('d')));
     906# else
     907    QFile pluginLink(qmldirPath.absoluteFilePath(baseName));
     908# endif
     909
     910    if (pluginLink.open(QIODevice::ReadOnly)) {
     911        QTextStream in(&pluginLink);
     912        newBaseName = in.readLine().trimmed();
     913        pluginLink.close();
     914    }
     915
     916    if (newBaseName.isEmpty())
     917        newBaseName = baseName;
     918
     919    return resolvePlugin(qmldirPath, qmldirPluginPath, newBaseName,
     920                         QStringList() << QLatin1String(".dll"));
     921
    902922# else  // Generic Unix
    903923    QStringList validSuffixList;
    904924
     
    922942    //  libfoo.so
    923943
    924944    return resolvePlugin(qmldirPath, qmldirPluginPath, baseName, validSuffixList, QLatin1String("lib"));
    925 # endif
    926945
    927946#endif
    928947}
  • src/imports/qimportbase.pri

     
    22TEMPLATE = lib
    33CONFIG += qt plugin
    44
    5 win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release
     5os2|win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release
    66
    77isEmpty(TARGETPATH) {
    88    error("qimportbase.pri: You must provide a TARGETPATH!")
     
    2626!isEmpty(TARGET_SHORT):TARGET_SHORT = $$qtLibraryTarget($$TARGET_SHORT)
    2727contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
    2828
     29os2:!isEmpty(TARGET_SHORT) {
     30    FOUR       = 4
     31    PLUGINNAME = $$TARGET_SHORT
     32    PLUGINLINK = $$QT_BUILD_TREE/imports/$$TARGETPATH/$$TARGET
     33
     34    createlink.target = $$PLUGINLINK
     35    createlink.commands = echo $$PLUGINNAME$$FOUR > $$PLUGINLINK
     36    createlink.depends = $$QMLDIRFILE
     37    QMAKE_EXTRA_TARGETS += createlink
     38    QMAKE_DISTCLEAN += $$PLUGINLINK
     39    PRE_TARGETDEPS += $$PLUGINLINK
     40
     41    pluginlink.path = /imports/$$TARGETPATH
     42    pluginlink.files = $$PLUGINLINK
     43    INSTALLS += pluginlink
     44}
     45
    2946include(../qt_targets.pri)
    3047
    3148wince*:LIBS += $$QMAKE_LIBS_GUI