GN的使用 - GN工具

GN的使用 - GN工具


GN工具可以帮助我们对我们的编译配置的有效性进行检查,及整个系统有更多得了解。特别是当整个项目变得特别巨大时,这意义尤其重大。

gn args

这个工具有两个作用,一是生成.ninja编译配置文件,二是查看当前编译的所有标记项。

生成.ninja

这个工具给用户提供一个接口,来对构建进行整体的配置。如在Chromium Android编译指南中,为Android版chromium做编译配置时,所执行的命令:

buildtools/linux64/gn args out/Default

参数是output目录路径。这个命令启动系统默认的编辑器,创建out/Default/args.gn文件,我们在编辑器中加入我们自己特定的配置项,如:

target_os = "android"
target_cpu = "arm"  # (default)
is_debug = true  # (default)
# Other args you may want to set:
is_component_build = true
is_clang = true
symbol_level = 1  # Faster build with fewer symbols. -g1 rather than -g2
enable_incremental_javac = true  # Much faster; experimental

gn根据创建得这个out/Default/args.gn文件的内容来产生ninja文件。

查看当前编译的所有标记项

这个工具还可以查看当前编译的所有标记配置项。chromium中用到了许许多多的标记项,对于这些标记项中的许多项,即使用户不进行配置,chromium的编译系统也会提供默认的配置。了解到当前编译的所有标记配置项,对于我们了解实际编译时所用的编译参数非常重要。

对于上面输入的参数,产生的整个编译配置环境中,所有的标记配置项如下:

$ buildtools/linux64/gn args --list out/Default/

aec_debug_dump  Default = false
    //third_party/webrtc/modules/audio_processing/BUILD.gn:15
    Outputs some low-level debug files.

aec_untrusted_delay_for_testing  Default = false
    //third_party/webrtc/modules/audio_processing/BUILD.gn:20
    Disables the usual mode where we trust the reported system delay
    values the AEC receives. The corresponding define is set appropriately
    in the code, but it can be force-enabled here for testing.

allow_posix_link_time_opt  Default = false
    //build/toolchain/toolchain.gni:16

android_channel  Default = "default"
    //chrome/android/channel.gni:8
    The channel to build on Android: stable, beta, dev, canary, work, or
    default. "default" should be used on non-official builds.

android_default_version_code  Default = "1"
    //build/config/android/config.gni:77
    Android versionCode for android_apk()s that don't expclitly set one.

android_default_version_name  Default = "Developer Build"
    //build/config/android/config.gni:80
    Android versionName for android_apk()s that don't expclitly set one.

android_full_debug  Default = false
    //build/config/compiler/BUILD.gn:34
    Normally, Android builds are lightly optimized, even for debug builds, to
    keep binary size down. Setting this flag to true disables such optimization

android_java_ui  Default = true
    //chrome/common/features.gni:19
    Whether the Java UI is being used (Java infobars and popups, Java native
    settings and first run experience, sign-in etc.).
    Default to true if compiling for android, but allow this being overriden
    through the environment.

android_keystore_name  Default = "chromiumdebugkey"
    //build/config/android/config.gni:86
    The name of the keystore to use for signing builds.

android_keystore_password  Default = "chromium"
    //build/config/android/config.gni:89
    The password for the keystore to use for signing builds.

android_keystore_path  Default = "//build/android/ant/chromium-debug.keystore"
    //build/config/android/config.gni:83
    The path to the keystore to use for signing builds.

android_libcpp_lib_dir  Default = ""
    //build/config/android/config.gni:74
    Libc++ library directory. Override to use a custom libc++ binary.

android_ndk_major_version  Default = "10"
    //build/config/android/config.gni:65

android_ndk_root  Default = "//third_party/android_tools/ndk"
    //build/config/android/config.gni:66

android_ndk_version  Default = "r10e"
    //build/config/android/config.gni:67

android_sdk_build_tools_version  Default = "23.0.1"
    //build/config/android/config.gni:71

android_sdk_root  Default = "//third_party/android_tools/sdk"
    //build/config/android/config.gni:69

android_sdk_version  Default = "23"
    //build/config/android/config.gni:70

arm_float_abi  Default = ""
    //build/config/arm.gni:20
    The ARM floating point mode. This is either the string "hard", "soft", or
    "softfp". An empty string means to use the default one for the
    arm_version.

arm_optionally_use_neon  Default = false
    //build/config/arm.gni:31
    Whether to enable optional NEON code paths.

arm_tune  Default = ""
    //build/config/arm.gni:25
    The ARM variant-specific tuning mode. This will be a string like "armv6"
    or "cortex-a15". An empty string means to use the default for the
    arm_version.

arm_use_neon  Default = ""
    //build/config/arm.gni:28
    Whether to use the neon FPU instruction set or not.

arm_use_thumb  Default = true
    //build/config/arm.gni:35
    Thumb is a reduced instruction set available on some ARM processors that
    has increased code density.

arm_version  Default = 7
    //build/config/arm.gni:15
    Version of the ARM processor when compiling on ARM. Ignored on non-ARM
    platforms.

asan_globals  Default = true
    //build/config/sanitizers/sanitizers.gni:116
    Detect overflow/underflow for global objects.
   
    Android build relies on -Wl,--gc-sections removing unreachable code.
    ASan instrumentation for globals inhibits this and results in a
    library with unresolvable relocations.
    TODO(eugenis): find a way to reenable this.
   
    Mac: http://crbug.com/352073

binutils_path  Default = "../../third_party/binutils/Linux_x64/Release/bin"
    //build/config/compiler/BUILD.gn:42

blimp_package_name  Default = "org.chromium.blimp"
    //blimp/client/BUILD.gn:269
    Package name used in the manifest for the Blimp APK.

blink_gc_plugin  Default = true
    //third_party/WebKit/Source/BUILD.gn:17
    Set to true to enable the clang plugin that checks the usage of the Blink
    garbage-collection infrastructure during compilation.

blink_gc_plugin_option_do_dump_graph  Default = false
    //third_party/WebKit/Source/BUILD.gn:21
    Set to true to have the clang Blink GC plugin emit class graph (in JSON)
    with typed pointer edges; for debugging or other (internal) uses.

blink_gc_plugin_option_warn_unneeded_finalizer  Default = false
    //third_party/WebKit/Source/BUILD.gn:26
    Set to true to have the clang Blink GC plugin additionally check if
    a class has an empty destructor which would be unnecessarily invoked
    when finalized.

blink_logging_always_on  Default = false
    //third_party/WebKit/Source/config.gni:22
    If true, enables blink logging macros (WTF_LOG and friends) unconditionally.
    When false, blink logging macros are enabled only if assertions are enabled.

build_angle_deqp_tests  Default = false
    //third_party/angle/src/tests/BUILD.gn:152
    Don't build dEQP by default.

build_with_mozilla  Default = false
    //third_party/webrtc/build/webrtc.gni:56
    Enable to use the Mozilla internal settings.

cc_wrapper  Default = ""
    //build/toolchain/cc_wrapper.gni:34
    Set to "ccache", "icecc" or "distcc".  Probably doesn't work on windows.

chrome_pgo_phase  Default = 0
    //build/config/compiler/compiler.gni:48
    Specify the current PGO phase, only used for the Windows MSVS build. Here's
    the different values that can be used:
        0 : Means that PGO is turned off.
        1 : Used during the PGI (instrumentation) phase.
        2 : Used during the PGO (optimization) phase.
   
    TODO(sebmarchand): Add support for the PGU (update) phase.

chrome_public_apk_load_library_from_apk  Default = false
    //chrome/android/chrome_public_apk_tmpl.gni:25

chrome_public_apk_use_chromium_linker  Default = false
    //chrome/android/chrome_public_apk_tmpl.gni:13
    Whether chrome_public_apk should use the crazy linker.

chrome_public_apk_use_relocation_packer  Default = false
    //chrome/android/chrome_public_apk_tmpl.gni:18

clang_base_path  Default = "//third_party/llvm-build/Release+Asserts"
    //build/config/clang/clang.gni:12

clang_use_chrome_plugins  Default = true
    //build/config/clang/clang.gni:10
    Indicates if the build should use the Chrome-specific plugins for enforcing
    coding guidelines, etc. Only used when compiling with Clang.

clang_version  Default = "3.9.0"
    //build/toolchain/toolchain.gni:27
    Clang compiler version. Clang files are placed at version-dependent paths.

cld2_table_size  Default = 0
    //third_party/cld_2/BUILD.gn:9

compile_credentials  Default = false
    //sandbox/linux/BUILD.gn:16

compile_suid_client  Default = false
    //sandbox/linux/BUILD.gn:14

concurrent_links  Default = -1
    //build/toolchain/concurrent_links.gni:18
    Limit the number of concurrent links; we often want to run fewer
    links at once than we do compiles, because linking is memory-intensive.
    The default to use varies by platform and by the amount of memory
    available, so we call out to a script to get the right value.

content_shell_product_name  Default = "Content Shell"
    //content/shell/BUILD.gn:25

content_shell_version  Default = "99.77.34.5"
    //content/shell/BUILD.gn:26

current_cpu  Default = ""
    (Internally set; try `gn help current_cpu`.)

current_os  Default = ""
    (Internally set; try `gn help current_os`.)

custom_toolchain  Default = ""
    //build/config/BUILDCONFIG.gn:139
    Allows the path to a custom target toolchain to be injected as a single
    argument, and set as the default toolchain.

dcheck_always_on  Default = false
    //build/config/dcheck_always_on.gni:7
    Set to true to enable dcheck in Release builds.

debug_devtools  Default = false
    //build/config/features.gni:41
    If debug_devtools is set to true, JavaScript files for DevTools are stored
    as is and loaded from disk. Otherwise, a concatenated file is stored in
    resources.pak. It is still possible to load JS files from disk by passing
    --debug-devtools cmdline switch.

disable_brotli_filter  Default = false
    //net/BUILD.gn:57
    Do not disable brotli filter by default.

disable_display  Default = false
    //build/config/chromecast_build.gni:14
    Set this true for an audio-only Chromecast build.

disable_file_support  Default = false
    //net/BUILD.gn:44
    Disables support for file URLs.  File URL support requires use of icu.

disable_ftp_support  Default = false
    //net/BUILD.gn:49

disable_incremental_isolated_processes  Default = false
    //build/config/android/config.gni:119
    Disables process isolation when building _incremental targets.
    Required for Android M+ due to SELinux policies (stronger sandboxing).

disable_libfuzzer  Default = false
    //build/config/sanitizers/sanitizers.gni:82
    Helper variable for testing builds with disabled libfuzzer.
    Not for client use.

disable_precompiled_headers  Default = false
    //build/config/BUILD.gn:38
    Normally we try to decide whether to use precompiled headers or
    not based on the other build arguments, but in some cases it is
    easiest to force them off explicitly.

emma_coverage  Default = false
    //build/config/android/config.gni:110
    Enables EMMA Java code coverage. Instruments classes during build to
    produce .ec files during runtime

emma_filter  Default = ""
    //build/config/android/config.gni:115
    EMMA filter string consisting of a list of inclusion/exclusion patterns
    separated with whitespace and/or comma. Only has effect if
    emma_coverage==true

enable_ac3_eac3_audio_demuxing  Default = false
    //media/media_options.gni:39
    Enables AC3/EAC3 audio demuxing. This is enabled only on Chromecast, since
    it only provides demuxing, and is only useful for AC3/EAC3 audio
    pass-through to HDMI sink on Chromecast.

enable_all_proguard_optimizations  Default = false
    //build/config/android/config.gni:126
    Enables all ProGuard optimizations. These optimizations must not be
    enabled for instrumentation tests, since they cause code required by the
    tests to be removed.
    TODO(smaier): when buildbots get updated to set this flag, change the
    default to is_official_build

enable_app_list  Default = false
    //build/config/features.gni:61

enable_background  Default = false
    //chrome/common/features.gni:26
    Enables support for background apps.

enable_basic_printing  Default = true
    //build/config/features.gni:113
    Enable basic printing support and UI.

enable_blimp_client  Default = false
    //blimp/client/core/BUILD.gn:14
    Enables the blimp client. This is required to get the actual implementation
    of blimp.
    By default, only a dummy-implementation is provided.

enable_browser_cdms  Default = false
    //build/config/features.gni:72
    Enables browser side Content Decryption Modules. Required for embedders
    (e.g. Android and ChromeCast) that use a browser side CDM.

enable_captive_portal_detection  Default = true
    //build/config/features.gni:53

enable_clipboard_aurax11  Default = false
    //build/config/ui.gni:56
    Allow aura to access x11 clipboard.

enable_debugallocation  Default = true
    //base/allocator/BUILD.gn:13
    Provide a way to force disable debugallocation in Debug builds,
    e.g. for profiling (it's more rare to profile Debug builds,
    but people sometimes need to do that).

enable_extensions  Default = true
    //build/config/features.gni:27

enable_full_stack_frames_for_profiling  Default = false
    //build/config/compiler/BUILD.gn:50
    Compile in such a way as to make it possible for the profiler to unwind full
    stack frames. Setting this flag has a large effect on the performance of the
    generated code than just setting profiling, but gives the profiler more
    information to analyze.
    Requires profiling to be set to true.

enable_google_now  Default = false
    //chrome/common/features.gni:13
    Google Now is disabled to prepare for its removal.
    http://crbug.com/539674

enable_hangout_services_extension  Default = false
    //build/config/features.gni:76
    Hangout services is an extension that adds extra features to Hangouts.
    For official GYP builds, this flag is set.

enable_hevc_demuxing  Default = false
    //media/media_options.gni:46
    Enable HEVC/H265 demuxing. Actual decoding must be provided by the
    platform. Enable by default for Chromecast.

enable_hotwording  Default = false
    //chrome/browser/BUILD.gn:29
    'Ok Google' hotwording is disabled by default. Set to true to enable. (This
    will download a closed-source NaCl module at startup.) Chrome-branded
    ChromeOS builds have this enabled by default.

enable_incremental_dx  Default = true
    //build/config/android/config.gni:132
    Speed up dexing using dx --incremental.

enable_incremental_javac  Default = false
    //build/config/android/config.gni:129
    Speed up incremental compiles by compiling only changed files.

enable_internal_app_remoting_targets  Default = false
    //remoting/remoting_options.gni:13
    Set this to enable building internal AppRemoting apps.

enable_ipc_fuzzer  Default = false
    //tools/ipc_fuzzer/ipc_fuzzer.gni:14

enable_iterator_debugging  Default = true
    //build/config/BUILD.gn:33
    When set (the default) enables C++ iterator debugging in debug builds.
    Iterator debugging is always off in release builds (technically, this flag
    affects the "debug" config, which is always available but applied by
    default only in debug builds).
   
    Iterator debugging is generally useful for catching bugs. But it can
    introduce extra locking to check the state of an iterator against the state
    of the current object. For iterator- and thread-heavy code, this can
    significantly slow execution.

enable_leakcanary  Default = false
    //third_party/leakcanary/config.gni:6

enable_mdns  Default = true
    //build/config/features.gni:25
    Multicast DNS.

enable_media_router  Default = true
    //build/config/features.gni:47
    Enables the Media Router.

enable_mojo_media  Default = true
    //media/media_options.gni:75
    Experiment to enable mojo media services (e.g. "renderer", "cdm", see
    |mojo_media_services|). When enabled, selected mojo paths will be enabled in
    the media pipeline and corresponding services will hosted in the selected
    remote process (e.g. "utility" process, see |mojo_media_host|).

enable_mse_mpeg2ts_stream_parser  Default = false
    //media/media_options.gni:42

enable_nacl  Default = true
    //build/config/features.gni:34
    Enables Native Client support.
    Temporarily disable nacl on arm64 linux to get rid of compilation errors.
    TODO(mcgrathr): When mipsel-nacl-clang is available, drop the exclusion.

enable_nocompile_tests  Default = false
    //build/nocompile.gni:62
    TODO(crbug.com/105388): Disabled until http://crbug.com/105388 is resolved.

enable_oilpan  Default = true
    //third_party/WebKit/public/features.gni:7
    Enables the Oilpan garbage-collection infrastructure.

enable_one_click_signin  Default = false
    //chrome/common/features.gni:29

enable_package_mash_services  Default = false
    //chrome/common/features.gni:33
    Set to true to bundle all the mash related mojo services into chrome.
    Specify --mash to chrome to have chrome start the mash environment.

enable_pdf  Default = true
    //build/config/features.gni:29

enable_plugin_installation  Default = false
    //build/config/features.gni:59

enable_plugins  Default = true
    //build/config/features.gni:28

enable_print_preview  Default = true
    //build/config/features.gni:117
    Enable printing with print preview. It does not imply
    enable_basic_printing. It's possible to build Chrome with preview only.

enable_profiling  Default = false
    //build/config/compiler/compiler.gni:22
    Compile in such a way as to enable profiling of the generated code. For
    example, don't omit the frame pointer and leave in symbols.

enable_remoting  Default = true
    //build/config/features.gni:65

enable_remoting_jscompile  Default = false
    //remoting/remoting_options.gni:10
    Set this to run the jscompile checks after building the webapp.

enable_resource_whitelist_generation  Default = false
    //tools/grit/grit_rule.gni:88
    Enables used resource whitelist generation.

enable_session_service  Default = true
    //build/config/features.gni:57
    Enables use of the session service, which is enabled by default.
    Android stores them separately on the Java side.

enable_supervised_users  Default = true
    //build/config/features.gni:63

enable_test_mojo_media_client  Default = false
    //media/media_options.gni:79
    Enable the TestMojoMediaClient to be used in MojoMediaApplication. This is
    for testing only and will override the default platform MojoMediaClient.

enable_video_hole  Default = false
    //build/config/features.gni:68
    Enable hole punching for the protected video.

enable_vulkan  Default = false
    //build/config/ui.gni:53
    Enable experimental vulkan backend.

enable_wayland_server  Default = false
    //build/config/ui.gni:50
    Indicates if Wayland display server support is enabled.

enable_webrtc  Default = true
    //build/config/features.gni:44
    Enables WebRTC.

enable_websockets  Default = true
    //net/BUILD.gn:48
    WebSockets and socket stream code are not used on iOS and are optional in
    cronet.

enable_widevine  Default = false
    //third_party/widevine/cdm/widevine.gni:7
    Allow widevinecdmadapter to be built in Chromium.

enable_wifi_display  Default = false
    //build/config/features.gni:99
    Enables Wi-Fi Display functionality
    WARNING: This enables MPEG Transport Stream (MPEG-TS) encoding!

exclude_unwind_tables  Default = false
    //build/config/compiler/BUILD.gn:65
    Omit unwind support in official builds to save space.
    We can use breakpad for these builds.

fatal_linker_warnings  Default = true
    //build/config/compiler/BUILD.gn:88
    Enable fatal linker warnings. Building Chromium with certain versions
    of binutils can cause linker warning.
    See: https://bugs.chromium.org/p/chromium/issues/detail?id=457359

ffmpeg_branding  Default = "Chromium"
    //third_party/ffmpeg/ffmpeg_options.gni:33
    Controls whether we build the Chromium or Google Chrome version of FFmpeg.
    The Google Chrome version contains additional codecs. Typical values are
    Chromium, Chrome, ChromiumOS, and ChromeOS.

fieldtrial_testing_like_official_build  Default = false
    //build/config/features.gni:93
    Set to true make a build that disables activation of field trial tests
    specified in testing/variations/fieldtrial_testing_config_*.json.
    Note: this setting is ignored if is_chrome_branded.

findbugs_verbose  Default = false
    //build/config/android/config.gni:96
    Set to true to enable verbose findbugs logging. This does nothing if
    run_findbugs is false.

full_wpo_on_official  Default = false
    //build/config/compiler/compiler.gni:57

gdb_index  Default = false
    //build/config/compiler/BUILD.gn:69
    If true, gold linker will save symbol table inside object files.
    This speeds up gdb startup by 60%

gold_path  Default = false
    //build/config/compiler/BUILD.gn:54
    When we are going to use gold we need to find it.
    This is initialized below, after use_gold might have been overridden.

goma_dir  Default = "/home/hanpfei0306/goma"
    //build/toolchain/goma.gni:20
    Absolute directory containing the Goma source code.

google_api_key  Default = ""
    //google_apis/BUILD.gn:45
    Set these to bake the specified API keys and OAuth client
    IDs/secrets into your build.
   
    If you create a build without values baked in, you can instead
    set environment variables to provide the keys at runtime (see
    src/google_apis/google_api_keys.h for details).  Features that
    require server-side APIs may fail to work if no keys are
    provided.
   
    Note that if you are building an official build or if
    use_official_google_api_keys has been set to trie (explicitly or
    implicitly), these values will be ignored and the official
    keys will be used instead.

google_default_client_id  Default = ""
    //google_apis/BUILD.gn:48
    See google_api_key.

google_default_client_secret  Default = ""
    //google_apis/BUILD.gn:51
    See google_api_key.

host_cpu  Default = "x64"
    (Internally set; try `gn help host_cpu`.)

host_os  Default = "linux"
    (Internally set; try `gn help host_os`.)

host_toolchain  Default = ""
    //build/config/BUILDCONFIG.gn:143
    This should not normally be set as a build argument.  It's here so that
    every toolchain can pass through the "global" value via toolchain_args().

icu_use_data_file  Default = true
    //third_party/icu/config.gni:15
    Tells icu to load an external data file rather than rely on the icudata
    being linked directly into the binary.
   
    This flag is a bit confusing. As of this writing, icu.gyp set the value to
    0 but common.gypi sets the value to 1 for most platforms (and the 1 takes
    precedence).
   
    TODO(GYP) We'll probably need to enhance this logic to set the value to
    true or false in similar circumstances.

is_asan  Default = false
    //build/config/sanitizers/sanitizers.gni:7
    Compile for Address Sanitizer to find memory bugs.

is_cast_desktop_build  Default = false
    //build/config/chromecast_build.gni:26
    True if Chromecast build is targeted for linux desktop. This type of build
    is useful for testing and development, but currently supports only a subset
    of Cast functionality. Though this defaults to true for x86 Linux devices,
    this should be overriden manually for an embedded x86 build.
    TODO(slan): Remove instances of this when x86 is a fully supported platform.

is_cfi  Default = false
    //build/config/sanitizers/sanitizers.gni:54
    Compile with Control Flow Integrity to protect virtual calls and casts.
    See http://clang.llvm.org/docs/ControlFlowIntegrity.html
   
    TODO(pcc): Remove this flag if/when CFI is enabled in official builds.

is_chrome_branded  Default = false
    //build/config/chrome_build.gni:9
    Select the desired branding flavor. False means normal Chromium branding,
    true means official Google Chrome branding (requires extra Google-internal
    resources).

is_chromecast  Default = false
    //build/config/chromecast_build.gni:11
    Set this true for a Chromecast build. Chromecast builds are supported on
    Linux and Android.

is_clang  Default = true
    //build/config/BUILDCONFIG.gn:134
    Set to true when compiling with the Clang compiler. Typically this is used
    to configure warnings.

is_component_build  Default = false
    //build/config/BUILDCONFIG.gn:117
    Component build. Setting to true compiles targets declared as "components"
    as shared libraries loaded dynamically. This speeds up development time.
    When false, components will be linked statically.

is_component_ffmpeg  Default = true
    //third_party/ffmpeg/ffmpeg_options.gni:40
    Set true to build ffmpeg as a shared library. NOTE: this means we should
    always consult is_component_ffmpeg instead of is_component_build for
    ffmpeg targets. This helps linux chromium packagers that swap out our
    ffmpeg.so with their own. See discussion here
    https://groups.google.com/a/chromium.org/forum/#!msg/chromium-packagers/R5rcZXWxBEQ/B6k0zzmJbvcJ

is_debug  Default = true
    //build/config/BUILDCONFIG.gn:127
    Debug build. Enabling official builds automatically sets is_debug to false.

is_desktop_linux  Default = true
    //build/config/BUILDCONFIG.gn:130
    Whether we're a traditional desktop unix.

is_java_debug  Default = true
    //build/config/android/config.gni:103
    Java debug on Android. Having this on enables multidexing, and turning it
    off will enable proguard.

is_lsan  Default = false
    //build/config/sanitizers/sanitizers.gni:10
    Compile for Leak Sanitizer to find leaks.

is_msan  Default = false
    //build/config/sanitizers/sanitizers.gni:13
    Compile for Memory Sanitizer to find uninitialized reads.

is_multi_dll_chrome  Default = false
    //build/config/chrome_build.gni:13
    Break chrome.dll into multple pieces based on process type. Only available
    on Windows.

is_nacl_glibc  Default = false
    //build/config/nacl/config.gni:11
    Native Client supports both Newlib and Glibc C libraries where Newlib
    is assumed to be the default one; use this to determine whether Glibc
    is being used instead.

is_official_build  Default = false
    //build/config/BUILDCONFIG.gn:124
    Set to enable the official build level of optimization. This has nothing
    to do with branding, but enables an additional level of optimization above
    release (!is_debug). This might be better expressed as a tri-state
    (debug, release, official) but for historical reasons there are two
    separate flags.

is_syzyasan  Default = false
    //build/config/sanitizers/sanitizers.gni:48
    Enable building with SyzyAsan which can find certain types of memory
    errors. Only works on Windows. See
    https://github.com/google/syzygy/wiki/SyzyASanHowTo

is_tsan  Default = false
    //build/config/sanitizers/sanitizers.gni:16
    Compile for Thread Sanitizer to find threading bugs.

is_ubsan  Default = false
    //build/config/sanitizers/sanitizers.gni:20
    Compile for Undefined Behaviour Sanitizer to find various types of
    undefined behaviour (excludes vptr checks).

is_ubsan_no_recover  Default = false
    //build/config/sanitizers/sanitizers.gni:23
    Halt the program if a problem is detected.

is_ubsan_null  Default = false
    //build/config/sanitizers/sanitizers.gni:26
    Compile for Undefined Behaviour Sanitizer's null pointer checks.

is_ubsan_security  Default = false
    //build/config/sanitizers/sanitizers.gni:74
    Enables core ubsan security features. Will later be removed once it matches
    is_ubsan.

is_ubsan_vptr  Default = false
    //build/config/sanitizers/sanitizers.gni:29
    Compile for Undefined Behaviour Sanitizer's vptr checks.

is_win_fastlink  Default = false
    //build/config/compiler/compiler.gni:39
    Tell VS to create a PDB that references information in .obj files rather
    than copying it all. This should improve linker performance. mspdbcmf.exe
    can be used to convert a fastlink pdb to a normal one.

link_pulseaudio  Default = false
    //media/media_options.gni:13
    Allows distributions to link pulseaudio directly (DT_NEEDED) instead of
    using dlopen. This helps with automated detection of ABI mismatches and
    prevents silent errors.

linux_use_bundled_binutils  Default = true
    //build/config/compiler/BUILD.gn:41

llvm_force_head_revision  Default = false
    //build/config/compiler/BUILD.gn:83
    If this is set to true, or if LLVM_FORCE_HEAD_REVISION is set to 1
    in the environment, we use the revision in the llvm repo to determine
    the CLANG_REVISION to use, instead of the version hard-coded into
    //tools/clang/scripts/update.py. This should only be used in
    conjunction with setting LLVM_FORCE_HEAD_REVISION in the
    environment when `gclient runhooks` is run as well.

mac_views_browser  Default = false
    //build/config/ui.gni:38
    Whether the entire browser uses toolkit-views on Mac instead of Cocoa.

media_use_ffmpeg  Default = true
    //media/media_options.gni:18
    Enable usage of FFmpeg within the media library. Used for most software
    based decoding, demuxing, and sometimes optimized FFTs. If disabled,
    implementors must provide their own demuxers and decoders.

media_use_libvpx  Default = true
    //media/media_options.gni:22
    Enable usage of libvpx within the media library. Used for software based
    decoding of VP9 and VP8A type content.

metrics_use_blimp  Default = false
    //components/metrics/BUILD.gn:7
    Overrides os name in uma metrics log to "Blimp".

mojo_media_host  Default = "gpu"
    //media/media_options.gni:113

mojo_media_services  Default = ["cdm", "audio_decoder"]
    //media/media_options.gni:109

msan_track_origins  Default = 2
    //build/config/sanitizers/sanitizers.gni:34
    Track where uninitialized memory originates from. From fastest to slowest:
    0 - no tracking, 1 - track only the initial allocation site, 2 - track the
    chain of stores leading from allocation site to use site.

openmax_big_float_fft  Default = true
    //third_party/openmax_dl/dl/BUILD.gn:10
    Override this value to build with small float FFT tables

optimize_for_size  Default = false
    //build/config/compiler/BUILD.gn:75
    If true, optimize for size. Does not affect windows builds.
    Linux & Mac favor speed over size.
    TODO(brettw) it's weird that Mac and desktop Linux are different. We should
    explore favoring size over speed in this case as well.

override_build_date  Default = "N/A"
    //base/BUILD.gn:35
    Override this value to give a specific build date.
    See //base/build_time.cc and //build/write_build_date_header.py for more
    details and the expected format.

ozone_auto_platforms  Default = false
    //ui/ozone/ozone.gni:10
    Select platforms automatically. Turn this off for manual control.

ozone_platform  Default = ""
    //ui/ozone/ozone.gni:22
    The platform that will be active by default.

ozone_platform_caca  Default = false
    //ui/ozone/ozone.gni:25
    Enable individual platforms.

ozone_platform_cast  Default = false
    //ui/ozone/ozone.gni:26

ozone_platform_gbm  Default = false
    //ui/ozone/ozone.gni:27

ozone_platform_headless  Default = false
    //ui/ozone/ozone.gni:28

ozone_platform_wayland  Default = false
    //ui/ozone/ozone.gni:30

ozone_platform_x11  Default = false
    //ui/ozone/ozone.gni:29

packages_directory  Default = "Packages"
    //services/shell/public/constants.gni:7
    Service package directories are created within this subdirectory.

pkg_config  Default = ""
    //build/config/linux/pkg_config.gni:33
    A pkg-config wrapper to call instead of trying to find and call the right
    pkg-config directly. Wrappers like this are common in cross-compilation
    environments.
    Leaving it blank defaults to searching PATH for 'pkg-config' and relying on
    the sysroot mechanism to find the right .pc files.

proguard_verbose  Default = false
    //build/config/android/config.gni:99
    Enables verbose proguard output (summaries and unfiltered output).

proprietary_codecs  Default = false
    //build/config/features.gni:51
    Enables proprietary codecs and demuxers; e.g. H264, AAC, MP3, and MP4.
    We always build Google Chrome and Chromecast with proprietary codecs.

remoting_enable_cardboard  Default = false
    //remoting/remoting_options.gni:16
    Set this to enable Android Chromoting Cardboard Activity.

remove_webcore_debug_symbols  Default = false
    //third_party/WebKit/Source/config.gni:18
    If true, doesn't compile debug symbols into webcore reducing the
    size of the binary and increasing the speed of gdb.

repack_whitelist  Default = ""
    //tools/grit/repack.gni:8
    Absolute path to a resource whitelist (generated using
    //tools/resources/find_used_resources.py).

root_extra_deps  Default = []
    //BUILD.gn:30
    A list of extra dependencies to add to the root target. This allows a
    checkout to add additional targets without explicitly changing any checked-
    in files.

rtc_build_expat  Default = true
    //third_party/webrtc/build/webrtc.gni:40
    Disable these to not build components which can be externally provided.

rtc_build_json  Default = true
    //third_party/webrtc/build/webrtc.gni:41

rtc_build_libevent  Default = true
    //third_party/webrtc/build/webrtc.gni:80

rtc_build_libjpeg  Default = true
    //third_party/webrtc/build/webrtc.gni:42

rtc_build_libsrtp  Default = true
    //third_party/webrtc/build/webrtc.gni:43

rtc_build_libvpx  Default = true
    //third_party/webrtc/build/webrtc.gni:44

rtc_build_libyuv  Default = true
    //third_party/webrtc/build/webrtc.gni:46

rtc_build_openmax_dl  Default = true
    //third_party/webrtc/build/webrtc.gni:47

rtc_build_opus  Default = true
    //third_party/webrtc/build/webrtc.gni:48

rtc_build_ssl  Default = true
    //third_party/webrtc/build/webrtc.gni:49

rtc_build_usrsctp  Default = true
    //third_party/webrtc/build/webrtc.gni:50

rtc_build_with_neon  Default = true
    //third_party/webrtc/build/webrtc.gni:96

rtc_desktop_capture_supported  Default = false
    //third_party/webrtc/modules/BUILD.gn:15
    Desktop capturer is supported only on Windows, OSX and Linux.

rtc_enable_android_opensl  Default = false
    //third_party/webrtc/build/webrtc.gni:58

rtc_enable_bwe_test_logging  Default = false
    //third_party/webrtc/modules/remote_bitrate_estimator/BUILD.gn:14
    Set this to true to enable BWE test logging.

rtc_enable_data_logging  Default = false
    //third_party/webrtc/build/webrtc.gni:34
    Enable data logging. Produces text files with data logged within engines
    which can be easily parsed for offline processing.

rtc_enable_libevent  Default = true
    //third_party/webrtc/build/webrtc.gni:79

rtc_enable_protobuf  Default = true
    //third_party/webrtc/build/webrtc.gni:37
    Enables the use of protocol buffers for debug recordings.

rtc_have_dbus_glib  Default = false
    //third_party/webrtc/build/webrtc.gni:53
    Disable by default.

rtc_include_ilbc  Default = false
    //third_party/webrtc/build/webrtc.gni:132
    Include the iLBC audio codec?

rtc_include_opus  Default = true
    //third_party/webrtc/build/webrtc.gni:16
    Disable this to avoid building the Opus audio codec.

rtc_initialize_ffmpeg  Default = false
    //third_party/webrtc/build/webrtc.gni:120
    FFmpeg must be initialized for |H264DecoderImpl| to work. This can be done
    by WebRTC during |H264DecoderImpl::InitDecode| or externally. FFmpeg must
    only be initialized once. Projects that initialize FFmpeg externally, such
    as Chromium, must turn this flag off so that WebRTC does not also
    initialize.

rtc_jsoncpp_root  Default = "//third_party/jsoncpp/source/include"
    //third_party/webrtc/build/webrtc.gni:23
    Used to specify an external Jsoncpp include path when not compiling the
    library that comes with WebRTC (i.e. rtc_build_json == 0).

rtc_libvpx_build_vp9  Default = true
    //third_party/webrtc/build/webrtc.gni:45

rtc_prefer_fixed_point  Default = true
    //third_party/webrtc/build/webrtc.gni:84

rtc_relative_path  Default = true
    //third_party/webrtc/build/webrtc.gni:19
    Disable to use absolute header paths for some libraries.

rtc_restrict_logging  Default = true
    //third_party/webrtc/build/webrtc.gni:65

rtc_sanitize_coverage  Default = ""
    //third_party/webrtc/build/webrtc.gni:72
    Set to "func", "block", "edge" for coverage generation.
    At unit test runtime set UBSAN_OPTIONS="coverage=1".
    It is recommend to set include_examples=0.
    Use llvm's sancov -html-report for human readable reports.
    See http://clang.llvm.org/docs/SanitizerCoverage.html .

rtc_ssl_root  Default = ""
    //third_party/webrtc/build/webrtc.gni:27
    Used to specify an external OpenSSL include path when not compiling the
    library that comes with WebRTC (i.e. rtc_build_ssl == 0).

rtc_use_gtk  Default = false
    //third_party/webrtc/build/webrtc.gni:124
    Build sources requiring GTK. NOTICE: This is not present in Chrome OS
    build environments, even if available for Chromium builds.

rtc_use_h264  Default = false
    //third_party/webrtc/build/webrtc.gni:110
    Enable this to build OpenH264 encoder/FFmpeg decoder. This is supported on
    all platforms except Android and iOS. Because FFmpeg can be built
    with/without H.264 support, |ffmpeg_branding| has to separately be set to a
    value that includes H.264, for example "Chrome". If FFmpeg is built without
    H.264, compilation succeeds but |H264DecoderImpl| fails to initialize. See
    also: |rtc_initialize_ffmpeg|.
    CHECK THE OPENH264, FFMPEG AND H.264 LICENSES/PATENTS BEFORE BUILDING.
    http://www.openh264.org, https://www.ffmpeg.org/

rtc_use_lto  Default = false
    //third_party/webrtc/build/webrtc.gni:63
    Link-Time Optimizations.
    Executes code generation at link-time instead of compile-time.
    https://gcc.gnu.org/wiki/LinkTimeOptimization

rtc_use_objc_h264  Default = false
    //third_party/webrtc/build/webrtc.gni:100
    Enable this to use HW H.264 encoder/decoder on iOS PeerConnections.
    Enabling this may break interop with Android clients that support H264.

rtc_use_openmax_dl  Default = true
    //third_party/webrtc/build/webrtc.gni:89

rtc_use_quic  Default = false
    //third_party/webrtc/build/webrtc.gni:113
    Determines whether QUIC code will be built.

run_findbugs  Default = false
    //build/config/android/config.gni:92
    Set to true to run findbugs on JAR targets.

safe_browsing_mode  Default = 1
    //build/config/features.gni:87

sanitizer_coverage_flags  Default = ""
    //build/config/sanitizers/sanitizers.gni:90
    Value for -fsanitize-coverage flag. Setting this causes
    use_sanitizer_coverage to be enabled.
    Default value when unset and use_afl=true:
    trace-pc
    Default value when unset and use_sanitizer_coverage=true:
        edge,indirect-calls,8bit-counters

skia_build_no_opts  Default = false
    //skia/BUILD.gn:28
    TODO(crbug.com/607933): Once GYP is no longer supported, port iOS to use
    optimised skia.

skia_whitelist_serialized_typefaces  Default = false
    //skia/BUILD.gn:24

symbol_level  Default = -1
    //build/config/compiler/compiler.gni:18
    How many symbols to include in the build. This affects the performance of
    the build since the symbols are large and dealing with them is slow.
      2 means regular build with symbols.
      1 means minimal symbols, usually enough for backtraces only.
      0 means no symbols.
      -1 means auto-set according to debug/release and platform.

system_libdir  Default = "lib"
    //build/config/linux/pkg_config.gni:44
    CrOS systemroots place pkgconfig files at /usr/share/pkgconfig
    and one of /usr/lib/pkgconfig or /usr/lib64/pkgconfig
    depending on whether the systemroot is for a 32 or 64 bit architecture.
   
    When build under GYP, CrOS board builds specify the 'system_libdir' variable
    as part of the GYP_DEFINES provided by the CrOS emerge build or simple
    chrome build scheme. This variable permits controlling this for GN builds
    in similar fashion by setting the `system_libdir` variable in the build's
    args.gn file to 'lib' or 'lib64' as appropriate for the target architecture.

system_webview_package_name  Default = "com.android.webview"
    //android_webview/BUILD.gn:14
    Package name of the system_webview_apk target.

syzygy_optimize  Default = false
    //build/config/compiler/compiler.gni:64
    Generate Syzygy optimized binaries. Syzygy optimize mode is a profile
    guided optimization that reorders code for better locality.

target_cpu  Default = ""
    (Internally set; try `gn help target_cpu`.)

target_os  Default = ""
    (Internally set; try `gn help target_os`.)

target_sysroot  Default = ""
    //build/config/sysroot.gni:13
    The absolute path of the sysroot that is applied when compiling using
    the target toolchain.

target_sysroot_dir  Default = ""
    //build/config/sysroot.gni:16
    The absolute path to directory containing sysroots for linux 32 and 64bit

toolkit_views  Default = true
    //build/config/ui.gni:35

treat_warnings_as_errors  Default = true
    //build/config/compiler/BUILD.gn:30
    Default to warnings as errors for default workflow, where we catch
    warnings with known toolchains. Allow overriding this e.g. for Chromium
    builds on Linux that could use a different version of the compiler.
    With GCC, warnings in no-Chromium code are always not treated as errors.

use_afl  Default = false
    //build/config/sanitizers/sanitizers.gni:70
    Compile for fuzzing with AFL.

use_allocator  Default = "tcmalloc"
    //build/config/allocator.gni:24
    Memory allocator to use. Set to "none" to use default allocator.

use_alsa  Default = false
    //media/media_options.gni:55
    Enables runtime selection of ALSA library for audio.

use_ash  Default = false
    //build/config/ui.gni:22
    Indicates if Ash is enabled. Ash is the Aura Shell which provides a
    desktop-like environment for Aura. Requires use_aura = true

use_aura  Default = true
    //build/config/ui.gni:31
    Indicates if Aura is enabled. Aura is a low-level windowing library, sort
    of a replacement for GDI or GTK.

use_base_test_suite  Default = false
    //sandbox/linux/BUILD.gn:19
    On Android, use plain GTest.

use_cfi_cast  Default = false
    //build/config/sanitizers/sanitizers.gni:59
    Enable checks for bad casts: derived cast and unrelated cast.
    TODO(krasin): remove this, when we're ready to add these checks by default.
    https://crbug.com/626794

use_cfi_diag  Default = false
    //build/config/sanitizers/sanitizers.gni:63
    By default, Control Flow Integrity will crash the program if it detects a
    violation. Set this to true to print detailed diagnostics instead.

use_cras  Default = false
    //media/media_options.gni:31
    Override to dynamically link the cras (ChromeOS audio) library.

use_cups  Default = true
    //build/config/features.gni:95

use_custom_libcxx  Default = false
    //build/config/sanitizers/sanitizers.gni:101

use_dbus  Default = true
    //build/config/features.gni:104

use_debug_fission  Default = "default"
    //build/config/compiler/compiler.gni:34
    use_debug_fission: whether to use split DWARF debug info
    files. This can reduce link time significantly, but is incompatible
    with some utilities such as icecc and ccache. Requires gold and
    gcc >= 4.8 or clang.
    http://gcc.gnu.org/wiki/DebugFission
   
    This is a placeholder value indicating that the code below should set
    the default.  This is necessary to delay the evaluation of the default
    value expression until after its input values such as use_gold have
    been set, e.g. by a toolchain_args() block.

use_drfuzz  Default = false
    //build/config/sanitizers/sanitizers.gni:78
    Compile for fuzzing with Dr. Fuzz
    See http://www.chromium.org/developers/testing/dr-fuzz

use_errorprone_java_compiler  Default = false
    //build/config/android/config.gni:106
    Set to true to enable the Errorprone compiler

use_experimental_allocator_shim  Default = true
    //build/config/allocator.gni:29
    TODO(primiano): this should just become the default without having a flag,
    but we need to get there first. http://crbug.com/550886 .
    Causes all the allocations to be routed via allocator_shim.cc.

use_external_popup_menu  Default = false
    //build/config/features.gni:120
    Whether or not to use external popup menu.

use_gconf  Default = true
    //build/config/features.gni:108
    Option controlling the use of GConf (the classic GNOME configuration
    system).

use_gio  Default = true
    //build/config/features.gni:110

use_glib  Default = true
    //build/config/ui.gni:47
    Whether we should use glib, a low level C utility library.

use_gold  Default = true
    //build/config/compiler/compiler.gni:70
    Whether to use the gold linker from binutils instead of lld or bfd.

use_goma  Default = false
    //build/toolchain/goma.gni:12
    Set to true to enable distributed compilation using Goma.

use_gtk3  Default = false
    //build/config/ui.gni:41
    Whether we should use GTKv3 instead of GTKv2.

use_kerberos  Default = true
    //net/BUILD.gn:54
    Enable Kerberos authentication. It is disabled by default on ChromeOS, iOS,
    Chromecast, at least for now. This feature needs configuration (krb5.conf
    and so on).

use_libfuzzer  Default = false
    //build/config/sanitizers/sanitizers.gni:67
    Compile for fuzzing with LLVM LibFuzzer.
    See http://www.chromium.org/developers/testing/libfuzzer

use_libjpeg_turbo  Default = true
    //third_party/BUILD.gn:15
    Uses libjpeg_turbo as the jpeg implementation. Has no effect if
    use_system_libjpeg is set.

use_libpci  Default = false
    //gpu/config/BUILD.gn:11
    Use the PCI lib to collect GPU information on Linux.

use_lld  Default = false
    //build/toolchain/toolchain.gni:23
    Set to true to use lld, the LLVM linker. This flag may be used on Windows
    with the shipped LLVM toolchain, or on Linux with a self-built top-of-tree
    LLVM toolchain (see llvm_force_head_revision in
    build/config/compiler/BUILD.gn).

use_locally_built_instrumented_libraries  Default = false
    //build/config/sanitizers/sanitizers.gni:43
    Use dynamic libraries instrumented by one of the sanitizers instead of the
    standard system libraries. Set this flag to build the libraries from source.

use_low_memory_buffer  Default = false
    //media/media_options.gni:34
    Use low-memory buffers on non-Android builds of Chromecast.

use_low_quality_image_interpolation  Default = true
    //third_party/WebKit/Source/config.gni:25
    If true, defaults image interpolation to low quality.

use_official_google_api_keys  Default = ""
    //google_apis/BUILD.gn:30
    You can set the variable 'use_official_google_api_keys' to true
    to use the Google-internal file containing official API keys
    for Google Chrome even in a developer build.  Setting this
    variable explicitly to true will cause your build to fail if the
    internal file is missing.
   
    The variable is documented here, but not handled in this file;
    see //google_apis/determine_use_official_keys.gypi for the
    implementation.
   
    Set the variable to false to not use the internal file, even when
    it exists in your checkout.
   
    Leave it unset or set to "" to have the variable
    implicitly set to true if you have
    src/google_apis/internal/google_chrome_api_keys.h in your
    checkout, and implicitly set to false if not.
   
    Note that official builds always behave as if the variable
    was explicitly set to true, i.e. they always use official keys,
    and will fail to build if the internal file is missing.

use_openh264  Default = false
    //third_party/openh264/openh264_args.gni:11
    Enable this to build OpenH264 (for encoding, not decoding).
    CHECK THE OPENH264 LICENSE/PATENT BEFORE BUILDING, see
    http://www.openh264.org/.

use_order_profiling  Default = false
    //build/config/android/config.gni:136
    Adds intrumentation to each function. Writes a file with the order that
    functions are called at startup.

use_ozone  Default = false
    //build/config/ui.gni:27
    Indicates if Ozone is enabled. Ozone is a low-level library layer for Linux
    that does not require X11. Enabling this feature disables use of glib, x11,
    Pango, and Cairo. Default to false on non-Chromecast builds.

use_platform_icu_alternatives  Default = false
    //url/features.gni:10
    Enables the use of ICU alternatives in lieu of ICU. The flag is used
    for Cronet to reduce the size of the Cronet binary.

use_prebuilt_instrumented_libraries  Default = false
    //build/config/sanitizers/sanitizers.gni:39
    Use dynamic libraries instrumented by one of the sanitizers instead of the
    standard system libraries. Set this flag to download prebuilt binaries from
    GCS.

use_pulseaudio  Default = false
    //media/media_options.gni:52
    Enables runtime selection of PulseAudio library.

use_sanitizer_coverage  Default = false
    //build/config/sanitizers/sanitizers.gni:106

use_srtp_boringssl  Default = true
    //third_party/libsrtp/BUILD.gn:6

use_sysroot  Default = true
    //build/config/sysroot.gni:18

use_system_harfbuzz  Default = false
    //third_party/harfbuzz-ng/BUILD.gn:17
    Blink uses a cutting-edge version of Harfbuzz; most Linux distros do not
    contain a new enough version of the code to work correctly. However,
    ChromeOS chroots (i.e, real ChromeOS builds for devices) do contain a
    new enough version of the library, and so this variable exists so that
    ChromeOS can build against the system lib and keep binary sizes smaller.

use_system_libjpeg  Default = false
    //third_party/BUILD.gn:11
    Uses system libjpeg. If true, overrides use_libjpeg_turbo.

use_system_sqlite  Default = false
    //third_party/sqlite/BUILD.gn:9
    Controls whether the build should uses the version of sqlite3 library
    shipped with the system (currently only supported on iOS) or the one
    shipped with Chromium source.

use_udev  Default = true
    //build/config/features.gni:102
    libudev usage. This currently only affects the content layer.

use_unofficial_version_number  Default = true
    //components/version_info/BUILD.gn:9

use_v4l2_codec  Default = false
    //media/gpu/args.gni:11
    Indicates if Video4Linux2 codec is used. This is used for all CrOS
    platforms which have v4l2 hardware encoder / decoder.

use_v4lplugin  Default = false
    //media/gpu/args.gni:7
    Indicates if V4L plugin is used.

use_vgem_map  Default = false
    //ui/ozone/ozone.gni:17
    This enables memory-mapped access to accelerated graphics buffers via the
    VGEM ("virtual GEM") driver. This is currently only available on Chrome OS
    kernels and affects code in the GBM ozone platform.
    TODO(dshwang): remove this flag when all gbm hardware supports vgem map.
    crbug.com/519587

use_vulcanize  Default = true
    //chrome/common/features.gni:23
    Use vulcanized HTML/CSS/JS resources to speed up WebUI (chrome://)
    pages. https://github.com/polymer/vulcanize

use_xcode_clang  Default = false
    //build/toolchain/toolchain.gni:33
    Compile with Xcode version of clang instead of hermetic version shipped
    with the build. Used on iOS to ship official builds (as they are built
    with the version of clang shipped with Xcode).

use_xkbcommon  Default = false
    //build/config/ui.gni:44
    Optional system libraries.

v8_can_use_fpu_instructions  Default = true
    //v8/BUILD.gn:63
    Similar to vfp but on MIPS.

v8_current_cpu  Default = "arm"
    //build/config/v8_target_cpu.gni:60
    This argument is declared here so that it can be overridden in toolchains.
    It should never be explicitly set by the user.

v8_deprecation_warnings  Default = false
    //v8/BUILD.gn:26
    Enable compiler warnings when using V8_DEPRECATED apis.

v8_embed_script  Default = ""
    //v8/BUILD.gn:32
    Embeds the given script into the snapshot.

v8_enable_backtrace  Default = ""
    //v8/gni/v8.gni:20
    Support for backtrace_symbols on linux.

v8_enable_disassembler  Default = ""
    //v8/BUILD.gn:35
    Sets -dENABLE_DISASSEMBLER.

v8_enable_gdbjit  Default = ""
    //v8/BUILD.gn:38
    Sets -dENABLE_GDB_JIT_INTERFACE.

v8_enable_handle_zapping  Default = true
    //v8/BUILD.gn:41
    Sets -dENABLE_HANDLE_ZAPPING.

v8_enable_i18n_support  Default = true
    //v8/BUILD.gn:45
    Enable ECMAScript Internationalization API. Enabling this feature will
    add a dependency on the ICU library.

v8_enable_slow_dchecks  Default = false
    //v8/BUILD.gn:48
    Enable slow dchecks.

v8_enable_verify_heap  Default = false
    //v8/BUILD.gn:23
    Sets -DVERIFY_HEAP.

v8_gcmole  Default = false
    //v8/gni/v8.gni:14
    Indicate if gcmole was fetched as a hook to make it available on swarming.

v8_has_valgrind  Default = false
    //v8/gni/v8.gni:11
    Indicate if valgrind was fetched as a custom deps to make it available on
    swarming.

v8_imminent_deprecation_warnings  Default = ""
    //v8/BUILD.gn:29
    Enable compiler warnings when using V8_DEPRECATE_SOON apis.

v8_interpreted_regexp  Default = false
    //v8/BUILD.gn:52
    Interpreted regexp engine exists as platform-independent alternative
    based where the regular expression is compiled to a bytecode.

v8_object_print  Default = ""
    //v8/BUILD.gn:55
    Sets -dOBJECT_PRINT.

v8_optimized_debug  Default = true
    //v8/gni/v8.gni:17
    Turns on compiler optimizations in V8 in Debug build.

v8_postmortem_support  Default = false
    //v8/BUILD.gn:60
    With post mortem support enabled, metadata is embedded into libv8 that
    describes various parameters of the VM for use by debuggers. See
    tools/gen-postmortem-metadata.py for details.

v8_snapshot_toolchain  Default = ""
    //v8/snapshot_toolchain.gni:34
    The v8 snapshot needs to be built by code that is compiled with a
    toolchain that matches the bit-width of the target CPU, but runs on
    the host.

v8_target_cpu  Default = ""
    //build/config/v8_target_cpu.gni:33
    This arg is used when we want to tell the JIT-generating v8 code
    that we want to have it generate for an architecture that is different
    than the architecture that v8 will actually run on; we then run the
    code under an emulator. For example, we might run v8 on x86, but
    generate arm code and run that under emulation.
   
    This arg is defined here rather than in the v8 project because we want
    some of the common architecture-specific args (like arm_float_abi or
    mips_arch_variant) to be set to their defaults either if the current_cpu
    applies *or* if the v8_current_cpu applies.
   
    As described below, you can also specify the v8_target_cpu to use
    indirectly by specifying a `custom_toolchain` that contains v8_$cpu in the
    name after the normal toolchain.
   
    For example, `gn gen --args="custom_toolchain=...:clang_x64_v8_arm64"`
    is equivalent to setting --args=`v8_target_cpu="arm64"`. Setting
    `custom_toolchain` is more verbose but makes the toolchain that is
    (effectively) being used explicit.
   
    v8_target_cpu can only be used to target one architecture in a build,
    so if you wish to build multiple copies of v8 that are targetting
    different architectures, you will need to do something more
    complicated involving multiple toolchains along the lines of
    custom_toolchain, above.

v8_test_isolation_mode  Default = "noop"
    //v8/gni/isolate.gni:11
    Sets the test isolation mode (noop|prepare|check).

v8_use_external_startup_data  Default = ""
    //v8/gni/v8.gni:28
    Use external files for startup data blobs:
    the JS builtins sources and the start snapshot.

v8_use_mips_abi_hardfloat  Default = true
    //v8/BUILD.gn:66
    Similar to the ARM hard float ABI but on MIPS.

v8_use_snapshot  Default = true
    //v8/gni/v8.gni:24
    Enable the snapshot feature, for fast context creation.
    http://v8project.blogspot.com/2015/09/custom-startup-snapshots.html

webapk_background_color  Default = "4291624959L"
    //chrome/android/webapk/shell_apk/BUILD.gn:26

webapk_display_mode  Default = "standalone"
    //chrome/android/webapk/shell_apk/BUILD.gn:23

webapk_icon_url  Default = "http://www.template.com/icon.png"
    //chrome/android/webapk/shell_apk/BUILD.gn:29
    The URL of the app icon. Empty if the app icon is generated.

webapk_manifest_package_origin  Default = "template"
    //chrome/android/webapk/shell_apk/BUILD.gn:10
    The origin URL of the WebAPK. Used to generate a unique package name for
    WebAPK. Example: "foo.com"

webapk_name  Default = "Longer Sample WebAPK Name"
    //chrome/android/webapk/shell_apk/BUILD.gn:20

webapk_orientation  Default = "portrait"
    //chrome/android/webapk/shell_apk/BUILD.gn:24

webapk_runtime_host  Default = "com.google.android.apps.chrome"
    //chrome/android/webapk/shell_apk/BUILD.gn:13
    The browser that the WebAPK will be bound to.

webapk_scope_url  Default = "https://www.template.com"
    //chrome/android/webapk/shell_apk/BUILD.gn:22

webapk_scope_url_host  Default = "www.template.com"
    //chrome/android/webapk/shell_apk/BUILD.gn:32
    Host part of |webapk_scope_url|.

webapk_short_name  Default = "Sample WebAPK"
    //chrome/android/webapk/shell_apk/BUILD.gn:21

webapk_start_url  Default = "https://www.template.com/home_page"
    //chrome/android/webapk/shell_apk/BUILD.gn:19
    Attributes from Web Manifest.

webapk_theme_color  Default = "4288230399L"
    //chrome/android/webapk/shell_apk/BUILD.gn:25

webapk_web_manifest_url  Default = "https://www.template.com/manifest.json"
    //chrome/android/webapk/shell_apk/BUILD.gn:16
    The Url of the Web Manifest file.

win_console_app  Default = false
    //build/config/win/console_app.gni:12
    If true, builds as a console app (rather than a windowed app), which allows
    logging to be printed to the user. This will cause a terminal window to pop
    up when the executable is not run from the command line, so should only be
    used for development. Only has an effect on Windows builds.

这个工具的参数为--list [output_dir]。 这个工具展示了每一个标记配置项的名称,默认值,创建该标记配置项的配置文件,以及标记配置项作用的说明。

gn gen

usage:  gn gen [] 

这个工具根据当前的代码树及配置,产生ninja文件,并把它们放在给定得目录下。输出目录可以是源码库的绝对地址,比如//out/foo,也可以是相对于当前目录的地址,如:out/foo。 上面的gn args 等价于,在启动编辑器编辑参数,在编辑器编辑了参数退出之后,执行gn gen

gn clean

usage:  gn clean 

这个命令用于对历史编译进行清理。它会删除输出目录下除了args.gn外得内容,并创建一个可以重新产生构建配置的Ninja构建环境。

gn desc

usage:  gn desc  

显示关于一个给定target或config的信息。构建参数取自给出的可以是一个target标签,一个config标签,或一个标签模式(参考"gn help label_pattern")。标签模式只匹配targets。

如我们要查看chromium中net模块相关得所有信息:

$ gn desc out/Default net
$ buildtools/linux64/gn desc out/Default/ net
Target //net:net
Type: shared_library
Toolchain: //build/toolchain/android:clang_arm

visibility
  *

testonly
  false

check_includes
  true

allow_circular_includes_from

sources
  //net/base/address_family.cc
  //net/base/address_family.h
  //net/base/address_list.cc
  //net/base/address_list.h
  //net/base/auth.cc
  //net/base/auth.h
  //net/base/completion_callback.h
  //net/base/escape.cc
  //net/base/escape.h
  //net/base/hash_value.cc
  //net/base/hash_value.h
  //net/base/host_port_pair.cc
  //net/base/host_port_pair.h
  //net/base/io_buffer.cc
  //net/base/io_buffer.h
  //net/base/ip_address.cc
  //net/base/ip_address.h
  //net/base/ip_endpoint.cc
  //net/base/ip_endpoint.h
  //net/base/load_timing_info.cc
  //net/base/load_timing_info.h
  //net/base/lookup_string_in_fixed_set.cc
  //net/base/lookup_string_in_fixed_set.h
  //net/base/net_error_details.h
  //net/base/net_error_list.h
  //net/base/net_errors.cc
  //net/base/net_errors.h
  //net/base/net_errors_posix.cc
  //net/base/net_export.h
  //net/base/net_module.cc
  //net/base/net_module.h
  //net/base/net_string_util.h
  //net/base/network_interfaces.cc
  //net/base/network_interfaces.h
  //net/base/network_interfaces_posix.cc
  //net/base/openssl_private_key_store.h
  //net/base/openssl_private_key_store_android.cc
  //net/base/parse_number.cc
  //net/base/parse_number.h
  //net/base/port_util.cc
  //net/base/port_util.h
  //net/base/rand_callback.h
  //net/base/registry_controlled_domains/registry_controlled_domain.cc
  //net/base/registry_controlled_domains/registry_controlled_domain.h
  //net/base/sockaddr_storage.cc
  //net/base/sockaddr_storage.h
  //net/base/sys_addrinfo.h
  //net/base/url_util.cc
  //net/base/url_util.h
  //net/base/zap.cc
  //net/base/zap.h
  //net/cert/asn1_util.cc
  //net/cert/asn1_util.h
  //net/cert/cert_database.cc
  //net/cert/cert_database.h
  //net/cert/cert_status_flags.cc
  //net/cert/cert_status_flags.h
  //net/cert/cert_verifier.cc
  //net/cert/cert_verifier.h
  //net/cert/cert_verify_result.cc
  //net/cert/cert_verify_result.h
  //net/cert/client_cert_verifier.h
  //net/cert/crl_set.cc
  //net/cert/crl_set.h
  //net/cert/ct_known_logs.cc
  //net/cert/ct_known_logs.h
  //net/cert/ct_known_logs_static-inc.h
  //net/cert/ct_policy_enforcer.cc
  //net/cert/ct_policy_enforcer.h
  //net/cert/ct_policy_status.h
  //net/cert/ct_verifier.h
  //net/cert/ct_verify_result.cc
  //net/cert/ct_verify_result.h
  //net/cert/internal/cert_issuer_source.h
  //net/cert/internal/cert_issuer_source_aia.cc
  //net/cert/internal/cert_issuer_source_aia.h
  //net/cert/internal/cert_issuer_source_static.cc
  //net/cert/internal/cert_issuer_source_static.h
  //net/cert/internal/certificate_policies.cc
  //net/cert/internal/certificate_policies.h
  //net/cert/internal/extended_key_usage.cc
  //net/cert/internal/extended_key_usage.h
  //net/cert/internal/name_constraints.cc
  //net/cert/internal/name_constraints.h
  //net/cert/internal/parse_certificate.cc
  //net/cert/internal/parse_certificate.h
  //net/cert/internal/parse_name.cc
  //net/cert/internal/parse_name.h
  //net/cert/internal/parse_ocsp.cc
  //net/cert/internal/parse_ocsp.h
  //net/cert/internal/parsed_certificate.cc
  //net/cert/internal/parsed_certificate.h
  //net/cert/internal/path_builder.cc
  //net/cert/internal/path_builder.h
  //net/cert/internal/signature_algorithm.cc
  //net/cert/internal/signature_algorithm.h
  //net/cert/internal/signature_policy.cc
  //net/cert/internal/signature_policy.h
  //net/cert/internal/trust_store.cc
  //net/cert/internal/trust_store.h
  //net/cert/internal/verify_certificate_chain.cc
  //net/cert/internal/verify_certificate_chain.h
  //net/cert/internal/verify_name_match.cc
  //net/cert/internal/verify_name_match.h
  //net/cert/internal/verify_signed_data.cc
  //net/cert/internal/verify_signed_data.h
  //net/cert/ocsp_revocation_status.h
  //net/cert/ocsp_verify_result.cc
  //net/cert/ocsp_verify_result.h
  //net/cert/pem_tokenizer.cc
  //net/cert/pem_tokenizer.h
  //net/cert/signed_certificate_timestamp.cc
  //net/cert/signed_certificate_timestamp.h
  //net/cert/signed_tree_head.cc
  //net/cert/signed_tree_head.h
  //net/cert/sth_distributor.cc
  //net/cert/sth_distributor.h
  //net/cert/sth_observer.h
  //net/cert/sth_reporter.h
  //net/cert/x509_cert_types.cc
  //net/cert/x509_cert_types.h
  //net/cert/x509_certificate.cc
  //net/cert/x509_certificate.h
  //net/cert/x509_certificate_net_log_param.cc
  //net/cert/x509_certificate_net_log_param.h
  //net/cert/x509_certificate_openssl.cc
  //net/cert/x509_util.cc
  //net/cert/x509_util.h
  //net/cert/x509_util_openssl.cc
  //net/cert/x509_util_openssl.h
  //net/der/input.cc
  //net/der/input.h
  //net/der/encode_values.cc
  //net/der/encode_values.h
  //net/der/parse_values.cc
  //net/der/parse_values.h
  //net/der/parser.cc
  //net/der/parser.h
  //net/der/tag.cc
  //net/der/tag.h
  //net/dns/dns_util.cc
  //net/dns/dns_util.h
  //net/http/http_auth_challenge_tokenizer.cc
  //net/http/http_auth_challenge_tokenizer.h
  //net/http/http_auth_scheme.cc
  //net/http/http_auth_scheme.h
  //net/http/http_byte_range.cc
  //net/http/http_byte_range.h
  //net/http/http_log_util.cc
  //net/http/http_log_util.h
  //net/http/http_request_headers.cc
  //net/http/http_request_headers.h
  //net/http/http_response_headers.cc
  //net/http/http_response_headers.h
  //net/http/http_response_info.cc
  //net/http/http_response_info.h
  //net/http/http_security_headers.cc
  //net/http/http_security_headers.h
  //net/http/http_status_line_validator.cc
  //net/http/http_status_line_validator.h
  //net/http/http_util.cc
  //net/http/http_util.h
  //net/http/http_vary_data.cc
  //net/http/http_vary_data.h
  //net/http/transport_security_state.cc
  //net/http/transport_security_state.h
  //net/log/net_log.cc
  //net/log/net_log.h
  //net/log/net_log_capture_mode.cc
  //net/log/net_log_capture_mode.h
  //net/log/net_log_event_type_list.h
  //net/log/net_log_source_type_list.h
  //net/socket/client_socket_handle.cc
  //net/socket/client_socket_handle.h
  //net/socket/connection_attempts.h
  //net/socket/next_proto.cc
  //net/socket/next_proto.h
  //net/socket/socket.h
  //net/socket/socket_performance_watcher.h
  //net/socket/socket_performance_watcher_factory.h
  //net/socket/ssl_client_socket.cc
  //net/socket/ssl_client_socket.h
  //net/socket/ssl_client_socket_impl.cc
  //net/socket/ssl_client_socket_impl.h
  //net/socket/ssl_socket.h
  //net/ssl/channel_id_service.cc
  //net/ssl/channel_id_service.h
  //net/ssl/channel_id_store.cc
  //net/ssl/channel_id_store.h
  //net/ssl/default_channel_id_store.cc
  //net/ssl/default_channel_id_store.h
  //net/ssl/openssl_client_key_store.cc
  //net/ssl/openssl_client_key_store.h
  //net/ssl/openssl_ssl_util.cc
  //net/ssl/openssl_ssl_util.h
  //net/ssl/signed_certificate_timestamp_and_status.cc
  //net/ssl/signed_certificate_timestamp_and_status.h
  //net/ssl/ssl_cert_request_info.cc
  //net/ssl/ssl_cert_request_info.h
  //net/ssl/ssl_cipher_suite_names.cc
  //net/ssl/ssl_cipher_suite_names.h
  //net/ssl/ssl_client_auth_cache.cc
  //net/ssl/ssl_client_auth_cache.h
  //net/ssl/ssl_client_cert_type.h
  //net/ssl/ssl_client_session_cache.cc
  //net/ssl/ssl_client_session_cache.h
  //net/ssl/ssl_config.cc
  //net/ssl/ssl_config.h
  //net/ssl/ssl_config_service.cc
  //net/ssl/ssl_config_service.h
  //net/ssl/ssl_info.cc
  //net/ssl/ssl_info.h
  //net/ssl/ssl_private_key.h
  //net/ssl/ssl_server_config.cc
  //net/ssl/ssl_server_config.h
  //net/ssl/token_binding.cc
  //net/ssl/token_binding.h
  //net/android/cellular_signal_strength.cc
  //net/android/cellular_signal_strength.h
  //net/android/cert_verify_result_android.cc
  //net/android/cert_verify_result_android.h
  //net/android/gurl_utils.cc
  //net/android/gurl_utils.h
  //net/android/http_auth_negotiate_android.cc
  //net/android/http_auth_negotiate_android.h
  //net/android/keystore.cc
  //net/android/keystore.h
  //net/android/keystore_openssl.cc
  //net/android/keystore_openssl.h
  //net/android/legacy_openssl.h
  //net/android/net_jni_registrar.cc
  //net/android/net_jni_registrar.h
  //net/android/network_change_notifier_android.cc
  //net/android/network_change_notifier_android.h
  //net/android/network_change_notifier_delegate_android.cc
  //net/android/network_change_notifier_delegate_android.h
  //net/android/network_change_notifier_factory_android.cc
  //net/android/network_change_notifier_factory_android.h
  //net/android/network_library.cc
  //net/android/network_library.h
  //net/android/traffic_stats.cc
  //net/android/traffic_stats.h
  //net/base/arena.cc
  //net/base/arena.h
  //net/base/backoff_entry.cc
  //net/base/backoff_entry.h
  //net/base/backoff_entry_serializer.cc
  //net/base/backoff_entry_serializer.h
  //net/base/cache_type.h
  //net/base/chunked_upload_data_stream.cc
  //net/base/chunked_upload_data_stream.h
  //net/base/crypto_module.h
  //net/base/crypto_module_openssl.cc
  //net/base/data_url.cc
  //net/base/data_url.h
  //net/base/elements_upload_data_stream.cc
  //net/base/elements_upload_data_stream.h
  //net/base/expiring_cache.h
  //net/base/file_stream.cc
  //net/base/file_stream.h
  //net/base/file_stream_context.cc
  //net/base/file_stream_context.h
  //net/base/file_stream_context_posix.cc
  //net/base/filename_util.cc
  //net/base/filename_util.h
  //net/base/filename_util_internal.cc
  //net/base/filename_util_internal.h
  //net/base/host_mapping_rules.cc
  //net/base/host_mapping_rules.h
  //net/base/int128.cc
  //net/base/int128.h
  //net/base/iovec.h
  //net/base/ip_pattern.cc
  //net/base/ip_pattern.h
  //net/base/keygen_handler.cc
  //net/base/keygen_handler.h
  //net/base/keygen_handler_openssl.cc
  //net/base/layered_network_delegate.cc
  //net/base/layered_network_delegate.h
  //net/base/linked_hash_map.h
  //net/base/load_flags.h
  //net/base/load_flags_list.h
  //net/base/load_states.h
  //net/base/load_states_list.h
  //net/base/logging_network_change_observer.cc
  //net/base/logging_network_change_observer.h
  //net/base/mime_sniffer.cc
  //net/base/mime_sniffer.h
  //net/base/mime_util.cc
  //net/base/mime_util.h
  //net/base/net_info_source_list.h
  //net/base/network_activity_monitor.cc
  //net/base/network_activity_monitor.h
  //net/base/network_change_notifier.cc
  //net/base/network_change_notifier.h
  //net/base/network_change_notifier_factory.h
  //net/base/network_delegate.cc
  //net/base/network_delegate.h
  //net/base/network_delegate_impl.cc
  //net/base/network_delegate_impl.h
  //net/base/platform_mime_util.h
  //net/base/prioritized_dispatcher.cc
  //net/base/prioritized_dispatcher.h
  //net/base/priority_queue.h
  //net/base/proxy_delegate.h
  //net/base/request_priority.cc
  //net/base/request_priority.h
  //net/base/sdch_dictionary.cc
  //net/base/sdch_dictionary.h
  //net/base/sdch_manager.cc
  //net/base/sdch_manager.h
  //net/base/sdch_net_log_params.cc
  //net/base/sdch_net_log_params.h
  //net/base/sdch_observer.cc
  //net/base/sdch_observer.h
  //net/base/sdch_problem_code_list.h
  //net/base/sdch_problem_codes.h
  //net/base/static_cookie_policy.cc
  //net/base/static_cookie_policy.h
  //net/base/test_data_stream.cc
  //net/base/test_data_stream.h
  //net/base/upload_bytes_element_reader.cc
  //net/base/upload_bytes_element_reader.h
  //net/base/upload_data_stream.cc
  //net/base/upload_data_stream.h
  //net/base/upload_element_reader.cc
  //net/base/upload_element_reader.h
  //net/base/upload_file_element_reader.cc
  //net/base/upload_file_element_reader.h
  //net/base/upload_progress.h
  //net/cert/caching_cert_verifier.cc
  //net/cert/caching_cert_verifier.h
  //net/cert/cert_database_android.cc
  //net/cert/cert_net_fetcher.h
  //net/cert/cert_verify_proc.cc
  //net/cert/cert_verify_proc.h
  //net/cert/cert_verify_proc_android.cc
  //net/cert/cert_verify_proc_android.h
  //net/cert/cert_verify_proc_openssl.h
  //net/cert/cert_verify_proc_whitelist.cc
  //net/cert/cert_verify_proc_whitelist.h
  //net/cert/crl_set_storage.cc
  //net/cert/crl_set_storage.h
  //net/cert/ct_ev_whitelist.h
  //net/cert/ct_log_response_parser.cc
  //net/cert/ct_log_response_parser.h
  //net/cert/ct_log_verifier.cc
  //net/cert/ct_log_verifier.h
  //net/cert/ct_log_verifier_util.cc
  //net/cert/ct_log_verifier_util.h
  //net/cert/ct_objects_extractor.cc
  //net/cert/ct_objects_extractor.h
  //net/cert/ct_sct_to_string.cc
  //net/cert/ct_sct_to_string.h
  //net/cert/ct_serialization.cc
  //net/cert/ct_serialization.h
  //net/cert/ct_signed_certificate_timestamp_log_param.cc
  //net/cert/ct_signed_certificate_timestamp_log_param.h
  //net/cert/ev_root_ca_metadata.cc
  //net/cert/ev_root_ca_metadata.h
  //net/cert/jwk_serializer.cc
  //net/cert/jwk_serializer.h
  //net/cert/merkle_audit_proof.cc
  //net/cert/merkle_audit_proof.h
  //net/cert/merkle_consistency_proof.cc
  //net/cert/merkle_consistency_proof.h
  //net/cert/merkle_tree_leaf.cc
  //net/cert/merkle_tree_leaf.h
  //net/cert/multi_log_ct_verifier.cc
  //net/cert/multi_log_ct_verifier.h
  //net/cert/multi_threaded_cert_verifier.cc
  //net/cert/multi_threaded_cert_verifier.h
  //net/cert/sct_status_flags.h
  //net/cert/test_root_certs.cc
  //net/cert/test_root_certs.h
  //net/cert/test_root_certs_android.cc
  //net/cert/x509_util_android.cc
  //net/cert/x509_util_android.h
  //net/cert/x509_util_nss.h
  //net/cert_net/cert_net_fetcher_impl.cc
  //net/cert_net/cert_net_fetcher_impl.h
  //net/cookies/canonical_cookie.cc
  //net/cookies/canonical_cookie.h
  //net/cookies/cookie_constants.cc
  //net/cookies/cookie_constants.h
  //net/cookies/cookie_monster.cc
  //net/cookies/cookie_monster.h
  //net/cookies/cookie_options.cc
  //net/cookies/cookie_options.h
  //net/cookies/cookie_store.cc
  //net/cookies/cookie_store.h
  //net/cookies/cookie_util.cc
  //net/cookies/cookie_util.h
  //net/cookies/parsed_cookie.cc
  //net/cookies/parsed_cookie.h
  //net/disk_cache/blockfile/addr.cc
  //net/disk_cache/blockfile/addr.h
  //net/disk_cache/blockfile/backend_impl.cc
  //net/disk_cache/blockfile/backend_impl.h
  //net/disk_cache/blockfile/bitmap.cc
  //net/disk_cache/blockfile/bitmap.h
  //net/disk_cache/blockfile/block_files.cc
  //net/disk_cache/blockfile/block_files.h
  //net/disk_cache/blockfile/disk_format.cc
  //net/disk_cache/blockfile/disk_format.h
  //net/disk_cache/blockfile/disk_format_base.h
  //net/disk_cache/blockfile/entry_impl.cc
  //net/disk_cache/blockfile/entry_impl.h
  //net/disk_cache/blockfile/errors.h
  //net/disk_cache/blockfile/eviction.cc
  //net/disk_cache/blockfile/eviction.h
  //net/disk_cache/blockfile/experiments.h
  //net/disk_cache/blockfile/file.cc
  //net/disk_cache/blockfile/file.h
  //net/disk_cache/blockfile/file_block.h
  //net/disk_cache/blockfile/file_lock.cc
  //net/disk_cache/blockfile/file_lock.h
  //net/disk_cache/blockfile/file_posix.cc
  //net/disk_cache/blockfile/histogram_macros.h
  //net/disk_cache/blockfile/in_flight_backend_io.cc
  //net/disk_cache/blockfile/in_flight_backend_io.h
  //net/disk_cache/blockfile/in_flight_io.cc
  //net/disk_cache/blockfile/in_flight_io.h
  //net/disk_cache/blockfile/mapped_file.cc
  //net/disk_cache/blockfile/mapped_file.h
  //net/disk_cache/blockfile/mapped_file_avoid_mmap_posix.cc
  //net/disk_cache/blockfile/rankings.cc
  //net/disk_cache/blockfile/rankings.h
  //net/disk_cache/blockfile/sparse_control.cc
  //net/disk_cache/blockfile/sparse_control.h
  //net/disk_cache/blockfile/stats.cc
  //net/disk_cache/blockfile/stats.h
  //net/disk_cache/blockfile/storage_block-inl.h
  //net/disk_cache/blockfile/storage_block.h
  //net/disk_cache/blockfile/stress_support.h
  //net/disk_cache/blockfile/trace.cc
  //net/disk_cache/blockfile/trace.h
  //net/disk_cache/blockfile/webfonts_histogram.cc
  //net/disk_cache/blockfile/webfonts_histogram.h
  //net/disk_cache/cache_creator.cc
  //net/disk_cache/cache_util.cc
  //net/disk_cache/cache_util.h
  //net/disk_cache/cache_util_posix.cc
  //net/disk_cache/disk_cache.h
  //net/disk_cache/memory/mem_backend_impl.cc
  //net/disk_cache/memory/mem_backend_impl.h
  //net/disk_cache/memory/mem_entry_impl.cc
  //net/disk_cache/memory/mem_entry_impl.h
  //net/disk_cache/net_log_parameters.cc
  //net/disk_cache/net_log_parameters.h
  //net/disk_cache/simple/simple_backend_impl.cc
  //net/disk_cache/simple/simple_backend_impl.h
  //net/disk_cache/simple/simple_backend_version.h
  //net/disk_cache/simple/simple_entry_format.cc
  //net/disk_cache/simple/simple_entry_format.h
  //net/disk_cache/simple/simple_entry_format_history.h
  //net/disk_cache/simple/simple_entry_impl.cc
  //net/disk_cache/simple/simple_entry_impl.h
  //net/disk_cache/simple/simple_entry_operation.cc
  //net/disk_cache/simple/simple_entry_operation.h
  //net/log/net_log_util.cc
  //net/log/net_log_util.h
  //net/log/trace_net_log_observer.cc
  //net/log/trace_net_log_observer.h
  //net/log/write_to_file_net_log_observer.cc
  //net/log/write_to_file_net_log_observer.h
  //net/disk_cache/simple/simple_histogram_macros.h
  //net/disk_cache/simple/simple_index.cc
  //net/disk_cache/simple/simple_index.h
  //net/disk_cache/simple/simple_index_delegate.h
  //net/disk_cache/simple/simple_index_file.cc
  //net/disk_cache/simple/simple_index_file.h
  //net/disk_cache/simple/simple_index_file_posix.cc
  //net/disk_cache/simple/simple_net_log_parameters.cc
  //net/disk_cache/simple/simple_net_log_parameters.h
  //net/disk_cache/simple/simple_synchronous_entry.cc
  //net/disk_cache/simple/simple_synchronous_entry.h
  //net/disk_cache/simple/simple_util.cc
  //net/disk_cache/simple/simple_util.h
  //net/disk_cache/simple/simple_util_posix.cc
  //net/disk_cache/simple/simple_version_upgrade.cc
  //net/disk_cache/simple/simple_version_upgrade.h
  //net/dns/address_sorter.h
  //net/dns/address_sorter_posix.cc
  //net/dns/address_sorter_posix.h
  //net/dns/dns_client.cc
  //net/dns/dns_client.h
  //net/dns/dns_config_service.cc
  //net/dns/dns_config_service.h
  //net/dns/dns_config_service_posix.cc
  //net/dns/dns_config_service_posix.h
  //net/dns/dns_hosts.cc
  //net/dns/dns_hosts.h
  //net/dns/dns_protocol.h
  //net/dns/dns_query.cc
  //net/dns/dns_query.h
  //net/dns/dns_reloader.cc
  //net/dns/dns_reloader.h
  //net/dns/dns_response.cc
  //net/dns/dns_response.h
  //net/dns/dns_session.cc
  //net/dns/dns_session.h
  //net/dns/dns_socket_pool.cc
  //net/dns/dns_socket_pool.h
  //net/dns/dns_transaction.cc
  //net/dns/dns_transaction.h
  //net/dns/host_cache.cc
  //net/dns/host_cache.h
  //net/dns/host_resolver.cc
  //net/dns/host_resolver.h
  //net/dns/host_resolver_impl.cc
  //net/dns/host_resolver_impl.h
  //net/dns/host_resolver_proc.cc
  //net/dns/host_resolver_proc.h
  //net/dns/mapped_host_resolver.cc
  //net/dns/mapped_host_resolver.h
  //net/dns/record_parsed.cc
  //net/dns/record_parsed.h
  //net/dns/record_rdata.cc
  //net/dns/record_rdata.h
  //net/dns/serial_worker.cc
  //net/dns/serial_worker.h
  //net/dns/single_request_host_resolver.cc
  //net/dns/single_request_host_resolver.h
  //net/filter/filter.cc
  //net/filter/filter.h
  //net/filter/gzip_filter.cc
  //net/filter/gzip_filter.h
  //net/filter/gzip_header.cc
  //net/filter/gzip_header.h
  //net/filter/sdch_filter.cc
  //net/filter/sdch_filter.h
  //net/http/bidirectional_stream.cc
  //net/http/bidirectional_stream.h
  //net/http/bidirectional_stream_impl.cc
  //net/http/bidirectional_stream_impl.h
  //net/http/bidirectional_stream_request_info.cc
  //net/http/bidirectional_stream_request_info.h
  //net/http/des.cc
  //net/http/des.h
  //net/http/disk_cache_based_quic_server_info.cc
  //net/http/disk_cache_based_quic_server_info.h
  //net/http/failing_http_transaction_factory.cc
  //net/http/failing_http_transaction_factory.h
  //net/http/http_auth.cc
  //net/http/http_auth.h
  //net/http/http_auth_cache.cc
  //net/http/http_auth_cache.h
  //net/http/http_auth_controller.cc
  //net/http/http_auth_controller.h
  //net/http/http_auth_filter.cc
  //net/http/http_auth_filter.h
  //net/http/http_auth_handler.cc
  //net/http/http_auth_handler.h
  //net/http/http_auth_handler_basic.cc
  //net/http/http_auth_handler_basic.h
  //net/http/http_auth_handler_digest.cc
  //net/http/http_auth_handler_digest.h
  //net/http/http_auth_handler_factory.cc
  //net/http/http_auth_handler_factory.h
  //net/http/http_auth_handler_negotiate.cc
  //net/http/http_auth_handler_negotiate.h
  //net/http/http_auth_handler_ntlm.cc
  //net/http/http_auth_handler_ntlm.h
  //net/http/http_auth_handler_ntlm_portable.cc
  //net/http/http_auth_multi_round_parse.cc
  //net/http/http_auth_multi_round_parse.h
  //net/http/http_auth_preferences.cc
  //net/http/http_auth_preferences.h
  //net/http/http_basic_state.cc
  //net/http/http_basic_state.h
  //net/http/http_basic_stream.cc
  //net/http/http_basic_stream.h
  //net/http/http_cache.cc
  //net/http/http_cache.h
  //net/http/http_cache_transaction.cc
  //net/http/http_cache_transaction.h
  //net/http/http_chunked_decoder.cc
  //net/http/http_chunked_decoder.h
  //net/http/http_content_disposition.cc
  //net/http/http_content_disposition.h
  //net/http/http_network_layer.cc
  //net/http/http_network_layer.h
  //net/http/http_network_session.cc
  //net/http/http_network_session.h
  //net/http/http_network_session_peer.cc
  //net/http/http_network_session_peer.h
  //net/http/http_network_transaction.cc
  //net/http/http_network_transaction.h
  //net/http/http_proxy_client_socket.cc
  //net/http/http_proxy_client_socket.h
  //net/http/http_proxy_client_socket_pool.cc
  //net/http/http_proxy_client_socket_pool.h
  //net/http/http_proxy_client_socket_wrapper.cc
  //net/http/http_proxy_client_socket_wrapper.h
  //net/http/http_request_info.cc
  //net/http/http_request_info.h
  //net/http/http_response_body_drainer.cc
  //net/http/http_response_body_drainer.h
  //net/http/http_server_properties.cc
  //net/http/http_server_properties.h
  //net/http/http_server_properties_impl.cc
  //net/http/http_server_properties_impl.h
  //net/http/http_server_properties_manager.cc
  //net/http/http_server_properties_manager.h
  //net/http/http_status_code.cc
  //net/http/http_status_code.h
  //net/http/http_stream.h
  //net/http/http_stream_factory.cc
  //net/http/http_stream_factory.h
  //net/http/http_stream_factory_impl.cc
  //net/http/http_stream_factory_impl.h
  //net/http/http_stream_factory_impl_job.cc
  //net/http/http_stream_factory_impl_job.h
  //net/http/http_stream_factory_impl_job_controller.cc
  //net/http/http_stream_factory_impl_job_controller.h
  //net/http/http_stream_factory_impl_request.cc
  //net/http/http_stream_factory_impl_request.h
  //net/http/http_stream_parser.cc
  //net/http/http_stream_parser.h
  //net/http/http_transaction.h
  //net/http/http_transaction_factory.h
  //net/http/http_version.h
  //net/http/md4.cc
  //net/http/md4.h
  //net/http/partial_data.cc
  //net/http/partial_data.h
  //net/http/proxy_client_socket.cc
  //net/http/proxy_client_socket.h
  //net/http/proxy_connect_redirect_http_stream.cc
  //net/http/proxy_connect_redirect_http_stream.h
  //net/http/transport_security_persister.cc
  //net/http/transport_security_persister.h
  //net/http/transport_security_state_static.h
  //net/http/url_security_manager.cc
  //net/http/url_security_manager.h
  //net/http/url_security_manager_posix.cc
  //net/nqe/cached_network_quality.cc
  //net/nqe/cached_network_quality.h
  //net/nqe/external_estimate_provider.h
  //net/nqe/network_id.h
  //net/nqe/network_quality.cc
  //net/nqe/network_quality.h
  //net/nqe/network_quality_estimator.cc
  //net/nqe/network_quality_estimator.h
  //net/nqe/network_quality_observation.h
  //net/nqe/network_quality_observation_source.h
  //net/nqe/network_quality_store.cc
  //net/nqe/network_quality_store.h
  //net/nqe/observation_buffer.h
  //net/nqe/socket_watcher.cc
  //net/nqe/socket_watcher.h
  //net/nqe/socket_watcher_factory.cc
  //net/nqe/socket_watcher_factory.h
  //net/nqe/throughput_analyzer.cc
  //net/nqe/throughput_analyzer.h
  //net/nqe/weighted_observation.h
  //net/proxy/dhcp_proxy_script_fetcher.cc
  //net/proxy/dhcp_proxy_script_fetcher.h
  //net/proxy/dhcp_proxy_script_fetcher_factory.cc
  //net/proxy/dhcp_proxy_script_fetcher_factory.h
  //net/proxy/multi_threaded_proxy_resolver.cc
  //net/proxy/multi_threaded_proxy_resolver.h
  //net/proxy/network_delegate_error_observer.cc
  //net/proxy/network_delegate_error_observer.h
  //net/proxy/polling_proxy_config_service.cc
  //net/proxy/polling_proxy_config_service.h
  //net/proxy/proxy_bypass_rules.cc
  //net/proxy/proxy_bypass_rules.h
  //net/proxy/proxy_config.cc
  //net/proxy/proxy_config.h
  //net/proxy/proxy_config_service.h
  //net/proxy/proxy_config_service_android.cc
  //net/proxy/proxy_config_service_android.h
  //net/proxy/proxy_config_service_fixed.cc
  //net/proxy/proxy_config_service_fixed.h
  //net/proxy/proxy_config_source.cc
  //net/proxy/proxy_config_source.h
  //net/proxy/proxy_info.cc
  //net/proxy/proxy_info.h
  //net/proxy/proxy_list.cc
  //net/proxy/proxy_list.h
  //net/proxy/proxy_resolver.h
  //net/proxy/proxy_resolver_error_observer.h
  //net/proxy/proxy_resolver_factory.cc
  //net/proxy/proxy_resolver_factory.h
  //net/proxy/proxy_resolver_script.h
  //net/proxy/proxy_resolver_script_data.cc
  //net/proxy/proxy_resolver_script_data.h
  //net/proxy/proxy_retry_info.h
  //net/proxy/proxy_script_decider.cc
  //net/proxy/proxy_script_decider.h
  //net/proxy/proxy_script_fetcher.h
  //net/proxy/proxy_script_fetcher_impl.cc
  //net/proxy/proxy_script_fetcher_impl.h
  //net/proxy/proxy_server.cc
  //net/proxy/proxy_server.h
  //net/proxy/proxy_service.cc
  //net/proxy/proxy_service.h
  //net/quic/bidirectional_stream_quic_impl.cc
  //net/quic/bidirectional_stream_quic_impl.h
  //net/quic/congestion_control/cubic.cc
  //net/quic/congestion_control/cubic.h
  //net/quic/congestion_control/cubic_bytes.cc
  //net/quic/congestion_control/cubic_bytes.h
  //net/quic/congestion_control/general_loss_algorithm.cc
  //net/quic/congestion_control/general_loss_algorithm.h
  //net/quic/congestion_control/hybrid_slow_start.cc
  //net/quic/congestion_control/hybrid_slow_start.h
  //net/quic/congestion_control/loss_detection_interface.h
  //net/quic/congestion_control/pacing_sender.cc
  //net/quic/congestion_control/pacing_sender.h
  //net/quic/congestion_control/prr_sender.cc
  //net/quic/congestion_control/prr_sender.h
  //net/quic/congestion_control/rtt_stats.cc
  //net/quic/congestion_control/rtt_stats.h
  //net/quic/congestion_control/send_algorithm_interface.cc
  //net/quic/congestion_control/send_algorithm_interface.h
  //net/quic/congestion_control/tcp_cubic_sender_base.cc
  //net/quic/congestion_control/tcp_cubic_sender_base.h
  //net/quic/congestion_control/tcp_cubic_sender_base.h
  //net/quic/congestion_control/tcp_cubic_sender_bytes.cc
  //net/quic/congestion_control/tcp_cubic_sender_packets.cc
  //net/quic/congestion_control/tcp_cubic_sender_packets.h
  //net/quic/congestion_control/windowed_filter.h
  //net/quic/crypto/aead_base_decrypter.cc
  //net/quic/crypto/aead_base_decrypter.h
  //net/quic/crypto/aead_base_encrypter.cc
  //net/quic/crypto/aead_base_encrypter.h
  //net/quic/crypto/aes_128_gcm_12_decrypter.cc
  //net/quic/crypto/aes_128_gcm_12_decrypter.h
  //net/quic/crypto/aes_128_gcm_12_encrypter.cc
  //net/quic/crypto/aes_128_gcm_12_encrypter.h
  //net/quic/crypto/cert_compressor.cc
  //net/quic/crypto/cert_compressor.h
  //net/quic/crypto/chacha20_poly1305_decrypter.cc
  //net/quic/crypto/chacha20_poly1305_decrypter.h
  //net/quic/crypto/chacha20_poly1305_encrypter.cc
  //net/quic/crypto/chacha20_poly1305_encrypter.h
  //net/quic/crypto/channel_id.cc
  //net/quic/crypto/channel_id.h
  //net/quic/crypto/channel_id_chromium.cc
  //net/quic/crypto/channel_id_chromium.h
  //net/quic/crypto/common_cert_set.cc
  //net/quic/crypto/common_cert_set.h
  //net/quic/crypto/crypto_framer.cc
  //net/quic/crypto/crypto_framer.h
  //net/quic/crypto/crypto_handshake.cc
  //net/quic/crypto/crypto_handshake.h
  //net/quic/crypto/crypto_handshake_message.cc
  //net/quic/crypto/crypto_handshake_message.h
  //net/quic/crypto/crypto_protocol.h
  //net/quic/crypto/crypto_secret_boxer.cc
  //net/quic/crypto/crypto_secret_boxer.h
  //net/quic/crypto/crypto_server_config_protobuf.cc
  //net/quic/crypto/crypto_server_config_protobuf.h
  //net/quic/crypto/crypto_utils.cc
  //net/quic/crypto/crypto_utils.h
  //net/quic/crypto/curve25519_key_exchange.cc
  //net/quic/crypto/curve25519_key_exchange.h
  //net/quic/crypto/ephemeral_key_source.h
  //net/quic/crypto/key_exchange.h
  //net/quic/crypto/local_strike_register_client.cc
  //net/quic/crypto/local_strike_register_client.h
  //net/quic/crypto/null_decrypter.cc
  //net/quic/crypto/null_decrypter.h
  //net/quic/crypto/null_encrypter.cc
  //net/quic/crypto/null_encrypter.h
  //net/quic/crypto/p256_key_exchange.cc
  //net/quic/crypto/p256_key_exchange.h
  //net/quic/crypto/proof_source.cc
  //net/quic/crypto/proof_source.h
  //net/quic/crypto/proof_source_chromium.cc
  //net/quic/crypto/proof_source_chromium.h
  //net/quic/crypto/proof_verifier.h
  //net/quic/crypto/proof_verifier_chromium.cc
  //net/quic/crypto/proof_verifier_chromium.h
  //net/quic/crypto/properties_based_quic_server_info.cc
  //net/quic/crypto/properties_based_quic_server_info.h
  //net/quic/crypto/quic_compressed_certs_cache.cc
  //net/quic/crypto/quic_compressed_certs_cache.h
  //net/quic/crypto/quic_crypto_client_config.cc
  //net/quic/crypto/quic_crypto_client_config.h
  //net/quic/crypto/quic_crypto_server_config.cc
  //net/quic/crypto/quic_crypto_server_config.h
  //net/quic/crypto/quic_decrypter.cc
  //net/quic/crypto/quic_decrypter.h
  //net/quic/crypto/quic_encrypter.cc
  //net/quic/crypto/quic_encrypter.h
  //net/quic/crypto/quic_random.cc
  //net/quic/crypto/quic_random.h
  //net/quic/crypto/quic_server_info.cc
  //net/quic/crypto/quic_server_info.h
  //net/quic/crypto/scoped_evp_aead_ctx.cc
  //net/quic/crypto/scoped_evp_aead_ctx.h
  //net/quic/crypto/strike_register.cc
  //net/quic/crypto/strike_register.h
  //net/quic/crypto/strike_register_client.h
  //net/quic/interval.h
  //net/quic/interval_set.h
  //net/quic/iovector.cc
  //net/quic/iovector.h
  //net/quic/network_connection.cc
  //net/quic/network_connection.h
  //net/quic/port_suggester.cc
  //net/quic/port_suggester.h
  //net/quic/quic_address_mismatch.cc
  //net/quic/quic_address_mismatch.h
  //net/quic/quic_alarm.cc
  //net/quic/quic_alarm.h
  //net/quic/quic_arena_scoped_ptr.h
  //net/quic/quic_bandwidth.cc
  //net/quic/quic_bandwidth.h
  //net/quic/quic_blocked_writer_interface.h
  //net/quic/quic_buffered_packet_store.cc
  //net/quic/quic_buffered_packet_store.h
  //net/quic/quic_bug_tracker.h
  //net/quic/quic_chromium_alarm_factory.cc
  //net/quic/quic_chromium_alarm_factory.h
  //net/quic/quic_chromium_client_session.cc
  //net/quic/quic_chromium_client_session.h
  //net/quic/quic_chromium_client_stream.cc
  //net/quic/quic_chromium_client_stream.h
  //net/quic/quic_chromium_connection_helper.cc
  //net/quic/quic_chromium_connection_helper.h
  //net/quic/quic_chromium_packet_reader.cc
  //net/quic/quic_chromium_packet_reader.h
  //net/quic/quic_chromium_packet_writer.cc
  //net/quic/quic_chromium_packet_writer.h
  //net/quic/quic_client_promised_info.cc
  //net/quic/quic_client_promised_info.h
  //net/quic/quic_client_push_promise_index.cc
  //net/quic/quic_client_push_promise_index.h
  //net/quic/quic_client_session_base.cc
  //net/quic/quic_client_session_base.h
  //net/quic/quic_clock.cc
  //net/quic/quic_clock.h
  //net/quic/quic_config.cc
  //net/quic/quic_config.h
  //net/quic/quic_connection.cc
  //net/quic/quic_connection.h
  //net/quic/quic_connection_logger.cc
  //net/quic/quic_connection_logger.h
  //net/quic/quic_connection_stats.cc
  //net/quic/quic_connection_stats.h
  //net/quic/quic_crypto_client_stream.cc
  //net/quic/quic_crypto_client_stream.h
  //net/quic/quic_crypto_client_stream_factory.cc
  //net/quic/quic_crypto_client_stream_factory.h
  //net/quic/quic_crypto_server_stream.cc
  //net/quic/quic_crypto_server_stream.h
  //net/quic/quic_crypto_stream.cc
  //net/quic/quic_crypto_stream.h
  //net/quic/quic_data_reader.cc
  //net/quic/quic_data_reader.h
  //net/quic/quic_data_writer.cc
  //net/quic/quic_data_writer.h
  //net/quic/quic_flags.cc
  //net/quic/quic_flags.h
  //net/quic/quic_flow_controller.cc
  //net/quic/quic_flow_controller.h
  //net/quic/quic_frame_list.cc
  //net/quic/quic_frame_list.h
  //net/quic/quic_framer.cc
  //net/quic/quic_framer.h
  //net/quic/quic_header_list.cc
  //net/quic/quic_header_list.h
  //net/quic/quic_headers_stream.cc
  //net/quic/quic_headers_stream.h
  //net/quic/quic_http_stream.cc
  //net/quic/quic_http_stream.h
  //net/quic/quic_http_utils.cc
  //net/quic/quic_http_utils.h
  //net/quic/quic_multipath_received_packet_manager.cc
  //net/quic/quic_multipath_received_packet_manager.h
  //net/quic/quic_multipath_sent_packet_manager.cc
  //net/quic/quic_multipath_sent_packet_manager.h
  //net/quic/quic_multipath_transmissions_map.cc
  //net/quic/quic_multipath_transmissions_map.h
  //net/quic/quic_one_block_arena.h
  //net/quic/quic_packet_creator.cc
  //net/quic/quic_packet_creator.h
  //net/quic/quic_packet_generator.cc
  //net/quic/quic_packet_generator.h
  //net/quic/quic_packet_writer.h
  //net/quic/quic_protocol.cc
  //net/quic/quic_protocol.h
  //net/quic/quic_received_packet_manager.cc
  //net/quic/quic_received_packet_manager.h
  //net/quic/quic_sent_entropy_manager.cc
  //net/quic/quic_sent_entropy_manager.h
  //net/quic/quic_sent_packet_manager.cc
  //net/quic/quic_sent_packet_manager.h
  //net/quic/quic_sent_packet_manager_interface.h
  //net/quic/quic_server_id.cc
  //net/quic/quic_server_id.h
  //net/quic/quic_session.cc
  //net/quic/quic_session.h
  //net/quic/quic_simple_buffer_allocator.cc
  //net/quic/quic_simple_buffer_allocator.h
  //net/quic/quic_socket_address_coder.cc
  //net/quic/quic_socket_address_coder.h
  //net/quic/quic_spdy_session.cc
  //net/quic/quic_spdy_session.h
  //net/quic/quic_spdy_stream.cc
  //net/quic/quic_spdy_stream.h
  //net/quic/quic_stream_factory.cc
  //net/quic/quic_stream_factory.h
  //net/quic/quic_stream_sequencer.cc
  //net/quic/quic_stream_sequencer.h
  //net/quic/quic_stream_sequencer_buffer.cc
  //net/quic/quic_stream_sequencer_buffer.h
  //net/quic/quic_stream_sequencer_buffer_interface.h
  //net/quic/quic_sustained_bandwidth_recorder.cc
  //net/quic/quic_sustained_bandwidth_recorder.h
  //net/quic/quic_time.cc
  //net/quic/quic_time.h
  //net/quic/quic_types.cc
  //net/quic/quic_types.h
  //net/quic/quic_unacked_packet_map.cc
  //net/quic/quic_unacked_packet_map.h
  //net/quic/quic_utils.cc
  //net/quic/quic_utils.h
  //net/quic/quic_utils_chromium.h
  //net/quic/quic_write_blocked_list.cc
  //net/quic/quic_write_blocked_list.h
  //net/quic/reliable_quic_stream.cc
  //net/quic/reliable_quic_stream.h
  //net/quic/quic_server_session_base.cc
  //net/quic/quic_server_session_base.h
  //net/quic/spdy_utils.cc
  //net/quic/spdy_utils.h
  //net/sdch/sdch_owner.cc
  //net/sdch/sdch_owner.h
  //net/socket/client_socket_factory.cc
  //net/socket/client_socket_factory.h
  //net/socket/client_socket_pool.cc
  //net/socket/client_socket_pool.h
  //net/socket/client_socket_pool_base.cc
  //net/socket/client_socket_pool_base.h
  //net/socket/client_socket_pool_manager.cc
  //net/socket/client_socket_pool_manager.h
  //net/socket/client_socket_pool_manager_impl.cc
  //net/socket/client_socket_pool_manager_impl.h
  //net/socket/server_socket.cc
  //net/socket/server_socket.h
  //net/socket/socket_descriptor.cc
  //net/socket/socket_descriptor.h
  //net/socket/socket_net_log_params.cc
  //net/socket/socket_net_log_params.h
  //net/socket/socket_posix.cc
  //net/socket/socket_posix.h
  //net/socket/socks5_client_socket.cc
  //net/socket/socks5_client_socket.h
  //net/socket/socks_client_socket.cc
  //net/socket/socks_client_socket.h
  //net/socket/socks_client_socket_pool.cc
  //net/socket/socks_client_socket_pool.h
  //net/socket/ssl_client_socket_pool.cc
  //net/socket/ssl_client_socket_pool.h
  //net/socket/ssl_server_socket.h
  //net/socket/ssl_server_socket_impl.cc
  //net/socket/ssl_server_socket_impl.h
  //net/socket/stream_socket.cc
  //net/socket/stream_socket.h
  //net/socket/tcp_client_socket.cc
  //net/socket/tcp_client_socket.h
  //net/socket/tcp_server_socket.cc
  //net/socket/tcp_server_socket.h
  //net/socket/tcp_socket.cc
  //net/socket/tcp_socket.h
  //net/socket/tcp_socket_posix.cc
  //net/socket/tcp_socket_posix.h
  //net/socket/transport_client_socket_pool.cc
  //net/socket/transport_client_socket_pool.h
  //net/socket/unix_domain_client_socket_posix.cc
  //net/socket/unix_domain_client_socket_posix.h
  //net/socket/unix_domain_server_socket_posix.cc
  //net/socket/unix_domain_server_socket_posix.h
  //net/socket/websocket_endpoint_lock_manager.cc
  //net/socket/websocket_endpoint_lock_manager.h
  //net/socket/websocket_transport_client_socket_pool.cc
  //net/socket/websocket_transport_client_socket_pool.h
  //net/socket/websocket_transport_connect_sub_job.cc
  //net/socket/websocket_transport_connect_sub_job.h
  //net/spdy/bidirectional_stream_spdy_impl.cc
  //net/spdy/bidirectional_stream_spdy_impl.h
  //net/spdy/buffered_spdy_framer.cc
  //net/spdy/buffered_spdy_framer.h
  //net/spdy/fuzzing/hpack_fuzz_util.cc
  //net/spdy/fuzzing/hpack_fuzz_util.h
  //net/spdy/header_coalescer.cc
  //net/spdy/header_coalescer.h
  //net/spdy/hpack/hpack_constants.cc
  //net/spdy/hpack/hpack_constants.h
  //net/spdy/hpack/hpack_decoder.cc
  //net/spdy/hpack/hpack_decoder.h
  //net/spdy/hpack/hpack_decoder_interface.h
  //net/spdy/hpack/hpack_encoder.cc
  //net/spdy/hpack/hpack_encoder.h
  //net/spdy/hpack/hpack_entry.cc
  //net/spdy/hpack/hpack_entry.h
  //net/spdy/hpack/hpack_header_table.cc
  //net/spdy/hpack/hpack_header_table.h
  //net/spdy/hpack/hpack_huffman_decoder.cc
  //net/spdy/hpack/hpack_huffman_decoder.h
  //net/spdy/hpack/hpack_huffman_table.cc
  //net/spdy/hpack/hpack_huffman_table.h
  //net/spdy/hpack/hpack_input_stream.cc
  //net/spdy/hpack/hpack_input_stream.h
  //net/spdy/hpack/hpack_output_stream.cc
  //net/spdy/hpack/hpack_output_stream.h
  //net/spdy/hpack/hpack_static_table.cc
  //net/spdy/hpack/hpack_static_table.h
  //net/spdy/http2_write_scheduler.h
  //net/spdy/http2_priority_dependencies.h
  //net/spdy/http2_priority_dependencies.cc
  //net/spdy/priority_write_scheduler.h
  //net/spdy/spdy_alt_svc_wire_format.cc
  //net/spdy/spdy_alt_svc_wire_format.h
  //net/spdy/spdy_bitmasks.h
  //net/spdy/spdy_buffer.cc
  //net/spdy/spdy_buffer.h
  //net/spdy/spdy_buffer_producer.cc
  //net/spdy/spdy_buffer_producer.h
  //net/spdy/spdy_bug_tracker.h
  //net/spdy/spdy_flags.cc
  //net/spdy/spdy_flags.h
  //net/spdy/spdy_frame_builder.cc
  //net/spdy/spdy_frame_builder.h
  //net/spdy/spdy_frame_reader.cc
  //net/spdy/spdy_frame_reader.h
  //net/spdy/spdy_framer.cc
  //net/spdy/spdy_framer.h
  //net/spdy/spdy_framer_decoder_adapter.cc
  //net/spdy/spdy_framer_decoder_adapter.h
  //net/spdy/spdy_header_block.cc
  //net/spdy/spdy_header_block.h
  //net/spdy/spdy_headers_block_parser.cc
  //net/spdy/spdy_headers_block_parser.h
  //net/spdy/spdy_headers_handler_interface.h
  //net/spdy/spdy_http_stream.cc
  //net/spdy/spdy_http_stream.h
  //net/spdy/spdy_http_utils.cc
  //net/spdy/spdy_http_utils.h
  //net/spdy/spdy_pinnable_buffer_piece.cc
  //net/spdy/spdy_pinnable_buffer_piece.h
  //net/spdy/spdy_prefixed_buffer_reader.cc
  //net/spdy/spdy_prefixed_buffer_reader.h
  //net/spdy/spdy_protocol.cc
  //net/spdy/spdy_protocol.h
  //net/spdy/spdy_proxy_client_socket.cc
  //net/spdy/spdy_proxy_client_socket.h
  //net/spdy/spdy_read_queue.cc
  //net/spdy/spdy_read_queue.h
  //net/spdy/spdy_session.cc
  //net/spdy/spdy_session.h
  //net/spdy/spdy_session_key.cc
  //net/spdy/spdy_session_key.h
  //net/spdy/spdy_session_pool.cc
  //net/spdy/spdy_session_pool.h
  //net/spdy/spdy_stream.cc
  //net/spdy/spdy_stream.h
  //net/spdy/spdy_write_queue.cc
  //net/spdy/spdy_write_queue.h
  //net/spdy/write_blocked_list.h
  //net/spdy/write_scheduler.h
  //net/ssl/client_cert_store.h
  //net/ssl/ssl_config_service_defaults.cc
  //net/ssl/ssl_config_service_defaults.h
  //net/ssl/ssl_key_logger.cc
  //net/ssl/ssl_key_logger.h
  //net/ssl/ssl_platform_key.h
  //net/ssl/ssl_platform_key_android.cc
  //net/ssl/ssl_platform_key_task_runner.cc
  //net/ssl/ssl_platform_key_task_runner.h
  //net/ssl/test_ssl_private_key.cc
  //net/ssl/test_ssl_private_key.h
  //net/ssl/threaded_ssl_private_key.cc
  //net/ssl/threaded_ssl_private_key.h
  //net/udp/datagram_client_socket.h
  //net/udp/datagram_server_socket.h
  //net/udp/datagram_socket.h
  //net/udp/diff_serv_code_point.h
  //net/udp/udp_client_socket.cc
  //net/udp/udp_client_socket.h
  //net/udp/udp_net_log_parameters.cc
  //net/udp/udp_net_log_parameters.h
  //net/udp/udp_server_socket.cc
  //net/udp/udp_server_socket.h
  //net/udp/udp_socket.h
  //net/udp/udp_socket_posix.cc
  //net/udp/udp_socket_posix.h
  //net/url_request/data_protocol_handler.cc
  //net/url_request/data_protocol_handler.h
  //net/url_request/http_user_agent_settings.h
  //net/url_request/redirect_info.cc
  //net/url_request/redirect_info.h
  //net/url_request/report_sender.cc
  //net/url_request/report_sender.h
  //net/url_request/sdch_dictionary_fetcher.cc
  //net/url_request/sdch_dictionary_fetcher.h
  //net/url_request/static_http_user_agent_settings.cc
  //net/url_request/static_http_user_agent_settings.h
  //net/url_request/url_fetcher.cc
  //net/url_request/url_fetcher.h
  //net/url_request/url_fetcher_core.cc
  //net/url_request/url_fetcher_core.h
  //net/url_request/url_fetcher_delegate.cc
  //net/url_request/url_fetcher_delegate.h
  //net/url_request/url_fetcher_factory.h
  //net/url_request/url_fetcher_impl.cc
  //net/url_request/url_fetcher_impl.h
  //net/url_request/url_fetcher_response_writer.cc
  //net/url_request/url_fetcher_response_writer.h
  //net/url_request/url_range_request_job.cc
  //net/url_request/url_range_request_job.h
  //net/url_request/url_request.cc
  //net/url_request/url_request.h
  //net/url_request/url_request_backoff_manager.cc
  //net/url_request/url_request_backoff_manager.h
  //net/url_request/url_request_context.cc
  //net/url_request/url_request_context.h
  //net/url_request/url_request_context_builder.cc
  //net/url_request/url_request_context_builder.h
  //net/url_request/url_request_context_getter.cc
  //net/url_request/url_request_context_getter.h
  //net/url_request/url_request_context_getter_observer.h
  //net/url_request/url_request_context_storage.cc
  //net/url_request/url_request_context_storage.h
  //net/url_request/url_request_data_job.cc
  //net/url_request/url_request_data_job.h
  //net/url_request/url_request_error_job.cc
  //net/url_request/url_request_error_job.h
  //net/url_request/url_request_filter.cc
  //net/url_request/url_request_filter.h
  //net/url_request/url_request_http_job.cc
  //net/url_request/url_request_http_job.h
  //net/url_request/url_request_intercepting_job_factory.cc
  //net/url_request/url_request_intercepting_job_factory.h
  //net/url_request/url_request_interceptor.cc
  //net/url_request/url_request_interceptor.h
  //net/url_request/url_request_job.cc
  //net/url_request/url_request_job.h
  //net/url_request/url_request_job_factory.cc
  //net/url_request/url_request_job_factory.h
  //net/url_request/url_request_job_factory_impl.cc
  //net/url_request/url_request_job_factory_impl.h
  //net/url_request/url_request_job_manager.cc
  //net/url_request/url_request_job_manager.h
  //net/url_request/url_request_netlog_params.cc
  //net/url_request/url_request_netlog_params.h
  //net/url_request/url_request_redirect_job.cc
  //net/url_request/url_request_redirect_job.h
  //net/url_request/url_request_simple_job.cc
  //net/url_request/url_request_simple_job.h
  //net/url_request/url_request_status.cc
  //net/url_request/url_request_status.h
  //net/url_request/url_request_test_job.cc
  //net/url_request/url_request_test_job.h
  //net/url_request/url_request_throttler_entry.cc
  //net/url_request/url_request_throttler_entry.h
  //net/url_request/url_request_throttler_entry_interface.h
  //net/url_request/url_request_throttler_manager.cc
  //net/url_request/url_request_throttler_manager.h
  //net/url_request/view_cache_helper.cc
  //net/url_request/view_cache_helper.h
  //net/url_request/websocket_handshake_userdata_key.cc
  //net/url_request/websocket_handshake_userdata_key.h
  //net/websockets/websocket_handshake_stream_base.h
  //net/websockets/websocket_stream.h
  //net/websockets/websocket_handshake_request_info.h
  //net/websockets/websocket_handshake_response_info.h
  //net/base/address_tracker_linux.cc
  //net/base/address_tracker_linux.h
  //net/base/network_interfaces_linux.cc
  //net/base/network_interfaces_linux.h
  //net/base/platform_mime_util_linux.cc
  //net/base/directory_lister.cc
  //net/base/directory_lister.h
  //net/base/directory_listing.cc
  //net/base/directory_listing.h
  //net/url_request/file_protocol_handler.cc
  //net/url_request/file_protocol_handler.h
  //net/url_request/url_request_file_dir_job.cc
  //net/url_request/url_request_file_dir_job.h
  //net/url_request/url_request_file_job.cc
  //net/url_request/url_request_file_job.h
  //net/ftp/ftp_auth_cache.cc
  //net/ftp/ftp_auth_cache.h
  //net/ftp/ftp_ctrl_response_buffer.cc
  //net/ftp/ftp_ctrl_response_buffer.h
  //net/ftp/ftp_directory_listing_parser.cc
  //net/ftp/ftp_directory_listing_parser.h
  //net/ftp/ftp_directory_listing_parser_ls.cc
  //net/ftp/ftp_directory_listing_parser_ls.h
  //net/ftp/ftp_directory_listing_parser_vms.cc
  //net/ftp/ftp_directory_listing_parser_vms.h
  //net/ftp/ftp_directory_listing_parser_windows.cc
  //net/ftp/ftp_directory_listing_parser_windows.h
  //net/ftp/ftp_network_layer.cc
  //net/ftp/ftp_network_layer.h
  //net/ftp/ftp_network_session.cc
  //net/ftp/ftp_network_session.h
  //net/ftp/ftp_network_transaction.cc
  //net/ftp/ftp_network_transaction.h
  //net/ftp/ftp_request_info.h
  //net/ftp/ftp_response_info.cc
  //net/ftp/ftp_response_info.h
  //net/ftp/ftp_server_type_histograms.cc
  //net/ftp/ftp_server_type_histograms.h
  //net/ftp/ftp_transaction.h
  //net/ftp/ftp_transaction_factory.h
  //net/ftp/ftp_util.cc
  //net/ftp/ftp_util.h
  //net/url_request/ftp_protocol_handler.cc
  //net/url_request/ftp_protocol_handler.h
  //net/url_request/url_request_ftp_job.cc
  //net/url_request/url_request_ftp_job.h
  //net/websockets/websocket_basic_handshake_stream.cc
  //net/websockets/websocket_basic_handshake_stream.h
  //net/websockets/websocket_basic_stream.cc
  //net/websockets/websocket_basic_stream.h
  //net/websockets/websocket_channel.cc
  //net/websockets/websocket_channel.h
  //net/websockets/websocket_deflate_parameters.cc
  //net/websockets/websocket_deflate_parameters.h
  //net/websockets/websocket_deflate_predictor.h
  //net/websockets/websocket_deflate_predictor_impl.cc
  //net/websockets/websocket_deflate_predictor_impl.h
  //net/websockets/websocket_deflate_stream.cc
  //net/websockets/websocket_deflate_stream.h
  //net/websockets/websocket_deflater.cc
  //net/websockets/websocket_deflater.h
  //net/websockets/websocket_errors.cc
  //net/websockets/websocket_errors.h
  //net/websockets/websocket_extension.cc
  //net/websockets/websocket_extension.h
  //net/websockets/websocket_extension_parser.cc
  //net/websockets/websocket_extension_parser.h
  //net/websockets/websocket_frame.cc
  //net/websockets/websocket_frame.h
  //net/websockets/websocket_frame_parser.cc
  //net/websockets/websocket_frame_parser.h
  //net/websockets/websocket_handshake_challenge.cc
  //net/websockets/websocket_handshake_challenge.h
  //net/websockets/websocket_handshake_constants.cc
  //net/websockets/websocket_handshake_constants.h
  //net/websockets/websocket_handshake_request_info.cc
  //net/websockets/websocket_handshake_request_info.h
  //net/websockets/websocket_handshake_response_info.cc
  //net/websockets/websocket_handshake_response_info.h
  //net/websockets/websocket_handshake_stream_base.h
  //net/websockets/websocket_handshake_stream_create_helper.cc
  //net/websockets/websocket_handshake_stream_create_helper.h
  //net/websockets/websocket_inflater.cc
  //net/websockets/websocket_inflater.h
  //net/websockets/websocket_mux.h
  //net/websockets/websocket_stream.cc
  //net/websockets/websocket_stream.h
  //net/base/filename_util_icu.cc
  //net/base/net_string_util_icu.cc
  //net/filter/brotli_filter.cc

public
  [All headers listed in the sources are public.]

configs (in order applying, try also --tree)
  //build/config:feature_flags
  //build/config/compiler:compiler
  //build/config/compiler:clang_stackrealign
  //build/config/compiler:compiler_arm_fpu
  //build/config/compiler:chromium_code
  //build/config/compiler:default_include_dirs
  //build/config/compiler:default_optimization
  //build/config/compiler:default_symbols
  //build/config/compiler:no_rtti
  //build/config/compiler:runtime_library
  //build/config/sanitizers:default_sanitizer_flags
  //build/config/gcc:no_exceptions
  //build/config/gcc:symbol_visibility_hidden
  //build/config/android:default_cygprofile_instrumentation
  //build/config/clang:find_bad_constructs
  //build/config/clang:extra_warnings
  //build/config:debug
  //build/config:default_libs
  //build/config:shared_library_config
  //net:net_internal_config
  //build/config:precompiled_headers
  //build/config/compiler:no_size_t_to_int_warning
  //build/config/compiler:wexit_time_destructors
  //net:net_config
  //base/allocator:wrap_malloc_symbols
  //third_party/protobuf:using_proto
  //third_party/protobuf:protobuf_config
  //third_party/protobuf:protobuf_use_dlls
  //third_party/boringssl:external_config
  //net:net_resources_grit_config
  //base:android_system_libs
  //sdch:sdch_config
  //third_party/zlib:zlib_config
  //net:jni_includes_net_jni_headers
  //third_party/icu:icu_config

public_configs (in order applying, try also --tree)
  //net:net_config
  //third_party/protobuf:using_proto
  //third_party/protobuf:protobuf_config
  //build/config/compiler:no_size_t_to_int_warning
  //third_party/protobuf:protobuf_use_dlls
  //third_party/boringssl:external_config

all_dependent_configs (in order applying, try also --tree)
  //base/allocator:wrap_malloc_symbols

outputs
  //out/Default/libnet.cr.so
  //out/Default/libnet.cr.so.TOC
  //out/Default/lib.unstripped/libnet.cr.so

asmflags
  -fno-strict-aliasing
  --param=ssp-buffer-size=4
  -fstack-protector
  -funwind-tables
  -fPIC
  -pipe
  -fcolor-diagnostics
  -ffunction-sections
  -fno-short-enums
  --target=arm-linux-androideabi
  -march=armv7-a
  -mfloat-abi=softfp
  -mthumb
  -mtune=generic-armv7-a
  -mfpu=neon
  -g1
  --sysroot=../../third_party/android_tools/ndk/platforms/android-16/arch-arm

cflags
  -fno-strict-aliasing
  --param=ssp-buffer-size=4
  -fstack-protector
  -funwind-tables
  -fPIC
  -pipe
  -fcolor-diagnostics
  -ffunction-sections
  -fno-short-enums
  --target=arm-linux-androideabi
  -march=armv7-a
  -mfloat-abi=softfp
  -mthumb
  -mtune=generic-armv7-a
  -mfpu=neon
  -Wall
  -Werror
  -Wextra
  -Wno-missing-field-initializers
  -Wno-unused-parameter
  -Wno-c++11-narrowing
  -Wno-covered-switch-default
  -Wno-deprecated-register
  -Wno-unneeded-internal-declaration
  -Wno-inconsistent-missing-override
  -Wno-shift-negative-value
  -Wno-undefined-var-template
  -Wno-nonportable-include-path
  -Os
  -fdata-sections
  -ffunction-sections
  -fomit-frame-pointer
  -g1
  --sysroot=../../third_party/android_tools/ndk/platforms/android-16/arch-arm
  -fvisibility=hidden
  -Xclang
  -load
  -Xclang
  ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so
  -Xclang
  -add-plugin
  -Xclang
  find-bad-constructs
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-templates
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  follow-macro-expansion
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-implicit-copy-ctors
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-ipc
  -Wheader-hygiene
  -Wstring-conversion
  -Wexit-time-destructors

cflags_cc
  -fno-threadsafe-statics
  -fvisibility-inlines-hidden
  -Wno-undefined-bool-conversion
  -Wno-tautological-undefined-compare
  -std=gnu++11
  -fno-rtti
  -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++/libcxx/include
  -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++abi/libcxxabi/include
  -isystem../../third_party/android_tools/ndk/sources/android/support/include
  -fno-exceptions

cflags_objcc
  -fno-threadsafe-statics
  -fvisibility-inlines-hidden
  -Wno-undefined-bool-conversion
  -Wno-tautological-undefined-compare
  -std=gnu++11
  -fno-rtti
  -fno-exceptions

defines
  V8_DEPRECATION_WARNINGS
  ENABLE_NOTIFICATIONS
  ENABLE_BROWSER_CDMS
  ENABLE_PRINTING=1
  ENABLE_BASIC_PRINTING=1
  ENABLE_SPELLCHECK=1
  USE_BROWSER_SPELLCHECKER=1
  USE_OPENSSL_CERTS=1
  NO_TCMALLOC
  USE_EXTERNAL_POPUP_MENU=1
  ENABLE_WEBRTC=1
  DISABLE_NACL
  ENABLE_SUPERVISED_USERS=1
  VIDEO_HOLE=1
  SAFE_BROWSING_DB_REMOTE
  CHROMIUM_BUILD
  ENABLE_MEDIA_ROUTER=1
  ENABLE_WEBVR
  FIELDTRIAL_TESTING_ENABLED
  CR_CLANG_REVISION=274369-1
  _FILE_OFFSET_BITS=64
  ANDROID
  HAVE_SYS_UIO_H
  ANDROID_NDK_VERSION=r10e
  __STDC_CONSTANT_MACROS
  __STDC_FORMAT_MACROS
  COMPONENT_BUILD
  __GNU_SOURCE=1
  __compiler_offsetof=__builtin_offsetof
  nan=__builtin_nan
  _DEBUG
  DYNAMIC_ANNOTATIONS_ENABLED=1
  WTF_USE_DYNAMIC_ANNOTATIONS=1
  DLOPEN_KERBEROS
  NET_IMPLEMENTATION
  USE_KERBEROS
  ENABLE_BUILT_IN_DNS
  POSIX_AVOID_MMAP
  ENABLE_WEBSOCKETS
  GOOGLE_PROTOBUF_NO_RTTI
  GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  HAVE_PTHREAD
  PROTOBUF_USE_DLLS
  BORINGSSL_SHARED_LIBRARY
  U_USING_ICU_NAMESPACE=0
  U_ENABLE_DYLOAD=0
  U_NOEXCEPT=
  ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE

include_dirs
  //
  //out/Default/gen/
  /usr/include/kerberosV/
  //third_party/protobuf/src/
  //out/Default/gen/protoc_out/
  //third_party/protobuf/src/
  //third_party/boringssl/src/include/
  //sdch/open-vcdiff/src/
  //third_party/zlib/
  //out/Default/gen/net/net_jni_headers/
  //out/Default/gen/net/net_jni_headers/net/
  //third_party/icu/source/common/
  //third_party/icu/source/i18n/

ldflags
  -Wl,--fatal-warnings
  -fPIC
  -Wl,-z,noexecstack
  -Wl,-z,now
  -Wl,-z,relro
  -Wl,-z,defs
  -fuse-ld=gold
  --gcc-toolchain=../../third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
  -Wl,--icf=all
  -Wl,--build-id=sha1
  -Wl,--no-undefined
  -Wl,--exclude-libs=libgcc.a
  -Wl,--exclude-libs=libc++_static.a
  -Wl,--exclude-libs=libvpx_assembly_arm.a
  --target=arm-linux-androideabi
  -Wl,--warn-shared-textrel
  -Wl,-O1
  -Wl,--as-needed
  -nostdlib
  -Wl,--warn-shared-textrel
  --sysroot=../../third_party/android_tools/ndk/platforms/android-16/arch-arm
  
  -Wl,-wrap,calloc
  -Wl,-wrap,free
  -Wl,-wrap,malloc
  -Wl,-wrap,memalign
  -Wl,-wrap,posix_memalign
  -Wl,-wrap,pvalloc
  -Wl,-wrap,realloc
  -Wl,-wrap,valloc

Direct dependencies (try also "--all", "--tree", or even "--all --tree")
  //base:base
  //base:i18n
  //base/third_party/dynamic_annotations:dynamic_annotations
  //build/config/sanitizers:deps
  //components/prefs:prefs
  //crypto:crypto
  //crypto:platform
  //net:net_jni_headers
  //net:net_quic_proto
  //net:net_resources
  //net/base/registry_controlled_domains:registry_controlled_domains
  //sdch:sdch
  //third_party/brotli:brotli
  //third_party/icu:icu
  //third_party/protobuf:protobuf_lite
  //third_party/zlib:zlib
  //url:url
  //url:url_features

libs
  c++_shared
  //third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/libgcc.a
  c
  dl
  m
  log

lib_dirs
  //third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/

从中我们可以看到编译net模块,包含进去的所有源文件,开放出去的头文件,依赖的库,依赖的头文件路径,依赖的库文件的路径,依赖的其它模块,编译参数,链接参数,预定义宏等。

借助于这个工具,我们可以很方便的开发自动化的工具,来将chromium的模块单独抽出来用在其它地方,比如我们可以提取net模块开放出去的头文件,将net模块用在android中。

$ gn desc out/Default //net deps --tree
//base:base
  //base:base_jni_headers
    //base:android_runtime_jni_headers
      //base:android_runtime_jni_headers__jni_Runtime
    //base:base_jni_headers__jni_gen
  //base:base_paths
  //base:base_static
  //base:build_date
  //base:debugging_flags
  //base/allocator:allocator
  //base/allocator:features
  //base/allocator:unified_allocator_shim
  //base/third_party/dynamic_annotations:dynamic_annotations
  //base/third_party/libevent:libevent
  //build/config/sanitizers:deps
    //build/config/sanitizers:deps_no_options
  //third_party/android_tools:cpu_features
  //third_party/ashmem:ashmem
  //third_party/modp_b64:modp_b64
//base:i18n
  //base:base...
  //base/third_party/dynamic_annotations:dynamic_annotations
  //build/config/sanitizers:deps...
  //third_party/icu:icu
    //third_party/icu:icui18n
      //build/config/sanitizers:deps...
      //third_party/icu:icuuc
        //build/config/sanitizers:deps...
        //third_party/icu:icudata
    //third_party/icu:icuuc...
//base/third_party/dynamic_annotations:dynamic_annotations
//build/config/sanitizers:deps...
//components/prefs:prefs
  //base:base...
  //build/config/sanitizers:deps...
//crypto:crypto
  //base:base...
  //base/third_party/dynamic_annotations:dynamic_annotations
  //build/config/sanitizers:deps...
  //crypto:platform
    //third_party/boringssl:boringssl
      //build/config/sanitizers:deps...
      //third_party/boringssl:boringssl_asm
//crypto:platform...
//net:net_jni_headers
  //net:net_jni_headers__jni_gen
//net:net_quic_proto
  //net:net_quic_proto_gen
    //third_party/protobuf:protoc(//build/toolchain/linux:clang_x64)
      //build/win:default_exe_manifest(//build/toolchain/linux:clang_x64)
      //third_party/protobuf:protoc_lib(//build/toolchain/linux:clang_x64)
        //third_party/protobuf:protobuf_full(//build/toolchain/linux:clang_x64)
          //build/config/sanitizers:deps(//build/toolchain/linux:clang_x64)
            //build/config/sanitizers:deps_no_options(//build/toolchain/linux:clang_x64)
  //third_party/protobuf:protobuf_lite
    //build/config/sanitizers:deps...
    //build/config/sanitizers:deps...
//net:net_resources
  //net:net_resources_grit
    //tools/grit:grit_sources
//net/base/registry_controlled_domains:registry_controlled_domains
//sdch:sdch
  //base:base...
  //third_party/zlib:zlib
    //third_party/zlib:zlib_x86_simd
//third_party/brotli:brotli
//third_party/icu:icu...
//third_party/protobuf:protobuf_lite...
//third_party/zlib:zlib...
//url:url
  //base:base...
  //base/third_party/dynamic_annotations:dynamic_annotations
  //build/config/sanitizers:deps...
  //third_party/icu:icu...
//url:url_features

这个命令更是可以很方便地dump出模块的整个依赖树。

$ gn desc out/Default //net cflags --blameFrom //build/config/compiler:compiler
     (Added by //build/config/BUILDCONFIG.gn:461)
  -fno-strict-aliasing
  --param=ssp-buffer-size=4
  -fstack-protector
  -funwind-tables
  -fPIC
  -pipe
  -fcolor-diagnostics
  -ffunction-sections
  -fno-short-enums
  --target=arm-linux-androideabi
  -march=armv7-a
  -mfloat-abi=softfp
  -mthumb
  -mtune=generic-armv7-a
From //build/config/compiler:compiler_arm_fpu
     (Added by //build/config/BUILDCONFIG.gn:463)
  -mfpu=neon
From //build/config/compiler:chromium_code
     (Added by //build/config/BUILDCONFIG.gn:464)
  -Wall
  -Werror
  -Wextra
  -Wno-missing-field-initializers
  -Wno-unused-parameter
  -Wno-c++11-narrowing
  -Wno-covered-switch-default
  -Wno-deprecated-register
  -Wno-unneeded-internal-declaration
  -Wno-inconsistent-missing-override
  -Wno-shift-negative-value
  -Wno-undefined-var-template
  -Wno-nonportable-include-path
From //build/config/compiler:default_optimization
     (Added by //build/config/BUILDCONFIG.gn:466)
  -Os
  -fdata-sections
  -ffunction-sections
  -fomit-frame-pointer
From //build/config/compiler:default_symbols
     (Added by //build/config/BUILDCONFIG.gn:467)
  -g1
From //build/config/compiler:runtime_library
     (Added by //build/config/BUILDCONFIG.gn:469)
  --sysroot=../../third_party/android_tools/ndk/platforms/android-16/arch-arm
From //build/config/gcc:symbol_visibility_hidden
     (Added by //build/config/BUILDCONFIG.gn:488)
  -fvisibility=hidden
From //build/config/clang:find_bad_constructs
     (Added by //build/config/BUILDCONFIG.gn:499)
  -Xclang
  -load
  -Xclang
  ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so
  -Xclang
  -add-plugin
  -Xclang
  find-bad-constructs
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-templates
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  follow-macro-expansion
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-implicit-copy-ctors
  -Xclang
  -plugin-arg-find-bad-constructs
  -Xclang
  check-ipc
From //build/config/clang:extra_warnings
     (Added by //build/config/BUILDCONFIG.gn:500)
  -Wheader-hygiene
  -Wstring-conversion
From //build/config/compiler:wexit_time_destructors
     (Added by //net/BUILD.gn:100)
  -Wexit-time-destructors

这个命令还可以展示不同的类型的信息中每一项具体是由哪个文件产生得。

gn ls

usage: gn ls  [] [--all-toolchains] [--as=...] [--type=...] [--testonly=...]

这个命令展示给定输出目录下,满足某个模式的所有的targets。默认情况下,只显示默认工具链的target会被匹配,除非明确地提供了工具链参数。如果没有指定标签参数,则显示所有的targets。模式不是常规的正则表达式(可以参考"gn help label_pattern")。

$ gn ls out/Default //net/*
//net:_net_unittests__library
//net:balsa
//net:crypto_message_printer
//net:disk_cache_memory_test
//net:dump_cache
//net:extras
//net:http_server
//net:net
//net:net_cert_normalize_name_fuzzer
//net:net_cert_parse_certificate_fuzzer
//net:net_cert_verify_name_in_subtree_fuzzer
//net:net_cert_verify_name_match_fuzzer
//net:net_data_job_fuzzer
//net:net_dns_hosts_parse_fuzzer
//net:net_dns_record_fuzzer
//net:net_ftp_ctrl_response_fuzzer
//net:net_ftp_directory_listing_fuzzer
//net:net_fuzzer_test_support
//net:net_get_domain_and_registry_fuzzer
//net:net_host_resolver_impl_fuzzer
//net:net_http_chunked_decoder_fuzzer
//net:net_http_proxy_client_socket_fuzzer
//net:net_http_stream_parser_fuzzer
//net:net_jni_headers
//net:net_jni_headers__jni_gen
//net:net_mime_sniffer_fuzzer
//net:net_parse_cookie_line_fuzzer
//net:net_parse_data_url_fuzzer
//net:net_parse_ip_pattern_fuzzer
//net:net_parse_proxy_bypass_rules_fuzzer
//net:net_parse_proxy_list_fuzzer
//net:net_parse_proxy_list_pac_fuzzer
//net:net_parse_proxy_rules_fuzzer
//net:net_perftests
//net:net_quic_crypto_framer_parse_message_fuzzer
//net:net_quic_proto
//net:net_quic_proto_gen
//net:net_resources
//net:net_resources_grit
//net:net_socks5_client_socket_fuzzer
//net:net_socks_client_socket_fuzzer
//net:net_test_jni_headers
//net:net_test_jni_headers__jni_gen
//net:net_unescape_url_component_fuzzer
//net:net_unittests
//net:net_unittests__isolate
//net:net_unittests__isolate__write_deps
//net:net_unittests__test_runner_script
//net:net_unittests_apk
//net:net_unittests_apk__build_config
//net:net_unittests_apk__build_config_java
//net:net_unittests_apk__build_config_java__apply_gcc
//net:net_unittests_apk__create
//net:net_unittests_apk__create__finalize
//net:net_unittests_apk__create__package
//net:net_unittests_apk__create__package_resources
//net:net_unittests_apk__create_incremental
//net:net_unittests_apk__create_incremental__finalize
//net:net_unittests_apk__create_incremental__package
//net:net_unittests_apk__create_incremental__package_resources
//net:net_unittests_apk__create_incremental_generate_manifest
//net:net_unittests_apk__final_dex
//net:net_unittests_apk__incremental_script
//net:net_unittests_apk__java
//net:net_unittests_apk__java__compile_java
//net:net_unittests_apk__java__compile_java__ijar
//net:net_unittests_apk__java__compile_java__javac
//net:net_unittests_apk__java__compile_java__process_prebuilt
//net:net_unittests_apk__java__compile_java__process_prebuilt__copy
//net:net_unittests_apk__java__dex
//net:net_unittests_apk__native_libraries_java
//net:net_unittests_apk__native_libraries_java__apply_gcc
//net:net_unittests_apk__process_resources
//net:net_unittests_apk__runtime_deps
//net:net_unittests_apk__write_ordered_libraries
//net:net_unittests_apk_incremental
//net:net_unittests_apk_run
//net:net_unittests_bundle_data
//net:net_unittests_incremental
//net:net_unittests_incremental__test_runner_script
//net:net_url_request_fuzzer
//net:net_websocket_frame_parser_fuzzer
//net:net_with_v8
//net:quic_client
//net:quic_packet_printer
//net:quic_server
//net:simple_quic_tools
//net:stale_while_revalidate_experiment_domains
//net:stale_while_revalidate_experiment_domains_dafsa
//net:test_support
//net:test_support_bundle_data
//net/android:embedded_test_server_aidl
//net/android:java_test_native_support
//net/android:net_android_java_enums_srcjar
//net/android:net_errors_java
//net/android:net_errors_java__apply_gcc
//net/android:net_java
//net/android:net_java__analysis
//net/android:net_java__build_config
//net/android:net_java__compile_java
//net/android:net_java__compile_java__ijar
//net/android:net_java__compile_java__javac
//net/android:net_java__compile_java__process_prebuilt
//net/android:net_java__compile_java__process_prebuilt__filter
//net/android:net_java__dex
//net/android:net_java__lint
//net/android:net_java_test_native_support
//net/android:net_java_test_support
//net/android:net_java_test_support__analysis
//net/android:net_java_test_support__build_config
//net/android:net_java_test_support__compile_java
//net/android:net_java_test_support__compile_java__ijar
//net/android:net_java_test_support__compile_java__javac
//net/android:net_java_test_support__compile_java__process_prebuilt
//net/android:net_java_test_support__compile_java__process_prebuilt__filter
//net/android:net_java_test_support__dex
//net/android:net_java_test_support__lint
//net/android:net_java_test_support_enums_srcjar
//net/android:net_javatests
//net/android:net_javatests__analysis
//net/android:net_javatests__build_config
//net/android:net_javatests__compile_java
//net/android:net_javatests__compile_java__ijar
//net/android:net_javatests__compile_java__javac
//net/android:net_javatests__compile_java__process_prebuilt
//net/android:net_javatests__compile_java__process_prebuilt__filter
//net/android:net_javatests__dex
//net/android:net_javatests__lint
//net/android:net_junit_tests
//net/android:net_junit_tests__java_binary
//net/android:net_junit_tests__java_binary__build_config
//net/android:net_junit_tests__java_binary__compile_java
//net/android:net_junit_tests__java_binary__compile_java__ijar
//net/android:net_junit_tests__java_binary__compile_java__javac
//net/android:net_junit_tests__java_binary__compile_java__process_prebuilt
//net/android:net_junit_tests__java_binary__compile_java__process_prebuilt__copy
//net/android:net_junit_tests__java_binary__java_binary_script
//net/android:net_junit_tests__test_runner_script
//net/android:net_test_support_apk
//net/android:net_test_support_apk__build_config
//net/android:net_test_support_apk__build_config_java
//net/android:net_test_support_apk__build_config_java__apply_gcc
//net/android:net_test_support_apk__create
//net/android:net_test_support_apk__create__finalize
//net/android:net_test_support_apk__create__package
//net/android:net_test_support_apk__create__package_resources
//net/android:net_test_support_apk__create_incremental
//net/android:net_test_support_apk__create_incremental__finalize
//net/android:net_test_support_apk__create_incremental__package
//net/android:net_test_support_apk__create_incremental__package_resources
//net/android:net_test_support_apk__create_incremental_generate_manifest
//net/android:net_test_support_apk__final_dex
//net/android:net_test_support_apk__incremental_script
//net/android:net_test_support_apk__java
//net/android:net_test_support_apk__java__compile_java
//net/android:net_test_support_apk__java__compile_java__ijar
//net/android:net_test_support_apk__java__compile_java__javac
//net/android:net_test_support_apk__java__compile_java__process_prebuilt
//net/android:net_test_support_apk__java__compile_java__process_prebuilt__copy
//net/android:net_test_support_apk__java__dex
//net/android:net_test_support_apk__native_libraries_java
//net/android:net_test_support_apk__native_libraries_java__apply_gcc
//net/android:net_test_support_apk__process_resources
//net/android:net_test_support_apk__runtime_deps
//net/android:net_test_support_apk__write_ordered_libraries
//net/android:net_test_support_apk_incremental
//net/android:net_unittests_apk_resources
//net/android:net_unittests_apk_resources__build_config
//net/android:net_unittests_apk_resources__process_resources
//net/base/registry_controlled_domains:registry_controlled_domains
//net/third_party/nist-pkits:nist-pkits
//net/tools/testserver:testserver_py
//net/tools/tld_cleanup:tld_cleanup

其它的一些例子:

  gn ls out/Debug
      Lists all targets in the default toolchain.

  gn ls out/Debug "//base/*"
      Lists all targets in the directory base and all subdirectories.

  gn ls out/Debug "//base:*"
      Lists all targets defined in //base/BUILD.gn.

  gn ls out/Debug //base --as=output
      Lists the build output file for //base:base

  gn ls out/Debug --type=executable
      Lists all executables produced by the build.

  gn ls out/Debug "//base/*" --as=output | xargs ninja -C out/Debug
      Builds all targets in //base and all subdirectories.

  gn ls out/Debug //base --all-toolchains
      Lists all variants of the target //base:base (it may be referenced in multiple toolchains).

gn path

usage: gn path   

查找两个taregets之间的依赖路径。Each unique path will be printed in one group, and groups will be separate by newlines. The two targets can appear in either order (paths will be found going in either direction).

By default, a single path will be printed. If there is a path with only public dependencies, the shortest public path will be printed. Otherwise, the shortest path using either public or private dependencies will be printed. If --with-data is specified, data deps will also be considered. If there are multiple shortest paths, an arbitrary one will be selected.

$ gn path out/Default //base //net --all
//net:net --[private]-->
//base:base

//net:net --[public]-->
//crypto:crypto --[private]-->
//base:base

//net:net --[public]-->
//url:url --[private]-->
//base:base

//net:net --[private]-->
//components/prefs:prefs --[private]-->
//base:base

//net:net --[private]-->
//sdch:sdch --[private]-->
//base:base

//net:net --[private]-->
//base:i18n --[private]-->
//base:base

6 "interesting" non-data paths found. 0 of them are public.

gn refs

gn refs  (|

这个命令可以用来查找反向的依赖(也就是引用了某些东西的targets)。输入可以是如下这些:

  • Target标签
  • Config标签
  • 标签模式
  • 文件名
  • 响应文件

这个命令输出依赖于参数中的输入得targets,比如:

$ gn refs out/Default //net:net
//android_webview/native:native
//blimp/client:blimp_client_android
//blimp/client:client
//blimp/client:compositor
//blimp/client:feature
//blimp/client:feature_unit_tests
//blimp/client:session
//blimp/client/core/session:session
//blimp/net:net
//chrome/browser/devtools:devtools
//chrome/common:common
//chrome/common/net:net
//chrome/renderer:renderer
//chrome/test:_unit_tests__library
//chrome/test:test_support
//chrome/test:unit_tests__isolate__write_deps
//chrome/test:unit_tests_apk__create__package
//chrome/test:unit_tests_apk__create__package_resources
//chrome/test:unit_tests_apk__create_incremental__package
//chrome/test:unit_tests_apk__create_incremental__package_resources
//chrome/test:unit_tests_apk__create_incremental_generate_manifest
//chrome/test:unit_tests_apk__java__compile_java__javac
//chrome/test:unit_tests_apk__java__compile_java__process_prebuilt__copy
//chrome/test:unit_tests_apk__process_resources
//components:_components_unittests__library
//components:components_unittests__isolate__write_deps
//components:components_unittests_apk__create__package
//components:components_unittests_apk__create__package_resources
//components:components_unittests_apk__create_incremental__package
//components:components_unittests_apk__create_incremental__package_resources
//components:components_unittests_apk__create_incremental_generate_manifest
//components:components_unittests_apk__java__compile_java__javac
//components:components_unittests_apk__java__compile_java__process_prebuilt__copy
//components:components_unittests_apk__process_resources
//components/about_handler:about_handler
//components/app_modal:app_modal
//components/auto_login_parser:auto_login_parser
//components/autofill/content/browser:browser
//components/autofill/content/browser:unit_tests
//components/autofill/content/renderer:renderer
//components/autofill/core/browser:browser
//components/bookmarks/browser:browser
//components/browser_sync/browser:browser
//components/browser_sync/browser:unit_tests
//components/browsing_data/content:content
//components/browsing_data_ui:unit_tests
//components/captive_portal:captive_portal
//components/cast_certificate:cast_certificate
//components/cast_certificate:test_support
//components/cast_certificate:unit_tests
//components/certificate_reporting:certificate_reporting
//components/certificate_transparency:certificate_transparency
//components/cloud_devices/common:common
//components/content_settings/core/browser:browser
//components/content_settings/core/common:common
//components/content_settings/core/common:unit_tests
//components/cookie_config:cookie_config
//components/data_reduction_proxy/content/browser:browser
//components/data_reduction_proxy/content/common:common
//components/data_reduction_proxy/core/browser:browser
//components/data_reduction_proxy/core/browser:browser_small
//components/data_reduction_proxy/core/browser:test_support
//components/data_reduction_proxy/core/common:common
//components/data_reduction_proxy/core/common:test_support
//components/data_usage/android:android
//components/data_usage/core:core
//components/data_use_measurement/content:content
//components/data_use_measurement/content:unit_tests
//components/data_use_measurement/core:core
//components/devtools_http_handler:devtools_http_handler
//components/devtools_http_handler:unit_tests
//components/dom_distiller/content/browser:browser
//components/dom_distiller/core:core
//components/dom_distiller/webui:webui
//components/domain_reliability:domain_reliability
//components/error_page/common:common
//components/error_page/renderer:renderer
//components/error_page/renderer:unit_tests
//components/favicon/core:core
//components/favicon_base:favicon_base
//components/feedback:feedback
//components/gcm_driver:gcm_driver
//components/gcm_driver:test_support
//components/gcm_driver/crypto:crypto
//components/google/core/browser:browser
//components/history/core/browser:browser
//components/history/core/test:test
//components/image_fetcher:image_fetcher
//components/image_fetcher:unit_tests
//components/invalidation/impl:impl
//components/invalidation/impl:test_support
//components/link_header_util:link_header_util
//components/link_header_util:unit_tests
//components/metrics:net
//components/mime_util:mime_util
//components/mime_util:unit_tests
//components/navigation_interception:navigation_interception
//components/net_log:net_log
//components/net_log:unit_tests
//components/network_hints/browser:browser
//components/network_session_configurator:network_session_configurator
//components/network_time:network_time
//components/network_time:unit_tests
//components/ntp_snippets:ntp_snippets
//components/offline_pages:offline_pages
//components/offline_pages/background:background_offliner
//components/omnibox/browser:browser
//components/omnibox/browser:test_support
//components/packed_ct_ev_whitelist:packed_ct_ev_whitelist
//components/password_manager/content/browser:browser
//components/password_manager/core/browser:browser
//components/password_manager/sync/browser:browser
//components/policy:policy_component_test_support
//components/policy/core/browser:browser
//components/policy/core/browser:unit_tests
//components/policy/core/common:common
//components/precache/content:content
//components/precache/core:core
//components/printing/renderer:renderer
//components/proximity_auth:proximity_auth
//components/proximity_auth/ble:ble
//components/proximity_auth/cryptauth:cryptauth
//components/proxy_config:proxy_config
//components/proxy_config:unit_tests
//components/rappor:rappor
//components/safe_browsing_db:database_manager
//components/safe_browsing_db:remote_database_manager
//components/safe_browsing_db:test_database_manager
//components/safe_browsing_db:unit_tests
//components/safe_browsing_db:util
//components/safe_browsing_db:v4_get_hash_protocol_manager
//components/safe_browsing_db:v4_local_database_manager
//components/safe_browsing_db:v4_protocol_manager_util
//components/safe_browsing_db:v4_update_protocol_manager
//components/search_engines:search_engines
//components/search_provider_logos:search_provider_logos
//components/security_interstitials/core:core
//components/security_state:security_state
//components/signin/core/browser:browser
//components/ssl_config:ssl_config
//components/ssl_config:unit_tests
//components/ssl_errors:ssl_errors
//components/subresource_filter/core/common:common
//components/suggestions:suggestions
//components/sync:_sync_unit_tests__library
//components/sync:sync_core
//components/sync:sync_unit_tests__isolate__write_deps
//components/sync:sync_unit_tests_apk__create__package
//components/sync:sync_unit_tests_apk__create__package_resources
//components/sync:sync_unit_tests_apk__create_incremental__package
//components/sync:sync_unit_tests_apk__create_incremental__package_resources
//components/sync:sync_unit_tests_apk__create_incremental_generate_manifest
//components/sync:sync_unit_tests_apk__java__compile_java__javac
//components/sync:sync_unit_tests_apk__java__compile_java__process_prebuilt__copy
//components/sync:sync_unit_tests_apk__process_resources
//components/sync:test_support_sync_fake_server
//components/sync_driver:sync_driver
//components/test_runner:test_runner
//components/toolbar:toolbar
//components/translate/content/browser:browser
//components/translate/core/browser:browser
//components/update_client:update_client
//components/url_formatter:unit_tests
//components/url_formatter:url_formatter
//components/variations/net:net
//components/variations/service:service
//components/variations/service:unit_tests
//components/web_contents_delegate_android:web_contents_delegate_android
//components/web_resource:web_resource
//components/web_restrictions:browser
//components/web_restrictions:unit_tests
//components/zoom:zoom
//content/app:both
//content/app:content_main_runner_both
//content/browser:browser
//content/child:child
//content/common:common
//content/public/browser:browser_sources
//content/public/common:common_sources
//content/public/renderer:renderer_sources
//content/renderer:renderer
//content/shell:content_shell_lib
//content/test:browsertest_support
//device:_device_unittests__library
//device:device_unittests__isolate__write_deps
//device:device_unittests_apk__create__package
//device:device_unittests_apk__create__package_resources
//device:device_unittests_apk__create_incremental__package
//device:device_unittests_apk__create_incremental__package_resources
//device:device_unittests_apk__create_incremental_generate_manifest
//device:device_unittests_apk__java__compile_java__javac
//device:device_unittests_apk__java__compile_java__process_prebuilt__copy
//device:device_unittests_apk__process_resources
//device/bluetooth:bluetooth
//device/bluetooth:mocks
//device/geolocation:device_geolocation
//device/hid:hid
//device/usb:test_support
//device/usb:usb
//device/usb/mojo:mojo
//google_apis:google_apis
//google_apis/gcm:_gcm_unit_tests__library
//google_apis/gcm:gcm
//google_apis/gcm:gcm_unit_tests__isolate__write_deps
//google_apis/gcm:gcm_unit_tests_apk__create__package
//google_apis/gcm:gcm_unit_tests_apk__create__package_resources
//google_apis/gcm:gcm_unit_tests_apk__create_incremental__package
//google_apis/gcm:gcm_unit_tests_apk__create_incremental__package_resources
//google_apis/gcm:gcm_unit_tests_apk__create_incremental_generate_manifest
//google_apis/gcm:gcm_unit_tests_apk__java__compile_java__javac
//google_apis/gcm:gcm_unit_tests_apk__java__compile_java__process_prebuilt__copy
//google_apis/gcm:gcm_unit_tests_apk__process_resources
//google_apis/gcm:mcs_probe
//google_apis/gcm:test_support
//jingle:_jingle_unittests__library
//jingle:jingle_glue
//jingle:jingle_unittests__isolate__write_deps
//jingle:jingle_unittests_apk__create__package
//jingle:jingle_unittests_apk__create__package_resources
//jingle:jingle_unittests_apk__create_incremental__package
//jingle:jingle_unittests_apk__create_incremental__package_resources
//jingle:jingle_unittests_apk__create_incremental_generate_manifest
//jingle:jingle_unittests_apk__java__compile_java__javac
//jingle:jingle_unittests_apk__java__compile_java__process_prebuilt__copy
//jingle:jingle_unittests_apk__process_resources
//jingle:notifier
//media/blink:_media_blink_unittests__library
//media/blink:blink
//media/blink:media_blink_unittests__isolate__write_deps
//media/blink:media_blink_unittests_apk__create__package
//media/blink:media_blink_unittests_apk__create__package_resources
//media/blink:media_blink_unittests_apk__create_incremental__package
//media/blink:media_blink_unittests_apk__create_incremental__package_resources
//media/blink:media_blink_unittests_apk__create_incremental_generate_manifest
//media/blink:media_blink_unittests_apk__java__compile_java__javac
//media/blink:media_blink_unittests_apk__java__compile_java__process_prebuilt__copy
//media/blink:media_blink_unittests_apk__process_resources
//media/cast:common
//net:_net_unittests__library
//net:balsa
//net:crypto_message_printer
//net:disk_cache_memory_test
//net:dump_cache
//net:extras
//net:http_server
//net:net_fuzzer_test_support
//net:net_perftests
//net:net_unittests__isolate__write_deps
//net:net_unittests_apk__create__package
//net:net_unittests_apk__create__package_resources
//net:net_unittests_apk__create_incremental__package
//net:net_unittests_apk__create_incremental__package_resources
//net:net_unittests_apk__create_incremental_generate_manifest
//net:net_unittests_apk__java__compile_java__javac
//net:net_unittests_apk__java__compile_java__process_prebuilt__copy
//net:net_unittests_apk__process_resources
//net:net_with_v8
//net:quic_client
//net:quic_packet_printer
//net:quic_server
//net:simple_quic_tools
//net:stale_while_revalidate_experiment_domains
//net:test_support
//remoting:test_support
//remoting/base:base
//remoting/host/it2me:common
//remoting/protocol:protocol
//remoting/signaling:signaling
//remoting/test:test_support
//storage/browser:browser
//storage/common:common
//third_party/WebKit/Source/platform:platform
//third_party/libjingle:jingle_deps
//ui/base:_ui_base_unittests__library
//ui/base:base
//ui/base:ui_base_unittests__isolate__write_deps
//ui/base:ui_base_unittests_apk__create__package
//ui/base:ui_base_unittests_apk__create__package_resources
//ui/base:ui_base_unittests_apk__create_incremental__package
//ui/base:ui_base_unittests_apk__create_incremental__package_resources
//ui/base:ui_base_unittests_apk__create_incremental_generate_manifest
//ui/base:ui_base_unittests_apk__java__compile_java__javac
//ui/base:ui_base_unittests_apk__java__compile_java__process_prebuilt__copy
//ui/base:ui_base_unittests_apk__process_resources
//ui/base/ime:ime

其它的一些例子:

  gn refs out/Debug //tools/gn:gn
      Find all targets depending on the given exact target name.

  gn refs out/Debug //base:i18n --as=buildfiles | xargs gvim
      Edit all .gn files containing references to //base:i18n

  gn refs out/Debug //base --all
      List all targets depending directly or indirectly on //base:base.

  gn refs out/Debug "//base/*"
      List all targets depending directly on any target in //base or its subdirectories.

  gn refs out/Debug "//base:*"
      List all targets depending directly on any target in //base/BUILD.gn.

  gn refs out/Debug //base --tree
      Print a reverse dependency tree of //base:base

  gn refs out/Debug //base/macros.h
      Print target(s) listing //base/macros.h as a source.

  gn refs out/Debug //base/macros.h --tree
      Display a reverse dependency tree to get to the given file. This will show how dependencies will reference that file.

  gn refs out/Debug //base/macros.h //base/at_exit.h --all
      Display all unique targets with some dependency path to a target containing either of the given files as a source.

  gn refs out/Debug //base/macros.h --testonly=true --type=executable --all --as=output
      Display the executable file names of all test executables potentially affected by a change to the given file.

gn check

gn check  [] [--force]

这个工具可以用来检查头文件依赖关系得有效性。

$ gn check out/Default/ net
Header dependency check OK

gn help

展示帮助信息,可以用来获取关于上面所有的gn命令,及内置得targets,内建得预定义变量的所有相关信息。如:

$ gn help
Commands (type "gn help " for more details):
  args: Display or configure arguments declared by the build.
  check: Check header dependencies.
  clean: Cleans the output directory.
  desc: Show lots of insightful information about a target or config.
  format: Format .gn file.
  gen: Generate ninja files.
  help: Does what you think.
  ls: List matching targets.
  path: Find paths between two targets.
  refs: Find stuff referencing a target or file.

Target declarations (type "gn help " for more details):
  action: Declare a target that runs a script a single time.
  action_foreach: Declare a target that runs a script over a set of files.
  bundle_data: [iOS/OS X] Declare a target without output.
  copy: Declare a target that copies files.
  create_bundle: [iOS/OS X] Build an OS X / iOS bundle.
  executable: Declare an executable target.
  group: Declare a named group of targets.
  loadable_module: Declare a loadable module target.
  shared_library: Declare a shared library target.
  source_set: Declare a source set target.
  static_library: Declare a static library target.
  target: Declare an target with the given programmatic type.

Buildfile functions (type "gn help " for more details):
  assert: Assert an expression is true at generation time.
  config: Defines a configuration object.
  declare_args: Declare build arguments.
  defined: Returns whether an identifier is defined.
  exec_script: Synchronously run a script and return the output.
  foreach: Iterate over a list.
  forward_variables_from: Copies variables from a different scope.
  get_label_info: Get an attribute from a target's label.
  get_path_info: Extract parts of a file or directory name.
  get_target_outputs: [file list] Get the list of outputs from a target.
  getenv: Get an environment variable.
  import: Import a file into the current scope.
  pool: Defines a pool object.
  print: Prints to the console.
  process_file_template: Do template expansion over a list of files.
  read_file: Read a file into a variable.
  rebase_path: Rebase a file or directory to another location.
  set_default_toolchain: Sets the default toolchain name.
  set_defaults: Set default values for a target type.
  set_sources_assignment_filter: Set a pattern to filter source files.
  split_list: Splits a list into N different sub-lists.
  template: Define a template rule.
  tool: Specify arguments to a toolchain tool.
  toolchain: Defines a toolchain.
  toolchain_args: Set build arguments for toolchain build setup.
  write_file: Write a file to disk.

Built-in predefined variables (type "gn help " for more details):
  current_cpu: [string] The processor architecture of the current toolchain.
  current_os: [string] The operating system of the current toolchain.
  current_toolchain: [string] Label of the current toolchain.
  default_toolchain: [string] Label of the default toolchain.
  host_cpu: [string] The processor architecture that GN is running on.
  host_os: [string] The operating system that GN is running on.
  invoker: [string] The invoking scope inside a template.
  python_path: [string] Absolute path of Python.
  root_build_dir: [string] Directory where build commands are run.
  root_gen_dir: [string] Directory for the toolchain's generated files.
  root_out_dir: [string] Root directory for toolchain output files.
  target_cpu: [string] The desired cpu architecture for the build.
  target_gen_dir: [string] Directory for a target's generated files.
  target_name: [string] The name of the current target.
  target_os: [string] The desired operating system for the build.
  target_out_dir: [string] Directory for target output files.

Variables you set in targets (type "gn help " for more details):
  all_dependent_configs: [label list] Configs to be forced on dependents.
  allow_circular_includes_from: [label list] Permit includes from deps.
  arflags: [string list] Arguments passed to static_library archiver.
  args: [string list] Arguments passed to an action.
  asmflags: [string list] Flags passed to the assembler.
  assert_no_deps: [label pattern list] Ensure no deps on these targets.
  bundle_executable_dir: Expansion of {{bundle_executable_dir}} in create_bundle
  bundle_plugins_dir: Expansion of {{bundle_plugins_dir}} in create_bundle.
  bundle_resources_dir: Expansion of {{bundle_resources_dir}} in create_bundle.
  bundle_root_dir: Expansion of {{bundle_root_dir}} in create_bundle.
  cflags: [string list] Flags passed to all C compiler variants.
  cflags_c: [string list] Flags passed to the C compiler.
  cflags_cc: [string list] Flags passed to the C++ compiler.
  cflags_objc: [string list] Flags passed to the Objective C compiler.
  cflags_objcc: [string list] Flags passed to the Objective C++ compiler.
  check_includes: [boolean] Controls whether a target's files are checked.
  code_signing_args: [string list] Arguments passed to code signing script.
  code_signing_outputs: [file list] Output files for code signing step.
  code_signing_script: [file name] Script for code signing.
  code_signing_sources: [file list] Sources for code signing step.
  complete_static_lib: [boolean] Links all deps into a static library.
  configs: [label list] Configs applying to this target or config.
  console: [boolean] Run this action in the console pool.
  data: [file list] Runtime data file dependencies.
  data_deps: [label list] Non-linked dependencies.
  defines: [string list] C preprocessor defines.
  depfile: [string] File name for input dependencies for actions.
  deps: [label list] Private linked dependencies.
  include_dirs: [directory list] Additional include directories.
  inputs: [file list] Additional compile-time dependencies.
  ldflags: [string list] Flags passed to the linker.
  lib_dirs: [directory list] Additional library directories.
  libs: [string list] Additional libraries to link.
  output_dir: [directory] Directory to put output file in.
  output_extension: [string] Value to use for the output's file extension.
  output_name: [string] Name for the output file other than the default.
  output_prefix_override: [boolean] Don't use prefix for output name.
  outputs: [file list] Output files for actions and copy targets.
  precompiled_header: [string] Header file to precompile.
  precompiled_source: [file name] Source file to precompile.
  product_type: [string] Product type for Xcode projects.
  public: [file list] Declare public header files for a target.
  public_configs: [label list] Configs applied to dependents.
  public_deps: [label list] Declare public dependencies.
  response_file_contents: [string list] Contents of .rsp file for actions.
  script: [file name] Script file for actions.
  sources: [file list] Source files for a target.
  testonly: [boolean] Declares a target must only be used for testing.
  visibility: [label list] A list of labels that can depend on a target.
  write_runtime_deps: Writes the target's runtime_deps to the given path.

Other help topics:
  all: Print all the help at once
  buildargs: How build arguments work.
  dotfile: Info about the toplevel .gn file.
  grammar: Formal grammar for GN build files.
  input_conversion: Processing input from exec_script and read_file.
  label_pattern: Matching more than one label.
  nogncheck: Annotating includes for checking.
  runtime_deps: How runtime dependency computation works.
  source_expansion: Map sources to outputs for scripts.
  switches: Show available command-line switches.

转载于:https://my.oschina.net/wolfcs/blog/726696

你可能感兴趣的:(GN的使用 - GN工具)