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.
5 #ifndef TOOLS_GN_COMMANDS_H_
6 #define TOOLS_GN_COMMANDS_H_
12 #include "base/strings/string_piece.h"
18 // Each "Run" command returns the value we should return from main().
22 typedef int (*CommandRunner
)(const std::vector
<std::string
>&);
24 extern const char kArgs
[];
25 extern const char kArgs_HelpShort
[];
26 extern const char kArgs_Help
[];
27 int RunArgs(const std::vector
<std::string
>& args
);
29 extern const char kCheck
[];
30 extern const char kCheck_HelpShort
[];
31 extern const char kCheck_Help
[];
32 int RunCheck(const std::vector
<std::string
>& args
);
34 extern const char kDesc
[];
35 extern const char kDesc_HelpShort
[];
36 extern const char kDesc_Help
[];
37 int RunDesc(const std::vector
<std::string
>& args
);
39 extern const char kGen
[];
40 extern const char kGen_HelpShort
[];
41 extern const char kGen_Help
[];
42 int RunGen(const std::vector
<std::string
>& args
);
44 extern const char kFormat
[];
45 extern const char kFormat_HelpShort
[];
46 extern const char kFormat_Help
[];
47 int RunFormat(const std::vector
<std::string
>& args
);
49 extern const char kHelp
[];
50 extern const char kHelp_HelpShort
[];
51 extern const char kHelp_Help
[];
52 int RunHelp(const std::vector
<std::string
>& args
);
54 extern const char kLs
[];
55 extern const char kLs_HelpShort
[];
56 extern const char kLs_Help
[];
57 int RunLs(const std::vector
<std::string
>& args
);
59 extern const char kRefs
[];
60 extern const char kRefs_HelpShort
[];
61 extern const char kRefs_Help
[];
62 int RunRefs(const std::vector
<std::string
>& args
);
64 // -----------------------------------------------------------------------------
68 CommandInfo(const char* in_help_short
,
70 CommandRunner in_runner
);
72 const char* help_short
;
77 typedef std::map
<base::StringPiece
, CommandInfo
> CommandInfoMap
;
79 const CommandInfoMap
& GetCommands();
81 // Helper functions for some commands ------------------------------------------
83 // Given a setup that has already been run and some command-line input,
84 // resolves that input as a target label and returns the corresponding target.
85 // On failure, returns null and prints the error to the standard output.
86 const Target
* ResolveTargetFromCommandLineString(
88 const std::string
& label_string
);
90 // Like above but the input string can be a pattern that matches multiple
91 // targets. If the input does not parse as a pattern, prints and error and
92 // returns false. If the pattern is valid, fills the vector (which might be
93 // empty if there are no matches) and returns true.
95 // If all_tolchains is false, a pattern with an unspecified toolchain will
96 // match the default toolchain only. If true, all toolchains will be matched.
97 bool ResolveTargetsFromCommandLinePattern(
99 const std::string
& label_pattern
,
101 std::vector
<const Target
*>* matches
);
103 // Runs the header checker. All targets in the build should be given in
104 // all_targets, and the specific targets to check should be in to_check. If
105 // to_check is empty, all targets will be checked.
107 // force_check, if true, will override targets opting out of header checking
108 // with "check_includes = false" and will check them anyway.
110 // On success, returns true. If the check fails, the error(s) will be printed
111 // to stdout and false will be returned.
112 bool CheckPublicHeaders(const BuildSettings
* build_settings
,
113 const std::vector
<const Target
*>& all_targets
,
114 const std::vector
<const Target
*>& to_check
,
117 } // namespace commands
119 #endif // TOOLS_GN_COMMANDS_H_