qmake: Update internal mkspec on changes to QMAKESPEC

Allows the macx-xcode mkspec to be a wrapper around other mkspecs.

Since QMAKESPEC can now be set in the spec, we have to ensure not
to append to QMAKESPEC.

Change-Id: Idf33ff38147f14c488f14b426c02d9a739fdaecf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This commit is contained in:
Tor Arne Vestbø 2013-10-11 15:48:44 +02:00 committed by The Qt Project
parent e1e2b2d8ca
commit a9bad65b09
2 changed files with 9 additions and 1 deletions

View File

@ -129,6 +129,7 @@ void QMakeEvaluator::initStatics()
statics.strhost_build = QLatin1String("host_build");
statics.strTEMPLATE = ProKey("TEMPLATE");
statics.strQMAKE_PLATFORM = ProKey("QMAKE_PLATFORM");
statics.strQMAKESPEC = ProKey("QMAKESPEC");
#ifdef PROEVALUATOR_FULL
statics.strREQUIRES = ProKey("REQUIRES");
#endif
@ -939,6 +940,12 @@ void QMakeEvaluator::visitProVariable(
setTemplate();
else if (varName == statics.strQMAKE_PLATFORM)
m_featureRoots = 0;
else if (varName == statics.strQMAKESPEC) {
if (!values(varName).isEmpty()) {
m_qmakespec = values(varName).first().toQString();
m_featureRoots = 0;
}
}
#ifdef PROEVALUATOR_FULL
else if (varName == statics.strREQUIRES)
checkRequirements(values(varName));
@ -1160,7 +1167,7 @@ bool QMakeEvaluator::loadSpecInternal()
m_qmakespec = orig_spec.toQString();
# endif
#endif
valuesRef(ProKey("QMAKESPEC")) << ProString(m_qmakespec);
valuesRef(ProKey("QMAKESPEC")) = ProString(m_qmakespec);
m_qmakespecName = IoUtils::fileName(m_qmakespec).toString();
// This also ensures that m_featureRoots is valid.
if (evaluateFeatureFile(QLatin1String("spec_post.prf")) != ReturnTrue)

View File

@ -91,6 +91,7 @@ struct QMakeStatics {
QString strhost_build;
ProKey strTEMPLATE;
ProKey strQMAKE_PLATFORM;
ProKey strQMAKESPEC;
#ifdef PROEVALUATOR_FULL
ProKey strREQUIRES;
#endif