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