summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp38
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.cpp20
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.h4
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp5
-rw-r--r--src/plugins/cpptools/cppprojectinfogenerator.cpp52
-rw-r--r--src/plugins/cpptools/cppprojectinfogenerator.h2
-rw-r--r--src/plugins/cpptools/cppprojectpartchooser.cpp3
-rw-r--r--src/plugins/cpptools/cpprawprojectpart.cpp2
-rw-r--r--src/plugins/cpptools/cpprawprojectpart.h4
-rw-r--r--src/plugins/cpptools/projectpart.cpp9
-rw-r--r--src/plugins/cpptools/projectpart.h37
11 files changed, 68 insertions, 108 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index b05bd09d1f..9113d69747 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -59,7 +59,7 @@ QStringList CompilerOptionsBuilder::build(CppTools::ProjectFile::Kind fileKind,
m_options.clear();
if (fileKind == ProjectFile::CHeader || fileKind == ProjectFile::CSource) {
- QTC_ASSERT(m_projectPart.languageVersion <= ProjectPart::LatestCVersion,
+ QTC_ASSERT(m_projectPart.languageVersion <= ProjectExplorer::LanguageVersion::LatestC,
return QStringList(););
}
@@ -196,7 +196,7 @@ void CompilerOptionsBuilder::addExtraCodeModelFlags()
void CompilerOptionsBuilder::enableExceptions()
{
- if (m_projectPart.languageVersion > ProjectPart::LatestCVersion)
+ if (m_projectPart.languageVersion > ProjectExplorer::LanguageVersion::LatestC)
add(QLatin1String("-fcxx-exceptions"));
add(QLatin1String("-fexceptions"));
}
@@ -378,7 +378,8 @@ void CompilerOptionsBuilder::addMacros(const ProjectExplorer::Macros &macros)
void CompilerOptionsBuilder::updateLanguageOption(ProjectFile::Kind fileKind)
{
- const bool objcExt = m_projectPart.languageExtensions & ProjectPart::ObjectiveCExtensions;
+ const bool objcExt = m_projectPart.languageExtensions
+ & ProjectExplorer::LanguageExtension::ObjectiveC;
const QStringList options = createLanguageOptionGcc(fileKind, objcExt);
if (options.isEmpty())
return;
@@ -394,48 +395,51 @@ void CompilerOptionsBuilder::updateLanguageOption(ProjectFile::Kind fileKind)
void CompilerOptionsBuilder::addOptionsForLanguage(bool checkForBorlandExtensions)
{
+ using ProjectExplorer::LanguageExtension;
+ using ProjectExplorer::LanguageVersion;
+
QStringList opts;
- const ProjectPart::LanguageExtensions languageExtensions = m_projectPart.languageExtensions;
- const bool gnuExtensions = languageExtensions & ProjectPart::GnuExtensions;
+ const ProjectExplorer::LanguageExtensions languageExtensions = m_projectPart.languageExtensions;
+ const bool gnuExtensions = languageExtensions & LanguageExtension::Gnu;
switch (m_projectPart.languageVersion) {
- case ProjectPart::C89:
+ case LanguageVersion::C89:
opts << (gnuExtensions ? QLatin1String("-std=gnu89") : QLatin1String("-std=c89"));
break;
- case ProjectPart::C99:
+ case LanguageVersion::C99:
opts << (gnuExtensions ? QLatin1String("-std=gnu99") : QLatin1String("-std=c99"));
break;
- case ProjectPart::C11:
+ case LanguageVersion::C11:
opts << (gnuExtensions ? QLatin1String("-std=gnu11") : QLatin1String("-std=c11"));
break;
- case ProjectPart::C18:
+ case LanguageVersion::C18:
// Clang 6, 7 and current trunk do not accept "gnu18"/"c18", so use the "*17" variants.
opts << (gnuExtensions ? QLatin1String("-std=gnu17") : QLatin1String("-std=c17"));
break;
- case ProjectPart::CXX11:
+ case LanguageVersion::CXX11:
opts << (gnuExtensions ? QLatin1String("-std=gnu++11") : QLatin1String("-std=c++11"));
break;
- case ProjectPart::CXX98:
+ case LanguageVersion::CXX98:
opts << (gnuExtensions ? QLatin1String("-std=gnu++98") : QLatin1String("-std=c++98"));
break;
- case ProjectPart::CXX03:
+ case LanguageVersion::CXX03:
opts << (gnuExtensions ? QLatin1String("-std=gnu++03") : QLatin1String("-std=c++03"));
break;
- case ProjectPart::CXX14:
+ case LanguageVersion::CXX14:
opts << (gnuExtensions ? QLatin1String("-std=gnu++14") : QLatin1String("-std=c++14"));
break;
- case ProjectPart::CXX17:
+ case LanguageVersion::CXX17:
opts << (gnuExtensions ? QLatin1String("-std=gnu++17") : QLatin1String("-std=c++17"));
break;
- case ProjectPart::CXX2a:
+ case LanguageVersion::CXX2a:
opts << (gnuExtensions ? QLatin1String("-std=gnu++2a") : QLatin1String("-std=c++2a"));
break;
}
- if (languageExtensions & ProjectPart::MicrosoftExtensions)
+ if (languageExtensions & LanguageExtension::Microsoft)
opts << QLatin1String("-fms-extensions");
- if (checkForBorlandExtensions && (languageExtensions & ProjectPart::BorlandExtensions))
+ if (checkForBorlandExtensions && (languageExtensions & LanguageExtension::Borland))
opts << QLatin1String("-fborland-extensions");
m_options.append(opts);
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
index 540ac99104..e359f71a05 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
@@ -103,9 +103,9 @@ QString Utils::toString(ProjectExplorer::HeaderPathType type)
return QString();
}
-QString Utils::toString(ProjectPart::LanguageVersion languageVersion)
+QString Utils::toString(ProjectExplorer::LanguageVersion languageVersion)
{
-#define CASE_LANGUAGEVERSION(x) case ProjectPart::x: return QLatin1String(#x)
+#define CASE_LANGUAGEVERSION(x) case ProjectExplorer::LanguageVersion::x: return QLatin1String(#x)
switch (languageVersion) {
CASE_LANGUAGEVERSION(C89);
CASE_LANGUAGEVERSION(C99);
@@ -123,19 +123,19 @@ QString Utils::toString(ProjectPart::LanguageVersion languageVersion)
return QString();
}
-QString Utils::toString(ProjectPart::LanguageExtensions languageExtension)
+QString Utils::toString(ProjectExplorer::LanguageExtensions languageExtension)
{
QString result;
-#define CASE_LANGUAGE_EXTENSION(ext) if (languageExtension & ProjectPart::ext) \
+#define CASE_LANGUAGE_EXTENSION(ext) if (languageExtension & ProjectExplorer::LanguageExtension::ext) \
result += QLatin1String(#ext ", ");
- CASE_LANGUAGE_EXTENSION(NoExtensions);
- CASE_LANGUAGE_EXTENSION(GnuExtensions);
- CASE_LANGUAGE_EXTENSION(MicrosoftExtensions);
- CASE_LANGUAGE_EXTENSION(BorlandExtensions);
- CASE_LANGUAGE_EXTENSION(OpenMPExtensions);
- CASE_LANGUAGE_EXTENSION(ObjectiveCExtensions);
+ CASE_LANGUAGE_EXTENSION(None);
+ CASE_LANGUAGE_EXTENSION(Gnu);
+ CASE_LANGUAGE_EXTENSION(Microsoft);
+ CASE_LANGUAGE_EXTENSION(Borland);
+ CASE_LANGUAGE_EXTENSION(OpenMP);
+ CASE_LANGUAGE_EXTENSION(ObjectiveC);
#undef CASE_LANGUAGE_EXTENSION
if (result.endsWith(QLatin1String(", ")))
result.chop(2);
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.h b/src/plugins/cpptools/cppcodemodelinspectordumper.h
index d460acf496..b0f7a18a01 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.h
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.h
@@ -47,8 +47,8 @@ struct CPPTOOLS_EXPORT Utils
static QString toString(CPlusPlus::Document::CheckMode checkMode);
static QString toString(CPlusPlus::Document::DiagnosticMessage::Level level);
static QString toString(ProjectExplorer::HeaderPathType type);
- static QString toString(CppTools::ProjectPart::LanguageVersion languageVersion);
- static QString toString(CppTools::ProjectPart::LanguageExtensions languageExtension);
+ static QString toString(ProjectExplorer::LanguageVersion languageVersion);
+ static QString toString(ProjectExplorer::LanguageExtensions languageExtension);
static QString toString(CppTools::ProjectPart::QtVersion qtVersion);
static QString toString(CppTools::ProjectPart::BuildTargetType buildTargetType);
static QString toString(const QVector<CppTools::ProjectFile> &projectFiles);
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 9303d66338..5db9dd601d 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -1170,8 +1170,9 @@ ProjectPart::Ptr CppModelManager::fallbackProjectPart()
// Do not activate ObjectiveCExtensions since this will lead to the
// "objective-c++" language option for a project-less *.cpp file.
- part->languageExtensions = ProjectPart::AllExtensions;
- part->languageExtensions &= ~ProjectPart::ObjectiveCExtensions;
+ part->languageExtensions = ProjectExplorer::LanguageExtension::All;
+ part->languageExtensions &= ~ProjectExplorer::LanguageExtensions(
+ ProjectExplorer::LanguageExtension::ObjectiveC);
part->qtVersion = ProjectPart::Qt5;
part->updateLanguageFeatures();
diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp
index 8d04f2429e..0e2d8bc366 100644
--- a/src/plugins/cpptools/cppprojectinfogenerator.cpp
+++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp
@@ -68,16 +68,16 @@ public:
if (m_tcInfo.macroInspectionRunner) {
auto macroInspectionReport = m_tcInfo.macroInspectionRunner(m_flags.commandLineFlags);
m_projectPart.toolChainMacros = macroInspectionReport.macros;
- m_projectPart.languageVersion = static_cast<ProjectPart::LanguageVersion>(
- macroInspectionReport.languageVersion);
+ m_projectPart.languageVersion = macroInspectionReport.languageVersion;
} else { // No compiler set in kit.
if (m_language == Language::C)
- m_projectPart.languageVersion = ProjectPart::LanguageVersion::LatestCVersion;
+ m_projectPart.languageVersion = ProjectExplorer::LanguageVersion::LatestC;
if (m_language == Language::CXX)
- m_projectPart.languageVersion = ProjectPart::LanguageVersion::LatestCxxVersion;
+ m_projectPart.languageVersion = ProjectExplorer::LanguageVersion::LatestCxx;
}
- mapLanguageExtensions();
+ m_projectPart.languageExtensions = m_flags.languageExtensions;
+
addHeaderPaths();
}
@@ -89,25 +89,6 @@ private:
: ProjectPart::WordWidth32Bit;
}
- void mapLanguageExtensions()
- {
- using namespace ProjectExplorer;
-
- const ToolChain::CompilerFlags &compilerFlags = m_flags.compilerFlags;
- ProjectPart::LanguageExtensions &languageExtensions = m_projectPart.languageExtensions;
-
- if (compilerFlags & ToolChain::BorlandExtensions)
- languageExtensions |= ProjectPart::BorlandExtensions;
- if (compilerFlags & ToolChain::GnuExtensions)
- languageExtensions |= ProjectPart::GnuExtensions;
- if (compilerFlags & ToolChain::MicrosoftExtensions)
- languageExtensions |= ProjectPart::MicrosoftExtensions;
- if (compilerFlags & ToolChain::OpenMP)
- languageExtensions |= ProjectPart::OpenMPExtensions;
- if (compilerFlags & ToolChain::ObjectiveC)
- languageExtensions |= ProjectPart::ObjectiveCExtensions;
- }
-
void addHeaderPaths()
{
if (!m_tcInfo.headerPathsRunner)
@@ -181,6 +162,8 @@ static ProjectPart::Ptr projectPartFromRawProjectPart(const RawProjectPart &rawP
QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProjectPart &rawProjectPart)
{
+ using ProjectExplorer::LanguageExtension;
+
QVector<ProjectPart::Ptr> result;
ProjectFileCategorizer cat(rawProjectPart.displayName,
rawProjectPart.files,
@@ -196,7 +179,7 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
cat.cxxSources(),
cat.partName("C++"),
Language::CXX,
- ProjectPart::NoExtensions);
+ LanguageExtension::None);
}
if (cat.hasObjcxxSources()) {
@@ -205,7 +188,7 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
cat.objcxxSources(),
cat.partName("Obj-C++"),
Language::CXX,
- ProjectPart::ObjectiveCExtensions);
+ LanguageExtension::ObjectiveC);
}
if (cat.hasCSources()) {
@@ -214,7 +197,7 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
cat.cSources(),
cat.partName("C"),
Language::C,
- ProjectPart::NoExtensions);
+ LanguageExtension::None);
}
if (cat.hasObjcSources()) {
@@ -223,18 +206,19 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
cat.objcSources(),
cat.partName("Obj-C"),
Language::C,
- ProjectPart::ObjectiveCExtensions);
+ LanguageExtension::ObjectiveC);
}
}
return result;
}
-ProjectPart::Ptr ProjectInfoGenerator::createProjectPart(const RawProjectPart &rawProjectPart,
- const ProjectPart::Ptr &templateProjectPart,
- const ProjectFiles &projectFiles,
- const QString &partName,
- Language language,
- ProjectPart::LanguageExtensions languageExtensions)
+ProjectPart::Ptr ProjectInfoGenerator::createProjectPart(
+ const RawProjectPart &rawProjectPart,
+ const ProjectPart::Ptr &templateProjectPart,
+ const ProjectFiles &projectFiles,
+ const QString &partName,
+ Language language,
+ ProjectExplorer::LanguageExtensions languageExtensions)
{
ProjectPart::Ptr part(templateProjectPart->copy());
part->displayName = partName;
diff --git a/src/plugins/cpptools/cppprojectinfogenerator.h b/src/plugins/cpptools/cppprojectinfogenerator.h
index 963c9a748b..752c648fd1 100644
--- a/src/plugins/cpptools/cppprojectinfogenerator.h
+++ b/src/plugins/cpptools/cppprojectinfogenerator.h
@@ -49,7 +49,7 @@ private:
const ProjectFiles &projectFiles,
const QString &partName,
Language language,
- ProjectPart::LanguageExtensions languageExtensions);
+ ProjectExplorer::LanguageExtensions languageExtensions);
private:
const QFutureInterface<void> m_futureInterface;
diff --git a/src/plugins/cpptools/cppprojectpartchooser.cpp b/src/plugins/cpptools/cppprojectpartchooser.cpp
index bbf9ca3559..a7bb56beb0 100644
--- a/src/plugins/cpptools/cppprojectpartchooser.cpp
+++ b/src/plugins/cpptools/cppprojectpartchooser.cpp
@@ -116,7 +116,8 @@ private:
bool isPreferredLanguage(const ProjectPart &projectPart) const
{
- const bool isCProjectPart = projectPart.languageVersion <= ProjectPart::LatestCVersion;
+ const bool isCProjectPart = projectPart.languageVersion
+ <= ProjectExplorer::LanguageVersion::LatestC;
return (m_languagePreference == Language::C && isCProjectPart)
|| (m_languagePreference == Language::Cxx && !isCProjectPart);
}
diff --git a/src/plugins/cpptools/cpprawprojectpart.cpp b/src/plugins/cpptools/cpprawprojectpart.cpp
index 6f60d9cf46..9675be5291 100644
--- a/src/plugins/cpptools/cpprawprojectpart.cpp
+++ b/src/plugins/cpptools/cpprawprojectpart.cpp
@@ -39,7 +39,7 @@ RawProjectPartFlags::RawProjectPartFlags(const ProjectExplorer::ToolChain *toolC
if (toolChain) {
this->commandLineFlags = commandLineFlags;
warningFlags = toolChain->warningFlags(commandLineFlags);
- compilerFlags = toolChain->compilerFlags(commandLineFlags);
+ languageExtensions = toolChain->languageExtensions(commandLineFlags);
}
}
diff --git a/src/plugins/cpptools/cpprawprojectpart.h b/src/plugins/cpptools/cpprawprojectpart.h
index 4aa17a3a47..e238fa1d81 100644
--- a/src/plugins/cpptools/cpprawprojectpart.h
+++ b/src/plugins/cpptools/cpprawprojectpart.h
@@ -28,6 +28,7 @@
#include "cpptools_global.h"
#include "projectpart.h"
+#include <projectexplorer/language.h>
#include <projectexplorer/toolchain.h>
#include <functional>
@@ -45,8 +46,7 @@ public:
QStringList commandLineFlags;
// The following are deduced from commandLineFlags.
ProjectExplorer::WarningFlags warningFlags = ProjectExplorer::WarningFlags::Default;
- ProjectExplorer::ToolChain::CompilerFlags compilerFlags
- = ProjectExplorer::ToolChain::CompilerFlag::NoFlags;
+ ProjectExplorer::LanguageExtensions languageExtensions = ProjectExplorer::LanguageExtension::None;
};
class CPPTOOLS_EXPORT RawProjectPart
diff --git a/src/plugins/cpptools/projectpart.cpp b/src/plugins/cpptools/projectpart.cpp
index 4dc871e87e..bcfe4b3e52 100644
--- a/src/plugins/cpptools/projectpart.cpp
+++ b/src/plugins/cpptools/projectpart.cpp
@@ -35,12 +35,13 @@ namespace CppTools {
void ProjectPart::updateLanguageFeatures()
{
- const bool hasCxx = languageVersion >= CXX98;
+ const bool hasCxx = languageVersion >= ProjectExplorer::LanguageVersion::CXX98;
const bool hasQt = hasCxx && qtVersion != NoQt;
- languageFeatures.cxx11Enabled = languageVersion >= CXX11;
+ languageFeatures.cxx11Enabled = languageVersion >= ProjectExplorer::LanguageVersion::CXX11;
languageFeatures.cxxEnabled = hasCxx;
- languageFeatures.c99Enabled = languageVersion >= C99;
- languageFeatures.objCEnabled = languageExtensions.testFlag(ObjectiveCExtensions);
+ languageFeatures.c99Enabled = languageVersion >= ProjectExplorer::LanguageVersion::C99;
+ languageFeatures.objCEnabled = languageExtensions.testFlag(
+ ProjectExplorer::LanguageExtension::ObjectiveC);
languageFeatures.qtEnabled = hasQt;
languageFeatures.qtMocRunEnabled = hasQt;
if (!hasQt) {
diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h
index 8d04e71ff3..77a08128bf 100644
--- a/src/plugins/cpptools/projectpart.h
+++ b/src/plugins/cpptools/projectpart.h
@@ -30,6 +30,7 @@
#include "cppprojectfile.h"
#include <projectexplorer/headerpath.h>
+#include <projectexplorer/language.h>
#include <projectexplorer/projectexplorer_global.h>
#include <projectexplorer/projectmacro.h>
@@ -49,38 +50,6 @@ namespace CppTools {
class CPPTOOLS_EXPORT ProjectPart
{
public:
- // Keep in sync with Toolchain::LanguageVersion!
- enum LanguageVersion {
- C89,
- C99,
- C11,
- C18,
- LatestCVersion = C18,
- CXX98,
- CXX03,
- CXX11,
- CXX14,
- CXX17,
- CXX2a,
- LatestCxxVersion = CXX2a,
- };
-
- enum LanguageExtension {
- NoExtensions = 0,
- GnuExtensions = 1 << 0,
- MicrosoftExtensions = 1 << 1,
- BorlandExtensions = 1 << 2,
- OpenMPExtensions = 1 << 3,
- ObjectiveCExtensions = 1 << 4,
-
- AllExtensions = GnuExtensions
- | MicrosoftExtensions
- | BorlandExtensions
- | OpenMPExtensions
- | ObjectiveCExtensions
- };
- Q_DECLARE_FLAGS(LanguageExtensions, LanguageExtension)
-
enum QtVersion {
UnknownQt = -1,
NoQt,
@@ -129,8 +98,8 @@ public:
ProjectExplorer::Macros projectMacros;
- LanguageVersion languageVersion = LatestCxxVersion;
- LanguageExtensions languageExtensions = NoExtensions;
+ ProjectExplorer::LanguageVersion languageVersion = ProjectExplorer::LanguageVersion::LatestCxx;
+ ProjectExplorer::LanguageExtensions languageExtensions = ProjectExplorer::LanguageExtension::None;
ProjectExplorer::WarningFlags warningFlags = ProjectExplorer::WarningFlags::Default;
QtVersion qtVersion = UnknownQt;
CPlusPlus::LanguageFeatures languageFeatures;