mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
202 lines
7.2 KiB
C
202 lines
7.2 KiB
C
|
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#ifndef TOOLS_GN_COMMANDS_H_
|
||
|
#define TOOLS_GN_COMMANDS_H_
|
||
|
|
||
|
#include <map>
|
||
|
#include <set>
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
#include "base/strings/string_piece.h"
|
||
|
#include "base/values.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().
|
||
|
|
||
|
namespace commands {
|
||
|
|
||
|
typedef int (*CommandRunner)(const std::vector<std::string>&);
|
||
|
|
||
|
extern const char kAnalyze[];
|
||
|
extern const char kAnalyze_HelpShort[];
|
||
|
extern const char kAnalyze_Help[];
|
||
|
int RunAnalyze(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kArgs[];
|
||
|
extern const char kArgs_HelpShort[];
|
||
|
extern const char kArgs_Help[];
|
||
|
int RunArgs(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kCheck[];
|
||
|
extern const char kCheck_HelpShort[];
|
||
|
extern const char kCheck_Help[];
|
||
|
int RunCheck(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kClean[];
|
||
|
extern const char kClean_HelpShort[];
|
||
|
extern const char kClean_Help[];
|
||
|
int RunClean(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kDesc[];
|
||
|
extern const char kDesc_HelpShort[];
|
||
|
extern const char kDesc_Help[];
|
||
|
int RunDesc(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kGen[];
|
||
|
extern const char kGen_HelpShort[];
|
||
|
extern const char kGen_Help[];
|
||
|
int RunGen(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kFormat[];
|
||
|
extern const char kFormat_HelpShort[];
|
||
|
extern const char kFormat_Help[];
|
||
|
int RunFormat(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kHelp[];
|
||
|
extern const char kHelp_HelpShort[];
|
||
|
extern const char kHelp_Help[];
|
||
|
int RunHelp(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kLs[];
|
||
|
extern const char kLs_HelpShort[];
|
||
|
extern const char kLs_Help[];
|
||
|
int RunLs(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kPath[];
|
||
|
extern const char kPath_HelpShort[];
|
||
|
extern const char kPath_Help[];
|
||
|
int RunPath(const std::vector<std::string>& args);
|
||
|
|
||
|
extern const char kRefs[];
|
||
|
extern const char kRefs_HelpShort[];
|
||
|
extern const char kRefs_Help[];
|
||
|
int RunRefs(const std::vector<std::string>& args);
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
|
||
|
struct CommandInfo {
|
||
|
CommandInfo();
|
||
|
CommandInfo(const char* in_help_short,
|
||
|
const char* in_help,
|
||
|
CommandRunner in_runner);
|
||
|
|
||
|
const char* help_short;
|
||
|
const char* help;
|
||
|
CommandRunner runner;
|
||
|
};
|
||
|
|
||
|
typedef std::map<base::StringPiece, CommandInfo> CommandInfoMap;
|
||
|
|
||
|
const CommandInfoMap& GetCommands();
|
||
|
|
||
|
// Helper functions for some commands ------------------------------------------
|
||
|
|
||
|
// Given a setup that has already been run and some command-line input,
|
||
|
// resolves that input as a target label and returns the corresponding target.
|
||
|
// On failure, returns null and prints the error to the standard output.
|
||
|
const Target* ResolveTargetFromCommandLineString(
|
||
|
Setup* setup,
|
||
|
const std::string& label_string);
|
||
|
|
||
|
// Resolves a vector of command line inputs and figures out the full set of
|
||
|
// things they resolve to.
|
||
|
//
|
||
|
// 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::vector<std::string>& input,
|
||
|
bool all_toolchains,
|
||
|
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.
|
||
|
//
|
||
|
// force_check, if true, will override targets opting out of header checking
|
||
|
// with "check_includes = false" and will check them anyway.
|
||
|
//
|
||
|
// On success, returns true. If the check fails, the error(s) will be printed
|
||
|
// to stdout and false will be returned.
|
||
|
bool CheckPublicHeaders(const BuildSettings* build_settings,
|
||
|
const std::vector<const Target*>& all_targets,
|
||
|
const std::vector<const Target*>& to_check,
|
||
|
bool force_check);
|
||
|
|
||
|
// 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);
|
||
|
|
||
|
// Builds a list of pattern from a semicolon-separated list of labels.
|
||
|
bool FilterPatternsFromString(const BuildSettings* build_settings,
|
||
|
const std::string& label_list_string,
|
||
|
std::vector<LabelPattern>* filters,
|
||
|
Err* err);
|
||
|
|
||
|
// 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"\
|
||
|
" root build directory.\n"
|
||
|
#define TARGET_TYPE_FILTER_COMMAND_LINE_HELP \
|
||
|
" --type=(action|copy|executable|group|loadable_module|shared_library|\n"\
|
||
|
" source_set|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 FilterAndPrintTargets(std::vector<const Target*>* targets,
|
||
|
base::ListValue* out);
|
||
|
|
||
|
void FilterAndPrintTargetSet(bool indent,
|
||
|
const std::set<const Target*>& targets);
|
||
|
void FilterAndPrintTargetSet(const std::set<const Target*>& targets,
|
||
|
base::ListValue* out);
|
||
|
|
||
|
// Extra help from command_check.cc
|
||
|
extern const char kNoGnCheck_Help[];
|
||
|
|
||
|
} // namespace commands
|
||
|
|
||
|
#endif // TOOLS_GN_COMMANDS_H_
|