diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index 6a693cedcd36d2591045a1b64d46b9512c0465aa..a7d3bbad8193b979fdfc51075241eb4de8bdcbc6 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -1307,6 +1307,25 @@ ProItem::ProItemReturn ProFileEvaluator::Private::visitProFile(ProFile *pro) evaluateFileInto(m_option->cachefile, &m_option->base_valuemap, &m_option->base_functions); } + m_option->qmakespec_name = IoUtils::fileName(m_option->qmakespec).toString(); + if (m_option->qmakespec_name == QLatin1String("default")) { +#ifdef Q_OS_UNIX + char buffer[1024]; + int l = ::readlink(m_option->qmakespec.toLatin1().constData(), buffer, 1024); + if (l != -1) + m_option->qmakespec_name = + IoUtils::fileName(QString::fromLatin1(buffer, l)).toString(); +#else + // We can't resolve symlinks as they do on Unix, so configure.exe puts + // the source of the qmake.conf at the end of the default/qmake.conf in + // the QMAKESPEC_ORG variable. + const QStringList &spec_org = + m_option->base_valuemap.value(QLatin1String("QMAKESPEC_ORIGINAL")); + if (!spec_org.isEmpty()) + m_option->qmakespec_name = + IoUtils::fileName(spec_org.first()).toString(); +#endif + } } evaluateFeatureFile(QLatin1String("default_pre.prf"), @@ -1819,7 +1838,7 @@ bool ProFileEvaluator::Private::isActiveConfig(const QString &config, bool regex if (regex && (config.contains(QLatin1Char('*')) || config.contains(QLatin1Char('?')))) { QRegExp re(config, Qt::CaseSensitive, QRegExp::Wildcard); - if (re.exactMatch(m_option->qmakespec)) + if (re.exactMatch(m_option->qmakespec_name)) return true; // CONFIG variable @@ -1829,7 +1848,7 @@ bool ProFileEvaluator::Private::isActiveConfig(const QString &config, bool regex } } else { // mkspecs - if (m_option->qmakespec == config) + if (m_option->qmakespec_name == config) return true; // CONFIG variable diff --git a/src/shared/proparser/profileevaluator.h b/src/shared/proparser/profileevaluator.h index eb3b2761c1e4e00ce3ddbd72d6040ef285791702..8a42975b64448958c1312b4bd1756daf48504568 100644 --- a/src/shared/proparser/profileevaluator.h +++ b/src/shared/proparser/profileevaluator.h @@ -161,6 +161,7 @@ struct ProFileOption QHash<QString, QStringList> base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf ProFileEvaluator::FunctionDefs base_functions; QStringList feature_roots; + QString qmakespec_name; }; QT_END_NAMESPACE