return m_debuggerCommand;
}
+QString GccToolChain::mkspec() const
+{
+ Abi abi = targetAbi();
+ if (abi.os() == Abi::MacOS)
+ return QLatin1String("macx-g++");
+ if (abi.os() == Abi::LinuxOS)
+ return QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth());
+ return QString();
+}
+
QString GccToolChain::makeCommand() const
{
return QLatin1String("make");
return Internal::MingwToolChainFactory::tr("MinGW");
}
+QString MingwToolChain::mkspec() const
+{
+ return QLatin1String("win32-g++");
+}
+
QString MingwToolChain::makeCommand() const
{
return QLatin1String("mingw32-make.exe");
return new LinuxIccParser;
}
+QString LinuxIccToolChain::mkspec() const
+{
+ return QLatin1String("linux-icc-") + QString::number(targetAbi().wordWidth());
+}
+
ToolChain *LinuxIccToolChain::clone() const
{
return new LinuxIccToolChain(*this);
QByteArray predefinedMacros() const;
QList<HeaderPath> systemHeaderPaths() const;
void addToEnvironment(Utils::Environment &env) const;
+ QString mkspec() const;
QString makeCommand() const;
void setDebuggerCommand(const QString &);
QString debuggerCommand() const;
{
public:
QString typeName() const;
+ QString mkspec() const;
QString makeCommand() const;
ToolChain *clone() const;
IOutputParser *outputParser() const;
+ QString mkspec() const;
+
ToolChain *clone() const;
private:
env = m_resultEnvironment;
}
+QString MsvcToolChain::mkspec() const
+{
+ if (m_abi.osFlavor() == Abi::WindowsMsvc2005Flavor)
+ return QLatin1String("win32-msvc2005");
+ if (m_abi.osFlavor() == Abi::WindowsMsvc2008Flavor)
+ return QLatin1String("win32-msvc2008");
+ if (m_abi.osFlavor() == Abi::WindowsMsvc2010Flavor)
+ return QLatin1String("win32-msvc2010");
+ return QString();
+}
+
QString MsvcToolChain::makeCommand() const
{
if (ProjectExplorerPlugin::instance()->projectExplorerSettings().useJom) {
QByteArray predefinedMacros() const;
QList<HeaderPath> systemHeaderPaths() const;
void addToEnvironment(Utils::Environment &env) const;
+ QString mkspec() const;
QString makeCommand() const;
void setDebuggerCommand(const QString &d);
virtual QString debuggerCommand() const;
virtual void addToEnvironment(Utils::Environment &env) const = 0;
virtual QString makeCommand() const = 0;
+ virtual QString mkspec() const = 0;
+
virtual QString debuggerCommand() const = 0;
virtual QString defaultMakeTarget() const;
virtual IOutputParser *outputParser() const = 0;
return m_mkspecFullPath;
}
+bool BaseQtVersion::hasMkspec(const QString &spec) const
+{
+ updateVersionInfo();
+ QFileInfo fi;
+ fi.setFile(QDir::fromNativeSeparators(m_versionInfo.value("QMAKE_MKSPECS")) + '/' + spec);
+ if (fi.isDir())
+ return true;
+ fi.setFile(sourcePath() + QLatin1String("/mkspecs/") + spec);
+ return fi.isDir();
+}
+
BaseQtVersion::QmakeBuildConfigs BaseQtVersion::defaultBuildConfig() const
{
ensureMkSpecParsed();
/// specifally not the directory the symlink/ORIGINAL_QMAKESPEC points to
QString mkspecPath() const;
+ bool hasMkspec(const QString &) const;
+
enum QmakeBuildConfig
{
NoBuild = 1,
arguments << QDir::toNativeSeparators(buildConfiguration()->target()->project()->file()->fileName());
arguments << "-r";
+ bool haveSpec = false;
for (Utils::QtcProcess::ArgIterator ait(&additonalArguments); ait.next(); )
if (ait.value() == QLatin1String("-spec"))
- goto haveSpec;
- if (bc->qtVersion())
- arguments << "-spec" << bc->qtVersion()->mkspec();
- haveSpec:
+ haveSpec = true;
+
+ if (!haveSpec) {
+ const QString tcSpec = bc->toolChain() ? bc->toolChain()->mkspec() : QString();
+ if (!tcSpec.isEmpty() && bc->qtVersion()->hasMkspec(tcSpec))
+ arguments << "-spec" << tcSpec;
+ else
+ arguments << "-spec" << bc->qtVersion()->mkspec();
+ }
// Find out what flags we pass on to qmake
arguments << bc->configCommandLineArguments();
return m_targetAbi;
}
+QString MaemoToolChain::mkspec() const
+{
+ return QString(); // always use default
+}
+
bool MaemoToolChain::isValid() const
{
return GccToolChain::isValid() && m_qtVersionId >= 0 && m_targetAbi.isValid();
QString typeName() const;
ProjectExplorer::Abi targetAbi() const;
+ QString mkspec() const;
bool isValid() const;
bool canClone() const;
#endif
}
+QString GcceToolChain::mkspec() const
+{
+ return QString(); // always use default from Qt version
+}
+
QString GcceToolChain::defaultMakeTarget() const
{
return QLatin1String("gcce");
QByteArray predefinedMacros() const;
void addToEnvironment(Utils::Environment &env) const;
QString makeCommand() const;
+ QString mkspec() const;
QString defaultMakeTarget() const;
void setCompilerPath(const QString &);
env.set(QLatin1String("LANG"), QString(QLatin1Char('C')));
}
+QString RvctToolChain::mkspec() const
+{
+ return QString(); // Always use default from Qt version
+}
+
QString RvctToolChain::makeCommand() const
{
#if defined(Q_OS_WIN)
QByteArray predefinedMacros() const;
QList<ProjectExplorer::HeaderPath> systemHeaderPaths() const;
void addToEnvironment(Utils::Environment &env) const;
+ QString mkspec() const;
QString makeCommand() const;
QString defaultMakeTarget() const;
ProjectExplorer::IOutputParser *outputParser() const;
env.prependOrSetPath(QFileInfo(m_compilerPath).absolutePath());
}
+
+QString WinscwToolChain::mkspec() const
+{
+ return QString(); // Always use default from Qt version
+}
+
QString WinscwToolChain::makeCommand() const
{
#if defined Q_OS_WIN
QByteArray predefinedMacros() const;
QList<ProjectExplorer::HeaderPath> systemHeaderPaths() const;
void addToEnvironment(Utils::Environment &env) const;
+ QString mkspec() const;
QString makeCommand() const;
virtual QString debuggerCommand() const;
QString defaultMakeTarget() const;