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
|
enum class TargetType
{
Auto,
Executable,
StaticLibrary,
DynamicLibrary,
Object,
UnitTest,
};
enum class Language
{
Auto,
C,
Cpp,
Asm,
};
enum class OutputSystem
{
Host,
Build,
};
struct BuildConfiguration
{
TargetType type{TargetType::Auto};
Language language{Language::Auto};
OutputSystem system{OutputSystem::Host};
std::string target;
std::vector<std::string> sources;
std::vector<std::string> depends;
std::vector<std::string> cxxflags;
std::vector<std::string> cflags;
std::vector<std::string> ldflags;
std::vector<std::string> asmflags;
};
using BuildConfigurations = std::vector<BuildConfiguration>;
int reg(const char* location, BuildConfigurations (*cb)());
namespace cfg
{
constexpr auto builddir = "builddir";
constexpr auto host_cc = "host-cc";
constexpr auto host_cxx = "host-cpp";
constexpr auto host_ar = "host-ar";
constexpr auto host_ld = "host-ld";
constexpr auto build_cc = "build-cc";
constexpr auto build_cxx = "build-cpp";
constexpr auto build_ar = "build-ar";
constexpr auto build_ld = "build-ld";
}
const std::map<std::string, std::string>& configuration();
bool hasConfiguration(const std::string& key);
const std::string& getConfiguration(const std::string& key,
const std::string& defaultValue = {});
|