diff --git a/docs/gen/build_arguments.md b/docs/gen/build_arguments.md index 63cb769588273fc7caaa26ee1fc9ab102a37e516..38e3cf38cd97441e5178f4b091988d141f82cd94 100644 --- a/docs/gen/build_arguments.md +++ b/docs/gen/build_arguments.md @@ -2,86 +2,86 @@ ## All builds -### clang_lib_dir -Path to Clang lib directory. +### universal_variants -**Current value (from the default):** `"../build/buildtools/linux-x64/clang/lib"` +**Current value (from the default):** +``` +[{ + configs = [] + name = "release" + toolchain_args = { + is_debug = false +} +}] +``` -From //build/images/manifest.gni:19 +From //build/config/BUILDCONFIG.gn:423 -### dart_lib_export_symbols -Whether libdart should export the symbols of the Dart API. +### enable_frame_pointers +Controls whether the compiler emits full stack frames for function calls. +This reduces performance but increases the ability to generate good +stack traces, especially when we have bugs around unwind table generation. +It applies only for Fuchsia targets (see below where it is unset). + +TODO(ZX-2361): Theoretically unwind tables should be good enough so we can +remove this option when the issues are addressed. **Current value (from the default):** `true` -From //third_party/dart/runtime/runtime_args.gni:91 +From //build/config/BUILD.gn:19 -### fvm_image_size -The size in bytes of the FVM partition image to create. Normally this is -computed to be just large enough to fit the blob and data images. The -default value is "", which means to size based on inputs. Specifying a size -that is too small will result in build failure. +### rust_lto +Sets the default LTO type for rustc bulids. -**Current value (from the default):** `""` +**Current value (from the default):** `"unset"` -From //build/images/fvm.gni:12 +From //build/rust/config.gni:20 -### select_variant_shortcuts -List of short names for commonly-used variant selectors. Normally this -is not set as a build argument, but it serves to document the available -set of short-cut names for variant selectors. Each element of this list -is a scope where `.name` is the short name and `.select_variant` is a -a list that can be spliced into [`select_variant`](#select_variant). +### shell_enable_vulkan -**Current value (from the default):** -``` -[{ - name = "host_asan" - select_variant = [{ - dir = ["//third_party/yasm", "//third_party/vboot_reference", "//garnet/tools/vboot_reference", "//third_party/shaderc/third_party/spirv-tools"] - host = true - variant = "asan_no_detect_leaks" -}, { - host = true - variant = "asan" -}] -}, { - name = "asan" - select_variant = [{ - target_type = ["driver_module"] - variant = false -}, { - host = false - variant = "asan" -}] -}] -``` +**Current value (from the default):** `false` -From //build/config/BUILDCONFIG.gn:449 +From //third_party/flutter/shell/config.gni:6 -### skia_use_libheif +### target_sysroot +The absolute path of the sysroot that is used with the target toolchain. -**Current value (from the default):** `false` +**Current value (from the default):** `""` -From //third_party/skia/BUILD.gn:37 +From //build/config/sysroot.gni:7 -### dart_space_dart -Whether experimental space dart mode is enabled for Dart applications. +### zircon_args +[Zircon GN build arguments](../../../zircon/docs/gen/build_arguments.md). +The default passes through GOMA settings and +[`select_variant`](#select_variant) shorthand selectors. +**Only set this if you want to wipe out all the defaults that +propagate from Fuchsia GN to Zircon GN.** The default value +folds in [`zircon_extra_args`](#zircon_extra_args), so usually +it's better to just set `zircon_extra_args` and leave `zircon_args` alone. +Any individual Zircon build argument set in `zircon_extra_args` will +silently clobber the default value shown here. -**Current value (from the default):** `false` +**Current value (from the default):** +``` +{ + default_deps = [":legacy-arm64"] + enable_kernel_debugging_features = false + enable_netsvc_debugging_features = false + goma_dir = "/home/swarming/goma" + use_goma = false + variants = [] +} +``` -From [//topaz/runtime/dart/dart_component.gni:41](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#41) +From //build/config/fuchsia/zircon.gni:46 -### scudo_default_options -Default [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html) -options (before the `SCUDO_OPTIONS` environment variable is read at -runtime). *NOTE:* This affects only components using the `scudo` -variant (see GN build argument `select_variant`), and does not affect -anything when the `use_scudo` build flag is set instead. +### go_vet_enabled + go_vet_enabled + [bool] if false, go vet invocations are disabled for all builds. -**Current value (from the default):** `["abort_on_error=1", "QuarantineSizeKb=0", "ThreadLocalQuarantineSizeKb=0", "DeallocationTypeMismatch=false", "DeleteSizeMismatch=false", "allocator_may_return_null=true"]` +**Current value (from the default):** `false` -From //build/config/scudo/scudo.gni:17 +From //build/go/go_build.gni:20 ### sdk_id Identifier for the Core SDK. @@ -90,359 +90,348 @@ Identifier for the Core SDK. From //sdk/config.gni:7 -### blobfs_maximum_bytes -In addition to reserving space for inodes and data, fs needs additional -space for maintaining some internal data structures. So the -space required to reserve inodes and data may exceed sum of the space -needed for inodes and data. -maximum_bytes puts an upper bound on the total bytes reserved for inodes, -data bytes and reservation for all other internal fs metadata. -An empty string does not put any upper bound. A filesystem may -reserve few blocks required for its operations. - -**Current value (from the default):** `""` - -From //build/images/fvm.gni:47 +### vk_loader_debug -### linux_runner_ip -Default values for the guest network configuration. +**Current value (from the default):** `"warn,error"` -These are currently hard-coded to match what is setup in the virtio-net -device. +From [//third_party/vulkan_loader_and_validation_layers/loader/BUILD.gn:26](https://fuchsia.googlesource.com/third_party/vulkan_loader_and_validation_layers/+/5aa2763f1d0a436644207f3ab56f40cfbf9bb760/loader/BUILD.gn#26) -See //src/virtualization/bin/vmm/device/virtio_net.cc for more details. +### scenic_enable_vulkan_validation +Include the vulkan validation layers in scenic. -**Current value (from the default):** `"10.0.0.2"` +**Current value (from the default):** `true` -From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:17 +From //garnet/bin/ui/BUILD.gn:40 -### skia_enable_atlas_text +### skia_enable_fontmgr_win **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:65 - -### skia_enable_spirv_validation +From //third_party/skia/BUILD.gn:72 -**Current value (from the default):** `false` +### icu_use_data_file +Tells icu to load an external data file rather than rely on the icudata +being linked directly into the binary. -From //third_party/skia/BUILD.gn:47 +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). -### skia_use_expat +TODO(GYP) We'll probably need to enhance this logic to set the value to +true or false in similar circumstances. -**Current value for `target_cpu = "arm64"`:** `false` +**Current value (from the default):** `true` -From //.gn:27 +From [//third_party/icu/config.gni:15](https://fuchsia.googlesource.com/third_party/icu/+/65e4aa3b8cc6b41cf31136b9474a9c97bdc27739/config.gni#15) -**Overridden from the default:** `true` +### prebuilt_libvulkan_arm_path -From //third_party/skia/BUILD.gn:23 +**Current value (from the default):** `""` -**Current value for `target_cpu = "x64"`:** `false` +From //garnet/lib/magma/gnbuild/magma.gni:23 -From //.gn:27 +### skia_use_metal -**Overridden from the default:** `true` +**Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:23 +From //third_party/skia/BUILD.gn:36 -### skia_use_icu +### skia_use_xps **Current value (from the default):** `true` -From //third_party/skia/gn/skia.gni:13 +From //third_party/skia/BUILD.gn:39 -### target_os +### dart_core_snapshot_kind +Controls the kind of core snapshot linked into the standalone VM. Using a +core-jit snapshot breaks the ability to change various flags that affect +code generation. -**Current value (from the default):** `""` +**Current value (from the default):** `"core"` -### vk_loader_debug +From //third_party/dart/runtime/runtime_args.gni:56 -**Current value (from the default):** `"warn,error"` +### flutter_aot_sharing_basis +When AOT compiling, an app will reference objects in the sharing basis's +snapshot when available instead of writing the objects in its own snapshot. +The snapshot of the sharing basis app will be included in every other app's +package and deduplicated by blobfs. -From [//third_party/vulkan_loader_and_validation_layers/loader/BUILD.gn:26](https://fuchsia.googlesource.com/third_party/vulkan_loader_and_validation_layers/+/5aa2763f1d0a436644207f3ab56f40cfbf9bb760/loader/BUILD.gn#26) +**Current value (from the default):** `""` -### zircon_extra_args -[Zircon GN build arguments](../../../zircon/docs/gen/build_arguments.md). -This is included in the default value of [`zircon_args`](#zircon_args) so -you can set this to add things there without wiping out the defaults. -When you set `zircon_args` directly, then this has no effect at all. -Arguments you set here override any arguments in the default -`zircon_args`. There is no way to append to a value from the defaults. -Note that for just setting simple (string-only) values in Zircon GN's -[`variants`](../../../zircon/docs/gen/build_arguments.md#variants), the -default [`zircon_args`](#zircon_args) uses a `variants` value derived from -[`select_variant`](#select_variant) so for simple cases there is no need -to explicitly set Zircon's `variants` here. +From [//topaz/runtime/dart/dart_component.gni:27](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#27) -**Current value (from the default):** `{ }` +### linux_runner_gateway -From //build/config/fuchsia/zircon.gni:27 +**Current value (from the default):** `"10.0.0.1"` -### clang_prefix -The default clang toolchain provided by the buildtools. This variable is -additionally consumed by the Go toolchain. +From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:18 -**Current value (from the default):** `"../buildtools/linux-x64/clang/bin"` +### skia_enable_nima -From //build/config/clang/clang.gni:11 +**Current value (from the default):** `false` -### crashpad_use_boringssl_for_http_transport_socket -TODO(scottmg): https://crbug.com/crashpad/266 fuchsia:DX-690: BoringSSL -was removed from the Fuchsia SDK. Re-enable it when we have a way to acquire -a BoringSSL lib again. +From //third_party/skia/BUILD.gn:45 + +### skia_use_harfbuzz **Current value (from the default):** `true` -From [//third_party/crashpad/util/net/tls.gni:21](https://chromium.googlesource.com/crashpad/crashpad/+/d221b7cadab5f00c6999f060a5bcb0896e25c7b7/util/net/tls.gni#21) +From //third_party/skia/gn/skia.gni:14 -### enable_netboot -Whether to build the netboot zbi by default. +### board_name +Board name used for paving and amber updates. -You can still build //build/images:netboot explicitly even if enable_netboot is false. +**Current value for `target_cpu = "arm64"`:** `"qemu-arm64"` -**Current value for `target_cpu = "arm64"`:** `false` +From //boards/arm64.gni:7 -From //products/core.gni:7 +**Overridden from the default:** `""` -**Overridden from the default:** `false` +From //build/package.gni:21 -From //build/images/BUILD.gn:33 +**Current value for `target_cpu = "x64"`:** `"pc"` -**Current value for `target_cpu = "x64"`:** `false` +From //boards/x64.gni:7 -From //products/core.gni:7 +**Overridden from the default:** `""` -**Overridden from the default:** `false` +From //build/package.gni:21 -From //build/images/BUILD.gn:33 - -### universe_package_labels -If you add package labels to this variable, the packages will be included -in the 'universe' package set, which represents all software that is -produced that is to be published to a package repository or to the SDK by -the build. The build system ensures that the universe package set includes -the base and cache package sets, which means you do not need to redundantly -include those labels in this variable. - -**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/prod:vboot_reference", "//bundles:tools"]` - -From //products/core.gni:27 - -**Overridden from the default:** `[]` - -From //BUILD.gn:30 - -**Current value for `target_cpu = "x64"`:** `["//garnet/packages/prod:vboot_reference", "//bundles:tools"]` - -From //products/core.gni:27 - -**Overridden from the default:** `[]` - -From //BUILD.gn:30 - -### build_libvulkan_qcom_adreno -Targets that will be built as qualcomm vulkan ICDS. - -**Current value (from the default):** `[]` - -From //garnet/lib/magma/gnbuild/magma.gni:44 - -### kernel_cmdline_files -Files containing additional kernel command line arguments to bake into -the boot image. The contents of these files (in order) come after any -arguments directly in [`kernel_cmdline_args`](#kernel_cmdline_args). -These can be GN `//` source pathnames or absolute system pathnames. +### build_libvulkan_arm_mali +Targets that will be built as mali vulkan ICDS. **Current value (from the default):** `[]` -From //build/images/BUILD.gn:486 - -### skia_enable_fontmgr_empty - -**Current value (from the default):** `false` - -From //third_party/skia/BUILD.gn:66 +From //garnet/lib/magma/gnbuild/magma.gni:38 -### use_scudo -TODO(davemoore): Remove this entire mechanism once standalone scudo is the -default (DNO-442) -Enable the [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html) -memory allocator. +### fuchsia_sdk_root +Consumers of the Fuchsia SDK instantiate templates for various SDK parts at +a specific spot within their buildroots. The target name for the specific +part is then derived from the part name as specified in the meta.json +manifest. Different buildroot instantiate the SDK parts at different +locations and then set this variable. GN rules can then prefix this variable +name in SDK builds to the name of the SDK part. This flag is meaningless in +non-SDK buildroots. -**Current value (from the default):** `false` +**Current value (from the default):** `""` -From //build/config/scudo/scudo.gni:10 +From //build/fuchsia/sdk.gni:17 -### add_qemu_to_build_archives -Whether to include images necessary to run Fuchsia in QEMU in build -archives. +### skia_use_lua **Current value (from the default):** `false` -From //build/images/BUILD.gn:51 - -### fvm_slice_size -The size of the FVM partition images "slice size". The FVM slice size is a -minimum size of a particular chunk of a partition that is stored within -FVM. A very small slice size may lead to decreased throughput. A very large -slice size may lead to wasted space. The selected default size of 8mb is -selected for conservation of space, rather than performance. - -**Current value (from the default):** `"8388608"` +From //third_party/skia/BUILD.gn:31 -From //build/images/fvm.gni:19 +### enable_input_subsystem -### magma_python_path +**Current value (from the default):** `true` -**Current value (from the default):** `"/b/s/w/ir/k/third_party/mako"` +From //garnet/bin/ui/scenic/BUILD.gn:14 -From //garnet/lib/magma/gnbuild/magma.gni:14 +### framework_packages -### auto_login_to_guest -Whether basemgr should automatically login as a persistent guest user. +**Current value (from the default):** `["collection", "flutter", "meta", "typed_data", "vector_math"]` -**Current value (from the default):** `false` +From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:8](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#8) -From //peridot/bin/basemgr/BUILD.gn:13 +### is_debug +Debug build. -### dart_custom_version_for_pub -When this argument is a non-empty string, the version repoted by the -Dart VM will be one that is compatible with pub's interpretation of -semantic version strings. The version string will also include the values -of the argument. In particular the version string will read: +**Current value (from the default):** `true` - "M.m.p-dev.x.x-$(dart_custom_version_for_pub)-$(short_git_hash)" +From //build/config/BUILDCONFIG.gn:11 -Where 'M', 'm', and 'p' are the major, minor and patch version numbers, -and 'dev.x.x' is the dev version tag most recently preceeding the current -revision. The short git hash can be omitted by setting -dart_version_git_info=false +### known_variants +List of variants that will form the basis for variant toolchains. +To make use of a variant, set [`select_variant`](#select_variant). -**Current value (from the default):** `""` +Normally this is not set as a build argument, but it serves to +document the available set of variants. +See also [`universal_variants`](#universal_variants). +Only set this to remove all the default variants here. +To add more, set [`extra_variants`](#extra_variants) instead. -From //third_party/dart/runtime/runtime_args.gni:73 +Each element of the list is one variant, which is a scope defining: -### ledger_sync_credentials_file + `configs` (optional) + [list of labels] Each label names a config that will be + automatically used by every target built in this variant. + For each config `${label}`, there must also be a target + `${label}_deps`, which each target built in this variant will + automatically depend on. The `variant()` template is the + recommended way to define a config and its `_deps` target at + the same time. -**Current value (from the default):** `""` + `remove_common_configs` (optional) + `remove_shared_configs` (optional) + [list of labels] This list will be removed (with `-=`) from + the `default_common_binary_configs` list (or the + `default_shared_library_configs` list, respectively) after + all other defaults (and this variant's configs) have been + added. -From //src/ledger/bin/testing/sync_params.gni:6 + `deps` (optional) + [list of labels] Added to the deps of every target linked in + this variant (as well as the automatic `${label}_deps` for + each label in configs). -### minfs_minimum_inodes + `name` (required if configs is omitted) + [string] Name of the variant as used in + [`select_variant`](#select_variant) elements' `variant` fields. + It's a good idea to make it something concise and meaningful when + seen as e.g. part of a directory name under `$root_build_dir`. + If name is omitted, configs must be nonempty and the simple names + (not the full label, just the part after all `/`s and `:`s) of these + configs will be used in toolchain names (each prefixed by a "-"), + so the list of config names forming each variant must be unique + among the lists in `known_variants + extra_variants`. -**Current value (from the default):** `""` + `toolchain_args` (optional) + [scope] Each variable defined in this scope overrides a + build argument in the toolchain context of this variant. -From //build/images/fvm.gni:29 + `host_only` (optional) + `target_only` (optional) + [scope] This scope can contain any of the fields above. + These values are used only for host or target, respectively. + Any fields included here should not also be in the outer scope. -### msd_arm_enable_protected_debug_swap_mode -In protected mode, faults don't return as much information so they're much harder to debug. To -work around that, add a mode where protected atoms are executed in non-protected mode and -vice-versa. -NOTE: The memory security ranges should also be set (in TrustZone) to the opposite of normal, so -that non-protected mode accesses can only access protected memory and vice versa. Also, -growable memory faults won't work in this mode, so larger portions of growable memory should -precommitted (which is not done by default). +**Current value (from the default):** +``` +[{ + configs = ["//build/config/lto"] +}, { + configs = ["//build/config/lto:thinlto"] +}, { + configs = ["//build/config/profile"] +}, { + configs = ["//build/config/scudo"] +}, { + configs = ["//build/config/sanitizers:ubsan"] +}, { + configs = ["//build/config/sanitizers:ubsan", "//build/config/sanitizers:sancov"] +}, { + configs = ["//build/config/sanitizers:asan"] + host_only = { + remove_shared_configs = ["//build/config:symbol_no_undefined"] +} + toolchain_args = { + use_scudo = false +} +}, { + configs = ["//build/config/sanitizers:asan", "//build/config/sanitizers:sancov"] + host_only = { + remove_shared_configs = ["//build/config:symbol_no_undefined"] +} + toolchain_args = { + use_scudo = false +} +}, { + configs = ["//build/config/sanitizers:asan"] + host_only = { + remove_shared_configs = ["//build/config:symbol_no_undefined"] +} + name = "asan_no_detect_leaks" + toolchain_args = { + asan_default_options = "detect_leaks=0" + use_scudo = false +} +}, { + configs = ["//build/config/sanitizers:asan", "//build/config/sanitizers:fuzzer"] + host_only = { + remove_shared_configs = ["//build/config:symbol_no_undefined"] +} + remove_shared_configs = ["//build/config:symbol_no_undefined"] + toolchain_args = { + asan_default_options = "alloc_dealloc_mismatch=0" + use_scudo = false +} +}, { + configs = ["//build/config/sanitizers:ubsan", "//build/config/sanitizers:fuzzer"] + remove_shared_configs = ["//build/config:symbol_no_undefined"] +}] +``` -**Current value (from the default):** `false` +From //build/config/BUILDCONFIG.gn:338 -From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:23 +### select_variant_canonical +*This should never be set as a build argument.* +It exists only to be set in `toolchain_args`. +See //build/toolchain/clang_toolchain.gni for details. -### prebuilt_framework_path +**Current value (from the default):** `[]` -**Current value (from the default):** `""` +From //build/config/BUILDCONFIG.gn:631 -From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:6](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#6) +### target_cpu -### skia_enable_fontmgr_win_gdi +**Current value for `target_cpu = "arm64"`:** `"arm64"` -**Current value (from the default):** `false` +From //boards/arm64.gni:5 -From //third_party/skia/BUILD.gn:73 +**Overridden from the default:** `""` -### update_kernels -(deprecated) List of kernel images to include in the update (OTA) package. -If no list is provided, all built kernels are included. The names in the -list are strings that must match the filename to be included in the update -package. +**Current value for `target_cpu = "x64"`:** `"x64"` -**Current value (from the default):** `[]` +From //boards/x64.gni:5 -From //build/images/BUILD.gn:498 +**Overridden from the default:** `""` -### zircon_b_partition +### active_partition **Current value (from the default):** `""` -From //build/images/BUILD.gn:40 +From //build/images/BUILD.gn:45 -### dart_core_snapshot_kind -Controls the kind of core snapshot linked into the standalone VM. Using a -core-jit snapshot breaks the ability to change various flags that affect -code generation. +### data_partition_manifest +Path to manifest file containing data to place into the initial /data +partition. -**Current value (from the default):** `"core"` +**Current value (from the default):** `""` -From //third_party/dart/runtime/runtime_args.gni:56 +From //build/images/BUILD.gn:28 -### zedboot_cmdline_files -Files containing additional kernel command line arguments to bake into -the Zedboot image. The contents of these files (in order) come after any -arguments directly in [`zedboot_cmdline_args`](#zedboot_cmdline_args). -These can be GN `//` source pathnames or absolute system pathnames. +### build_libvulkan_img_rgx +Targets that will be built as IMG vulkan ICDS. **Current value (from the default):** `[]` -From //build/images/zedboot/BUILD.gn:23 - -### export_x64_sdk_images - -**Current value (from the default):** `false` - -From //sdk/BUILD.gn:13 - -### skia_use_zlib - -**Current value (from the default):** `true` - -From //third_party/skia/BUILD.gn:35 +From //garnet/lib/magma/gnbuild/magma.gni:47 -### zircon_enable_netsvc_debugging_features +### skia_enable_pdf **Current value for `target_cpu = "arm64"`:** `false` -From //products/core.gni:10 +From //.gn:25 -**Overridden from the default:** `false` +**Overridden from the default:** `true` -From //build/config/fuchsia/zircon.gni:33 +From //third_party/skia/BUILD.gn:46 **Current value for `target_cpu = "x64"`:** `false` -From //products/core.gni:10 - -**Overridden from the default:** `false` - -From //build/config/fuchsia/zircon.gni:33 - -### board_packages +From //.gn:25 -**Current value for `target_cpu = "arm64"`:** `[]` +**Overridden from the default:** `true` -From //boards/arm64.gni:9 +From //third_party/skia/BUILD.gn:46 -**Overridden from the default:** `[]` +### toolchain_manifests +Manifest files describing target libraries from toolchains. +Can be either // source paths or absolute system paths. -From //BUILD.gn:40 +**Current value (from the default):** `["/b/s/w/ir/k/buildtools/linux-x64/clang/lib/aarch64-fuchsia.manifest"]` -**Current value for `target_cpu = "x64"`:** `[]` +From //build/images/manifest.gni:11 -From //boards/x64.gni:9 +### zircon_asserts -**Overridden from the default:** `[]` +**Current value (from the default):** `true` -From //BUILD.gn:40 +From //build/config/fuchsia/BUILD.gn:205 ### bootfs_extra List of extra manifest entries for files to add to the BOOTFS. @@ -450,565 +439,562 @@ Each entry can be a "TARGET=SOURCE" string, or it can be a scope with `sources` and `outputs` in the style of a copy() target: `outputs[0]` is used as `TARGET` (see `gn help source_expansion`). -**Current value (from the default):** `[]` +**Current value (from the default):** `[]` + +From //build/images/BUILD.gn:492 + +### scenic_use_views2 +Temporary flag, switches Flutter to using Scenic's new View API. + +**Current value (from the default):** `false` -From //build/images/BUILD.gn:492 +From //garnet/bin/ui/scenic/config.gni:7 -### build_libvulkan_img_rgx -Targets that will be built as IMG vulkan ICDS. +### skia_use_opencl -**Current value (from the default):** `[]` +**Current value (from the default):** `false` -From //garnet/lib/magma/gnbuild/magma.gni:47 +From //third_party/skia/BUILD.gn:32 -### dart_use_fallback_root_certificates -Whether to fall back to built-in root certificates when they cannot be -verified at the operating system level. +### allow_layer_guesswork +Does nothing. + +Will be removed after 30 April 2019. **Current value (from the default):** `false` -From //third_party/dart/runtime/runtime_args.gni:43 +From //BUILD.gn:39 -### dart_version_git_info -Whether the Dart binary version string should include the git hash and -git commit time. +### escher_use_null_vulkan_config_on_host +Using Vulkan on host (i.e. Linux) is an involved affair that involves +downloading the Vulkan SDK, setting environment variables, and so forth... +all things that are difficult to achieve in a CQ environment. Therefore, +by default we use a stub implementation of Vulkan which fails to create a +VkInstance. This allows everything to build, and also allows running Escher +unit tests which don't require Vulkan. **Current value (from the default):** `true` -From //third_party/dart/runtime/runtime_args.gni:60 +From //src/ui/lib/escher/BUILD.gn:16 -### fastboot_product +### clang_prefix +The default clang toolchain provided by the buildtools. This variable is +additionally consumed by the Go toolchain. -**Current value (from the default):** `""` +**Current value (from the default):** `"../buildtools/linux-x64/clang/bin"` -From //build/images/BUILD.gn:47 +From //build/config/clang/clang.gni:11 -### go_vet_enabled - go_vet_enabled - [bool] if false, go vet invocations are disabled for all builds. +### using_fuchsia_sdk +Only set in buildroots where targets configure themselves for use with the +Fuchsia SDK **Current value (from the default):** `false` -From //build/go/go_build.gni:20 +From //build/fuchsia/sdk.gni:8 -### goma_dir -Absolute directory containing the Goma source code. +### skia_tools_require_resources -**Current value (from the default):** `"/home/swarming/goma"` +**Current value (from the default):** `false` -From //build/toolchain/goma.gni:12 +From //third_party/skia/BUILD.gn:60 -### kernel_cmdline_args -List of kernel command line arguments to bake into the boot image. -See also //zircon/docs/kernel_cmdline.md and -[`devmgr_config`](#devmgr_config). +### dart_component_kind -**Current value (from the default):** `[]` +**Current value (from the default):** `"static_library"` -From //build/images/BUILD.gn:480 +From //third_party/dart/runtime/runtime_args.gni:80 -### rust_lto -Sets the default LTO type for rustc bulids. +### linux_runner_netmask -**Current value (from the default):** `"unset"` +**Current value (from the default):** `"255.255.255.0"` -From //build/rust/config.gni:20 +From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:19 -### scenic_ignore_vsync +### blobfs_maximum_bytes +In addition to reserving space for inodes and data, fs needs additional +space for maintaining some internal data structures. So the +space required to reserve inodes and data may exceed sum of the space +needed for inodes and data. +maximum_bytes puts an upper bound on the total bytes reserved for inodes, +data bytes and reservation for all other internal fs metadata. +An empty string does not put any upper bound. A filesystem may +reserve few blocks required for its operations. -**Current value (from the default):** `false` +**Current value (from the default):** `""` -From //garnet/lib/ui/gfx/BUILD.gn:8 +From //build/images/fvm.gni:47 -### skia_enable_fontmgr_fuchsia +### build_info_product +Product configuration of the current build + +**Current value (from the default):** `""` + +From //garnet/BUILD.gn:21 + +### skia_enable_fontmgr_android **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:71 +From //third_party/skia/BUILD.gn:70 -### skia_skqp_global_error_tolerance +### base_package_labels +If you add package labels to this variable, the packages will be included in +the 'base' package set, which represents the set of packages that are part +of an OTA. These pacakages are updated as an atomic unit during an OTA +process and are immutable and are a superset of the TCB (Trusted Computing +Base) for a product. These packages are never evicted by the system. -**Current value (from the default):** `0` +**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/config:kernel_crash_checker", "//garnet/packages/prod:crashpad_agent", "//garnet/packages/prod:feedback_agent", "//garnet/packages/prod:kernel_crash_checker", "//garnet/packages/products:base", "//bundles:kitchen_sink"]` -From //third_party/skia/BUILD.gn:55 +From //root_build_dir/args.gn:3 -### enable_frame_pointers -Controls whether the compiler emits full stack frames for function calls. -This reduces performance but increases the ability to generate good -stack traces, especially when we have bugs around unwind table generation. -It applies only for Fuchsia targets (see below where it is unset). +**Overridden from the default:** `[]` -TODO(ZX-2361): Theoretically unwind tables should be good enough so we can -remove this option when the issues are addressed. +From //BUILD.gn:14 -**Current value (from the default):** `true` +**Current value for `target_cpu = "x64"`:** `["//garnet/packages/config:kernel_crash_checker", "//garnet/packages/prod:crashpad_agent", "//garnet/packages/prod:feedback_agent", "//garnet/packages/prod:kernel_crash_checker", "//garnet/packages/products:base", "//bundles:kitchen_sink"]` -From //build/config/BUILD.gn:19 +From //root_build_dir/args.gn:3 -### fuchsia_use_vulkan -Consolidated build toggle for use of Vulkan across Fuchsia +**Overridden from the default:** `[]` -**Current value (from the default):** `true` +From //BUILD.gn:14 -From //build/vulkan/config.gni:7 +### dart_default_app +Controls whether dart_app() targets generate JIT or AOT Dart snapshots. +This defaults to JIT, use `fx set <ARCH> --args +'dart_default_app="dart_aot_app"' to switch to AOT. -### embedder_for_target -By default, the dynamic library target exposing the embedder API is only -built for the host. The reasoning is that platforms that have target -definitions would not need an embedder API because an embedder -implementation is already provided for said target. This flag allows tbe -builder to obtain a shared library exposing the embedder API for alternative -embedder implementations. +**Current value (from the default):** `"dart_jit_app"` -**Current value (from the default):** `false` +From [//topaz/runtime/dart/dart_component.gni:19](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#19) -From //third_party/flutter/shell/platform/embedder/embedder.gni:12 +### extra_variants +Additional variant toolchain configs to support. +This is just added to [`known_variants`](#known_variants). -### prebuilt_framework_name +**Current value (from the default):** `[]` -**Current value (from the default):** `""` +From //build/config/BUILDCONFIG.gn:403 -From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:7](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#7) +### host_tools_dir +This is the directory where host tools intended for manual use by +developers get installed. It's something a developer might put +into their shell's $PATH. Host tools that are just needed as part +of the build do not get copied here. This directory is only for +things that are generally useful for testing or debugging or +whatnot outside of the GN build itself. These are only installed +by an explicit install_host_tools() rule (see //build/host.gni). -### skia_enable_pdf +**Current value (from the default):** `"//root_build_dir/tools"` + +From //build/host.gni:13 + +### skia_use_dng_sdk **Current value for `target_cpu = "arm64"`:** `false` -From //.gn:25 +From //.gn:26 **Overridden from the default:** `true` -From //third_party/skia/BUILD.gn:46 +From //third_party/skia/BUILD.gn:63 **Current value for `target_cpu = "x64"`:** `false` -From //.gn:25 +From //.gn:26 **Overridden from the default:** `true` -From //third_party/skia/BUILD.gn:46 - -### skia_use_libpng - -**Current value (from the default):** `true` +From //third_party/skia/BUILD.gn:63 -From //third_party/skia/BUILD.gn:29 +### build_libvulkan_vsl_gc +Targets that will be built as verisilicon vulkan ICDS. -### concurrent_dart_jobs -Maximum number of Dart processes to run in parallel. +**Current value (from the default):** `[]` -Dart analyzer uses a lot of memory which may cause issues when building -with many parallel jobs e.g. when using goma. To avoid out-of-memory -errors we explicitly reduce the number of jobs. +From //garnet/lib/magma/gnbuild/magma.gni:41 -**Current value (from the default):** `16` +### current_os -From //build/dart/BUILD.gn:15 +**Current value (from the default):** `""` -### dart_use_crashpad -Whether to link Crashpad library for crash handling. Only supported on -Windows for now. +### use_mock_magma **Current value (from the default):** `false` -From //third_party/dart/runtime/runtime_args.gni:51 +From [//third_party/mesa/src/intel/vulkan/BUILD.gn:25](https://fuchsia.googlesource.com/third_party/mesa/+/232bf12b10899d335a3fe69d947a738541ace7d3/src/intel/vulkan/BUILD.gn#25) -### extra_variants -Additional variant toolchain configs to support. -This is just added to [`known_variants`](#known_variants). +### magma_build_root -**Current value (from the default):** `[]` +**Current value (from the default):** `"//garnet/lib/magma"` -From //build/config/BUILDCONFIG.gn:403 +From //garnet/lib/magma/gnbuild/magma.gni:8 -### linux_runner_netmask +### skia_llvm_path -**Current value (from the default):** `"255.255.255.0"` +**Current value (from the default):** `""` -From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:19 +From //third_party/skia/BUILD.gn:57 -### skia_use_sfntly +### enable_value_subsystem -**Current value for `target_cpu = "arm64"`:** `false` +**Current value (from the default):** `false` -From //.gn:30 +From //garnet/bin/ui/scenic/BUILD.gn:11 -**Overridden from the default:** `true` +### fvm_image_size +The size in bytes of the FVM partition image to create. Normally this is +computed to be just large enough to fit the blob and data images. The +default value is "", which means to size based on inputs. Specifying a size +that is too small will result in build failure. -From //third_party/skia/BUILD.gn:64 +**Current value (from the default):** `""` -**Current value for `target_cpu = "x64"`:** `false` +From //build/images/fvm.gni:12 -From //.gn:30 +### minfs_maximum_bytes -**Overridden from the default:** `true` +**Current value (from the default):** `""` -From //third_party/skia/BUILD.gn:64 +From //build/images/fvm.gni:48 -### use_lto -Use link time optimization (LTO). +### skia_use_x11 -**Current value (from the default):** `false` +**Current value for `target_cpu = "arm64"`:** `false` -From //build/config/lto/config.gni:7 +From //.gn:31 -### fuchsia_sdk_root -Consumers of the Fuchsia SDK instantiate templates for various SDK parts at -a specific spot within their buildroots. The target name for the specific -part is then derived from the part name as specified in the meta.json -manifest. Different buildroot instantiate the SDK parts at different -locations and then set this variable. GN rules can then prefix this variable -name in SDK builds to the name of the SDK part. This flag is meaningless in -non-SDK buildroots. +**Overridden from the default:** `true` -**Current value (from the default):** `""` +From //third_party/skia/BUILD.gn:38 -From //build/fuchsia/sdk.gni:17 +**Current value for `target_cpu = "x64"`:** `false` -### crash_diagnostics_dir -Clang crash reports directory path. Use empty path to disable altogether. +From //.gn:31 + +**Overridden from the default:** `true` -**Current value (from the default):** `"//root_build_dir/clang-crashreports"` +From //third_party/skia/BUILD.gn:38 -From //build/config/BUILD.gn:9 +### signed_image -### current_os +**Current value (from the default):** `false` -**Current value (from the default):** `""` +From //build/images/BUILD.gn:46 -### skia_use_egl +### support_insecure_wep +Enable WEP support. +Use temporarily for testing driver WEP support. +This build flag will be replaced by providing +dedicated WEP specific WLAN targets which products +can depend on. **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:22 +From //src/connectivity/wlan/lib/wep_deprecated/BUILD.gn:15 -### warn_on_sdk_changes -Whether to only warn when an SDK has been modified. -If false, any unacknowledged SDK change will cause a build failure. +### use_ccache +Set to true to enable compiling with ccache **Current value (from the default):** `false` -From //build/sdk/config.gni:8 +From //build/toolchain/ccache.gni:9 -### zircon_args -[Zircon GN build arguments](../../../zircon/docs/gen/build_arguments.md). -The default passes through GOMA settings and -[`select_variant`](#select_variant) shorthand selectors. -**Only set this if you want to wipe out all the defaults that -propagate from Fuchsia GN to Zircon GN.** The default value -folds in [`zircon_extra_args`](#zircon_extra_args), so usually -it's better to just set `zircon_extra_args` and leave `zircon_args` alone. -Any individual Zircon build argument set in `zircon_extra_args` will -silently clobber the default value shown here. +### zircon_r_partition -**Current value (from the default):** -``` -{ - default_deps = [":legacy-arm64"] - enable_kernel_debugging_features = false - enable_netsvc_debugging_features = false - goma_dir = "/home/swarming/goma" - use_goma = false - variants = [] -} -``` +**Current value (from the default):** `""` -From //build/config/fuchsia/zircon.gni:46 +From //build/images/BUILD.gn:41 -### fuchsia_vulkan_sdk -Path to Fuchsia Vulkan SDK +### zxcrypt_key_source +This argument specifies from where the system should obtain the zxcrypt +master key to the system data partition. -**Current value (from the default):** `"//third_party/vulkan_loader_and_validation_layers"` +This value be reified as /boot/config/zxcrypt in both the zircon boot image +and the zedboot boot image, for consumption by fshost and the paver, +respectively. -From //build/vulkan/config.gni:10 +Acceptable values are: +* "null": the device should use an all-0's master key, as we lack support +for any secure on-device storage. +* "tee": the device is required to have a Trusted Execution Environment +(TEE) which includes the "keysafe" Trusted Application (associated with the +KMS service). The zxcrypt master key should be derived from a per-device +key accessible only to trusted apps running in the TEE. +* "tee-opportunistic": the device will attempt to use keys from the TEE if +available, but will fall back to using the null key if the key from the TEE +does not work, or if the TEE is not functional on this device. +* "tee-transitional": the device will require the use of a key from the TEE +for new volume creation, but will continue to try both a TEE-sourced key and +the null key when unsealing volumes. -### skia_llvm_lib +In the future, we may consider adding support for TPMs, or additional logic +to explicitly support other fallback behavior. -**Current value (from the default):** `"LLVM"` +**Current value (from the default):** `"null"` -From //third_party/skia/BUILD.gn:58 +From //build/images/zxcrypt.gni:29 -### minfs_maximum_bytes +### dart_use_tcmalloc +Whether to link the standalone VM against tcmalloc. The standalone build of +the VM enables this only for Linux builds. -**Current value (from the default):** `""` +**Current value (from the default):** `false` -From //build/images/fvm.gni:48 +From //third_party/dart/runtime/runtime_args.gni:47 -### build_libvulkan_arm_mali -Targets that will be built as mali vulkan ICDS. +### rustc_prefix +Sets a custom base directory for `rustc` and `cargo`. +This can be used to test custom Rust toolchains. -**Current value (from the default):** `[]` +**Current value (from the default):** `"//buildtools/linux-x64/rust/bin"` -From //garnet/lib/magma/gnbuild/magma.gni:38 +From //build/rust/config.gni:17 -### skia_enable_skpicture +### skia_use_piex **Current value (from the default):** `true` -From //third_party/skia/BUILD.gn:48 +From //third_party/skia/BUILD.gn:33 -### dart_debug_optimization_level -The optimization level to use for debug builds. Defaults to 0 for builds with -code coverage enabled. +### use_scudo +TODO(davemoore): Remove this entire mechanism once standalone scudo is the +default (DNO-442) +Enable the [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html) +memory allocator. -**Current value (from the default):** `"2"` +**Current value (from the default):** `false` -From //third_party/dart/runtime/runtime_args.gni:36 +From //build/config/scudo/scudo.gni:10 -### rust_warnings -Sets whether Rust compiler warnings cause errors or not. -"deny" will make all warnings into errors, while "allow" will ignore warnings +### dart_version -**Current value (from the default):** `"deny"` +**Current value (from the default):** `""` -From //build/rust/config.gni:27 +From //third_party/flutter/shell/version/version.gni:10 -### sdk_dirs -The directories to search for parts of the SDK. +### magma_enable_tracing +Enable this to include fuchsia tracing capability -By default, we search the public directories for the various layers. -In the future, we'll search a pre-built SDK as well. +**Current value (from the default):** `true` -**Current value (from the default):** `["//garnet/public", "//peridot/public", "//topaz/public"]` +From //garnet/lib/magma/gnbuild/magma.gni:17 -From //build/config/fuchsia/sdk.gni:10 +### build_libvulkan_qcom_adreno +Targets that will be built as qualcomm vulkan ICDS. -### select_variant -List of "selectors" to request variant builds of certain targets. -Each selector specifies matching criteria and a chosen variant. -The first selector in the list to match a given target determines -which variant is used for that target. +**Current value (from the default):** `[]` -Each selector is either a string or a scope. A shortcut selector is -a string; it gets expanded to a full selector. A full selector is a -scope, described below. +From //garnet/lib/magma/gnbuild/magma.gni:44 -A string selector can match a name in -[`select_variant_shortcuts`](#select_variant_shortcuts). If it's not a -specific shortcut listed there, then it can be the name of any variant -described in [`known_variants`](#known_variants) and -[`universal_variants`](#universal_variants) (and combinations thereof). -A `selector` that's a simple variant name selects for every binary -built in the target toolchain: `{ host=false variant=selector }`. +### enable_mdns_trace +Enables the tracing feature of mdns, which can be turned on using +"mdns-util verbose". -If a string selector contains a slash, then it's `"shortcut/filename"` -and selects only the binary in the target toolchain whose `output_name` -matches `"filename"`, i.e. it adds `output_name=["filename"]` to each -selector scope that the shortcut's name alone would yield. +**Current value (from the default):** `false` -The scope that forms a full selector defines some of these: +From //src/connectivity/network/mdns/service/BUILD.gn:15 - variant (required) - [string or `false`] The variant that applies if this selector - matches. This can be `false` to choose no variant, or a string - that names the variant. See - [`known_variants`](#known_variants) and - [`universal_variants`](#universal_variants). +### use_vboot +Use vboot images -The rest below are matching criteria. All are optional. -The selector matches if and only if all of its criteria match. -If none of these is defined, then the selector always matches. +**Current value (from the default):** `false` -The first selector in the list to match wins and then the rest of -the list is ignored. So construct more complex rules by using a -"blacklist" selector with `variant=false` before a catch-all or -"whitelist" selector that names a variant. +From //build/images/boot.gni:11 -Each "[strings]" criterion is a list of strings, and the criterion -is satisfied if any of the strings matches against the candidate string. +### wlancfg_config_type +Selects the wlan configuration type to use. Choices: + "client" - client mode + "ap" - access point mode + "" (empty string) - no configuration - host - [boolean] If true, the selector matches in the host toolchain. - If false, the selector matches in the target toolchain. +**Current value (from the default):** `"client"` - testonly - [boolean] If true, the selector matches targets with testonly=true. - If false, the selector matches in targets without testonly=true. +From //src/connectivity/wlan/wlancfg/BUILD.gn:15 - target_type - [strings]: `"executable"`, `"loadable_module"`, or `"driver_module"` +### zedboot_cmdline_files +Files containing additional kernel command line arguments to bake into +the Zedboot image. The contents of these files (in order) come after any +arguments directly in [`zedboot_cmdline_args`](#zedboot_cmdline_args). +These can be GN `//` source pathnames or absolute system pathnames. - output_name - [strings]: target's `output_name` (default: its `target name`) +**Current value (from the default):** `[]` - label - [strings]: target's full label with `:` (without toolchain suffix) +From //build/images/zedboot/BUILD.gn:23 - name - [strings]: target's simple name (label after last `/` or `:`) +### flutter_profile - dir - [strings]: target's label directory (`//dir` for `//dir:name`). +**Current value (from the default):** `true` -**Current value (from the default):** `[]` +From [//topaz/runtime/dart/dart_component.gni:32](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#32) -From //build/config/BUILDCONFIG.gn:626 +### select_variant_shortcuts +List of short names for commonly-used variant selectors. Normally this +is not set as a build argument, but it serves to document the available +set of short-cut names for variant selectors. Each element of this list +is a scope where `.name` is the short name and `.select_variant` is a +a list that can be spliced into [`select_variant`](#select_variant). -### system_package_key -The package key to use for signing Fuchsia packages made by the -`package()` template (and the `system_image` package). If this -doesn't exist yet when it's needed, it will be generated. New -keys can be generated with the `pm -k FILE genkey` host command. +**Current value (from the default):** +``` +[{ + name = "host_asan" + select_variant = [{ + dir = ["//third_party/yasm", "//third_party/vboot_reference", "//garnet/tools/vboot_reference", "//third_party/shaderc/third_party/spirv-tools"] + host = true + variant = "asan_no_detect_leaks" +}, { + host = true + variant = "asan" +}] +}, { + name = "asan" + select_variant = [{ + target_type = ["driver_module"] + variant = false +}, { + host = false + variant = "asan" +}] +}] +``` + +From //build/config/BUILDCONFIG.gn:449 + +### minfs_minimum_data_bytes + +**Current value (from the default):** `""` + +From //build/images/fvm.gni:37 + +### scenic_ignore_vsync -**Current value (from the default):** `"//build/development.key"` +**Current value (from the default):** `false` -From //build/package.gni:18 +From //garnet/lib/ui/gfx/BUILD.gn:8 -### board_name -Board name used for paving and amber updates. +### zircon_enable_netsvc_debugging_features -**Current value for `target_cpu = "arm64"`:** `"qemu-arm64"` +**Current value for `target_cpu = "arm64"`:** `false` -From //boards/arm64.gni:7 +From //products/core.gni:10 -**Overridden from the default:** `""` +**Overridden from the default:** `false` -From //build/package.gni:21 +From //build/config/fuchsia/zircon.gni:33 -**Current value for `target_cpu = "x64"`:** `"pc"` +**Current value for `target_cpu = "x64"`:** `false` -From //boards/x64.gni:7 +From //products/core.gni:10 -**Overridden from the default:** `""` +**Overridden from the default:** `false` -From //build/package.gni:21 +From //build/config/fuchsia/zircon.gni:33 -### dart_force_product -Forces all Dart and Flutter apps to build in a specific configuration that -we use to build products. +### full_dart_sdk **Current value (from the default):** `false` -From [//topaz/runtime/dart/config.gni:10](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/config.gni#10) +From //third_party/flutter/BUILD.gn:14 -### dart_platform_bytecode -Whether the VM's platform dill file contains bytecode. +### log_startup_sleep -**Current value (from the default):** `false` +**Current value (from the default):** `"30000"` -From //third_party/dart/runtime/runtime_args.gni:84 +From //garnet/bin/log_listener/BUILD.gn:14 -### concurrent_link_jobs -Maximum number of concurrent link jobs. +### board_packages -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. +**Current value for `target_cpu = "arm64"`:** `[]` -**Current value (from the default):** `16` +From //boards/arm64.gni:9 -From //build/toolchain/BUILD.gn:15 +**Overridden from the default:** `[]` -### dart_debug -Instead of using is_debug, we introduce a different flag for specifying a -Debug build of Dart so that clients can still use a Release build of Dart -while themselves doing a Debug build. +From //BUILD.gn:40 -**Current value (from the default):** `false` +**Current value for `target_cpu = "x64"`:** `[]` -From //third_party/dart/runtime/runtime_args.gni:9 +From //boards/x64.gni:9 -### dart_default_app -Controls whether dart_app() targets generate JIT or AOT Dart snapshots. -This defaults to JIT, use `fx set <ARCH> --args -'dart_default_app="dart_aot_app"' to switch to AOT. +**Overridden from the default:** `[]` -**Current value (from the default):** `"dart_jit_app"` +From //BUILD.gn:40 -From [//topaz/runtime/dart/dart_component.gni:19](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#19) +### dart_aot_sharing_basis +module_suggester is not AOT compiled in debug builds -### full_dart_sdk +**Current value (from the default):** `""` -**Current value (from the default):** `false` +From [//topaz/runtime/dart/dart_component.gni:51](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#51) -From //third_party/flutter/BUILD.gn:14 +### skia_enable_skpicture -### universal_variants +**Current value (from the default):** `true` -**Current value (from the default):** -``` -[{ - configs = [] - name = "release" - toolchain_args = { - is_debug = false -} -}] -``` +From //third_party/skia/BUILD.gn:48 -From //build/config/BUILDCONFIG.gn:423 +### meta_package_labels +A list of labels for meta packages to be included in the monolith. -### host_tools_dir -This is the directory where host tools intended for manual use by -developers get installed. It's something a developer might put -into their shell's $PATH. Host tools that are just needed as part -of the build do not get copied here. This directory is only for -things that are generally useful for testing or debugging or -whatnot outside of the GN build itself. These are only installed -by an explicit install_host_tools() rule (see //build/host.gni). +**Current value for `target_cpu = "arm64"`:** `["//build/images:config-data", "//build/images:shell-commands", "//src/sys/component_index:component_index"]` -**Current value (from the default):** `"//root_build_dir/tools"` +From //products/core.gni:12 -From //build/host.gni:13 +**Overridden from the default:** `[]` -### skia_use_wuffs +From //build/images/BUILD.gn:36 -**Current value (from the default):** `false` +**Current value for `target_cpu = "x64"`:** `["//build/images:config-data", "//build/images:shell-commands", "//src/sys/component_index:component_index"]` -From //third_party/skia/BUILD.gn:34 +From //products/core.gni:12 -### zircon_r_partition +**Overridden from the default:** `[]` -**Current value (from the default):** `""` +From //build/images/BUILD.gn:36 -From //build/images/BUILD.gn:41 +### skia_compile_processors -### icu_use_data_file -Tells icu to load an external data file rather than rely on the icudata -being linked directly into the binary. +**Current value (from the default):** `false` -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). +From //third_party/skia/BUILD.gn:51 -TODO(GYP) We'll probably need to enhance this logic to set the value to -true or false in similar circumstances. +### skia_enable_fontmgr_custom **Current value (from the default):** `true` -From [//third_party/icu/config.gni:15](https://fuchsia.googlesource.com/third_party/icu/+/65e4aa3b8cc6b41cf31136b9474a9c97bdc27739/config.gni#15) - -### skia_use_dng_sdk +From //third_party/skia/BUILD.gn:68 -**Current value for `target_cpu = "arm64"`:** `false` +### skia_enable_tools -From //.gn:26 +**Current value (from the default):** `false` -**Overridden from the default:** `true` +From //third_party/skia/gn/skia.gni:12 -From //third_party/skia/BUILD.gn:63 +### skia_use_fixed_gamma_text -**Current value for `target_cpu = "x64"`:** `false` +**Current value (from the default):** `false` -From //.gn:26 +From //third_party/skia/BUILD.gn:27 -**Overridden from the default:** `true` +### use_lto +Use link time optimization (LTO). -From //third_party/skia/BUILD.gn:63 +**Current value (from the default):** `false` -### thinlto_cache_dir -ThinLTO cache directory path. +From //build/config/lto/config.gni:7 -**Current value (from the default):** `"linux_x64-shared/thinlto-cache"` +### host_byteorder -From //build/config/lto/config.gni:16 +**Current value (from the default):** `"undefined"` -### vbmeta_a_partition +From //build/config/host_byteorder.gni:7 -**Current value (from the default):** `""` +### host_cpu -From //build/images/BUILD.gn:42 +**Current value (from the default):** `"x64"` ### zedboot_cmdline_args List of kernel command line arguments to bake into the Zedboot image. @@ -1019,685 +1005,711 @@ See //zircon/docs/kernel_cmdline.md and From //build/images/zedboot/BUILD.gn:17 -### dart_version - -**Current value (from the default):** `""` +### zedboot_devmgr_config +List of arguments to populate /boot/config/devmgr in the Zedboot image. -From //third_party/flutter/shell/version/version.gni:10 +**Current value (from the default):** `["netsvc.netboot=true"]` -### skia_enable_fontmgr_custom_empty +From //build/images/zedboot/BUILD.gn:26 -**Current value (from the default):** `false` +### skia_enable_flutter_defines -From //third_party/skia/BUILD.gn:69 +**Current value for `target_cpu = "arm64"`:** `true` -### use_vboot -Use vboot images +From //.gn:24 -**Current value (from the default):** `false` +**Overridden from the default:** `false` -From //build/images/boot.gni:11 +From //third_party/skia/BUILD.gn:17 -### experimental_wlan_client_mlme -Selects the SoftMAC client implementation to use. Choices: - false (default) - C++ Client MLME implementation - true - Rust Client MLME implementation -This argument is temporary until Rust MLME is ready to be used. +**Current value for `target_cpu = "x64"`:** `true` -**Current value (from the default):** `false` +From //.gn:24 -From //src/connectivity/wlan/lib/mlme/cpp/BUILD.gn:10 +**Overridden from the default:** `false` -### meta_package_labels -A list of labels for meta packages to be included in the monolith. +From //third_party/skia/BUILD.gn:17 -**Current value for `target_cpu = "arm64"`:** `["//build/images:config-data", "//build/images:shell-commands", "//src/sys/component_index:component_index"]` +### skia_use_libwebp -From //products/core.gni:12 +**Current value for `target_cpu = "arm64"`:** `false` -**Overridden from the default:** `[]` +From //.gn:29 -From //build/images/BUILD.gn:36 +**Overridden from the default:** `true` -**Current value for `target_cpu = "x64"`:** `["//build/images:config-data", "//build/images:shell-commands", "//src/sys/component_index:component_index"]` +From //third_party/skia/BUILD.gn:30 -From //products/core.gni:12 +**Current value for `target_cpu = "x64"`:** `false` -**Overridden from the default:** `[]` +From //.gn:29 -From //build/images/BUILD.gn:36 +**Overridden from the default:** `true` -### toolchain_manifests -Manifest files describing target libraries from toolchains. -Can be either // source paths or absolute system paths. +From //third_party/skia/BUILD.gn:30 -**Current value (from the default):** `["/b/s/w/ir/k/buildtools/linux-x64/clang/lib/aarch64-fuchsia.manifest"]` +### thinlto_cache_dir +ThinLTO cache directory path. -From //build/images/manifest.gni:11 +**Current value (from the default):** `"linux_x64/thinlto-cache"` -### wlancfg_config_type -Selects the wlan configuration type to use. Choices: - "client" - client mode - "ap" - access point mode - "" (empty string) - no configuration +From //build/config/lto/config.gni:16 -**Current value (from the default):** `"client"` +### prebuilt_framework_path -From //src/connectivity/wlan/wlancfg/BUILD.gn:15 +**Current value (from the default):** `""` -### rustc_prefix -Sets a custom base directory for `rustc` and `cargo`. -This can be used to test custom Rust toolchains. +From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:6](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#6) -**Current value (from the default):** `"//buildtools/linux-x64/rust/bin"` +### select_variant +List of "selectors" to request variant builds of certain targets. +Each selector specifies matching criteria and a chosen variant. +The first selector in the list to match a given target determines +which variant is used for that target. -From //build/rust/config.gni:17 +Each selector is either a string or a scope. A shortcut selector is +a string; it gets expanded to a full selector. A full selector is a +scope, described below. -### flutter_aot_sharing_basis -When AOT compiling, an app will reference objects in the sharing basis's -snapshot when available instead of writing the objects in its own snapshot. -The snapshot of the sharing basis app will be included in every other app's -package and deduplicated by blobfs. +A string selector can match a name in +[`select_variant_shortcuts`](#select_variant_shortcuts). If it's not a +specific shortcut listed there, then it can be the name of any variant +described in [`known_variants`](#known_variants) and +[`universal_variants`](#universal_variants) (and combinations thereof). +A `selector` that's a simple variant name selects for every binary +built in the target toolchain: `{ host=false variant=selector }`. -**Current value (from the default):** `""` +If a string selector contains a slash, then it's `"shortcut/filename"` +and selects only the binary in the target toolchain whose `output_name` +matches `"filename"`, i.e. it adds `output_name=["filename"]` to each +selector scope that the shortcut's name alone would yield. -From [//topaz/runtime/dart/dart_component.gni:27](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#27) +The scope that forms a full selector defines some of these: -### linux_runner_gateway + variant (required) + [string or `false`] The variant that applies if this selector + matches. This can be `false` to choose no variant, or a string + that names the variant. See + [`known_variants`](#known_variants) and + [`universal_variants`](#universal_variants). -**Current value (from the default):** `"10.0.0.1"` +The rest below are matching criteria. All are optional. +The selector matches if and only if all of its criteria match. +If none of these is defined, then the selector always matches. -From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:18 +The first selector in the list to match wins and then the rest of +the list is ignored. So construct more complex rules by using a +"blacklist" selector with `variant=false` before a catch-all or +"whitelist" selector that names a variant. -### skia_enable_discrete_gpu +Each "[strings]" criterion is a list of strings, and the criterion +is satisfied if any of the strings matches against the candidate string. -**Current value (from the default):** `true` + host + [boolean] If true, the selector matches in the host toolchain. + If false, the selector matches in the target toolchain. -From //third_party/skia/BUILD.gn:44 + testonly + [boolean] If true, the selector matches targets with testonly=true. + If false, the selector matches in targets without testonly=true. -### minfs_minimum_data_bytes + target_type + [strings]: `"executable"`, `"loadable_module"`, or `"driver_module"` -**Current value (from the default):** `""` + output_name + [strings]: target's `output_name` (default: its `target name`) -From //build/images/fvm.gni:37 + label + [strings]: target's full label with `:` (without toolchain suffix) -### create_kernel_service_snapshot + name + [strings]: target's simple name (label after last `/` or `:`) -**Current value (from the default):** `false` + dir + [strings]: target's label directory (`//dir` for `//dir:name`). -From //third_party/dart/runtime/runtime_args.gni:101 +**Current value (from the default):** `[]` -### zircon_a_partition -arguments to fx flash script +From //build/config/BUILDCONFIG.gn:626 -**Current value (from the default):** `""` +### msd_intel_gen_build_root -From //build/images/BUILD.gn:39 +**Current value (from the default):** `"//garnet/drivers/gpu/msd-intel-gen"` -### escher_use_null_vulkan_config_on_host -Using Vulkan on host (i.e. Linux) is an involved affair that involves -downloading the Vulkan SDK, setting environment variables, and so forth... -all things that are difficult to achieve in a CQ environment. Therefore, -by default we use a stub implementation of Vulkan which fails to create a -VkInstance. This allows everything to build, and also allows running Escher -unit tests which don't require Vulkan. +From //garnet/lib/magma/gnbuild/magma.gni:10 -**Current value (from the default):** `true` +### concurrent_rust_jobs +Maximum number of Rust processes to run in parallel. -From //src/ui/lib/escher/BUILD.gn:16 +We run multiple rustc jobs in parallel, each of which can cause significant +amount of memory, especially when using LTO. To avoid out-of-memory errors +we explicitly reduce the number of jobs. -### scenic_enable_vulkan_validation -Include the vulkan validation layers in scenic. +**Current value (from the default):** `14` -**Current value (from the default):** `true` +From //build/rust/BUILD.gn:15 -From //garnet/bin/ui/BUILD.gn:40 +### custom_signing_script +If non-empty, the given script will be invoked to produce a signed ZBI +image. The given script must accept -z for the input zbi path, and -o for +the output signed zbi path. The path must be in GN-label syntax (i.e. +starts with //). -### skia_enable_nvpr +**Current value (from the default):** `""` -**Current value (from the default):** `false` +From //build/images/custom_signing.gni:12 -From //third_party/skia/BUILD.gn:43 +### zircon_enable_kernel_debugging_features +Whether to include various features (non-shipping, insecure, etc.) in the +kernel or netsvc builds. -### skia_qt_path +**Current value for `target_cpu = "arm64"`:** `false` -**Current value (from the default):** `""` +From //products/core.gni:9 -From //third_party/skia/BUILD.gn:50 +**Overridden from the default:** `false` -### skia_tools_require_resources +From //build/config/fuchsia/zircon.gni:32 -**Current value (from the default):** `false` +**Current value for `target_cpu = "x64"`:** `false` -From //third_party/skia/BUILD.gn:60 +From //products/core.gni:9 -### blobfs_minimum_data_bytes -Number of bytes to reserve for data in the fs. This is in addition -to what is reserved, if any, for the inodes. Data bytes constitutes -"usable" space of the fs. -An empty string does not reserve any additional space than minimum -required for the filesystem. +**Overridden from the default:** `false` -**Current value (from the default):** `""` +From //build/config/fuchsia/zircon.gni:32 -From //build/images/fvm.gni:36 +### skia_enable_fontmgr_win_gdi -### dart_target_arch -Explicitly set the target architecture to use a simulator. -Available options are: arm, arm64, x64, ia32, and dbc. +**Current value (from the default):** `false` -**Current value (from the default):** `"arm64"` +From //third_party/skia/BUILD.gn:73 -From //third_party/dart/runtime/runtime_args.gni:32 +### skia_use_libpng -### skia_enable_flutter_defines +**Current value (from the default):** `true` -**Current value for `target_cpu = "arm64"`:** `true` +From //third_party/skia/BUILD.gn:29 -From //.gn:24 +### skia_enable_ccpr -**Overridden from the default:** `false` +**Current value (from the default):** `true` -From //third_party/skia/BUILD.gn:17 +From //third_party/skia/BUILD.gn:42 -**Current value for `target_cpu = "x64"`:** `true` +### kernel_cmdline_args +List of kernel command line arguments to bake into the boot image. +See also //zircon/docs/kernel_cmdline.md and +[`devmgr_config`](#devmgr_config). -From //.gn:24 +**Current value (from the default):** `[]` -**Overridden from the default:** `false` +From //build/images/BUILD.gn:480 -From //third_party/skia/BUILD.gn:17 +### linux_runner_extras +If `true`, the extras.img will be built and mounted inside the container +at /mnt/chromeos. -### toolchain_variant -*This should never be set as a build argument.* -It exists only to be set in `toolchain_args`. -See //build/toolchain/clang_toolchain.gni for details. -This variable is a scope giving details about the current toolchain: - `toolchain_variant.base` - [label] The "base" toolchain for this variant, *often the - right thing to use in comparisons, not `current_toolchain`.* - This is the toolchain actually referenced directly in GN - source code. If the current toolchain is not - `shlib_toolchain` or a variant toolchain, this is the same - as `current_toolchain`. In one of those derivative - toolchains, this is the toolchain the GN code probably - thought it was in. This is the right thing to use in a test - like `toolchain_variant.base == target_toolchain`, rather - rather than comparing against `current_toolchain`. - `toolchain_variant.name` - [string] The name of this variant, as used in `variant` fields - in [`select_variant`](#select_variant) clauses. In the base - toolchain and its `shlib_toolchain`, this is `""`. - `toolchain_variant.suffix` - [string] This is "-${toolchain_variant.name}", "" if name is empty. - `toolchain_variant.is_pic_default` - [bool] This is true in `shlib_toolchain`. -The other fields are the variant's effects as defined in -[`known_variants`](#known_variants). +This is useful for including some GN-built binaries into the guest image +without modifying the termina images. -**Current value (from the default):** -``` -{ - base = "//build/toolchain/fuchsia:arm64" -} -``` +**Current value (from the default):** `false` -From //build/config/BUILDCONFIG.gn:74 +From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:26 -### use_prebuilt_dart_sdk -Whether to use the prebuilt Dart SDK for everything. -When setting this to false, the preubilt Dart SDK will not be used in -situations where the version of the SDK matters, but may still be used as an -optimization where the version does not matter. +### magma_python_path -**Current value (from the default):** `true` +**Current value (from the default):** `"/b/s/w/ir/k/third_party/mako"` -From //build/dart/dart.gni:15 +From //garnet/lib/magma/gnbuild/magma.gni:14 -### max_fvm_size -Maximum allowable size for the FVM in a release mode build -Zero means no limit +### vbmeta_r_partition -**Current value (from the default):** `"0"` +**Current value (from the default):** `""` -From //build/images/max_fvm_size.gni:8 +From //build/images/BUILD.gn:44 -### msd_arm_enable_all_cores -Enable all 8 cores, which is faster but emits more heat. +### dart_debug +Instead of using is_debug, we introduce a different flag for specifying a +Debug build of Dart so that clients can still use a Release build of Dart +while themselves doing a Debug build. -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:9 +From //third_party/dart/runtime/runtime_args.gni:9 -### skia_enable_gpu +### skia_use_freetype **Current value (from the default):** `true` -From //third_party/skia/gn/skia.gni:11 - -### skia_enable_nima +From //third_party/skia/BUILD.gn:26 -**Current value (from the default):** `false` +### dart_runtime_mode +Set the runtime mode. This affects how the runtime is built and what +features it has. Valid values are: +'develop' (the default) - VM is built to run as a JIT with all development +features enabled. +'profile' - The VM is built to run with AOT compiled code with only the +CPU profiling features enabled. +'release' - The VM is built to run with AOT compiled code with no developer +features enabled. -From //third_party/skia/BUILD.gn:45 +These settings are only used for Flutter, at the moment. A standalone build +of the Dart VM should leave this set to "develop", and should set +'is_debug', 'is_release', or 'is_product'. -### host_byteorder +TODO(rmacnak): dart_runtime_mode no longer selects whether libdart is build +for JIT or AOT, since libdart waw split into libdart_jit and +libdart_precompiled_runtime. We should remove this flag and just set +dart_debug/dart_product. -**Current value (from the default):** `"undefined"` +**Current value (from the default):** `"develop"` -From //build/config/host_byteorder.gni:7 +From //third_party/dart/runtime/runtime_args.gni:28 -### skia_use_piex +### skia_enable_vulkan_debug_layers -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:33 +From //third_party/skia/BUILD.gn:49 -### target_sysroot -The absolute path of the sysroot that is used with the target toolchain. +### skia_enable_gpu -**Current value (from the default):** `""` +**Current value (from the default):** `true` -From //build/config/sysroot.gni:7 +From //third_party/skia/gn/skia.gni:11 -### zircon_enable_kernel_debugging_features -Whether to include various features (non-shipping, insecure, etc.) in the -kernel or netsvc builds. +### enable_dart_analysis +Enable all dart analysis -**Current value for `target_cpu = "arm64"`:** `false` +**Current value (from the default):** `true` -From //products/core.gni:9 +From //build/dart/dart_library.gni:15 -**Overridden from the default:** `false` +### engine_version -From //build/config/fuchsia/zircon.gni:32 +**Current value (from the default):** `""` -**Current value for `target_cpu = "x64"`:** `false` +From //third_party/flutter/shell/version/version.gni:6 -From //products/core.gni:9 +### flutter_default_app -**Overridden from the default:** `false` +**Current value (from the default):** `"flutter_jit_app"` -From //build/config/fuchsia/zircon.gni:32 +From [//topaz/runtime/dart/dart_component.gni:12](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#12) -### scenic_use_views2 -Temporary flag, switches Flutter to using Scenic's new View API. +### msd_arm_enable_cache_coherency +With this flag set the system tries to use cache coherent memory if the +GPU supports it. -**Current value (from the default):** `false` +**Current value (from the default):** `true` -From //garnet/bin/ui/scenic/config.gni:7 +From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:13 -### debian_guest_qcow -Package the rootfs as a QCOW image (as opposed to a flat file). +### skia_enable_nvpr -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //src/virtualization/packages/debian_guest/BUILD.gn:9 +From //third_party/skia/BUILD.gn:43 -### use_prebuilt_ffmpeg -Use a prebuilt ffmpeg binary rather than building it locally. See -//src/media/lib/ffmpeg/README.md for details. This is ignored when -building in variant builds for which there is no prebuilt. In that -case, ffmpeg is always built from source so as to be built with the -selected variant's config. When this is false (either explicitly or in -a variant build) then //third_party/ffmpeg must be in the source tree, -which requires: -`jiri import -name integration third_party/ffmpeg https://fuchsia.googlesource.com/integration` +### skia_use_libjpeg_turbo **Current value (from the default):** `true` -From //src/media/lib/ffmpeg/BUILD.gn:14 +From //third_party/skia/BUILD.gn:28 -### enable_mdns_trace -Enables the tracing feature of mdns, which can be turned on using -"mdns-util verbose". +### dart_force_product +Forces all Dart and Flutter apps to build in a specific configuration that +we use to build products. **Current value (from the default):** `false` -From //src/connectivity/network/mdns/service/BUILD.gn:15 +From [//topaz/runtime/dart/config.gni:10](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/config.gni#10) -### exclude_kernel_service -Whether the VM includes the kernel service in all modes (debug, release, -product). +### dart_target_arch +Explicitly set the target architecture to use a simulator. +Available options are: arm, arm64, x64, ia32, and dbc. -**Current value (from the default):** `false` +**Current value (from the default):** `"arm64"` -From //third_party/dart/runtime/runtime_args.gni:88 +From //third_party/dart/runtime/runtime_args.gni:32 -### magma_build_root +### toolchain_variant +*This should never be set as a build argument.* +It exists only to be set in `toolchain_args`. +See //build/toolchain/clang_toolchain.gni for details. +This variable is a scope giving details about the current toolchain: + `toolchain_variant.base` + [label] The "base" toolchain for this variant, *often the + right thing to use in comparisons, not `current_toolchain`.* + This is the toolchain actually referenced directly in GN + source code. If the current toolchain is not + `shlib_toolchain` or a variant toolchain, this is the same + as `current_toolchain`. In one of those derivative + toolchains, this is the toolchain the GN code probably + thought it was in. This is the right thing to use in a test + like `toolchain_variant.base == target_toolchain`, rather + rather than comparing against `current_toolchain`. + `toolchain_variant.name` + [string] The name of this variant, as used in `variant` fields + in [`select_variant`](#select_variant) clauses. In the base + toolchain and its `shlib_toolchain`, this is `""`. + `toolchain_variant.suffix` + [string] This is "-${toolchain_variant.name}", "" if name is empty. + `toolchain_variant.is_pic_default` + [bool] This is true in `shlib_toolchain`. +The other fields are the variant's effects as defined in +[`known_variants`](#known_variants). -**Current value (from the default):** `"//garnet/lib/magma"` +**Current value (from the default):** +``` +{ + base = "//build/toolchain/fuchsia:arm64" +} +``` -From //garnet/lib/magma/gnbuild/magma.gni:8 +From //build/config/BUILDCONFIG.gn:74 -### skia_enable_skshaper +### update_kernels +(deprecated) List of kernel images to include in the update (OTA) package. +If no list is provided, all built kernels are included. The names in the +list are strings that must match the filename to be included in the update +package. -**Current value (from the default):** `true` +**Current value (from the default):** `[]` -From //third_party/skia/modules/skshaper/BUILD.gn:9 +From //build/images/BUILD.gn:498 -### skia_gl_standard +### thinlto_jobs +Number of parallel ThinLTO jobs. -**Current value (from the default):** `""` +**Current value (from the default):** `8` -From //third_party/skia/BUILD.gn:80 +From //build/config/lto/config.gni:13 -### use_vbmeta -If true, then the paving script will pave vbmeta images to the target device. -It is assumed that the vbmeta image will be created by the custom_signing_script. +### dart_use_crashpad +Whether to link Crashpad library for crash handling. Only supported on +Windows for now. **Current value (from the default):** `false` -From //build/images/custom_signing.gni:16 +From //third_party/dart/runtime/runtime_args.gni:51 -### active_partition +### enable_netboot +Whether to build the netboot zbi by default. -**Current value (from the default):** `""` +You can still build //build/images:netboot explicitly even if enable_netboot is false. -From //build/images/BUILD.gn:45 +**Current value for `target_cpu = "arm64"`:** `false` -### log_startup_sleep +From //products/core.gni:7 -**Current value (from the default):** `"30000"` +**Overridden from the default:** `false` -From //garnet/bin/log_listener/BUILD.gn:14 +From //build/images/BUILD.gn:33 -### msd_arm_enable_cache_coherency -With this flag set the system tries to use cache coherent memory if the -GPU supports it. +**Current value for `target_cpu = "x64"`:** `false` -**Current value (from the default):** `true` +From //products/core.gni:7 -From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:13 +**Overridden from the default:** `false` -### skia_enable_fontmgr_custom +From //build/images/BUILD.gn:33 + +### skia_enable_discrete_gpu **Current value (from the default):** `true` -From //third_party/skia/BUILD.gn:68 +From //third_party/skia/BUILD.gn:44 -### skia_version +### skia_enable_skottie -**Current value (from the default):** `""` +**Current value (from the default):** `true` -From //third_party/flutter/shell/version/version.gni:8 +From //third_party/skia/modules/skottie/BUILD.gn:9 -### is_debug -Debug build. +### dart_use_fallback_root_certificates +Whether to fall back to built-in root certificates when they cannot be +verified at the operating system level. -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //build/config/BUILDCONFIG.gn:11 +From //third_party/dart/runtime/runtime_args.gni:43 -### skia_use_opencl +### enable_sketchy_subsystem **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:32 +From //garnet/bin/ui/scenic/BUILD.gn:13 -### skia_use_xps +### flutter_runtime_mode +The runtime mode ("debug", "profile", "release", "dynamic_profile", or "dynamic_release") -**Current value (from the default):** `true` +**Current value (from the default):** `"debug"` -From //third_party/skia/BUILD.gn:39 +From //third_party/flutter/common/config.gni:19 -### support_insecure_wep -Enable WEP support. -Use temporarily for testing driver WEP support. -This build flag will be replaced by providing -dedicated WEP specific WLAN targets which products -can depend on. +### glm_build_root -**Current value (from the default):** `false` +**Current value (from the default):** `"//third_party/glm"` -From //src/connectivity/wlan/lib/wep_deprecated/BUILD.gn:15 +From //garnet/lib/magma/gnbuild/magma.gni:11 -### zircon_asserts +### msd_arm_enable_protected_debug_swap_mode +In protected mode, faults don't return as much information so they're much harder to debug. To +work around that, add a mode where protected atoms are executed in non-protected mode and +vice-versa. -**Current value (from the default):** `true` +NOTE: The memory security ranges should also be set (in TrustZone) to the opposite of normal, so +that non-protected mode accesses can only access protected memory and vice versa. Also, +growable memory faults won't work in this mode, so larger portions of growable memory should +precommitted (which is not done by default). -From //build/config/fuchsia/BUILD.gn:205 +**Current value (from the default):** `false` -### cloudkms_key_dir +From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:23 -**Current value (from the default):** `"projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys"` +### skia_enable_fontmgr_fuchsia -From //build/testing/secret_spec.gni:8 +**Current value (from the default):** `false` -### concurrent_go_jobs -Maximum number of Go processes to run in parallel. +From //third_party/skia/BUILD.gn:71 -**Current value (from the default):** `16` +### skia_enable_particles -From //build/go/BUILD.gn:11 +**Current value (from the default):** `true` -### skia_use_fixed_gamma_text +From //third_party/skia/modules/particles/BUILD.gn:7 + +### skia_use_fonthost_mac **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:27 +From //third_party/skia/BUILD.gn:25 -### skia_use_freetype +### add_qemu_to_build_archives +Whether to include images necessary to run Fuchsia in QEMU in build +archives. -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:26 +From //build/images/BUILD.gn:51 -### build_sdk_archives -Whether to build SDK tarballs. +### export_x64_sdk_images **Current value (from the default):** `false` -From //build/sdk/sdk.gni:13 - -### dart_aot_sharing_basis -module_suggester is not AOT compiled in debug builds - -**Current value (from the default):** `""` +From //sdk/BUILD.gn:13 -From [//topaz/runtime/dart/dart_component.gni:51](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#51) +### skia_generate_workarounds -### dart_runtime_mode -Set the runtime mode. This affects how the runtime is built and what -features it has. Valid values are: -'develop' (the default) - VM is built to run as a JIT with all development -features enabled. -'profile' - The VM is built to run with AOT compiled code with only the -CPU profiling features enabled. -'release' - The VM is built to run with AOT compiled code with no developer -features enabled. +**Current value (from the default):** `false` -These settings are only used for Flutter, at the moment. A standalone build -of the Dart VM should leave this set to "develop", and should set -'is_debug', 'is_release', or 'is_product'. +From //third_party/skia/BUILD.gn:52 -TODO(rmacnak): dart_runtime_mode no longer selects whether libdart is build -for JIT or AOT, since libdart waw split into libdart_jit and -libdart_precompiled_runtime. We should remove this flag and just set -dart_debug/dart_product. +### extra_manifest_args +Extra args to globally apply to the manifest generation script. -**Current value (from the default):** `"develop"` +**Current value (from the default):** `[]` -From //third_party/dart/runtime/runtime_args.gni:28 +From //build/images/manifest.gni:22 -### dart_use_tcmalloc -Whether to link the standalone VM against tcmalloc. The standalone build of -the VM enables this only for Linux builds. +### fastboot_product -**Current value (from the default):** `false` +**Current value (from the default):** `""` -From //third_party/dart/runtime/runtime_args.gni:47 +From //build/images/BUILD.gn:47 -### crashpad_dependencies +### rust_warnings +Sets whether Rust compiler warnings cause errors or not. +"deny" will make all warnings into errors, while "allow" will ignore warnings -**Current value (from the default):** `"fuchsia"` +**Current value (from the default):** `"deny"` -From [//third_party/crashpad/build/crashpad_buildconfig.gni:22](https://chromium.googlesource.com/crashpad/crashpad/+/d221b7cadab5f00c6999f060a5bcb0896e25c7b7/build/crashpad_buildconfig.gni#22) +From //build/rust/config.gni:27 -### magma_enable_tracing -Enable this to include fuchsia tracing capability +### skia_use_vulkan -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //garnet/lib/magma/gnbuild/magma.gni:17 +From //third_party/skia/BUILD.gn:88 -### enable_input_subsystem +### use_prebuilt_ffmpeg +Use a prebuilt ffmpeg binary rather than building it locally. See +//src/media/lib/ffmpeg/README.md for details. This is ignored when +building in variant builds for which there is no prebuilt. In that +case, ffmpeg is always built from source so as to be built with the +selected variant's config. When this is false (either explicitly or in +a variant build) then //third_party/ffmpeg must be in the source tree, +which requires: +`jiri import -name integration third_party/ffmpeg https://fuchsia.googlesource.com/integration` **Current value (from the default):** `true` -From //garnet/bin/ui/scenic/BUILD.gn:14 +From //src/media/lib/ffmpeg/BUILD.gn:14 -### framework_packages +### dart_lib_export_symbols +Whether libdart should export the symbols of the Dart API. -**Current value (from the default):** `["collection", "flutter", "meta", "typed_data", "vector_math"]` +**Current value (from the default):** `true` -From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:8](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#8) +From //third_party/dart/runtime/runtime_args.gni:91 -### gocache_dir - gocache_dir - Directory GOCACHE environment variable will be set to. This directory - will have build and test results cached, and is safe to be written to - concurrently. If overridden, this directory must be a full path. +### devmgr_config +List of arguments to add to /boot/config/devmgr. +These come after synthesized arguments to configure blobfs and pkgfs. -**Current value (from the default):** `"/b/s/w/ir/k/root_build_dir/host_x64/.gocache"` +**Current value (from the default):** `[]` -From //build/go/go_build.gni:16 +From //build/images/BUILD.gn:475 -### skia_android_serial +### magma_enable_developer_build +Enable this to have the msd include a suite of tests and invoke them +automatically when the driver starts. -**Current value (from the default):** `""` +**Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:41 +From //garnet/lib/magma/gnbuild/magma.gni:21 -### skia_llvm_path +### minfs_minimum_inodes **Current value (from the default):** `""` -From //third_party/skia/BUILD.gn:57 +From //build/images/fvm.gni:29 -### extra_authorized_keys_file -Additional SSH authorized_keys file to include in the build. -For example: - extra_authorized_keys_file=\"$HOME/.ssh/id_rsa.pub\" +### skia_enable_atlas_text -**Current value (from the default):** `""` +**Current value (from the default):** `false` -From [//third_party/openssh-portable/fuchsia/developer-keys/BUILD.gn:11](https://fuchsia.googlesource.com/third_party/openssh-portable/+/62f4ca0d82fa50a3405703837031a15c36dccdd4/fuchsia/developer-keys/BUILD.gn#11) +From //third_party/skia/BUILD.gn:65 -### skia_enable_fontmgr_android +### auto_login_to_guest +Whether basemgr should automatically login as a persistent guest user. **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:70 +From //peridot/bin/basemgr/BUILD.gn:13 -### build_info_version -Logical version of the current build. If not set, defaults to the timestamp -of the most recent update. +### linux_runner_ip +Default values for the guest network configuration. -**Current value (from the default):** `""` +These are currently hard-coded to match what is setup in the virtio-net +device. -From //garnet/BUILD.gn:28 +See //src/virtualization/bin/vmm/device/virtio_net.cc for more details. -### enable_value_subsystem +**Current value (from the default):** `"10.0.0.2"` -**Current value (from the default):** `false` +From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:17 -From //garnet/bin/ui/scenic/BUILD.gn:11 +### skia_use_icu -### skia_enable_tools +**Current value (from the default):** `true` -**Current value (from the default):** `false` +From //third_party/skia/gn/skia.gni:13 -From //third_party/skia/gn/skia.gni:12 +### symbol_level +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. Symbols with +internal linkage (static functions or those in anonymous namespaces) may not +appear when using this level. + 0 means no symbols. -### blobfs_minimum_inodes -minimum_inodes is the number of inodes to reserve for the fs -An empty string does not reserve any additional space than minimum -required for the filesystem. +**Current value (from the default):** `2` -**Current value (from the default):** `""` +From //build/config/compiler.gni:13 -From //build/images/fvm.gni:28 +### concurrent_dart_jobs +Maximum number of Dart processes to run in parallel. -### cache_package_labels -If you add package labels to this variable, the packages will be included -in the 'cache' package set, which represents an additional set of software -that is made available on disk immediately after paving and in factory -flows. These packages are not updated with an OTA, but instead are updated -ephemerally. This cache of software can be evicted by the system if storage -pressure arises or other policies indicate. +Dart analyzer uses a lot of memory which may cause issues when building +with many parallel jobs e.g. when using goma. To avoid out-of-memory +errors we explicitly reduce the number of jobs. -**Current value for `target_cpu = "arm64"`:** `[]` +**Current value (from the default):** `16` -From //products/core.gni:25 +From //build/dart/BUILD.gn:15 -**Overridden from the default:** `[]` +### skia_lex -From //BUILD.gn:22 +**Current value (from the default):** `false` -**Current value for `target_cpu = "x64"`:** `[]` +From //third_party/skia/BUILD.gn:53 -From //products/core.gni:25 +### skia_use_sfntly -**Overridden from the default:** `[]` +**Current value for `target_cpu = "arm64"`:** `false` -From //BUILD.gn:22 +From //.gn:30 -### linux_runner_extras -If `true`, the extras.img will be built and mounted inside the container -at /mnt/chromeos. +**Overridden from the default:** `true` -This is useful for including some GN-built binaries into the guest image -without modifying the termina images. +From //third_party/skia/BUILD.gn:64 -**Current value (from the default):** `false` +**Current value for `target_cpu = "x64"`:** `false` -From //src/virtualization/packages/biscotti_guest/linux_runner/BUILD.gn:26 +From //.gn:30 -### max_log_disk_usage -Controls how many bytes of space on disk are used to persist device logs. -Should be a string value that only contains digits. +**Overridden from the default:** `true` -**Current value (from the default):** `"0"` +From //third_party/skia/BUILD.gn:64 -From //garnet/bin/log_listener/BUILD.gn:13 +### cloudkms_key_dir -### prebuilt_dart_sdk -Directory containing prebuilt Dart SDK. -This must have in its `bin/` subdirectory `gen_snapshot.OS-CPU` binaries. -Set to empty for a local build. +**Current value (from the default):** `"projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys"` -**Current value (from the default):** `"//topaz/tools/prebuilt-dart-sdk/linux-x64"` +From //build/testing/secret_spec.gni:8 -From //build/dart/dart.gni:9 +### ledger_sync_credentials_file -### skia_use_x11 +**Current value (from the default):** `""` -**Current value for `target_cpu = "arm64"`:** `false` +From //src/ledger/bin/testing/sync_params.gni:6 -From //.gn:31 +### goma_dir +Absolute directory containing the Goma source code. -**Overridden from the default:** `true` +**Current value (from the default):** `"/home/swarming/goma"` -From //third_party/skia/BUILD.gn:38 +From //build/toolchain/goma.gni:12 -**Current value for `target_cpu = "x64"`:** `false` +### scudo_default_options +Default [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html) +options (before the `SCUDO_OPTIONS` environment variable is read at +runtime). *NOTE:* This affects only components using the `scudo` +variant (see GN build argument `select_variant`), and does not affect +anything when the `use_scudo` build flag is set instead. -From //.gn:31 +**Current value (from the default):** `["abort_on_error=1", "QuarantineSizeKb=0", "ThreadLocalQuarantineSizeKb=0", "DeallocationTypeMismatch=false", "DeleteSizeMismatch=false", "allocator_may_return_null=true"]` -**Overridden from the default:** `true` +From //build/config/scudo/scudo.gni:17 -From //third_party/skia/BUILD.gn:38 +### skia_skqp_global_error_tolerance -### use_vulkan_loader_for_tests -Mesa doesn't properly handle loader-less operation; -their GetInstanceProcAddr implementation returns 0 for some interfaces. -On ARM there may be multiple libvulkan_arms, so they can't all be linked -to. +**Current value (from the default):** `0` + +From //third_party/skia/BUILD.gn:55 + +### use_thinlto +Use ThinLTO variant of LTO if use_lto = true. **Current value (from the default):** `true` -From //garnet/lib/magma/gnbuild/magma.gni:31 +From //build/config/lto/config.gni:10 + +### embedder_for_target +By default, the dynamic library target exposing the embedder API is only +built for the host. The reasoning is that platforms that have target +definitions would not need an embedder API because an embedder +implementation is already provided for said target. This flag allows tbe +builder to obtain a shared library exposing the embedder API for alternative +embedder implementations. + +**Current value (from the default):** `false` + +From //third_party/flutter/shell/platform/embedder/embedder.gni:12 ### flutter_space_dart Whether experimental space dart mode is enabled for Flutter applications. @@ -1706,25 +1718,50 @@ Whether experimental space dart mode is enabled for Flutter applications. From [//topaz/runtime/dart/dart_component.gni:38](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#38) -### board_package_labels -A list of package labels to include in the 'base' package set. Used by the -board definition rather than the product definition. +### skia_enable_fontmgr_empty -**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/prod:drivers", "//garnet/packages/prod:sysmem-assistant"]` +**Current value (from the default):** `false` -From //boards/arm64.gni:11 +From //third_party/skia/BUILD.gn:66 + +### skia_llvm_lib + +**Current value (from the default):** `"LLVM"` + +From //third_party/skia/BUILD.gn:58 + +### skia_use_angle + +**Current value (from the default):** `false` + +From //third_party/skia/BUILD.gn:21 + +### system_package_key +The package key to use for signing Fuchsia packages made by the +`package()` template (and the `system_image` package). If this +doesn't exist yet when it's needed, it will be generated. New +keys can be generated with the `pm -k FILE genkey` host command. + +**Current value (from the default):** `"//build/development.key"` + +From //build/package.gni:18 -**Overridden from the default:** `[]` +### use_vulkan_loader_for_tests +Mesa doesn't properly handle loader-less operation; +their GetInstanceProcAddr implementation returns 0 for some interfaces. +On ARM there may be multiple libvulkan_arms, so they can't all be linked +to. -From //BUILD.gn:34 +**Current value (from the default):** `true` -**Current value for `target_cpu = "x64"`:** `["//garnet/packages/prod:drivers"]` +From //garnet/lib/magma/gnbuild/magma.gni:31 -From //boards/x64.gni:13 +### zircon_a_partition +arguments to fx flash script -**Overridden from the default:** `[]` +**Current value (from the default):** `""` -From //BUILD.gn:34 +From //build/images/BUILD.gn:39 ### dart_vm_code_coverage Whether to enable code coverage for the standalone VM. @@ -1733,214 +1770,226 @@ Whether to enable code coverage for the standalone VM. From //third_party/dart/runtime/runtime_args.gni:39 -### enable_dart_analysis -Enable all dart analysis - -**Current value (from the default):** `true` - -From //build/dart/dart_library.gni:15 - -### glm_build_root - -**Current value (from the default):** `"//third_party/glm"` +### rust_toolchain_triple_suffix +Sets the fuchsia toolchain target triple suffix (after arch) -From //garnet/lib/magma/gnbuild/magma.gni:11 +**Current value (from the default):** `"fuchsia"` -### zircon_build_root +From //build/rust/config.gni:23 -**Current value (from the default):** `"//zircon"` +### kernel_cmdline_files +Files containing additional kernel command line arguments to bake into +the boot image. The contents of these files (in order) come after any +arguments directly in [`kernel_cmdline_args`](#kernel_cmdline_args). +These can be GN `//` source pathnames or absolute system pathnames. -From //garnet/lib/magma/gnbuild/magma.gni:12 +**Current value (from the default):** `[]` -### allow_layer_guesswork -Does nothing. +From //build/images/BUILD.gn:486 -Will be removed after 30 April 2019. +### max_log_disk_usage +Controls how many bytes of space on disk are used to persist device logs. +Should be a string value that only contains digits. -**Current value (from the default):** `false` +**Current value (from the default):** `"0"` -From //BUILD.gn:39 +From //garnet/bin/log_listener/BUILD.gn:13 -### data_partition_manifest -Path to manifest file containing data to place into the initial /data -partition. +### skia_android_serial **Current value (from the default):** `""` -From //build/images/BUILD.gn:28 - -### flutter_runtime_mode -The runtime mode ("debug", "profile", "release", "dynamic_profile", or "dynamic_release") - -**Current value (from the default):** `"debug"` - -From //third_party/flutter/common/config.gni:19 +From //third_party/skia/BUILD.gn:41 -### skia_enable_skottie +### skia_use_zlib **Current value (from the default):** `true` -From //third_party/skia/modules/skottie/BUILD.gn:9 - -### skia_enable_vulkan_debug_layers - -**Current value (from the default):** `false` - -From //third_party/skia/BUILD.gn:49 +From //third_party/skia/BUILD.gn:35 -### vbmeta_r_partition +### blobfs_minimum_data_bytes +Number of bytes to reserve for data in the fs. This is in addition +to what is reserved, if any, for the inodes. Data bytes constitutes +"usable" space of the fs. +An empty string does not reserve any additional space than minimum +required for the filesystem. **Current value (from the default):** `""` -From //build/images/BUILD.gn:44 +From //build/images/fvm.gni:36 -### zedboot_devmgr_config -List of arguments to populate /boot/config/devmgr in the Zedboot image. +### exclude_kernel_service +Whether the VM includes the kernel service in all modes (debug, release, +product). -**Current value (from the default):** `["netsvc.netboot=true"]` +**Current value (from the default):** `false` -From //build/images/zedboot/BUILD.gn:26 +From //third_party/dart/runtime/runtime_args.gni:88 -### persist_logs +### skia_use_expat -**Current value (from the default):** `true` +**Current value for `target_cpu = "arm64"`:** `false` -From //build/persist_logs.gni:13 +From //.gn:27 -### skia_use_libjpeg_turbo +**Overridden from the default:** `true` -**Current value (from the default):** `true` +From //third_party/skia/BUILD.gn:23 -From //third_party/skia/BUILD.gn:28 +**Current value for `target_cpu = "x64"`:** `false` -### using_fuchsia_sdk -Only set in buildroots where targets configure themselves for use with the -Fuchsia SDK +From //.gn:27 -**Current value (from the default):** `false` +**Overridden from the default:** `true` -From //build/fuchsia/sdk.gni:8 +From //third_party/skia/BUILD.gn:23 -### build_info_product -Product configuration of the current build +### universe_package_labels +If you add package labels to this variable, the packages will be included +in the 'universe' package set, which represents all software that is +produced that is to be published to a package repository or to the SDK by +the build. The build system ensures that the universe package set includes +the base and cache package sets, which means you do not need to redundantly +include those labels in this variable. -**Current value (from the default):** `""` +**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/prod:vboot_reference", "//bundles:tools"]` -From //garnet/BUILD.gn:21 +From //products/core.gni:27 -### magma_enable_developer_build -Enable this to have the msd include a suite of tests and invoke them -automatically when the driver starts. +**Overridden from the default:** `[]` -**Current value (from the default):** `false` +From //BUILD.gn:30 -From //garnet/lib/magma/gnbuild/magma.gni:21 +**Current value for `target_cpu = "x64"`:** `["//garnet/packages/prod:vboot_reference", "//bundles:tools"]` -### msd_intel_gen_build_root +From //products/core.gni:27 -**Current value (from the default):** `"//garnet/drivers/gpu/msd-intel-gen"` +**Overridden from the default:** `[]` -From //garnet/lib/magma/gnbuild/magma.gni:10 +From //BUILD.gn:30 -### prebuilt_libvulkan_arm_path +### zircon_extra_args +[Zircon GN build arguments](../../../zircon/docs/gen/build_arguments.md). +This is included in the default value of [`zircon_args`](#zircon_args) so +you can set this to add things there without wiping out the defaults. +When you set `zircon_args` directly, then this has no effect at all. +Arguments you set here override any arguments in the default +`zircon_args`. There is no way to append to a value from the defaults. +Note that for just setting simple (string-only) values in Zircon GN's +[`variants`](../../../zircon/docs/gen/build_arguments.md#variants), the +default [`zircon_args`](#zircon_args) uses a `variants` value derived from +[`select_variant`](#select_variant) so for simple cases there is no need +to explicitly set Zircon's `variants` here. -**Current value (from the default):** `""` +**Current value (from the default):** `{ }` -From //garnet/lib/magma/gnbuild/magma.gni:23 +From //build/config/fuchsia/zircon.gni:27 -### skia_pdf_subset_harfbuzz -TODO: set skia_pdf_subset_harfbuzz to skia_use_harfbuzz. +### dart_space_dart +Whether experimental space dart mode is enabled for Dart applications. **Current value (from the default):** `false` -From //third_party/skia/gn/skia.gni:18 - -### concurrent_rust_jobs -Maximum number of Rust processes to run in parallel. +From [//topaz/runtime/dart/dart_component.gni:41](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#41) -We run multiple rustc jobs in parallel, each of which can cause significant -amount of memory, especially when using LTO. To avoid out-of-memory errors -we explicitly reduce the number of jobs. +### fuchsia_vulkan_sdk +Path to Fuchsia Vulkan SDK -**Current value (from the default):** `14` +**Current value (from the default):** `"//third_party/vulkan_loader_and_validation_layers"` -From //build/rust/BUILD.gn:15 +From //build/vulkan/config.gni:10 -### rust_toolchain_triple_suffix -Sets the fuchsia toolchain target triple suffix (after arch) +### have_secmem_ta +The secmem TA must be obtained elsewhere and put into the firmware +directory. -**Current value (from the default):** `"fuchsia"` +**Current value (from the default):** `false` -From //build/rust/config.gni:23 +From //garnet/bin/sysmem-assistant/BUILD.gn:44 -### skia_generate_workarounds +### skia_use_egl **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:52 +From //third_party/skia/BUILD.gn:22 -### skia_use_fontconfig +### use_prebuilt_dart_sdk +Whether to use the prebuilt Dart SDK for everything. +When setting this to false, the preubilt Dart SDK will not be used in +situations where the version of the SDK matters, but may still be used as an +optimization where the version does not matter. -**Current value for `target_cpu = "arm64"`:** `false` +**Current value (from the default):** `true` -From //.gn:28 +From //build/dart/dart.gni:15 -**Overridden from the default:** `true` +### zircon_b_partition -From //third_party/skia/BUILD.gn:24 +**Current value (from the default):** `""` -**Current value for `target_cpu = "x64"`:** `false` +From //build/images/BUILD.gn:40 -From //.gn:28 +### dart_version_git_info +Whether the Dart binary version string should include the git hash and +git commit time. -**Overridden from the default:** `true` +**Current value (from the default):** `true` -From //third_party/skia/BUILD.gn:24 +From //third_party/dart/runtime/runtime_args.gni:60 -### always_zedboot -Build boot images that prefer Zedboot over local boot (only for EFI). +### debian_guest_earlycon **Current value (from the default):** `false` -From //build/images/BUILD.gn:809 +From //src/virtualization/packages/debian_guest/BUILD.gn:10 -### enable_gfx_subsystem +### linux_guest_extras_path -**Current value (from the default):** `true` +**Current value (from the default):** `""` -From //garnet/bin/ui/scenic/BUILD.gn:12 +From //src/virtualization/packages/linux_guest/BUILD.gn:13 -### enable_sketchy_subsystem +### skia_enable_spirv_validation **Current value (from the default):** `false` -From //garnet/bin/ui/scenic/BUILD.gn:13 +From //third_party/skia/BUILD.gn:47 -### signed_image +### clang_lib_dir +Path to Clang lib directory. -**Current value (from the default):** `false` +**Current value (from the default):** `"../build/buildtools/linux-x64/clang/lib"` -From //build/images/BUILD.gn:46 +From //build/images/manifest.gni:19 -### build_info_board -Board configuration of the current build +### extra_authorized_keys_file +Additional SSH authorized_keys file to include in the build. +For example: + extra_authorized_keys_file=\"$HOME/.ssh/id_rsa.pub\" -**Current value (from the default):** `"qemu-arm64"` +**Current value (from the default):** `""` -From //garnet/BUILD.gn:24 +From [//third_party/openssh-portable/fuchsia/developer-keys/BUILD.gn:11](https://fuchsia.googlesource.com/third_party/openssh-portable/+/62f4ca0d82fa50a3405703837031a15c36dccdd4/fuchsia/developer-keys/BUILD.gn#11) -### extra_manifest_args -Extra args to globally apply to the manifest generation script. +### vbmeta_b_partition -**Current value (from the default):** `[]` +**Current value (from the default):** `""` + +From //build/images/BUILD.gn:43 + +### warn_on_sdk_changes +Whether to only warn when an SDK has been modified. +If false, any unacknowledged SDK change will cause a build failure. + +**Current value (from the default):** `false` -From //build/images/manifest.gni:22 +From //build/sdk/config.gni:8 -### skia_use_lua +### expat_build_root -**Current value (from the default):** `false` +**Current value (from the default):** `"//third_party/expat"` -From //third_party/skia/BUILD.gn:31 +From //garnet/lib/magma/gnbuild/magma.gni:9 ### use_goma Set to true to enable distributed compilation using Goma. @@ -1949,432 +1998,377 @@ Set to true to enable distributed compilation using Goma. From //build/toolchain/goma.gni:9 -### vbmeta_b_partition +### always_zedboot +Build boot images that prefer Zedboot over local boot (only for EFI). -**Current value (from the default):** `""` +**Current value (from the default):** `false` -From //build/images/BUILD.gn:43 +From //build/images/BUILD.gn:809 -### expat_build_root +### skia_use_wuffs -**Current value (from the default):** `"//third_party/expat"` +**Current value (from the default):** `false` -From //garnet/lib/magma/gnbuild/magma.gni:9 +From //third_party/skia/BUILD.gn:34 -### have_secmem_ta -The secmem TA must be obtained elsewhere and put into the firmware -directory. +### fvm_slice_size +The size of the FVM partition images "slice size". The FVM slice size is a +minimum size of a particular chunk of a partition that is stored within +FVM. A very small slice size may lead to decreased throughput. A very large +slice size may lead to wasted space. The selected default size of 8mb is +selected for conservation of space, rather than performance. -**Current value (from the default):** `false` +**Current value (from the default):** `"8388608"` -From //garnet/bin/sysmem-assistant/BUILD.gn:44 +From //build/images/fvm.gni:19 -### linux_guest_extras_path +### skia_version **Current value (from the default):** `""` -From //src/virtualization/packages/linux_guest/BUILD.gn:13 +From //third_party/flutter/shell/version/version.gni:8 -### select_variant_canonical -*This should never be set as a build argument.* -It exists only to be set in `toolchain_args`. -See //build/toolchain/clang_toolchain.gni for details. +### build_info_board +Board configuration of the current build -**Current value (from the default):** `[]` +**Current value (from the default):** `"qemu-arm64"` -From //build/config/BUILDCONFIG.gn:631 +From //garnet/BUILD.gn:24 -### skia_lex +### dart_custom_version_for_pub +When this argument is a non-empty string, the version repoted by the +Dart VM will be one that is compatible with pub's interpretation of +semantic version strings. The version string will also include the values +of the argument. In particular the version string will read: -**Current value (from the default):** `false` + "M.m.p-dev.x.x-$(dart_custom_version_for_pub)-$(short_git_hash)" -From //third_party/skia/BUILD.gn:53 +Where 'M', 'm', and 'p' are the major, minor and patch version numbers, +and 'dev.x.x' is the dev version tag most recently preceeding the current +revision. The short git hash can be omitted by setting +dart_version_git_info=false -### skia_use_angle +**Current value (from the default):** `""` + +From //third_party/dart/runtime/runtime_args.gni:73 + +### create_kernel_service_snapshot **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:21 +From //third_party/dart/runtime/runtime_args.gni:101 -### skia_use_harfbuzz +### dart_debug_optimization_level +The optimization level to use for debug builds. Defaults to 0 for builds with +code coverage enabled. + +**Current value (from the default):** `"2"` + +From //third_party/dart/runtime/runtime_args.gni:36 + +### msd_arm_enable_all_cores +Enable all 8 cores, which is faster but emits more heat. **Current value (from the default):** `true` -From //third_party/skia/gn/skia.gni:14 +From //garnet/drivers/gpu/msd-arm-mali/src/BUILD.gn:9 -### engine_version +### skia_enable_skshaper -**Current value (from the default):** `""` +**Current value (from the default):** `true` -From //third_party/flutter/shell/version/version.gni:6 +From //third_party/skia/modules/skshaper/BUILD.gn:9 -### flutter_default_app +### concurrent_go_jobs +Maximum number of Go processes to run in parallel. -**Current value (from the default):** `"flutter_jit_app"` +**Current value (from the default):** `16` -From [//topaz/runtime/dart/dart_component.gni:12](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#12) +From //build/go/BUILD.gn:11 -### skia_enable_ccpr +### debian_guest_qcow +Package the rootfs as a QCOW image (as opposed to a flat file). **Current value (from the default):** `true` -From //third_party/skia/BUILD.gn:42 - -### skia_use_libwebp +From //src/virtualization/packages/debian_guest/BUILD.gn:9 -**Current value for `target_cpu = "arm64"`:** `false` +### enable_gfx_subsystem -From //.gn:29 +**Current value (from the default):** `true` -**Overridden from the default:** `true` +From //garnet/bin/ui/scenic/BUILD.gn:12 -From //third_party/skia/BUILD.gn:30 +### host_os -**Current value for `target_cpu = "x64"`:** `false` +**Current value (from the default):** `"linux"` -From //.gn:29 +### prebuilt_dart_sdk +Directory containing prebuilt Dart SDK. +This must have in its `bin/` subdirectory `gen_snapshot.OS-CPU` binaries. +Set to empty for a local build. -**Overridden from the default:** `true` +**Current value (from the default):** `"//topaz/tools/prebuilt-dart-sdk/linux-x64"` -From //third_party/skia/BUILD.gn:30 +From //build/dart/dart.gni:9 -### use_thinlto -Use ThinLTO variant of LTO if use_lto = true. +### skia_enable_fontmgr_custom_empty -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //build/config/lto/config.gni:10 +From //third_party/skia/BUILD.gn:69 -### custom_signing_script -If non-empty, the given script will be invoked to produce a signed ZBI -image. The given script must accept -z for the input zbi path, and -o for -the output signed zbi path. The path must be in GN-label syntax (i.e. -starts with //). +### skia_qt_path **Current value (from the default):** `""` -From //build/images/custom_signing.gni:12 +From //third_party/skia/BUILD.gn:50 -### debian_guest_earlycon +### concurrent_link_jobs +Maximum number of concurrent link jobs. -**Current value (from the default):** `false` +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. -From //src/virtualization/packages/debian_guest/BUILD.gn:10 +**Current value (from the default):** `16` -### host_cpu +From //build/toolchain/BUILD.gn:15 -**Current value (from the default):** `"x64"` +### dart_platform_bytecode +Whether the VM's platform dill file contains bytecode. -### target_cpu +**Current value (from the default):** `false` -**Current value for `target_cpu = "arm64"`:** `"arm64"` +From //third_party/dart/runtime/runtime_args.gni:84 -From //boards/arm64.gni:5 +### sdk_dirs +The directories to search for parts of the SDK. -**Overridden from the default:** `""` +By default, we search the public directories for the various layers. +In the future, we'll search a pre-built SDK as well. -**Current value for `target_cpu = "x64"`:** `"x64"` +**Current value (from the default):** `["//garnet/public", "//peridot/public", "//topaz/public"]` -From //boards/x64.gni:5 +From //build/config/fuchsia/sdk.gni:10 -**Overridden from the default:** `""` +### vbmeta_a_partition -### base_package_labels -If you add package labels to this variable, the packages will be included in -the 'base' package set, which represents the set of packages that are part -of an OTA. These pacakages are updated as an atomic unit during an OTA -process and are immutable and are a superset of the TCB (Trusted Computing -Base) for a product. These packages are never evicted by the system. +**Current value (from the default):** `""` -**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/config:kernel_crash_checker", "//garnet/packages/prod:crashpad_agent", "//garnet/packages/prod:feedback_agent", "//garnet/packages/prod:kernel_crash_checker", "//garnet/packages/products:base", "//bundles:kitchen_sink"]` +From //build/images/BUILD.gn:42 -From //root_build_dir/args.gn:3 +### auto_update_packages +Whether the component loader should automatically update packages. -**Overridden from the default:** `[]` +**Current value (from the default):** `true` -From //BUILD.gn:14 +From //garnet/bin/sysmgr/BUILD.gn:10 -**Current value for `target_cpu = "x64"`:** `["//garnet/packages/config:kernel_crash_checker", "//garnet/packages/prod:crashpad_agent", "//garnet/packages/prod:feedback_agent", "//garnet/packages/prod:kernel_crash_checker", "//garnet/packages/products:base", "//bundles:kitchen_sink"]` +### build_info_version +Logical version of the current build. If not set, defaults to the timestamp +of the most recent update. -From //root_build_dir/args.gn:3 +**Current value (from the default):** `""` -**Overridden from the default:** `[]` +From //garnet/BUILD.gn:28 -From //BUILD.gn:14 +### gocache_dir + gocache_dir + Directory GOCACHE environment variable will be set to. This directory + will have build and test results cached, and is safe to be written to + concurrently. If overridden, this directory must be a full path. -### skia_use_fonthost_mac +**Current value (from the default):** `"/b/s/w/ir/k/root_build_dir/host_x64/.gocache"` -**Current value (from the default):** `false` +From //build/go/go_build.gni:16 -From //third_party/skia/BUILD.gn:25 +### board_package_labels +A list of package labels to include in the 'base' package set. Used by the +board definition rather than the product definition. -### skia_use_vulkan +**Current value for `target_cpu = "arm64"`:** `["//garnet/packages/prod:drivers", "//garnet/packages/prod:sysmem-assistant"]` -**Current value (from the default):** `false` +From //boards/arm64.gni:11 -From //third_party/skia/BUILD.gn:88 +**Overridden from the default:** `[]` -### use_mock_magma +From //BUILD.gn:34 -**Current value (from the default):** `false` +**Current value for `target_cpu = "x64"`:** `["//garnet/packages/prod:drivers"]` -From [//third_party/mesa/src/intel/vulkan/BUILD.gn:25](https://fuchsia.googlesource.com/third_party/mesa/+/232bf12b10899d335a3fe69d947a738541ace7d3/src/intel/vulkan/BUILD.gn#25) +From //boards/x64.gni:13 -### flutter_profile +**Overridden from the default:** `[]` -**Current value (from the default):** `true` +From //BUILD.gn:34 -From [//topaz/runtime/dart/dart_component.gni:32](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/dart/dart_component.gni#32) +### build_sdk_archives +Whether to build SDK tarballs. -### known_variants -List of variants that will form the basis for variant toolchains. -To make use of a variant, set [`select_variant`](#select_variant). +**Current value (from the default):** `false` -Normally this is not set as a build argument, but it serves to -document the available set of variants. -See also [`universal_variants`](#universal_variants). -Only set this to remove all the default variants here. -To add more, set [`extra_variants`](#extra_variants) instead. +From //build/sdk/sdk.gni:13 -Each element of the list is one variant, which is a scope defining: +### skia_pdf_subset_harfbuzz +TODO: set skia_pdf_subset_harfbuzz to skia_use_harfbuzz. - `configs` (optional) - [list of labels] Each label names a config that will be - automatically used by every target built in this variant. - For each config `${label}`, there must also be a target - `${label}_deps`, which each target built in this variant will - automatically depend on. The `variant()` template is the - recommended way to define a config and its `_deps` target at - the same time. +**Current value (from the default):** `false` - `remove_common_configs` (optional) - `remove_shared_configs` (optional) - [list of labels] This list will be removed (with `-=`) from - the `default_common_binary_configs` list (or the - `default_shared_library_configs` list, respectively) after - all other defaults (and this variant's configs) have been - added. +From //third_party/skia/gn/skia.gni:18 + +### current_cpu - `deps` (optional) - [list of labels] Added to the deps of every target linked in - this variant (as well as the automatic `${label}_deps` for - each label in configs). +**Current value (from the default):** `""` - `name` (required if configs is omitted) - [string] Name of the variant as used in - [`select_variant`](#select_variant) elements' `variant` fields. - It's a good idea to make it something concise and meaningful when - seen as e.g. part of a directory name under `$root_build_dir`. - If name is omitted, configs must be nonempty and the simple names - (not the full label, just the part after all `/`s and `:`s) of these - configs will be used in toolchain names (each prefixed by a "-"), - so the list of config names forming each variant must be unique - among the lists in `known_variants + extra_variants`. +### experimental_wlan_client_mlme +Selects the SoftMAC client implementation to use. Choices: + false (default) - C++ Client MLME implementation + true - Rust Client MLME implementation +This argument is temporary until Rust MLME is ready to be used. - `toolchain_args` (optional) - [scope] Each variable defined in this scope overrides a - build argument in the toolchain context of this variant. +**Current value (from the default):** `false` - `host_only` (optional) - `target_only` (optional) - [scope] This scope can contain any of the fields above. - These values are used only for host or target, respectively. - Any fields included here should not also be in the outer scope. +From //src/connectivity/wlan/lib/mlme/cpp/BUILD.gn:10 +### max_fvm_size +Maximum allowable size for the FVM in a release mode build +Zero means no limit -**Current value (from the default):** -``` -[{ - configs = ["//build/config/lto"] -}, { - configs = ["//build/config/lto:thinlto"] -}, { - configs = ["//build/config/profile"] -}, { - configs = ["//build/config/scudo"] -}, { - configs = ["//build/config/sanitizers:ubsan"] -}, { - configs = ["//build/config/sanitizers:ubsan", "//build/config/sanitizers:sancov"] -}, { - configs = ["//build/config/sanitizers:asan"] - host_only = { - remove_shared_configs = ["//build/config:symbol_no_undefined"] -} - toolchain_args = { - use_scudo = false -} -}, { - configs = ["//build/config/sanitizers:asan", "//build/config/sanitizers:sancov"] - host_only = { - remove_shared_configs = ["//build/config:symbol_no_undefined"] -} - toolchain_args = { - use_scudo = false -} -}, { - configs = ["//build/config/sanitizers:asan"] - host_only = { - remove_shared_configs = ["//build/config:symbol_no_undefined"] -} - name = "asan_no_detect_leaks" - toolchain_args = { - asan_default_options = "detect_leaks=0" - use_scudo = false -} -}, { - configs = ["//build/config/sanitizers:asan", "//build/config/sanitizers:fuzzer"] - host_only = { - remove_shared_configs = ["//build/config:symbol_no_undefined"] -} - remove_shared_configs = ["//build/config:symbol_no_undefined"] - toolchain_args = { - asan_default_options = "alloc_dealloc_mismatch=0" - use_scudo = false -} -}, { - configs = ["//build/config/sanitizers:ubsan", "//build/config/sanitizers:fuzzer"] - remove_shared_configs = ["//build/config:symbol_no_undefined"] -}] -``` +**Current value (from the default):** `"0"` -From //build/config/BUILDCONFIG.gn:338 +From //build/images/max_fvm_size.gni:8 -### shell_enable_vulkan +### crash_diagnostics_dir +Clang crash reports directory path. Use empty path to disable altogether. -**Current value (from the default):** `false` +**Current value (from the default):** `"//root_build_dir/clang-crashreports"` -From //third_party/flutter/shell/config.gni:6 +From //build/config/BUILD.gn:9 -### skia_compile_processors +### crashpad_dependencies -**Current value (from the default):** `false` +**Current value (from the default):** `"fuchsia"` -From //third_party/skia/BUILD.gn:51 +From [//third_party/crashpad/build/crashpad_buildconfig.gni:22](https://chromium.googlesource.com/crashpad/crashpad/+/d221b7cadab5f00c6999f060a5bcb0896e25c7b7/build/crashpad_buildconfig.gni#22) -### use_ccache -Set to true to enable compiling with ccache +### prebuilt_framework_name -**Current value (from the default):** `false` +**Current value (from the default):** `""` -From //build/toolchain/ccache.gni:9 +From [//topaz/runtime/flutter_runner/prebuilt_framework.gni:7](https://fuchsia.googlesource.com/topaz/+/e815667d2e8f06051f242e52f04785428bd8e743/runtime/flutter_runner/prebuilt_framework.gni#7) -### zxcrypt_key_source -This argument specifies from where the system should obtain the zxcrypt -master key to the system data partition. +### skia_use_fontconfig -This value be reified as /boot/config/zxcrypt in both the zircon boot image -and the zedboot boot image, for consumption by fshost and the paver, -respectively. +**Current value for `target_cpu = "arm64"`:** `false` -Acceptable values are: -* "null": the device should use an all-0's master key, as we lack support -for any secure on-device storage. -* "tee": the device is required to have a Trusted Execution Environment -(TEE) which includes the "keysafe" Trusted Application (associated with the -KMS service). The zxcrypt master key should be derived from a per-device -key accessible only to trusted apps running in the TEE. -* "tee-opportunistic": the device will attempt to use keys from the TEE if -available, but will fall back to using the null key if the key from the TEE -does not work, or if the TEE is not functional on this device. -* "tee-transitional": the device will require the use of a key from the TEE -for new volume creation, but will continue to try both a TEE-sourced key and -the null key when unsealing volumes. +From //.gn:28 -In the future, we may consider adding support for TPMs, or additional logic -to explicitly support other fallback behavior. +**Overridden from the default:** `true` -**Current value (from the default):** `"null"` +From //third_party/skia/BUILD.gn:24 -From //build/images/zxcrypt.gni:29 +**Current value for `target_cpu = "x64"`:** `false` -### auto_update_packages -Whether the component loader should automatically update packages. +From //.gn:28 -**Current value (from the default):** `true` +**Overridden from the default:** `true` -From //garnet/bin/sysmgr/BUILD.gn:10 +From //third_party/skia/BUILD.gn:24 -### dart_snapshot_kind +### target_os -**Current value (from the default):** `"kernel"` +**Current value (from the default):** `""` -From //third_party/dart/utils/application_snapshot.gni:14 +### cache_package_labels +If you add package labels to this variable, the packages will be included +in the 'cache' package set, which represents an additional set of software +that is made available on disk immediately after paving and in factory +flows. These packages are not updated with an OTA, but instead are updated +ephemerally. This cache of software can be evicted by the system if storage +pressure arises or other policies indicate. -### skia_use_metal +**Current value for `target_cpu = "arm64"`:** `[]` -**Current value (from the default):** `false` +From //products/core.gni:25 -From //third_party/skia/BUILD.gn:36 +**Overridden from the default:** `[]` -### devmgr_config -List of arguments to add to /boot/config/devmgr. -These come after synthesized arguments to configure blobfs and pkgfs. +From //BUILD.gn:22 -**Current value (from the default):** `[]` +**Current value for `target_cpu = "x64"`:** `[]` -From //build/images/BUILD.gn:475 +From //products/core.gni:25 -### skia_enable_particles +**Overridden from the default:** `[]` -**Current value (from the default):** `true` +From //BUILD.gn:22 -From //third_party/skia/modules/particles/BUILD.gn:7 +### dart_snapshot_kind -### thinlto_jobs -Number of parallel ThinLTO jobs. +**Current value (from the default):** `"kernel"` -**Current value (from the default):** `8` +From //third_party/dart/utils/application_snapshot.gni:14 -From //build/config/lto/config.gni:13 +### fuchsia_use_vulkan +Consolidated build toggle for use of Vulkan across Fuchsia -### build_libvulkan_vsl_gc -Targets that will be built as verisilicon vulkan ICDS. +**Current value (from the default):** `true` -**Current value (from the default):** `[]` +From //build/vulkan/config.gni:7 -From //garnet/lib/magma/gnbuild/magma.gni:41 +### persist_logs -### current_cpu +**Current value (from the default):** `true` -**Current value (from the default):** `""` +From //build/persist_logs.gni:13 -### dart_component_kind +### skia_gl_standard -**Current value (from the default):** `"static_library"` +**Current value (from the default):** `""` -From //third_party/dart/runtime/runtime_args.gni:80 +From //third_party/skia/BUILD.gn:80 -### host_os +### skia_use_libheif -**Current value (from the default):** `"linux"` +**Current value (from the default):** `false` -### skia_enable_fontmgr_win +From //third_party/skia/BUILD.gn:37 + +### use_vbmeta +If true, then the paving script will pave vbmeta images to the target device. +It is assumed that the vbmeta image will be created by the custom_signing_script. **Current value (from the default):** `false` -From //third_party/skia/BUILD.gn:72 +From //build/images/custom_signing.gni:16 -### symbol_level -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. Symbols with -internal linkage (static functions or those in anonymous namespaces) may not -appear when using this level. - 0 means no symbols. +### zircon_build_root -**Current value (from the default):** `2` +**Current value (from the default):** `"//zircon"` -From //build/config/compiler.gni:13 +From //garnet/lib/magma/gnbuild/magma.gni:12 -## `target_cpu = "arm64"` +### blobfs_minimum_inodes +minimum_inodes is the number of inodes to reserve for the fs +An empty string does not reserve any additional space than minimum +required for the filesystem. -### arm_version +**Current value (from the default):** `""` -**Current value (from the default):** `8` +From //build/images/fvm.gni:28 -From //build/config/arm.gni:12 +### crashpad_use_boringssl_for_http_transport_socket +TODO(scottmg): https://crbug.com/crashpad/266 fuchsia:DX-690: BoringSSL +was removed from the Fuchsia SDK. Re-enable it when we have a way to acquire +a BoringSSL lib again. + +**Current value (from the default):** `true` + +From [//third_party/crashpad/util/net/tls.gni:21](https://chromium.googlesource.com/crashpad/crashpad/+/d221b7cadab5f00c6999f060a5bcb0896e25c7b7/util/net/tls.gni#21) + +## `target_cpu = "arm64"` ### amlogic_decoder_tests @@ -2414,6 +2408,12 @@ Whether to use the neon FPU instruction set or not. From //build/config/arm.gni:28 +### arm_version + +**Current value (from the default):** `8` + +From //build/config/arm.gni:12 + ## `target_cpu = "x64"` ### msd_intel_enable_mapping_cache diff --git a/zircon/docs/gen/build_arguments.md b/zircon/docs/gen/build_arguments.md index 0c742e4bf9350ac4e1a6189421641a7a495b3a93..aabb41ca764c53f1242125f04bbabb557b2ab4d4 100644 --- a/zircon/docs/gen/build_arguments.md +++ b/zircon/docs/gen/build_arguments.md @@ -2,16 +2,71 @@ ## All builds -### current_os +### asan_default_options +Default [AddressSanitizer](https://llvm.org/docs/AddressSanitizer.html) +options (before the `ASAN_OPTIONS` environment variable is read at +runtime). This can be set as a build argument to affect most "asan" +variants in $variants (which see), or overridden in $toolchain_args in +one of those variants. Note that setting this nonempty may conflict +with programs that define their own `__asan_default_options` C +function. **Current value (from the default):** `""` -### enable_acpi_debug -Enable debug output in the ACPI library (used by the ACPI bus driver). +From //public/gn/config/instrumentation/BUILD.gn:15 -**Current value (from the default):** `false` +### symbol_level +* 0 means no debugging information. +* 1 means minimal debugging information sufficient to symbolize backtraces. +* 2 means full debugging information for use with a symbolic debugger. -From //third_party/lib/acpica/BUILD.gn:9 +**Current value (from the default):** `2` + +From //public/gn/config/levels.gni:20 + +### thinlto_cache_dir +ThinLTO cache directory path. + +**Current value (from the default):** `"user-arm64-thinlto.shlib/thinlto-cache"` + +From //public/gn/config/lto/BUILD.gn:22 + +### build_id_dir +Directory to populate with `xx/yyy` and `xx/yyy.debug` links to ELF +files. For every ELF binary built, with build ID `xxyyy` (lowercase +hexadecimal of any length), `xx/yyy` is a hard link to the stripped +file and `xx/yyy.debug` is a hard link to the unstripped file. +Symbolization tools and debuggers find symbolic information this way. + +**Current value (from the default):** `"/b/s/w/ir/k/out/build-zircon/.build-id"` + +From //public/gn/toolchain/c_toolchain.gni:17 + +### kernel_version_string +Version string embedded in the kernel for `zx_system_get_version`. +If set to the default "", a string is generated based on the +Zircon git revision of the checkout. + +**Current value (from the default):** `""` + +From //kernel/lib/version/BUILD.gn:9 + +### use_prebuilt_gcc +If $gcc_tool_dir is "", then this controls how the GCC toolchain +binaries are found. If true, the standard prebuilt is used. If false, +the tools are just expected to be found in PATH. + +**Current value (from the default):** `true` + +From //public/gn/toolchain/gcc.gni:9 + +### current_cpu + +**Current value (from the default):** `""` + +### current_os + +**Current value (from the default):** `""` ### enable_kernel_debugging_features Whether to include various features (non-shipping, insecure, etc.) in the @@ -25,48 +80,52 @@ From //public/gn/config/product_parameters.gni:12 **Current value (from the default):** `"x64"` -### kernel_extra_defines -Extra macro definitions for kernel code, e.g. "DISABLE_KASLR", -"ENABLE_KERNEL_LL_DEBUG". +### clang_tool_dir +Directory where the Clang toolchain binaries ("clang", "llvm-nm", etc.) are +found. If this is "", then the behavior depends on $use_prebuilt_clang. +This toolchain is expected to support both Fuchsia targets and the host. -**Current value (from the default):** `[]` +**Current value (from the default):** `""` -From //kernel/params.gni:46 +From //public/gn/toolchain/clang.gni:14 -### opt_level -* -1 means really unoptimized (-O0), usually only build-tested and not run. -* 0 means "optimized for debugging" (-Og), light enough to avoid confusion. - 1, 2, and 3 are increasing levels of optimization. -* 4 is optimized for space rather than purely for speed. +### enable_netsvc_debugging_features -**Current value (from the default):** `2` +**Current value (from the default):** `false` -From //public/gn/config/levels.gni:15 +From //public/gn/config/product_parameters.gni:13 -### use_prebuilt_gcc -If $gcc_tool_dir is "", then this controls how the GCC toolchain -binaries are found. If true, the standard prebuilt is used. If false, -the tools are just expected to be found in PATH. +### enable_user_pci +Enable userspace PCI and disable kernel PCI. -**Current value (from the default):** `true` +**Current value (from the default):** `false` -From //public/gn/toolchain/gcc.gni:9 +From //kernel/params.gni:42 -### thinlto_jobs -Number of parallel ThinLTO jobs. +### target_os -**Current value (from the default):** `8` +**Current value (from the default):** `""` -From //public/gn/config/lto/BUILD.gn:19 +### kernel_extra_defines +Extra macro definitions for kernel code, e.g. "DISABLE_KASLR", +"ENABLE_KERNEL_LL_DEBUG". -### use_prebuilt_clang -If $clang_tool_dir is "", then this controls how the Clang toolchain -binaries are found. If true, then the standard prebuilt is used. -Otherwise the tools are just expected to be found by the shell via `PATH`. +**Current value (from the default):** `[]` -**Current value (from the default):** `true` +From //kernel/params.gni:46 -From //public/gn/toolchain/clang.gni:9 +### malloc + +**Current value (from the default):** `"scudo"` + +From //third_party/ulib/musl/BUILD.gn:6 + +### smp_max_cpus +Maximum number of CPUs the kernel will run on (others will be ignored). + +**Current value (from the default):** `32` + +From //kernel/params.gni:7 ### assert_level * 0 means no assertions, not even standard C `assert()`. @@ -77,18 +136,35 @@ From //public/gn/toolchain/clang.gni:9 From //public/gn/config/levels.gni:9 -### crash_diagnostics_dir -Clang crash reports directory path. Use empty path to disable altogether. +### enable_acpi_debug +Enable debug output in the ACPI library (used by the ACPI bus driver). -**Current value (from the default):** `"/b/s/w/ir/k/out/build-zircon/clang-crashreports"` +**Current value (from the default):** `false` -From //public/gn/config/BUILD.gn:11 +From //third_party/lib/acpica/BUILD.gn:9 -### target_cpu +### enable_lock_dep +Enable kernel lock dependency tracking. -**Current value (from the default):** `""` +**Current value (from the default):** `false` -### target_os +From //kernel/params.gni:32 + +### host_os + +**Current value (from the default):** `"linux"` + +### opt_level +* -1 means really unoptimized (-O0), usually only build-tested and not run. +* 0 means "optimized for debugging" (-Og), light enough to avoid confusion. + 1, 2, and 3 are increasing levels of optimization. +* 4 is optimized for space rather than purely for speed. + +**Current value (from the default):** `2` + +From //public/gn/config/levels.gni:15 + +### target_cpu **Current value (from the default):** `""` @@ -102,12 +178,50 @@ to be pared down. From //BUILD.gn:16 -### thinlto_cache_dir -ThinLTO cache directory path. +### toolchain +*This must never be set as a build argument.* +It exists only to be set via c_toolchain(). +See environment() for more information. + +**Current value (from the default):** +``` +{ + configs = [] + environment = "stub" + globals = { } + label = "//public/gn/toolchain:stub" +} +``` -**Current value (from the default):** `"user-arm64-thinlto/thinlto-cache"` +From //public/gn/BUILDCONFIG.gn:20 -From //public/gn/config/lto/BUILD.gn:22 +### default_deps +Defines the `//:default` target: what `ninja` with no arguments does. + +**Current value (from the default):** `[":build-tests", ":ids", ":images", ":tools"]` + +From //BUILD.gn:19 + +### detailed_scheduler_tracing +Enable detailed scheduler traces. + +**Current value (from the default):** `false` + +From //kernel/params.gni:39 + +### enable_fair_scheduler +Disable fair scheduler by default on all architectures. +ZX-3959: Disable by default until E2E tests stabilize. + +**Current value (from the default):** `false` + +From //kernel/params.gni:36 + +### kernel_base + +**Current value (from the default):** `"0xffffffff80100000"` + +From //kernel/params.gni:20 ### variants List of "selectors" to request variant builds of certain targets. Each @@ -331,53 +445,18 @@ Variant scope parameters From //public/gn/toolchain/variants.gni:222 -### enable_user_pci -Enable userspace PCI and disable kernel PCI. - -**Current value (from the default):** `false` - -From //kernel/params.gni:42 - -### kernel_aspace_base - -**Current value (from the default):** `"0xffffff8000000000UL"` - -From //kernel/params.gni:28 - -### kernel_version_string -Version string embedded in the kernel for `zx_system_get_version`. -If set to the default "", a string is generated based on the -Zircon git revision of the checkout. - -**Current value (from the default):** `""` - -From //kernel/lib/version/BUILD.gn:9 - -### build_id_dir -Directory to populate with `xx/yyy` and `xx/yyy.debug` links to ELF -files. For every ELF binary built, with build ID `xxyyy` (lowercase -hexadecimal of any length), `xx/yyy` is a hard link to the stripped -file and `xx/yyy.debug` is a hard link to the unstripped file. -Symbolization tools and debuggers find symbolic information this way. - -**Current value (from the default):** `"/b/s/w/ir/k/out/build-zircon/.build-id"` - -From //public/gn/toolchain/c_toolchain.gni:17 - -### enable_fair_scheduler -Disable fair scheduler by default on all architectures. -ZX-3959: Disable by default until E2E tests stabilize. - -**Current value (from the default):** `false` - -From //kernel/params.gni:36 +### zx +*This must never be set as a build argument*. -### enable_lock_dep -Enable kernel lock dependency tracking. +"$zx/" is the prefix for GN "source-absolute" paths in the Zircon +build. When Zircon is built standalone, the Zircon repository is the +root of the build (where `.gn` is found) so "$zx/" becomes "//". When +Zircon is part of a larger unified build, there is a higher-level `.gn` +file that uses `default_args` to set "$zx/" to "//zircon/". -**Current value (from the default):** `false` +**Current value (from the default):** `"/"` -From //kernel/params.gni:32 +From //public/gn/BUILDCONFIG.gn:13 ### gcc_tool_dir Directory where the GCC toolchain binaries ("gcc", "nm", etc.) are @@ -391,11 +470,32 @@ system-installed tools found by the shell via `PATH` will be used. From //public/gn/toolchain/gcc.gni:17 -### kernel_base +### kernel_aspace_base -**Current value (from the default):** `"0xffffffff80100000"` +**Current value (from the default):** `"0xffffff8000000000UL"` -From //kernel/params.gni:20 +From //kernel/params.gni:28 + +### sysroot +The `--sysroot` directory for host compilations. +This can be a string, which only applies to $host_os-$host_cpu. +Or it can be a list of scopes containing `cpu`, `os`, and `sysroot`. +The empty list (or empty string) means don't use `--sysroot` at all. + +**Current value (from the default):** +``` +[{ + cpu = "arm64" + os = "linux" + sysroot = "//prebuilt/downloads/sysroot/linux-arm64" +}, { + cpu = "x64" + os = "linux" + sysroot = "//prebuilt/downloads/sysroot/linux-x64" +}] +``` + +From //public/gn/config/BUILD.gn:17 ### use_ccache Set to true to enable compiling with ccache. @@ -411,25 +511,21 @@ Set to true to enable distributed compilation using Goma. From //public/gn/toolchain/goma.gni:9 -### zx -*This must never be set as a build argument*. - -"$zx/" is the prefix for GN "source-absolute" paths in the Zircon -build. When Zircon is built standalone, the Zircon repository is the -root of the build (where `.gn` is found) so "$zx/" becomes "//". When -Zircon is part of a larger unified build, there is a higher-level `.gn` -file that uses `default_args` to set "$zx/" to "//zircon/". +### use_prebuilt_clang +If $clang_tool_dir is "", then this controls how the Clang toolchain +binaries are found. If true, then the standard prebuilt is used. +Otherwise the tools are just expected to be found by the shell via `PATH`. -**Current value (from the default):** `"/"` +**Current value (from the default):** `true` -From //public/gn/BUILDCONFIG.gn:13 +From //public/gn/toolchain/clang.gni:9 -### detailed_scheduler_tracing -Enable detailed scheduler traces. +### crash_diagnostics_dir +Clang crash reports directory path. Use empty path to disable altogether. -**Current value (from the default):** `false` +**Current value (from the default):** `"/b/s/w/ir/k/out/build-zircon/clang-crashreports"` -From //kernel/params.gni:39 +From //public/gn/config/BUILD.gn:11 ### enable_lock_dep_tests Enable kernel lock dependency tracking tests. By default this is @@ -441,12 +537,6 @@ disabled. From //kernel/params.gni:54 -### enable_netsvc_debugging_features - -**Current value (from the default):** `false` - -From //public/gn/config/product_parameters.gni:13 - ### goma_dir Absolute directory containing the Goma source code. @@ -454,100 +544,10 @@ Absolute directory containing the Goma source code. From //public/gn/toolchain/goma.gni:12 -### smp_max_cpus -Maximum number of CPUs the kernel will run on (others will be ignored). - -**Current value (from the default):** `32` - -From //kernel/params.gni:7 - -### toolchain -*This must never be set as a build argument.* -It exists only to be set via c_toolchain(). -See environment() for more information. - -**Current value (from the default):** -``` -{ - configs = [] - environment = "stub" - globals = { } - label = "//public/gn/toolchain:stub" -} -``` - -From //public/gn/BUILDCONFIG.gn:20 - -### asan_default_options -Default [AddressSanitizer](https://llvm.org/docs/AddressSanitizer.html) -options (before the `ASAN_OPTIONS` environment variable is read at -runtime). This can be set as a build argument to affect most "asan" -variants in $variants (which see), or overridden in $toolchain_args in -one of those variants. Note that setting this nonempty may conflict -with programs that define their own `__asan_default_options` C -function. - -**Current value (from the default):** `""` - -From //public/gn/config/instrumentation/BUILD.gn:15 - -### host_os - -**Current value (from the default):** `"linux"` - -### sysroot -The `--sysroot` directory for host compilations. -This can be a string, which only applies to $host_os-$host_cpu. -Or it can be a list of scopes containing `cpu`, `os`, and `sysroot`. -The empty list (or empty string) means don't use `--sysroot` at all. - -**Current value (from the default):** -``` -[{ - cpu = "arm64" - os = "linux" - sysroot = "//prebuilt/downloads/sysroot/linux-arm64" -}, { - cpu = "x64" - os = "linux" - sysroot = "//prebuilt/downloads/sysroot/linux-x64" -}] -``` - -From //public/gn/config/BUILD.gn:17 - -### clang_tool_dir -Directory where the Clang toolchain binaries ("clang", "llvm-nm", etc.) are -found. If this is "", then the behavior depends on $use_prebuilt_clang. -This toolchain is expected to support both Fuchsia targets and the host. - -**Current value (from the default):** `""` - -From //public/gn/toolchain/clang.gni:14 - -### current_cpu - -**Current value (from the default):** `""` - -### default_deps -Defines the `//:default` target: what `ninja` with no arguments does. - -**Current value (from the default):** `[":build-tests", ":ids", ":images", ":tools"]` - -From //BUILD.gn:19 - -### malloc - -**Current value (from the default):** `"scudo"` - -From //third_party/ulib/musl/BUILD.gn:6 - -### symbol_level -* 0 means no debugging information. -* 1 means minimal debugging information sufficient to symbolize backtraces. -* 2 means full debugging information for use with a symbolic debugger. +### thinlto_jobs +Number of parallel ThinLTO jobs. -**Current value (from the default):** `2` +**Current value (from the default):** `8` -From //public/gn/config/levels.gni:20 +From //public/gn/config/lto/BUILD.gn:19