From c378e16e57e8ce2255116e7fdb5436524cccb8c7 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 9 Sep 2011 18:41:52 +0200 Subject: find qt.conf more reliably a qmake invoked with a relative path would not find qt.conf, because it already changed CWD, which would confuse our copy of QCoreApplication::applicationFilePath() (see also QTBUG-21381). we already have the absolute path to the qmake executable in Option::qmake_abslocation, so just use it. --- qmake/option.cpp | 59 +++----------------------------------------------------- 1 file changed, 3 insertions(+), 56 deletions(-) diff --git a/qmake/option.cpp b/qmake/option.cpp index 31372ab..c3e89de 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -750,64 +750,11 @@ qmakeAddCacheClear(qmakeCacheClearFunc func, void **data) cache_items.append(new QMakeCacheClearItem(func, data)); } -#ifdef Q_OS_WIN -# include - -QT_USE_NAMESPACE -#endif - QString qmake_libraryInfoFile() { - QString ret; -#if defined( Q_OS_WIN ) - wchar_t module_name[MAX_PATH]; - GetModuleFileName(0, module_name, MAX_PATH); - QFileInfo filePath = QString::fromWCharArray(module_name); - ret = filePath.filePath(); -#else - QString argv0 = QFile::decodeName(QByteArray(Option::application_argv0)); - QString absPath; - - if (!argv0.isEmpty() && argv0.at(0) == QLatin1Char('/')) { - /* - If argv0 starts with a slash, it is already an absolute - file path. - */ - absPath = argv0; - } else if (argv0.contains(QLatin1Char('/'))) { - /* - If argv0 contains one or more slashes, it is a file path - relative to the current directory. - */ - absPath = QDir::current().absoluteFilePath(argv0); - } else { - /* - Otherwise, the file path has to be determined using the - PATH environment variable. - */ - QByteArray pEnv = qgetenv("PATH"); - QDir currentDir = QDir::current(); - QStringList paths = QString::fromLocal8Bit(pEnv.constData()).split(QLatin1String(":")); - for (QStringList::const_iterator p = paths.constBegin(); p != paths.constEnd(); ++p) { - if ((*p).isEmpty()) - continue; - QString candidate = currentDir.absoluteFilePath(*p + QLatin1Char('/') + argv0); - QFileInfo candidate_fi(candidate); - if (candidate_fi.exists() && !candidate_fi.isDir()) { - absPath = candidate; - break; - } - } - } - - absPath = QDir::cleanPath(absPath); - - QFileInfo fi(absPath); - ret = fi.exists() ? fi.canonicalFilePath() : QString(); -#endif - if(!ret.isEmpty()) - ret = QDir(QFileInfo(ret).absolutePath()).filePath("qt.conf"); - return ret; + if(!Option::qmake_abslocation.isEmpty()) + return QDir(QFileInfo(Option::qmake_abslocation).absolutePath()).filePath("qt.conf"); + return QString(); } QT_END_NAMESPACE -- cgit v0.12