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 12 namespace variables { 13 14 // Builtin vars ---------------------------------------------------------------- 15 16 extern const char kCurrentToolchain[]; 17 extern const char kCurrentToolchain_HelpShort[]; 18 extern const char kCurrentToolchain_Help[]; 19 20 extern const char kDefaultToolchain[]; 21 extern const char kDefaultToolchain_HelpShort[]; 22 extern const char kDefaultToolchain_Help[]; 23 24 extern const char kPythonPath[]; 25 extern const char kPythonPath_HelpShort[]; 26 extern const char kPythonPath_Help[]; 27 28 extern const char kRelativeRootGenDir[]; 29 extern const char kRelativeRootGenDir_HelpShort[]; 30 extern const char kRelativeRootGenDir_Help[]; 31 32 extern const char kRelativeRootOutputDir[]; 33 extern const char kRelativeRootOutputDir_HelpShort[]; 34 extern const char kRelativeRootOutputDir_Help[]; 35 36 extern const char kRelativeTargetGenDir[]; 37 extern const char kRelativeTargetGenDir_HelpShort[]; 38 extern const char kRelativeTargetGenDir_Help[]; 39 40 extern const char kRelativeTargetOutputDir[]; 41 extern const char kRelativeTargetOutputDir_HelpShort[]; 42 extern const char kRelativeTargetOutputDir_Help[]; 43 44 // Target vars ----------------------------------------------------------------- 45 46 extern const char kAllDependentConfigs[]; 47 extern const char kAllDependentConfigs_HelpShort[]; 48 extern const char kAllDependentConfigs_Help[]; 49 50 extern const char kCflags[]; 51 extern const char kCflags_HelpShort[]; 52 extern const char* kCflags_Help; 53 54 extern const char kCflagsC[]; 55 extern const char kCflagsC_HelpShort[]; 56 extern const char* kCflagsC_Help; 57 58 extern const char kCflagsCC[]; 59 extern const char kCflagsCC_HelpShort[]; 60 extern const char* kCflagsCC_Help; 61 62 extern const char kCflagsObjC[]; 63 extern const char kCflagsObjC_HelpShort[]; 64 extern const char* kCflagsObjC_Help; 65 66 extern const char kCflagsObjCC[]; 67 extern const char kCflagsObjCC_HelpShort[]; 68 extern const char* kCflagsObjCC_Help; 69 70 extern const char kConfigs[]; 71 extern const char kConfigs_HelpShort[]; 72 extern const char kConfigs_Help[]; 73 74 extern const char kDatadeps[]; 75 extern const char kDatadeps_HelpShort[]; 76 extern const char kDatadeps_Help[]; 77 78 extern const char kDefines[]; 79 extern const char kDefines_HelpShort[]; 80 extern const char kDefines_Help[]; 81 82 extern const char kDeps[]; 83 extern const char kDeps_HelpShort[]; 84 extern const char kDeps_Help[]; 85 86 extern const char kDirectDependentConfigs[]; 87 extern const char kDirectDependentConfigs_HelpShort[]; 88 extern const char kDirectDependentConfigs_Help[]; 89 90 extern const char kLdflags[]; 91 extern const char kLdflags_HelpShort[]; 92 extern const char kLdflags_Help[]; 93 94 extern const char kSources[]; 95 extern const char kSources_HelpShort[]; 96 extern const char kSources_Help[]; 97 98 99 // ----------------------------------------------------------------------------- 100 101 struct VariableInfo { 102 VariableInfo(); 103 VariableInfo(const char* in_help_short, 104 const char* in_help); 105 106 const char* help_short; 107 const char* help; 108 }; 109 110 typedef std::map<base::StringPiece, VariableInfo> VariableInfoMap; 111 112 // Returns the built-in readonly variables. 113 // Note: this is used only for help so this getter is not threadsafe. 114 const VariableInfoMap& GetBuiltinVariables(); 115 116 // Returns the variables used by target generators. 117 // Note: this is used only for help so this getter is not threadsafe. 118 const VariableInfoMap& GetTargetVariables(); 119 120 } // namespace variables 121 122 #endif // TOOLS_GN_VARIABLES_H_ 123