| Index: tools/gn/commands.h
|
| diff --git a/tools/gn/commands.h b/tools/gn/commands.h
|
| index b64a9b86c1c758ed32ac16afe65aaeb310daf8dd..dd2cb1b03387e8d357848403984438d0d85ac680 100644
|
| --- a/tools/gn/commands.h
|
| +++ b/tools/gn/commands.h
|
| @@ -6,15 +6,21 @@
|
| #define TOOLS_GN_COMMANDS_H_
|
|
|
| #include <map>
|
| +#include <set>
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "base/strings/string_piece.h"
|
| +#include "tools/gn/target.h"
|
| +#include "tools/gn/unique_vector.h"
|
|
|
| class BuildSettings;
|
| +class Config;
|
| class LabelPattern;
|
| class Setup;
|
| +class SourceFile;
|
| class Target;
|
| +class Toolchain;
|
|
|
| // Each "Run" command returns the value we should return from main().
|
|
|
| @@ -93,18 +99,20 @@ const Target* ResolveTargetFromCommandLineString(
|
| Setup* setup,
|
| const std::string& label_string);
|
|
|
| -// Like above but the input string can be a pattern that matches multiple
|
| -// targets. If the input does not parse as a pattern, prints and error and
|
| -// returns false. If the pattern is valid, fills the vector (which might be
|
| -// empty if there are no matches) and returns true.
|
| +// Resolves a vector of command line inputs and figures out the full set of
|
| +// things they resolve to.
|
| //
|
| -// If all_tolchains is false, a pattern with an unspecified toolchain will
|
| -// match the default toolchain only. If true, all toolchains will be matched.
|
| -bool ResolveTargetsFromCommandLinePattern(
|
| +// Patterns with wildcards will only match targets. The file_matches aren't
|
| +// validated that they are real files or referenced by any targets. They're just
|
| +// the set of things that didn't match anything else.
|
| +bool ResolveFromCommandLineInput(
|
| Setup* setup,
|
| - const std::string& label_pattern,
|
| + const std::vector<std::string>& input,
|
| bool all_toolchains,
|
| - std::vector<const Target*>* matches);
|
| + UniqueVector<const Target*>* target_matches,
|
| + UniqueVector<const Config*>* config_matches,
|
| + UniqueVector<const Toolchain*>* toolchain_matches,
|
| + UniqueVector<SourceFile>* file_matches);
|
|
|
| // Runs the header checker. All targets in the build should be given in
|
| // all_targets, and the specific targets to check should be in to_check.
|
| @@ -119,13 +127,50 @@ bool CheckPublicHeaders(const BuildSettings* build_settings,
|
| const std::vector<const Target*>& to_check,
|
| bool force_check);
|
|
|
| -// Filters the given list of targets by the given pattern list. This is a
|
| -// helper function for setting up a call to CheckPublicHeaders based on a check
|
| -// filter.
|
| +// Filters the given list of targets by the given pattern list.
|
| void FilterTargetsByPatterns(const std::vector<const Target*>& input,
|
| const std::vector<LabelPattern>& filter,
|
| std::vector<const Target*>* output);
|
| +void FilterTargetsByPatterns(const std::vector<const Target*>& input,
|
| + const std::vector<LabelPattern>& filter,
|
| + UniqueVector<const Target*>* output);
|
| +
|
| +// These are the documentation strings for the command-line flags used by
|
| +// FilterAndPrintTargets. Commands that call that function should incorporate
|
| +// these into their help.
|
| +#define TARGET_PRINTING_MODE_COMMAND_LINE_HELP \
|
| + " --as=(buildfile|label|output)\n"\
|
| + " How to print targets.\n"\
|
| + "\n"\
|
| + " buildfile\n"\
|
| + " Prints the build files where the given target was declared as\n"\
|
| + " file names.\n"\
|
| + " label (default)\n"\
|
| + " Prints the label of the target.\n"\
|
| + " output\n"\
|
| + " Prints the first output file for the target relative to the\n"\
|
| + " current directory.\n"
|
| +#define TARGET_TYPE_FILTER_COMMAND_LINE_HELP \
|
| + " --type=(action|copy|executable|group|shared_library|source_set|\n"\
|
| + " static_library)\n"\
|
| + " Restrict outputs to targets matching the given type. If\n"\
|
| + " unspecified, no filtering will be performed.\n"
|
| +#define TARGET_TESTONLY_FILTER_COMMAND_LINE_HELP \
|
| + " --testonly=(true|false)\n"\
|
| + " Restrict outputs to targets with the testonly flag set\n"\
|
| + " accordingly. When unspecified, the target's testonly flags are\n"\
|
| + " ignored.\n"
|
| +
|
| +// Applies any testonly and type filters specified on the command line,
|
| +// and prints the targets as specified by the --as command line flag.
|
| +//
|
| +// If indent is true, the results will be indented two spaces.
|
| +//
|
| +// The vector will be modified so that only the printed targets will remain.
|
| +void FilterAndPrintTargets(bool indent, std::vector<const Target*>* targets);
|
| +void FilterAndPrintTargetSet(bool indent,
|
| + const std::set<const Target*>& targets);
|
|
|
| } // namespace commands
|
|
|
| -#endif // TOOLS_GN_COMMANDS_H_
|
| +#endif // TOOLS_GN_COMMANDS_H
|
|
|