forked from qt-creator/qt-creator
Give our Profile parser more information from the qmakestep
e.g. DEFINES+=bla on the qmakestep command line now work Task-Nr: QTCREATORBUG-2091
This commit is contained in:
@@ -115,18 +115,7 @@ QStringList QMakeStep::allArguments()
|
|||||||
arguments << "-spec" << bc->qtVersion()->mkspec();
|
arguments << "-spec" << bc->qtVersion()->mkspec();
|
||||||
|
|
||||||
// Find out what flags we pass on to qmake
|
// Find out what flags we pass on to qmake
|
||||||
QStringList addedUserConfigArguments;
|
arguments << bc->configCommandLineArguments();
|
||||||
QStringList removedUserConfigArguments;
|
|
||||||
bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
|
|
||||||
if (!removedUserConfigArguments.isEmpty()) {
|
|
||||||
foreach (const QString &removedConfig, removedUserConfigArguments)
|
|
||||||
arguments.append("CONFIG-=" + removedConfig);
|
|
||||||
}
|
|
||||||
if (!addedUserConfigArguments.isEmpty()) {
|
|
||||||
foreach (const QString &addedConfig, addedUserConfigArguments)
|
|
||||||
arguments.append("CONFIG+=" + addedConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
arguments << moreArguments();
|
arguments << moreArguments();
|
||||||
|
|
||||||
if (!additonalArguments.isEmpty())
|
if (!additonalArguments.isEmpty())
|
||||||
@@ -286,6 +275,17 @@ void QMakeStep::setUserArguments(const QStringList &arguments)
|
|||||||
emit userArgumentsChanged();
|
emit userArgumentsChanged();
|
||||||
|
|
||||||
qt4BuildConfiguration()->emitQMakeBuildConfigurationChanged();
|
qt4BuildConfiguration()->emitQMakeBuildConfigurationChanged();
|
||||||
|
qt4BuildConfiguration()->emitProFileEvaluteNeeded();
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList QMakeStep::parserArguments()
|
||||||
|
{
|
||||||
|
QStringList result;
|
||||||
|
foreach (const QString &str, allArguments()) {
|
||||||
|
if (str.contains("="))
|
||||||
|
result << str;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList QMakeStep::userArguments()
|
QStringList QMakeStep::userArguments()
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ public:
|
|||||||
// TODO clean up those functions
|
// TODO clean up those functions
|
||||||
QStringList allArguments();
|
QStringList allArguments();
|
||||||
QStringList moreArguments();
|
QStringList moreArguments();
|
||||||
|
QStringList parserArguments();
|
||||||
QStringList userArguments();
|
QStringList userArguments();
|
||||||
void setUserArguments(const QStringList &arguments);
|
void setUserArguments(const QStringList &arguments);
|
||||||
|
|
||||||
|
|||||||
@@ -363,6 +363,11 @@ void Qt4BuildConfiguration::setQMakeBuildConfiguration(QtVersion::QmakeBuildConf
|
|||||||
emit qmakeBuildConfigurationChanged();
|
emit qmakeBuildConfigurationChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Qt4BuildConfiguration::emitProFileEvaluteNeeded()
|
||||||
|
{
|
||||||
|
emit proFileEvaluateNeeded(this);
|
||||||
|
}
|
||||||
|
|
||||||
void Qt4BuildConfiguration::emitQMakeBuildConfigurationChanged()
|
void Qt4BuildConfiguration::emitQMakeBuildConfigurationChanged()
|
||||||
{
|
{
|
||||||
emit qmakeBuildConfigurationChanged();
|
emit qmakeBuildConfigurationChanged();
|
||||||
@@ -379,26 +384,25 @@ void Qt4BuildConfiguration::emitS60CreatesSmartInstallerChanged()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const
|
QStringList Qt4BuildConfiguration::configCommandLineArguments() const
|
||||||
{
|
{
|
||||||
|
QStringList result;
|
||||||
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion()->defaultBuildConfig();
|
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion()->defaultBuildConfig();
|
||||||
QtVersion::QmakeBuildConfigs userBuildConfiguration = m_qmakeBuildConfiguration;
|
QtVersion::QmakeBuildConfigs userBuildConfiguration = m_qmakeBuildConfiguration;
|
||||||
if (removedUserConfigs) {
|
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(userBuildConfiguration & QtVersion::BuildAll))
|
||||||
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(userBuildConfiguration & QtVersion::BuildAll))
|
result << "CONFIG-=debug_and_release";
|
||||||
(*removedUserConfigs) << "debug_and_release";
|
|
||||||
}
|
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll))
|
||||||
if (addedUserConfigs) {
|
result << "CONFIG+=debug_and_release";
|
||||||
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll))
|
if ((defaultBuildConfiguration & QtVersion::DebugBuild)
|
||||||
(*addedUserConfigs) << "debug_and_release";
|
&& !(userBuildConfiguration & QtVersion::DebugBuild)
|
||||||
if ((defaultBuildConfiguration & QtVersion::DebugBuild)
|
&& !(userBuildConfiguration & QtVersion::BuildAll))
|
||||||
&& !(userBuildConfiguration & QtVersion::DebugBuild)
|
result << "CONFIG+=release";
|
||||||
&& !(userBuildConfiguration & QtVersion::BuildAll))
|
if (!(defaultBuildConfiguration & QtVersion::DebugBuild)
|
||||||
(*addedUserConfigs) << "release";
|
|
||||||
if (!(defaultBuildConfiguration & QtVersion::DebugBuild)
|
|
||||||
&& (userBuildConfiguration & QtVersion::DebugBuild)
|
&& (userBuildConfiguration & QtVersion::DebugBuild)
|
||||||
&& !(userBuildConfiguration & QtVersion::BuildAll))
|
&& !(userBuildConfiguration & QtVersion::BuildAll))
|
||||||
(*addedUserConfigs) << "debug";
|
result << "CONFIG+=debug";
|
||||||
}
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMakeStep *Qt4BuildConfiguration::qmakeStep() const
|
QMakeStep *Qt4BuildConfiguration::qmakeStep() const
|
||||||
|
|||||||
@@ -76,6 +76,9 @@ public:
|
|||||||
|
|
||||||
QtVersion::QmakeBuildConfigs qmakeBuildConfiguration() const;
|
QtVersion::QmakeBuildConfigs qmakeBuildConfiguration() const;
|
||||||
void setQMakeBuildConfiguration(QtVersion::QmakeBuildConfigs config);
|
void setQMakeBuildConfiguration(QtVersion::QmakeBuildConfigs config);
|
||||||
|
|
||||||
|
/// \internal for qmakestep
|
||||||
|
void emitProFileEvaluteNeeded();
|
||||||
// used by qmake step to notify that the qmake args have changed
|
// used by qmake step to notify that the qmake args have changed
|
||||||
// not really nice, the build configuration should save the arguments
|
// not really nice, the build configuration should save the arguments
|
||||||
// since they are needed for reevaluation
|
// since they are needed for reevaluation
|
||||||
@@ -87,7 +90,7 @@ public:
|
|||||||
// not really nice
|
// not really nice
|
||||||
void emitS60CreatesSmartInstallerChanged();
|
void emitS60CreatesSmartInstallerChanged();
|
||||||
|
|
||||||
void getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const;
|
QStringList configCommandLineArguments() const;
|
||||||
|
|
||||||
// Those functions are used in a few places.
|
// Those functions are used in a few places.
|
||||||
// The drawback is that we shouldn't actually depend on them being always there
|
// The drawback is that we shouldn't actually depend on them being always there
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "qt4projectmanagerconstants.h"
|
#include "qt4projectmanagerconstants.h"
|
||||||
#include "qtuicodemodelsupport.h"
|
#include "qtuicodemodelsupport.h"
|
||||||
#include "qt4buildconfiguration.h"
|
#include "qt4buildconfiguration.h"
|
||||||
|
#include "qmakestep.h"
|
||||||
|
|
||||||
#include <projectexplorer/nodesvisitor.h>
|
#include <projectexplorer/nodesvisitor.h>
|
||||||
|
|
||||||
@@ -1311,12 +1312,13 @@ void Qt4ProFileNode::setupReader()
|
|||||||
m_readerCumulative = m_project->createProFileReader(this);
|
m_readerCumulative = m_project->createProFileReader(this);
|
||||||
|
|
||||||
// Find out what flags we pass on to qmake
|
// Find out what flags we pass on to qmake
|
||||||
QStringList addedUserConfigArguments;
|
QStringList args;
|
||||||
QStringList removedUserConfigArguments;
|
if (QMakeStep *qs = m_project->activeTarget()->activeBuildConfiguration()->qmakeStep())
|
||||||
m_project->activeTarget()->activeBuildConfiguration()->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
|
args = qs->parserArguments();
|
||||||
|
else
|
||||||
m_readerExact->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
|
args = m_project->activeTarget()->activeBuildConfiguration()->configCommandLineArguments();
|
||||||
m_readerCumulative->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
|
m_readerExact->setCommandLineArguments(args);
|
||||||
|
m_readerCumulative->setCommandLineArguments(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qt4ProFileNode::evaluate()
|
bool Qt4ProFileNode::evaluate()
|
||||||
|
|||||||
@@ -224,8 +224,7 @@ public:
|
|||||||
QHash<const ProFile*, QHash<ProString, ProStringList> > m_filevaluemap; // Variables per include file
|
QHash<const ProFile*, QHash<ProString, ProStringList> > m_filevaluemap; // Variables per include file
|
||||||
QString m_tmp1, m_tmp2, m_tmp3, m_tmp[2]; // Temporaries for efficient toQString
|
QString m_tmp1, m_tmp2, m_tmp3, m_tmp[2]; // Temporaries for efficient toQString
|
||||||
|
|
||||||
QStringList m_addUserConfigCmdArgs;
|
QStringList m_cmdArgs;
|
||||||
QStringList m_removeUserConfigCmdArgs;
|
|
||||||
|
|
||||||
ProFileOption *m_option;
|
ProFileOption *m_option;
|
||||||
ProFileParser *m_parser;
|
ProFileParser *m_parser;
|
||||||
@@ -1274,11 +1273,13 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProFile(
|
|||||||
if (tgt.isEmpty())
|
if (tgt.isEmpty())
|
||||||
tgt.append(ProString(QFileInfo(pro->fileName()).baseName(), NoHash));
|
tgt.append(ProString(QFileInfo(pro->fileName()).baseName(), NoHash));
|
||||||
|
|
||||||
ProStringList &tmp = m_valuemapStack.top()[ProString("CONFIG")];
|
if (ProFile *pro = m_parser->parsedProFile(
|
||||||
foreach (const QString &add, m_addUserConfigCmdArgs)
|
fL1S("(command line)"), false, m_cmdArgs.join(fL1S("\n")))) {
|
||||||
tmp.append(ProString(add, NoHash));
|
m_locationStack.push(m_current);
|
||||||
foreach (const QString &remove, m_removeUserConfigCmdArgs)
|
visitProBlock(pro, pro->tokPtr());
|
||||||
removeAll(&tmp, ProString(remove, NoHash));
|
m_current = m_locationStack.pop();
|
||||||
|
pro->deref();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
visitProBlock(pro, pro->tokPtr());
|
visitProBlock(pro, pro->tokPtr());
|
||||||
@@ -3217,10 +3218,9 @@ void ProFileEvaluator::setOutputDir(const QString &dir)
|
|||||||
d->m_outputDir = dir;
|
d->m_outputDir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProFileEvaluator::setConfigCommandLineArguments(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs)
|
void ProFileEvaluator::setCommandLineArguments(const QStringList &args)
|
||||||
{
|
{
|
||||||
d->m_addUserConfigCmdArgs = addUserConfigCmdArgs;
|
d->m_cmdArgs = args;
|
||||||
d->m_removeUserConfigCmdArgs = removeUserConfigCmdArgs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ public:
|
|||||||
|
|
||||||
// -nocache, -cache, -spec, QMAKESPEC
|
// -nocache, -cache, -spec, QMAKESPEC
|
||||||
// -set persistent value
|
// -set persistent value
|
||||||
void setConfigCommandLineArguments(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs);
|
void setCommandLineArguments(const QStringList &args);
|
||||||
|
|
||||||
enum LoadFlag {
|
enum LoadFlag {
|
||||||
LoadProOnly = 0,
|
LoadProOnly = 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user