From 41bf7c896b7dfea27a9991bf830a665f8a01c78b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 4 May 2012 22:12:17 +0200 Subject: [PATCH] surround loading of spec with loading spec_pre.prf and spec_post.prf follow suit with qmake ... once we move currently builtin functionality to these feature files, things would break with qt4 (which does not have them). consequently, we provide our own fallback versions of them. Change-Id: Ie318f3419d78214472835c41ec1388977f2e9269 Reviewed-by: Daniel Teske Reviewed-by: Oswald Buddenhagen --- src/shared/proparser/proparser.pri | 1 + src/shared/proparser/proparser.qrc | 4 ++++ src/shared/proparser/qmakeevaluator.cpp | 9 +++++++++ src/shared/proparser/spec_post.prf | 0 src/shared/proparser/spec_pre.prf | 0 tests/manual/proparser/testreader.pro | 3 +++ 6 files changed, 17 insertions(+) create mode 100644 src/shared/proparser/spec_post.prf create mode 100644 src/shared/proparser/spec_pre.prf 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