diff --git a/src/shared/proparser/proparser.pri b/src/shared/proparser/proparser.pri index 1f5234fe2b8..900151d75f9 100644 --- a/src/shared/proparser/proparser.pri +++ b/src/shared/proparser/proparser.pri @@ -27,3 +27,4 @@ SOURCES += \ ioutils.cpp RESOURCES += proparser.qrc +DEFINES += QMAKE_BUILTIN_PRFS diff --git a/src/shared/proparser/proparser.qrc b/src/shared/proparser/proparser.qrc index e6dde343df6..ab5a8a720d1 100644 --- a/src/shared/proparser/proparser.qrc +++ b/src/shared/proparser/proparser.qrc @@ -9,4 +9,8 @@ images/remove.png proiteminfo.xml + + spec_pre.prf + spec_post.prf + diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index cabaa7f522e..4f1053cc6d7 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -885,6 +885,8 @@ bool QMakeEvaluator::loadSpec() cool: m_option->qmakespec = QDir::cleanPath(qmakespec); + if (!evaluateFeatureFile(QLatin1String("spec_pre.prf"))) + return false; QString spec = m_option->qmakespec + QLatin1String("/qmake.conf"); if (!evaluateFileDirect(spec, QMakeHandler::EvalConfigFile, LoadProOnly)) { m_handler->configError( @@ -901,6 +903,8 @@ bool QMakeEvaluator::loadSpec() QString real_spec = orig_spec.isEmpty() ? m_option->qmakespec : orig_spec.toQString(); #endif m_option->qmakespec_name = IoUtils::fileName(real_spec).toString(); + if (!evaluateFeatureFile(QLatin1String("spec_post.prf"))) + return false; if (!m_option->cachefile.isEmpty() && !evaluateFileDirect(m_option->cachefile, QMakeHandler::EvalConfigFile, LoadProOnly)) { return false; @@ -1900,6 +1904,11 @@ bool QMakeEvaluator::evaluateFeatureFile(const QString &fileName) goto cool; } } +#ifdef QMAKE_BUILTIN_PRFS + fn.prepend(QLatin1String(":/qmake/features/")); + if (QFileInfo(fn).exists()) + goto cool; +#endif return false; cool: diff --git a/src/shared/proparser/spec_post.prf b/src/shared/proparser/spec_post.prf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/shared/proparser/spec_pre.prf b/src/shared/proparser/spec_pre.prf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/manual/proparser/testreader.pro b/tests/manual/proparser/testreader.pro index 472b0ab47de..ced4ccc265d 100644 --- a/tests/manual/proparser/testreader.pro +++ b/tests/manual/proparser/testreader.pro @@ -18,6 +18,9 @@ build_all:!build_pass { SOURCES = main.cpp qmakeglobals.cpp qmakeparser.cpp qmakeevaluator.cpp profileevaluator.cpp qmakebuiltins.cpp proitems.cpp ioutils.cpp HEADERS = qmakeglobals.h qmakeparser.h profileevaluator.h qmakeevaluator.h qmakeevaluator_p.h proitems.h ioutils.h +RESOURCES += proparser.qrc +DEFINES += QMAKE_BUILTIN_PRFS + DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII DEFINES += QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION DEFINES += PROEVALUATOR_CUMULATIVE PROEVALUATOR_INIT_PROPS