blob: 8e174d206a6dce7ab90de59c64981bcefaa4650a (
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
|
/* Compiler handling for plugin
Copyright (C) 2014-2022 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#ifndef CC1_PLUGIN_COMPILER_HH
#define CC1_PLUGIN_COMPILER_HH
namespace cc1_plugin
{
// Base class for compiler.
class compiler
{
public:
explicit compiler (bool v)
: verbose (v)
{
}
virtual ~compiler () = default;
// Find the compiler. BASE is the base name of the compiler, see
// compiler-name.hh. This sets COMPILER to the resulting path.
// Returns nullptr on success, or a malloc'd error string on
// failure.
virtual char *find (const char *base, std::string &compiler) const;
void set_verbose (bool v)
{
verbose = v;
}
protected:
bool verbose;
};
/* Compiler to set by set_triplet_regexp. */
class compiler_triplet_regexp : public compiler
{
private:
std::string triplet_regexp_;
public:
char *find (const char *base, std::string &compiler) const override;
compiler_triplet_regexp (bool v, const char *triplet_regexp)
: compiler (v), triplet_regexp_ (triplet_regexp)
{
}
};
/* Compiler to set by set_driver_filename. */
class compiler_driver_filename : public compiler
{
private:
std::string driver_filename_;
public:
char *find (const char *base, std::string &compiler) const override;
compiler_driver_filename (bool v, const char *driver_filename)
: compiler (v), driver_filename_ (driver_filename)
{
}
};
}
#endif // CC1_PLUGIN_COMPILER_HH
|