class DllDirectoryFileEntryFunction {
public:
explicit DllDirectoryFileEntryFunction(bool debug, const QString &prefix = QLatin1String("*")) :
- m_nameFilter(QStringList(prefix + (debug ? QStringLiteral("d.dll") : QStringLiteral(".dll")))),
+ m_nameFilter(DllDirectoryFileEntryFunction::nameFilter(debug, prefix)),
m_dllDebug(debug) {}
QStringList operator()(const QDir &dir) const
}
private:
+ static QStringList nameFilter(bool debug, const QString &prefix)
+ {
+ QString result = prefix;
+ if (debug)
+ result += QLatin1Char('d');
+ result += QLatin1String(windowsSharedLibrarySuffix);
+ return QStringList(result);
+ }
+
const NameFilterFileEntryFunction m_nameFilter;
const bool m_dllDebug;
};
} else {
filter = QLatin1String("*");
}
- const QStringList plugins = platform == Unix ?
- NameFilterFileEntryFunction(QStringList(filter + QStringLiteral(".so")))(subDir) :
- DllDirectoryFileEntryFunction(debug, filter)(subDir);
+ const QStringList plugins = (platform & WindowsBased) ?
+ DllDirectoryFileEntryFunction(debug, filter)(subDir) :
+ NameFilterFileEntryFunction(QStringList(filter + sharedLibrarySuffix(platform)))(subDir);
foreach (const QString &plugin, plugins) {
const QString pluginPath = subDir.absoluteFilePath(plugin);
if (isPlatformPlugin)
result += QLatin1String(name);
if (debug)
result += QLatin1Char('d');
- result += QStringLiteral(".dll");
} else if (platform & UnixBased) {
result += QStringLiteral("lib");
result += QLatin1String(name);
- result += QStringLiteral(".so");
}
+ result += sharedLibrarySuffix(platform);
return result;
}
const QString icuVersion = icuLibs.front().mid(index, numberExpression.matchedLength());
if (optVerboseLevel > 1)
std::printf("Adding ICU version %s\n", qPrintable(icuVersion));
- icuLibs.push_back(QStringLiteral("icudt") + icuVersion + QStringLiteral(".dll"));
+ icuLibs.push_back(QStringLiteral("icudt") + icuVersion + QLatin1String(windowsSharedLibrarySuffix));
}
foreach (const QString &icuLib, icuLibs) {
const QString icuPath = findInPath(icuLib);
inline QString normalizeFileName(const QString &name) { return name; }
#endif // !Q_OS_WIN
+static const char windowsSharedLibrarySuffix[] = ".dll";
+static const char unixSharedLibrarySuffix[] = ".so";
+
+inline QString sharedLibrarySuffix(Platform platform) { return QLatin1String((platform & WindowsBased) ? windowsSharedLibrarySuffix : unixSharedLibrarySuffix); }
+
bool createSymbolicLink(const QFileInfo &source, const QString &target, QString *errorMessage);
bool createDirectory(const QString &directory, QString *errorMessage);
QString findInPath(const QString &file);