blob: d05e4c9998bb0178edda7c67db9b526fc7ee311c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include "projectexplorer_export.h"
#include "abi.h"
#include "customparser.h"
#include "headerpath.h"
#include "toolchain.h"
#include "toolchainconfigwidget.h"
#include <utils/fileutils.h>
QT_BEGIN_NAMESPACE
class QPlainTextEdit;
class QTextEdit;
class QComboBox;
QT_END_NAMESPACE
namespace Utils { class PathChooser; }
namespace ProjectExplorer {
class AbiWidget;
namespace Internal { class CustomToolChainFactory; }
// --------------------------------------------------------------------------
// CustomToolChain
// --------------------------------------------------------------------------
class PROJECTEXPLORER_EXPORT CustomToolChain : public ToolChain
{
Q_DECLARE_TR_FUNCTIONS(CustomToolChain)
public:
class Parser {
public:
Utils::Id parserId; ///< A unique id identifying a parser
QString displayName; ///< A translateable name to show in the user interface
};
bool isValid() const override;
MacroInspectionRunner createMacroInspectionRunner() const override;
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const override;
Utils::WarningFlags warningFlags(const QStringList &cxxflags) const override;
const Macros &rawPredefinedMacros() const;
void setPredefinedMacros(const Macros ¯os);
BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
const Utils::Environment &) const override;
void addToEnvironment(Utils::Environment &env) const override;
QStringList suggestedMkspecList() const override;
QList<Utils::OutputLineParser *> createOutputParsers() const override;
QStringList headerPathsList() const;
void setHeaderPaths(const QStringList &list);
QVariantMap toMap() const override;
bool fromMap(const QVariantMap &data) override;
std::unique_ptr<ToolChainConfigWidget> createConfigurationWidget() override;
bool operator ==(const ToolChain &) const override;
void setMakeCommand(const Utils::FilePath &);
Utils::FilePath makeCommand(const Utils::Environment &environment) const override;
void setCxx11Flags(const QStringList &);
const QStringList &cxx11Flags() const;
void setMkspecs(const QString &);
QString mkspecs() const;
Utils::Id outputParserId() const;
void setOutputParserId(Utils::Id parserId);
static QList<CustomToolChain::Parser> parsers();
private:
CustomToolChain();
CustomParserSettings customParserSettings() const;
Utils::FilePath m_compilerCommand;
Utils::FilePath m_makeCommand;
Macros m_predefinedMacros;
HeaderPaths m_builtInHeaderPaths;
QStringList m_cxx11Flags;
QStringList m_mkspecs;
Utils::Id m_outputParserId;
friend class Internal::CustomToolChainFactory;
friend class ToolChainFactory;
};
namespace Internal {
class CustomToolChainFactory : public ToolChainFactory
{
public:
CustomToolChainFactory();
};
// --------------------------------------------------------------------------
// CustomToolChainConfigWidget
// --------------------------------------------------------------------------
class TextEditDetailsWidget;
class CustomToolChainConfigWidget : public ToolChainConfigWidget
{
Q_OBJECT
public:
CustomToolChainConfigWidget(CustomToolChain *);
private:
void updateSummaries(TextEditDetailsWidget *detailsWidget);
void errorParserChanged(int index = -1);
protected:
void applyImpl() override;
void discardImpl() override { setFromToolchain(); }
bool isDirtyImpl() const override;
void makeReadOnlyImpl() override;
void setFromToolchain();
Utils::PathChooser *m_compilerCommand;
Utils::PathChooser *m_makeCommand;
AbiWidget *m_abiWidget;
QPlainTextEdit *m_predefinedMacros;
QPlainTextEdit *m_headerPaths;
TextEditDetailsWidget *m_predefinedDetails;
TextEditDetailsWidget *m_headerDetails;
QLineEdit *m_cxx11Flags;
QLineEdit *m_mkspecs;
QComboBox *m_errorParserComboBox;
};
} // namespace Internal
} // namespace ProjectExplorer
|