1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TOOLS_GN_VARIABLES_H_
6#define TOOLS_GN_VARIABLES_H_
7
8#include <map>
9
10#include "base/strings/string_piece.h"
11
12namespace variables {
13
14// Builtin vars ----------------------------------------------------------------
15
16extern const char kBuildCpuArch[];
17extern const char kBuildCpuArch_HelpShort[];
18extern const char kBuildCpuArch_Help[];
19
20extern const char kBuildOs[];
21extern const char kBuildOs_HelpShort[];
22extern const char kBuildOs_Help[];
23
24extern const char kCpuArch[];
25extern const char kCpuArch_HelpShort[];
26extern const char kCpuArch_Help[];
27
28extern const char kCurrentToolchain[];
29extern const char kCurrentToolchain_HelpShort[];
30extern const char kCurrentToolchain_Help[];
31
32extern const char kDefaultToolchain[];
33extern const char kDefaultToolchain_HelpShort[];
34extern const char kDefaultToolchain_Help[];
35
36extern const char kOs[];
37extern const char kOs_HelpShort[];
38extern const char kOs_Help[];
39
40extern const char kPythonPath[];
41extern const char kPythonPath_HelpShort[];
42extern const char kPythonPath_Help[];
43
44extern const char kRootBuildDir[];
45extern const char kRootBuildDir_HelpShort[];
46extern const char kRootBuildDir_Help[];
47
48extern const char kRootGenDir[];
49extern const char kRootGenDir_HelpShort[];
50extern const char kRootGenDir_Help[];
51
52extern const char kRootOutDir[];
53extern const char kRootOutDir_HelpShort[];
54extern const char kRootOutDir_Help[];
55
56extern const char kTargetGenDir[];
57extern const char kTargetGenDir_HelpShort[];
58extern const char kTargetGenDir_Help[];
59
60extern const char kTargetOutDir[];
61extern const char kTargetOutDir_HelpShort[];
62extern const char kTargetOutDir_Help[];
63
64// Target vars -----------------------------------------------------------------
65
66extern const char kAllDependentConfigs[];
67extern const char kAllDependentConfigs_HelpShort[];
68extern const char kAllDependentConfigs_Help[];
69
70extern const char kAllowCircularIncludesFrom[];
71extern const char kAllowCircularIncludesFrom_HelpShort[];
72extern const char kAllowCircularIncludesFrom_Help[];
73
74extern const char kArgs[];
75extern const char kArgs_HelpShort[];
76extern const char kArgs_Help[];
77
78extern const char kCflags[];
79extern const char kCflags_HelpShort[];
80extern const char* kCflags_Help;
81
82extern const char kCflagsC[];
83extern const char kCflagsC_HelpShort[];
84extern const char* kCflagsC_Help;
85
86extern const char kCflagsCC[];
87extern const char kCflagsCC_HelpShort[];
88extern const char* kCflagsCC_Help;
89
90extern const char kCflagsObjC[];
91extern const char kCflagsObjC_HelpShort[];
92extern const char* kCflagsObjC_Help;
93
94extern const char kCflagsObjCC[];
95extern const char kCflagsObjCC_HelpShort[];
96extern const char* kCflagsObjCC_Help;
97
98extern const char kCheckIncludes[];
99extern const char kCheckIncludes_HelpShort[];
100extern const char kCheckIncludes_Help[];
101
102extern const char kCompleteStaticLib[];
103extern const char kCompleteStaticLib_HelpShort[];
104extern const char kCompleteStaticLib_Help[];
105
106extern const char kConfigs[];
107extern const char kConfigs_HelpShort[];
108extern const char kConfigs_Help[];
109
110extern const char kData[];
111extern const char kData_HelpShort[];
112extern const char kData_Help[];
113
114extern const char kDataDeps[];
115extern const char kDataDeps_HelpShort[];
116extern const char kDataDeps_Help[];
117
118extern const char kDefines[];
119extern const char kDefines_HelpShort[];
120extern const char kDefines_Help[];
121
122extern const char kDepfile[];
123extern const char kDepfile_HelpShort[];
124extern const char kDepfile_Help[];
125
126extern const char kDeps[];
127extern const char kDeps_HelpShort[];
128extern const char kDeps_Help[];
129
130extern const char kForwardDependentConfigsFrom[];
131extern const char kForwardDependentConfigsFrom_HelpShort[];
132extern const char kForwardDependentConfigsFrom_Help[];
133
134extern const char kIncludeDirs[];
135extern const char kIncludeDirs_HelpShort[];
136extern const char kIncludeDirs_Help[];
137
138extern const char kInputs[];
139extern const char kInputs_HelpShort[];
140extern const char kInputs_Help[];
141
142extern const char kLdflags[];
143extern const char kLdflags_HelpShort[];
144extern const char kLdflags_Help[];
145
146extern const char kLibDirs[];
147extern const char kLibDirs_HelpShort[];
148extern const char kLibDirs_Help[];
149
150extern const char kLibs[];
151extern const char kLibs_HelpShort[];
152extern const char kLibs_Help[];
153
154extern const char kOutputExtension[];
155extern const char kOutputExtension_HelpShort[];
156extern const char kOutputExtension_Help[];
157
158extern const char kOutputName[];
159extern const char kOutputName_HelpShort[];
160extern const char kOutputName_Help[];
161
162extern const char kOutputs[];
163extern const char kOutputs_HelpShort[];
164extern const char kOutputs_Help[];
165
166extern const char kPublic[];
167extern const char kPublic_HelpShort[];
168extern const char kPublic_Help[];
169
170extern const char kPublicConfigs[];
171extern const char kPublicConfigs_HelpShort[];
172extern const char kPublicConfigs_Help[];
173
174extern const char kPublicDeps[];
175extern const char kPublicDeps_HelpShort[];
176extern const char kPublicDeps_Help[];
177
178extern const char kScript[];
179extern const char kScript_HelpShort[];
180extern const char kScript_Help[];
181
182extern const char kSources[];
183extern const char kSources_HelpShort[];
184extern const char kSources_Help[];
185
186extern const char kTestonly[];
187extern const char kTestonly_HelpShort[];
188extern const char kTestonly_Help[];
189
190extern const char kVisibility[];
191extern const char kVisibility_HelpShort[];
192extern const char kVisibility_Help[];
193
194// -----------------------------------------------------------------------------
195
196struct VariableInfo {
197  VariableInfo();
198  VariableInfo(const char* in_help_short,
199               const char* in_help);
200
201  const char* help_short;
202  const char* help;
203};
204
205typedef std::map<base::StringPiece, VariableInfo> VariableInfoMap;
206
207// Returns the built-in readonly variables.
208// Note: this is used only for help so this getter is not threadsafe.
209const VariableInfoMap& GetBuiltinVariables();
210
211// Returns the variables used by target generators.
212// Note: this is used only for help so this getter is not threadsafe.
213const VariableInfoMap& GetTargetVariables();
214
215}  // namespace variables
216
217#endif  // TOOLS_GN_VARIABLES_H_
218