Skip to content

Commit fcc2459

Browse files
committed
QDir::listSeparator() and make windeployqt work in linux-mingw.
1 parent 147093e commit fcc2459

File tree

9 files changed

+17
-27
lines changed

9 files changed

+17
-27
lines changed

qmake/generators/mac/pbuilder_pbx.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ ProjectBuilderMakefileGenerator::findProgram(const ProString &prog)
18751875
{
18761876
QString ret = prog.toQString();
18771877
if(QDir::isRelativePath(ret)) {
1878-
QStringList paths = QString(qgetenv("PATH")).split(':');
1878+
QStringList paths = QString(qgetenv("PATH")).split(QDir::listSeparator());
18791879
for(int i = 0; i < paths.size(); ++i) {
18801880
QString path = paths.at(i) + "/" + prog;
18811881
if(exists(path)) {

qmake/library/ioutils.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,9 @@ QString IoUtils::binaryAbsLocation(const QString &argv0)
6363
} else { // in the PATH
6464
QByteArray pEnv = qgetenv("PATH");
6565
QDir currentDir = QDir::current();
66+
QStringList paths = QString::fromLocal8Bit(pEnv).split(QDir::listSeparator());
6667
#ifdef Q_OS_WIN
67-
QStringList paths = QString::fromLocal8Bit(pEnv).split(QLatin1String(";"));
6868
paths.prepend(QLatin1String("."));
69-
#else
70-
QStringList paths = QString::fromLocal8Bit(pEnv).split(QLatin1String(":"));
7169
#endif
7270
for (QStringList::const_iterator p = paths.constBegin(); p != paths.constEnd(); ++p) {
7371
if ((*p).isEmpty())

qmake/library/qmakeevaluator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ static ProString msvcArchitecture(const QString &vcInstallDir, const QString &pa
10231023
QString vcBinDir = vcInstallDir;
10241024
if (vcBinDir.endsWith(QLatin1Char('\\')))
10251025
vcBinDir.chop(1);
1026-
const auto dirs = pathVar.split(QLatin1Char(';'), Qt::SkipEmptyParts);
1026+
const auto dirs = pathVar.split(QDir::listSeparator(), Qt::SkipEmptyParts);
10271027
for (const QString &dir : dirs) {
10281028
if (!dir.startsWith(vcBinDir, Qt::CaseInsensitive))
10291029
continue;

qmake/library/qmakeglobals.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,8 @@ QMakeGlobals::QMakeGlobals()
7878
#ifdef PROEVALUATOR_DEBUG
7979
debugLevel = 0;
8080
#endif
81-
#ifdef Q_OS_WIN
82-
dirlist_sep = QLatin1Char(';');
83-
dir_sep = QLatin1Char('\\');
84-
#else
85-
dirlist_sep = QLatin1Char(':');
86-
dir_sep = QLatin1Char('/');
87-
#endif
81+
dirlist_sep = QDir::listSeparator();
82+
dir_sep = QDir::separator();
8883
}
8984

9085
QMakeGlobals::~QMakeGlobals()

src/corelib/plugin/qsystemlibrary.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,16 @@ HINSTANCE QSystemLibrary::load(const wchar_t *libraryName, bool onlySystemDirect
101101

102102
if (!onlySystemDirectory) {
103103
const QString PATH(QLatin1String(qgetenv("PATH").constData()));
104-
searchOrder << PATH.split(QLatin1Char(';'), Qt::SkipEmptyParts);
104+
searchOrder << PATH.split(QDir::listSeparator(), Qt::SkipEmptyParts);
105105
}
106106
QString fileName = QString::fromWCharArray(libraryName);
107107
fileName.append(QLatin1String(".dll"));
108108

109109
// Start looking in the order specified
110110
for (int i = 0; i < searchOrder.count(); ++i) {
111111
QString fullPathAttempt = searchOrder.at(i);
112-
if (!fullPathAttempt.endsWith(QLatin1Char('\\'))) {
113-
fullPathAttempt.append(QLatin1Char('\\'));
112+
if (!fullPathAttempt.endsWith(QDir::separator())) {
113+
fullPathAttempt.append(QDir::separator());
114114
}
115115
fullPathAttempt.append(fileName);
116116
HINSTANCE inst = ::LoadLibrary(reinterpret_cast<const wchar_t *>(fullPathAttempt.utf16()));

src/tools/androiddeployqt/main.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2499,13 +2499,7 @@ bool createAndroidProject(const Options &options)
24992499
QString findInPath(const QString &fileName)
25002500
{
25012501
const QString path = QString::fromLocal8Bit(qgetenv("PATH"));
2502-
#if defined(Q_OS_WIN32)
2503-
QLatin1Char separator(';');
2504-
#else
2505-
QLatin1Char separator(':');
2506-
#endif
2507-
2508-
const QStringList paths = path.split(separator);
2502+
const QStringList paths = path.split(QDir::listSeparator());
25092503
for (const QString &path : paths) {
25102504
QFileInfo fileInfo(path + QLatin1Char('/') + fileName);
25112505
if (fileInfo.exists() && fileInfo.isFile() && fileInfo.isExecutable())

src/tools/windeployqt/main.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,15 @@ static Platform platformFromMkSpec(const QString &xSpec)
202202
{
203203
if (xSpec == QLatin1String("linux-g++"))
204204
return Unix;
205-
if (xSpec.startsWith(QLatin1String("win32-"))) {
205+
if (xSpec.startsWith(QLatin1String("win32-")) || xSpec.startsWith(QLatin1String("mingw-"))) {
206206
if (xSpec.contains(QLatin1String("clang-g++")))
207207
return WindowsDesktopClangMinGW;
208208
if (xSpec.contains(QLatin1String("clang-msvc++")))
209209
return WindowsDesktopClangMsvc;
210-
return xSpec.contains(QLatin1String("g++")) ? WindowsDesktopMinGW : WindowsDesktopMsvc;
210+
if (xSpec.contains(QLatin1String("g++"))
211+
return WindowsDesktopMinGW;
212+
if (xSpec.contains(QLatin1String("msvc++")))
213+
return WindowsDesktopMsvc;
211214
}
212215
return UnknownPlatform;
213216
}
@@ -1648,7 +1651,7 @@ int main(int argc, char **argv)
16481651
const QByteArray qtBinPath = QFile::encodeName(QDir::toNativeSeparators(QCoreApplication::applicationDirPath()));
16491652
QByteArray path = qgetenv("PATH");
16501653
if (!path.contains(qtBinPath)) { // QTBUG-39177, ensure Qt is in the path so that qt.conf is taken into account.
1651-
path += ';';
1654+
path += QDir::listSeparator();
16521655
path += qtBinPath;
16531656
qputenv("PATH", path);
16541657
}

src/tools/windeployqt/utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ QString normalizeFileName(const QString &name)
172172
// Find a tool binary in the Windows SDK 8
173173
QString findSdkTool(const QString &tool)
174174
{
175-
QStringList paths = QString::fromLocal8Bit(qgetenv("PATH")).split(QLatin1Char(';'));
175+
QStringList paths = QString::fromLocal8Bit(qgetenv("PATH")).split(QDir::listSeparator());
176176
const QByteArray sdkDir = qgetenv("WindowsSdkDir");
177177
if (!sdkDir.isEmpty())
178178
paths.prepend(QDir::cleanPath(QString::fromLocal8Bit(sdkDir)) + QLatin1String("/Tools/x64"));

tests/auto/tools/windeployqt/tst_windeployqt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ void tst_windeployqt::deploy()
149149
const QString qtBinDir = QDir::toNativeSeparators(QLibraryInfo::path(QLibraryInfo::BinariesPath));
150150
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
151151
const QString pathKey = QLatin1String("PATH");
152-
const QChar pathSeparator(QLatin1Char(';')); // ### fixme: Qt 5.6: QDir::listSeparator()
152+
const QChar pathSeparator(QDir::listSeparator());
153153
const QString origPath = env.value(pathKey);
154154
QString newPath;
155155
const QStringList pathElements = origPath.split(pathSeparator, Qt::SkipEmptyParts);

0 commit comments

Comments
 (0)