forked from qt-creator/qt-creator
ProjectExplorer: Merge LinuxIccToolChain into GccToolChain
Change-Id: I181a98f534c6f3006f750f99190b2f81a3f5a13b Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -47,6 +47,18 @@ using namespace Utils;
|
||||
namespace ProjectExplorer {
|
||||
namespace Internal {
|
||||
|
||||
static const QStringList languageOption(Id languageId)
|
||||
{
|
||||
if (languageId == Constants::C_LANGUAGE_ID)
|
||||
return {"-x", "c"};
|
||||
return {"-x", "c++"};
|
||||
}
|
||||
|
||||
const QStringList gccPredefinedMacrosOptions(Id languageId)
|
||||
{
|
||||
return languageOption(languageId) + QStringList({"-E", "-dM"});
|
||||
}
|
||||
|
||||
class TargetTripleWidget;
|
||||
class GccToolChainConfigWidget : public ToolChainConfigWidget
|
||||
{
|
||||
@@ -296,7 +308,9 @@ GccToolChain::GccToolChain(Utils::Id typeId, SubType subType)
|
||||
setTypeDisplayName(Tr::tr("GCC"));
|
||||
setTargetAbiKey(targetAbiKeyC);
|
||||
setCompilerCommandKey("ProjectExplorer.GccToolChain.Path");
|
||||
if (m_subType == MinGW) {
|
||||
if (m_subType == LinuxIcc) {
|
||||
setTypeDisplayName(Tr::tr("ICC"));
|
||||
} else if (m_subType == MinGW) {
|
||||
setTypeDisplayName(Tr::tr("MinGW"));
|
||||
} else if (m_subType == Clang) {
|
||||
setTypeDisplayName(Tr::tr("Clang"));
|
||||
@@ -551,6 +565,23 @@ LanguageExtensions GccToolChain::languageExtensions(const QStringList &cxxflags)
|
||||
if (m_subType == Clang && cxxflags.contains("-fborland-extensions"))
|
||||
extensions |= LanguageExtension::Borland;
|
||||
|
||||
if (m_subType == LinuxIcc) {
|
||||
// and "-fms-dialect[=ver]" instead of "-fms-extensions".
|
||||
// see UNIX manual for "icc"
|
||||
// FIXME: This copy seems unneeded.
|
||||
QStringList copy = cxxflags;
|
||||
copy.removeAll("-fopenmp");
|
||||
copy.removeAll("-fms-extensions");
|
||||
|
||||
if (cxxflags.contains("-openmp"))
|
||||
extensions |= LanguageExtension::OpenMP;
|
||||
if (cxxflags.contains("-fms-dialect")
|
||||
|| cxxflags.contains("-fms-dialect=8")
|
||||
|| cxxflags.contains("-fms-dialect=9")
|
||||
|| cxxflags.contains("-fms-dialect=10"))
|
||||
extensions |= LanguageExtension::Microsoft;
|
||||
}
|
||||
|
||||
return extensions;
|
||||
}
|
||||
|
||||
@@ -763,6 +794,9 @@ void GccToolChain::addToEnvironment(Environment &env) const
|
||||
|
||||
QStringList GccToolChain::suggestedMkspecList() const
|
||||
{
|
||||
if (m_subType == LinuxIcc)
|
||||
return {QString("linux-icc-%1").arg(targetAbi().wordWidth())};
|
||||
|
||||
if (m_subType == MinGW) {
|
||||
if (HostOsInfo::isWindowsHost())
|
||||
return {"win32-g++"};
|
||||
@@ -850,6 +884,9 @@ FilePath GccToolChain::makeCommand(const Environment &environment) const
|
||||
|
||||
QList<OutputLineParser *> GccToolChain::createOutputParsers() const
|
||||
{
|
||||
if (m_subType == LinuxIcc)
|
||||
return LinuxIccParser::iccParserSuite();
|
||||
|
||||
if (m_subType == Clang)
|
||||
return ClangParser::clangParserSuite();
|
||||
|
||||
@@ -1906,48 +1943,6 @@ Toolchains MingwToolChainFactory::detectForImport(const ToolChainDescription &tc
|
||||
return {};
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// LinuxIccToolChain
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
LinuxIccToolChain::LinuxIccToolChain() :
|
||||
GccToolChain(Constants::LINUXICC_TOOLCHAIN_TYPEID)
|
||||
{
|
||||
setTypeDisplayName(Tr::tr("ICC"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to \a GccToolchain::languageExtensions, but uses "-openmp" instead of
|
||||
* "-fopenmp" and "-fms-dialect[=ver]" instead of "-fms-extensions".
|
||||
* @see UNIX manual for "icc"
|
||||
*/
|
||||
LanguageExtensions LinuxIccToolChain::languageExtensions(const QStringList &cxxflags) const
|
||||
{
|
||||
QStringList copy = cxxflags;
|
||||
copy.removeAll("-fopenmp");
|
||||
copy.removeAll("-fms-extensions");
|
||||
|
||||
LanguageExtensions extensions = GccToolChain::languageExtensions(cxxflags);
|
||||
if (cxxflags.contains("-openmp"))
|
||||
extensions |= LanguageExtension::OpenMP;
|
||||
if (cxxflags.contains("-fms-dialect")
|
||||
|| cxxflags.contains("-fms-dialect=8")
|
||||
|| cxxflags.contains("-fms-dialect=9")
|
||||
|| cxxflags.contains("-fms-dialect=10"))
|
||||
extensions |= LanguageExtension::Microsoft;
|
||||
return extensions;
|
||||
}
|
||||
|
||||
QList<OutputLineParser *> LinuxIccToolChain::createOutputParsers() const
|
||||
{
|
||||
return LinuxIccParser::iccParserSuite();
|
||||
}
|
||||
|
||||
QStringList LinuxIccToolChain::suggestedMkspecList() const
|
||||
{
|
||||
return {QString("linux-icc-%1").arg(targetAbi().wordWidth())};
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// LinuxIccToolChainFactory
|
||||
// --------------------------------------------------------------------------
|
||||
@@ -1957,7 +1952,9 @@ LinuxIccToolChainFactory::LinuxIccToolChainFactory()
|
||||
setDisplayName(Tr::tr("ICC"));
|
||||
setSupportedToolChainType(Constants::LINUXICC_TOOLCHAIN_TYPEID);
|
||||
setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
|
||||
setToolchainConstructor([] { return new LinuxIccToolChain; });
|
||||
setToolchainConstructor([] {
|
||||
return new GccToolChain(Constants::LINUXICC_TOOLCHAIN_TYPEID, GccToolChain::LinuxIcc);
|
||||
});
|
||||
}
|
||||
|
||||
Toolchains LinuxIccToolChainFactory::autoDetect(const ToolchainDetector &detector) const
|
||||
|
||||
@@ -10,8 +10,6 @@
|
||||
#include "abi.h"
|
||||
#include "headerpath.h"
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
@@ -24,28 +22,19 @@ class GccToolChainConfigWidget;
|
||||
class GccToolChainFactory;
|
||||
class MingwToolChainFactory;
|
||||
class LinuxIccToolChainFactory;
|
||||
|
||||
const QStringList gccPredefinedMacrosOptions(Utils::Id languageId);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// GccToolChain
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
inline const QStringList languageOption(Utils::Id languageId)
|
||||
{
|
||||
if (languageId == Constants::C_LANGUAGE_ID)
|
||||
return {"-x", "c"};
|
||||
return {"-x", "c++"};
|
||||
}
|
||||
|
||||
inline const QStringList gccPredefinedMacrosOptions(Utils::Id languageId)
|
||||
{
|
||||
return languageOption(languageId) + QStringList({"-E", "-dM"});
|
||||
}
|
||||
|
||||
class PROJECTEXPLORER_EXPORT GccToolChain : public ToolChain
|
||||
{
|
||||
public:
|
||||
enum SubType { RealGcc, Clang, MinGW };
|
||||
enum SubType { RealGcc, Clang, MinGW, LinuxIcc };
|
||||
|
||||
GccToolChain(Utils::Id typeId, SubType subType = RealGcc);
|
||||
~GccToolChain() override;
|
||||
@@ -185,6 +174,7 @@ private:
|
||||
|
||||
friend class Internal::GccToolChainConfigWidget;
|
||||
friend class Internal::GccToolChainFactory;
|
||||
friend class Internal::LinuxIccToolChainFactory;
|
||||
friend class Internal::MingwToolChainFactory;
|
||||
friend class Internal::ClangToolChainFactory;
|
||||
friend class ToolChainFactory;
|
||||
@@ -198,25 +188,6 @@ private:
|
||||
QMetaObject::Connection m_thisToolchainRemovedConnection;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// LinuxIccToolChain
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class PROJECTEXPLORER_EXPORT LinuxIccToolChain : public GccToolChain
|
||||
{
|
||||
public:
|
||||
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const override;
|
||||
QList<Utils::OutputLineParser *> createOutputParsers() const override;
|
||||
|
||||
QStringList suggestedMkspecList() const override;
|
||||
|
||||
private:
|
||||
LinuxIccToolChain();
|
||||
|
||||
friend class Internal::LinuxIccToolChainFactory;
|
||||
friend class ToolChainFactory;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// Factories
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user