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 <systemroot>/usr/share/pkgconfig
and one of <systemroot>/usr/lib/pkgconfig or <systemroot>/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 [<ide options>] <out_dir>
这个工具根据当前的代码树及配置,产生ninja文件,并把它们放在给定得目录下。输出目录可以是源码库的绝对地址,比如//out/foo
,也可以是相对于当前目录的地址,如:out/foo
。 上面的gn args <out_dir>
等价于,在启动编辑器编辑参数,在编辑器编辑了参数退出之后,执行gn gen <out_dir>
。
gn clean
usage: gn clean <out_dir>
这个命令用于对历史编译进行清理。它会删除输出目录下除了args.gn外得内容,并创建一个可以重新产生构建配置的Ninja构建环境。
gn desc
usage: gn desc <out_dir> <label or pattern> [<what to show>] [--blame] [--format=json]
显示关于一个给定target或config的信息。构建参数取自给出的<out_dir>
。<label or pattern>
可以是一个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 <out_dir> [<label_pattern>] [--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 <out_dir> <target_one> <target_two>
查找两个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 <out_dir> (<label_pattern>|<label>|<file>|@<response_file>)* [--all] [--all-toolchains] [--as=...] [--testonly=...] [--type=...]
这个命令可以用来查找反向的依赖(也就是引用了某些东西的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 <out_dir> [<label_pattern>] [--force]
这个工具可以用来检查头文件依赖关系得有效性。
$ gn check out/Default/ net
Header dependency check OK
gn help
展示帮助信息,可以用来获取关于上面所有的gn命令,及内置得targets,内建得预定义变量的所有相关信息。如:
$ gn help
Commands (type "gn help <command>" 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 <function>" 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 <function>" 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 <variable>" 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 <variable>" 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.