This file was build from CEF138 with:
cd CEF/chromium_git/chromium/src
export PATH="`pwd`/../../../depot_tools:$PATH"
gn args out/Release_GN_x64 --list | grep -v "  From //" >~/gn-args.txt
issued from inside the chromium_git/chromium/src/ git tree.
It is meant as a reference of what GN_DEFINES could be used when building CEF
from sources. HB
-------------------------------------------------------------------------------

absl_build_tests
    Current value (from the default) = true

action_pool_depth
    Current value (from the default) = -1

    Pool for non remote tasks.

added_rust_stdlib_libs
    Current value (from the default) = []

    Any extra std rlibs in your Rust toolchain, relative to the standard
    Rust toolchain. Typically used with 'rust_sysroot_absolute'

allow_critical_memory_pressure_handling_in_foreground
    Current value (from the default) = false

allow_runtime_configurable_key_storage
    Current value (from the default) = false

    Whether to make account and service names for the crypto key storage
    configurable at runtime for embedders.
   
    Currently only has an effect on macOS via KeychainPassword

alternate_cdm_storage_id_key
    Current value (from the default) = ""

    If |enable_cdm_storage_id| is set, then an implementation specific key
    must also be provided. It can be provided by defining CDM_STORAGE_ID_KEY
    (which takes precedence), or by setting |alternate_cdm_storage_id_key|.
    The key must be a string of at least 32 characters.

android_channel
    Current value (from the default) = "default"

    The channel to build on Android: stable, beta, dev, canary, work, or
    default. "default" should be used on non-official builds.

android_full_debug
    Current value (from the default) = false

    Normally, Android builds are lightly optimized, even for debug builds, to
    keep binary size down. Setting this flag to true disables such optimization

angle_64bit_current_cpu
    Current value (from the default) = true

angle_always_log_info
    Current value (from the default) = false

angle_assert_always_on
    Current value (from the default) = false

angle_build_all
    Current value (from the default) = false

    Don't build extra (test, samples etc) for Windows UWP. We don't have
    infrastructure (e.g. windowing helper functions) in place to run them.
    Also don't build them with MSVC, because tests and unused dependencies
    often have problems building with it, e.g. for C++20.

angle_build_capture_replay_tests
    Current value (from the default) = false

    Determines if we build the capture_replay_tests. Off by default.

angle_build_mesa
    Current value (from the default) = false

angle_build_tests
    Current value = false
    Overridden from the default = true

    True if we want to build the ANGLE test suites. On by default in most configs.

angle_build_vulkan_system_info
    Current value (from the default) = true

angle_capture_replay_composite_file_id
    Current value (from the default) = 1

angle_capture_replay_test_trace_dir
    Current value (from the default) = "traces"

    Set the trace directory. Default is traces

angle_debug_layers_enabled
    Current value (from the default) = false

    By default we enable debug layers when asserts are turned on.

angle_delegate_workers
    Current value (from the default) = true

    By default, ANGLE is using a thread pool for parallel compilation.
    Activating the delegate worker results in posting the tasks using the
    embedder API. In Chromium code base, it results in sending tasks to the
    worker thread pool.

angle_dump_pipeline_cache_graph
    Current value (from the default) = false

angle_egl_extension
    Current value (from the default) = ""

    Allow shared library custom name extensions for setting soname such as libEGL.so.1

angle_enable_abseil
    Current value (from the default) = true

    Abseil has trouble supporting MSVC, particularly regarding component builds.
    http://crbug.com/1126524

angle_enable_annotator_run_time_checks
    Current value (from the default) = false

    Adds run-time checks to filter out EVENT() messages when the debug annotator is disabled.

angle_enable_apple_translator_workarounds
    Current value (from the default) = false

angle_enable_cgl
    Current value (from the default) = false

angle_enable_cl
    Current value (from the default) = false

    Enables OpenCL support, off by default.

angle_enable_cl_compute_only_pipe
    Current value (from the default) = true

    Enable compute only queue for OpenCL Vulkan backend

angle_enable_cl_passthrough
    Current value (from the default) = false

    Enables the OpenCL pass-through back end

angle_enable_cl_testing
    Current value (from the default) = false

    Enables OpenCL testing support

angle_enable_commit_id
    Current value (from the default) = true

    Enable generating current commit information using git

angle_enable_context_mutex
    Current value (from the default) = true

angle_enable_context_mutex_recursion
    Current value (from the default) = false

    May need to enable to fix recursion when vkAcquireNextImageKHR() returns back to ANGLE from
    eglClientWaitSyncKHR(). May happen if Android Presentation Engine uses
    EGL_KHR_fence_sync instead of EGL_ANDROID_native_fence_sync for synchronization.
    To check call: adb shell "dumpsys SurfaceFlinger | grep 'Sync configuration'"
    The Android's "testDrawingHardwareBitmapNotLeaking" test may be used for testing.
    Disable this option to save performance on platforms that does not require recursion.

angle_enable_crc_for_pipeline_cache
    Current value (from the default) = true

    Enable using CRC for pipeline cache data

angle_enable_custom_vulkan_cmd_buffers
    Current value (from the default) = true

    Enable custom (cpu-side) secondary command buffers

angle_enable_custom_vulkan_outside_render_pass_cmd_buffers
    Current value (from the default) = true

angle_enable_custom_vulkan_render_pass_cmd_buffers
    Current value (from the default) = true

angle_enable_d3d11
    Current value (from the default) = false

angle_enable_d3d11_compositor_native_window
    Current value (from the default) = false

angle_enable_d3d9
    Current value (from the default) = false

angle_enable_essl
    Current value (from the default) = true

angle_enable_gl
    Current value (from the default) = true

angle_enable_gl_desktop_backend
    Current value (from the default) = true

angle_enable_gl_null
    Current value (from the default) = true

angle_enable_global_mutex_load_time_allocate
    Current value (from the default) = false

angle_enable_global_mutex_recursion
    Current value (from the default) = false

angle_enable_glsl
    Current value (from the default) = true

angle_enable_hlsl
    Current value (from the default) = false

    Translator backend support:

angle_enable_memory_alloc_logging
    Current value (from the default) = false

    Memory allocation logging support. This feature is for debugging only.
    Disabled by default.

angle_enable_metal
    Current value (from the default) = false

    http://anglebug.com/40096506

angle_enable_null
    Current value (from the default) = false

    Disable null backend to save space for official build.

angle_enable_overlay
    Current value (from the default) = false

    Enable overlay by default when debug layers are enabled.  This is currently only implemented on
    Vulkan.

angle_enable_perf_counter_output
    Current value (from the default) = false

    Disable performance counter output by default

angle_enable_platform_trace_events
    Current value (from the default) = true

angle_enable_renderdoc
    Current value (from the default) = false

angle_enable_share_context_lock
    Current value (from the default) = false

angle_enable_swiftshader
    Current value (from the default) = true

    Currently SwiftShader's Vulkan front-end doesn't build on Android.
    Disabled by default on MSVC because of compiler warnings/errors.

angle_enable_trace
    Current value (from the default) = false

angle_enable_trace_android_logcat
    Current value (from the default) = false

angle_enable_trace_events
    Current value (from the default) = false

angle_enable_tracegz
    Current value (from the default) = false

angle_enable_unwind_backtrace_support
    Current value (from the default) = false

    Unwind backtrace support. This feature is currently only implemented
    on Android for debugging purposes. Disabled by default.

angle_enable_vulkan
    Current value (from the default) = true

angle_enable_vulkan_api_dump_layer
    Current value (from the default) = false

angle_enable_vulkan_gpu_trace_events
    Current value (from the default) = false

    Enable Vulkan GPU trace event capability

angle_enable_vulkan_system_info
    Current value (from the default) = false

    Enable using Vulkan to collect system info as a fallback.

angle_enable_vulkan_validation_layers
    Current value (from the default) = false

angle_enable_wgpu
    Current value (from the default) = false

angle_expose_non_conformant_extensions_and_versions
    Current value (from the default) = false

    Enables non-conformant extensions and features

angle_extract_native_libs
    Current value (from the default) = false

    Extract native libs in ANGLE apk. Useful for flamegraph generation.

angle_force_context_check_every_call
    Current value (from the default) = false

    Optional feature that forces dirty state whenever we use a new context regardless of thread.

angle_glesv2_extension
    Current value (from the default) = ""

angle_has_astc_encoder
    Current value (from the default) = false

    ASTC emulation is only built on standalone non-android builds

angle_has_frame_capture
    Current value (from the default) = true

    Frame capture code is enabled by default if rapidjson is available.

angle_has_histograms
    Current value = false
    Overridden from the default = true

angle_has_rapidjson
    Current value (from the default) = true

    Indicate if the rapidJSON library is available to build with in third_party/.

angle_is_msvc
    Current value (from the default) = false

angle_is_winappsdk
    Current value (from the default) = false

angle_is_winuwp
    Current value (from the default) = false

    There's no "is_winuwp" helper in BUILDCONFIG.gn, so we define one ourselves
    Windows App SDK is almost UWP but for Win32, so we want all the same things

angle_libs_suffix
    Current value (from the default) = ""

angle_link_glx
    Current value (from the default) = false

    Link in system libGL, to work with apitrace.  See doc/DebuggingTips.md.

angle_lunarg_vulkantools_dir
    Current value (from the default) = "//third_party/angle/third_party/lunarg-vulkantools/src"

angle_restricted_traces
    Current value (from the default) = []

angle_shared_libvulkan
    Current value (from the default) = true

    Vulkan loader is statically linked on Mac. http://anglebug.com/40096682

angle_standalone
    Current value (from the default) = false

    True if we are building inside an ANGLE checkout.

angle_standalone_benchmark
    Current value (from the default) = false

angle_standalone_benchmark_goldens_dir
    Current value (from the default) = ""

    Benchmark mode golden default directory

angle_standalone_benchmark_traces
    Current value (from the default) = []

    List of traces for benchmark mode

angle_test_enable_system_egl
    Current value (from the default) = false

angle_trace_events_ignore_timestamp
    Current value (from the default) = false

    Android platform's addTraceEvent ignores the timestamp and time() is a relatively heavy call.

angle_use_custom_libvulkan
    Current value (from the default) = true

angle_use_gbm
    Current value (from the default) = false

angle_use_vulkan_display
    Current value (from the default) = true

angle_use_vulkan_null_display
    Current value (from the default) = false

    When set to true, ANGLE will not use VK_KHR_surface and VK_KHR_swapchain
    extensions. Content can be rendered only off-screen.

angle_use_wayland
    Current value (from the default) = true

angle_use_x11
    Current value (from the default) = true

angle_vulkan_display_mode
    Current value (from the default) = "simple"

    Display mode for ANGLE vulkan display, could be 'simple' or 'headless', default is 'simple'.

angle_vulkan_headers_dir
    Current value = "//third_party/vulkan-headers/src"
    Overridden from the default = "//third_party/angle/third_party/vulkan-headers/src"

angle_vulkan_loader_dir
    Current value = "//third_party/vulkan-loader/src"
    Overridden from the default = "//third_party/angle/third_party/vulkan-loader/src"

angle_vulkan_tools_dir
    Current value = "//third_party/vulkan-tools/src"
    Overridden from the default = "//third_party/angle/third_party/vulkan-tools/src"

angle_vulkan_validation_layers_dir
    Current value = "//third_party/vulkan-validation-layers/src"
    Overridden from the default = "//third_party/angle/third_party/vulkan-validation-layers/src"

angle_wayland_dir
    Current value (from the default) = "//third_party/angle/third_party/wayland"

    Directory where to find wayland source files

angle_with_capture_by_default
    Current value (from the default) = false

    Defaults to capture building to $root_out_dir/angle_libs/with_capture.
    Switch on to build capture to $root_out_dir.

apm_debug_dump
    Current value (from the default) = false

    Selects whether debug dumps for the audio processing module
    should be generated.

apple_mobile_app_bundle_id_suffix
    Current value (from the default) = ".dev"

    Suffix for CFBundleIdentifier property of iOS Chrome signed bundles
    (main bundle and extensions). Code signing will fail if no mobile
    provisioning for the selected code signing identify support that suffix.
    For extension, the suffix will be added before the extension identifier.
    The suffix is not added to test applications.
    No dot is added before the suffix, so add one if needed.

archive_seed_corpus
    Current value (from the default) = true

    When true, seed corpora archives are built.

assert_cpp20
    Current value (from the default) = true

    Assert that PartitionAlloc and MiraclePtr run on C++20 when set to true.
    Embedders may opt-out of using C++ 20 build.

auto_profile_path
    Current value (from the default) = ""

    AFDO (Automatic Feedback Directed Optimizer) is a form of profile-guided
    optimization that GCC supports. It used by ChromeOS in their official
    builds. To use it, set auto_profile_path to the path to a file containing
    the needed gcov profiling data.

backup_ref_ptr_extra_oob_checks
    Current value (from the default) = false

backup_ref_ptr_poison_oob_ptr
    Current value (from the default) = false

blink_animation_use_time_delta
    Current value (from the default) = false

    Use base::TimeDelta to represent time in renderer/core/animations. See
    http://crbug.com/737867

blink_enable_generated_code_formatting
    Current value (from the default) = false

    Format the generated files to improve the code readability.  Apply clang-
    format, gn format, etc. to the generated files if possible.

blink_gc_plugin
    Current value (from the default) = true

    Set to true to enable the clang plugin that checks the usage of the  Blink
    garbage-collection infrastructure during compilation.

blink_gc_plugin_option_do_dump_graph
    Current value (from the default) = false

    Set to true to have the clang Blink GC plugin emit class graph (in JSON)
    with typed pointer edges; for debugging or other (internal) uses.

blink_heap_inside_shared_library
    Current value = true
    Overridden from the default = false

    Whether the blink heap code is compiled into a shared library.
    Embedders like CEF use this flag to include blink in a shared library under
    non-component build.

blink_symbol_level
    Current value (from the default) = -1

    How many symbols to include in the build of blink. 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 medium symbols, usually enough for backtraces only. Symbols with
    internal linkage (static functions or those in anonymous namespaces) may not
    appear when using this level. On some platforms (including Windows)
    filenames and line numbers will be included. Information about types and
    locals is not included.
      0 means minimal symbols, which on some platforms (including Windows) may
    include function names suitable for backtraces.
      -1 means auto-set according to debug/release and platform.

branding_file_path
    Current value (from the default) = "//chrome/app/theme/chromium/BRANDING"

    The path to the BRANDING file in chrome/app/theme.

branding_path_component
    Current value (from the default) = "chromium"

branding_path_product
    Current value (from the default) = "chromium"

build_allocation_stack_trace_recorder
    Current value (from the default) = false

    Whether to compile support for Allocation Stack Trace Recorder.
   
    The recorder is initially intended as a support tool for Arm's
    Memory Tagging Extensions. A history of the most recent allocations and
    frees is included in the crashpad report and gives developers information
    where the memory which was invalidly accessed was allocated or freed.
   
    Although it should work on other platforms as well, for the above reasons,
    we currently enable it only for Android when compiling for Arm64.

build_allocation_trace_recorder_full_reporting
    Current value (from the default) = false

    If enabled, the recorder gathers some additional information, i.e. number of
    collisions of slots, and prints these periodically.
   
    Since this might impact performance negatively, it's disabled by default.
    Even if it's disabled we still collect some data, i.e. total number of
    allocations. All other data will be set to a default value.

build_angle_deqp_tests
    Current value (from the default) = false

    Don't build dEQP by default.

build_angle_end2end_tests_aosp
    Current value (from the default) = false

build_angle_gles1_conform_tests
    Current value (from the default) = false

build_angle_perftests
    Current value (from the default) = true

build_angle_trace_perf_tests
    Current value (from the default) = false

build_angle_trace_tests
    Current value (from the default) = false

build_contextual_search
    Current value (from the default) = false

build_dawn_tests
    Current value (from the default) = true

    Should Dawn test binaries (unittests, end2end_tests, perf_tests) be built?
    Independent of use_dawn, which controls whether Dawn is used in Chromium.

build_libsrtp_tests
    Current value (from the default) = false

    Tests may not be appropriate for some build environments, e.g. Windows.
    Rather than enumerate valid options, we just let clients ask for them.

build_mojo_proxy
    Current value (from the default) = true

    Build Mojo Proxy binary, to be used as a IPCZ <=> Mojo Core translation layer.

build_tflite_with_nnapi
    Current value (from the default) = false

    This enables building TFLite's NNAPI delegate, currently experimental.

build_tflite_with_opencl
    Current value (from the default) = true

    This enables building TFLite's GPU delegate with OpenCL, currently
    experimental.

build_tflite_with_ruy
    Current value (from the default) = true

    Turns on TFLITE_WITH_RUY, using ruy as the gemm backend instead of gemmlowp.

build_tflite_with_xnnpack
    Current value (from the default) = true

    This enables building TFLite with XNNPACK.

build_with_internal_optimization_guide
    Current value (from the default) = false

    When TFLite works for windows arm64, this lib should just work seamlessly.
    Use is_chrome_branded as a proxy for "does src-internal exist".

build_with_mediapipe_lib
    Current value (from the default) = false

    This should only be changed in a local args.gn file for now. This library is
    not ready to be built into Chromium yet.
   
    MediaPipe support is under development, but should work on Linux and Windows
    Intel chips.

build_with_model_execution
    Current value (from the default) = true

    Model execution is not built on fuchsia.
    TODO: crbug.com/393434571 - Clarify the boundary / strategy here.

build_with_mozilla
    Current value (from the default) = false

    Enable to use the Mozilla internal settings.

build_with_tflite_lib
    Current value (from the default) = true

    This enables build with TFLite library.
    TODO(b/269198471): Make sure the internal archive files for opt guide get
      updated when win arm64 gets added as a supported platform for TFLite.

bundle_widevine_cdm
    Current value (from the default) = false

    Widevine CDM is bundled as part of Google Chrome and
    Google Chrome for Testing builds.

cast_streaming_enable_remoting
    Current value (from the default) = false

    Whether the cast remoting feature should be enabled in this build.

cc_wrapper
    Current value (from the default) = ""

    Set to "ccache", "sccache", "icecc" or "distcc".

cef_api_version
    Current value (from the default) = ""

    Optionally configure the CEF API version. This impacts wrapper-side only.

cef_use_gtk
    Current value (from the default) = false

    The cefclient target depends on GTK packages that are not available in the
    default sysroot environment. So we should only use them when we are not
    using the sysroot. Alternatively, the developer might not want to use the
    GTK dependencies at all, in which case they can set `cef_use_gtk=false`.

channel_name_header_name
    Current value (from the default) = ""

chrome_enable_logging_by_default
    Current value (from the default) = true

    Enables the build to have logging enabled by default.
    This is intended for use only in developer builds.

chrome_pgo_phase
    Current value = 0
    Overridden from the default = 2

chrome_root_store_cert_management_ui
    Current value (from the default) = true

chrome_root_store_only
    Current value (from the default) = true

    Platforms for which certificate verification can only be performed using
    the builtin cert verifier with the Chrome Root Store.

chrome_root_store_optional
    Current value (from the default) = false

    Platforms for which certificate verification can be performed either using
    the builtin cert verifier with the Chrome Root Store, or with the platform
    verifier.
   
    Currently this is used only for Android because WebView does not use the
    builtin cert verifier, but uses the Android cert verifier.

chrome_root_store_supported
    Current value (from the default) = true

chrome_wide_echo_cancellation_supported
    Current value (from the default) = true

    Currently it is available on Win, Mac and Linux, since it requires the audio
    service to run in a separate process.

chromedriver_disclaim_responsibility
    Current value (from the default) = true

    Make macOS request permissions for the chrome binary instead of its parent
    process (usually the Terminmal.app).
    This is required for running chrome tests on Google's CI machines, but for
    some vendor builds like Microsoft Teams they need to turn this off.

chromeos_afdo_platform
    Current value (from the default) = "atom"

    This configuration is used to select a default profile in Chrome OS based on
    the microarchitectures we are using. This is only used if
    clang_use_default_sample_profile is true and clang_sample_profile_path is
    empty.

chromeos_is_browser_only
    Current value (from the default) = false

clang_base_path
    Current value (from the default) = "//third_party/llvm-build/Release+Asserts"

clang_diagnostic_dir
    Current value (from the default) = "../../tools/clang/crashreports"

clang_embed_bitcode
    Current value (from the default) = false

    Specifies whether or not bitcode should be embedded during compilation.
    This is used for creating a MLGO corpus from Chromium in the non-ThinLTO case.

clang_emit_debug_info_for_profiling
    Current value (from the default) = false

    Emit debug information for profiling wile building with clang.
    Only enable this for ChromeOS official builds for AFDO.

clang_sample_profile_path
    Current value (from the default) = ""

    Path to an AFDO profile to use while building with clang, if any. Empty
    implies none.

clang_unsafe_buffers_paths
    Current value = "//build/config/unsafe_buffers_paths.txt"
    Overridden from the default = ""

    Unsafe buffers. Location of file used by plugins to track portions of
    the codebase which have been made manifestly safe.

clang_use_chrome_plugins
    Current value = false
    Overridden from the default = true

clang_use_default_sample_profile
    Current value (from the default) = false

clang_use_raw_ptr_plugin
    Current value (from the default) = false

    Use this instead of clang_use_chrome_plugins to enable just the raw-ptr-plugin.

clang_version
    Current value (from the default) = "21"

clang_warning_suppression_file
    Current value = "//build/config/warning_suppression.txt"
    Overridden from the default = ""

com_init_check_hook_disabled
    Current value (from the default) = false

    Set to true to disable COM init check hooks.

compile_credentials
    Current value (from the default) = true

compile_suid_client
    Current value (from the default) = true

compile_syscall_broker
    Current value (from the default) = true

compiler_timing
    Current value (from the default) = false

    Turn this on to have the compiler output extra timing information.

compute_build_timestamp
    Current value (from the default) = "compute_build_timestamp.py"

    This should be the filename of a script that prints a single line
    containing an integer that's a unix timestamp in UTC.
    This timestamp is used as build time and will be compiled into
    other code.
   
    This argument may look unused. Before removing please check with the
    chromecast team to see if they still use it internally.

compute_inputs_for_analyze
    Current value (from the default) = false

    Enable this flag when running "gn analyze".
   
    This causes some gn actions to compute inputs immediately (via exec_script)
    where they would normally compute them only when executed (and write them to
    a depfile).
   
    This flag will slow down GN, but is required for analyze to work properly.

concurrent_links
    Current value (from the default) = -1

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

content_enable_legacy_ipc
    Current value (from the default) = false

    We allow legacy IPC to be enabled for Pepper usage.

content_shell_major_version
    Current value (from the default) = "999"

content_shell_product_name
    Current value (from the default) = "Content Shell"

content_shell_version
    Current value (from the default) = "999.77.34.5"

copyright_header_name
    Current value (from the default) = ""

coverage_instrumentation_input_file
    Current value (from the default) = ""

    The path to the coverage instrumentation input file should be a source root
    absolute path (e.g. //out/Release/coverage_instrumentation_input.txt), and
    the file consists of multiple lines where each line represents a path to a
    source file, and the paths must be relative to the root build directory.
    e.g. ../../base/task/post_task.cc for build directory 'out/Release'.
   
    NOTE that this arg will be non-op if use_clang_coverage is false.

cppgc_allow_allocations_in_prefinalizers
    Current value (from the default) = false

    Enable allocations during prefinalizer invocations.

cppgc_enable_api_checks
    Current value (from the default) = false

    Enables certain checks on API level functionality.

cppgc_enable_caged_heap
    Current value (from the default) = true

cppgc_enable_larger_cage
    Current value (from the default) = true

    Enable support for larger cages, up to 16GB.
    iOS cannot mmap above 8GB, so use the smaller cage.

cppgc_enable_object_names
    Current value (from the default) = false

    Enable object names in cppgc for profiling purposes.

cppgc_enable_pointer_compression
    Current value (from the default) = false

    Enable pointer compression in cppgc.

cppgc_enable_slim_write_barrier
    Current value (from the default) = true

    Enables a slim write barrier that only performs a single check in the fast
    path and delegates all further checks to a slow path call. This is fast
    in a setting with few slow-path checks, i.e., with disabled young generation
    GC.

cppgc_enable_slow_api_checks
    Current value (from the default) = false

    Enable slow checks on API level functionality.

cppgc_enable_verify_heap
    Current value (from the default) = ""

    Enables additional heap verification phases and checks.

cppgc_enable_young_generation
    Current value (from the default) = false

    Enable young generation in cppgc.

cppgc_is_standalone
    Current value (from the default) = false

crashpad_dependencies
    Current value = "chromium"
    Overridden from the default = "standalone"

    Determines various flavors of build configuration, and which concrete
    targets to use for dependencies. Valid values are "standalone", "chromium",
    "fuchsia", "dart" or "external".

crashpad_http_transport_impl
    Current value (from the default) = "libcurl"

crashpad_use_boringssl_for_http_transport_socket
    Current value (from the default) = true

cros_board
    Current value (from the default) = ""

    This is used only by Simple Chrome to bind its value to test-runner scripts
    generated at build-time.

cros_needs_rewrapper_path_arg
    Current value (from the default) = true

    Whether or not the toolchain used to build for ChromeOS needs
    --rewrapper-path and --rewrapper-cfg arguments.
    TODO(crbug.com/356466829): Remove this once we no longer use
    ChromeOS's toolchain.

cros_sdk_version
    Current value (from the default) = ""

    Similar to cros_board above, this used only by test-runner scripts in
    Simple Chrome.

current_cpu
    Current value (from the default) = ""
      (Internally set; try `gn help current_cpu`.)

current_os
    Current value (from the default) = ""
      (Internally set; try `gn help current_os`.)

custom_toolchain
    Current value (from the default) = ""

    Allows the path to a custom target toolchain to be injected as a single
    argument, and set as the default toolchain.

custom_vulkan_loader_library_name
    Current value (from the default) = ""

dawn_always_assert
    Current value (from the default) = false

    Enable Dawn's ASSERTs even in release builds

dawn_build_node_bindings
    Current value (from the default) = false

    Whether to build Dawn's NodeJS bindings

dawn_complete_static_libs
    Current value (from the default) = false

    Should the Dawn static libraries be fully linked vs. GN's default of
    treating them as source sets. This is useful for people using Dawn
    standalone to produce static libraries to use in their projects.

dawn_enable_d3d11
    Current value (from the default) = false

    Enables the compilation of Dawn's D3D11 backend

dawn_enable_d3d12
    Current value (from the default) = false

    Enables the compilation of Dawn's D3D12 backend

dawn_enable_desktop_gl
    Current value (from the default) = true

    Enables the compilation of Dawn's OpenGL backend
    (best effort, non-conformant)

dawn_enable_error_injection
    Current value (from the default) = false

dawn_enable_metal
    Current value (from the default) = false

    Enables the compilation of Dawn's Metal backend

dawn_enable_null
    Current value (from the default) = true

    Enables the compilation of Dawn's Null backend
    (required for unittests, obviously non-conformant)

dawn_enable_opengles
    Current value (from the default) = true

dawn_enable_spirv_validation
    Current value (from the default) = true

    Disable SPIR-V validation on Android because it adds a significant amount
    to the binary size, and Tint's output should be well-formed.

dawn_enable_vulkan
    Current value (from the default) = true

    Enables the compilation of Dawn's Vulkan backend
    Disables vulkan when compiling for UWP, since UWP only supports d3d

dawn_enable_vulkan_loader
    Current value (from the default) = true

dawn_enable_vulkan_validation_layers
    Current value (from the default) = true

dawn_enable_webgpu_on_webgpu
    Current value (from the default) = false

    Enables the compilation of Dawn's WebGPU backend
    (used for debugging purpose, capture and replay)

dawn_tests_use_angle
    Current value (from the default) = true

dawn_use_built_dxc
    Current value (from the default) = false

    Whether we allow building DXC.
    DXC requires SM6.0+ which is blocklisted on x86.
    See crbug.com/tint/1753.

dawn_use_swiftshader
    Current value (from the default) = true

    Enables SwiftShader as the fallback adapter. Requires dawn_swiftshader_dir
    to be set to take effect.
    TODO(dawn:1536): Enable SwiftShader for Android.

dcheck_always_on
    Current value (from the default) = false

dcheck_is_configurable
    Current value (from the default) = false

    Enables DCHECKs to be built-in, but to default to being non-fatal/log-only.
    DCHECKS can then be set as fatal/non-fatal via the "DcheckIsFatal" feature.
    See https://bit.ly/dcheck-albatross for details on how this is used.

devtools_components_visibility
    Current value (from the default) = ["*"]

devtools_dcheck_always_on
    Current value (from the default) = false

devtools_entrypoints_visibility
    Current value (from the default) = ["*"]

devtools_fast_bundle
    Current value (from the default) = false

    If this is enabled, devtools build uses esbuild instead of rollup.js to
    bundle JavaScript files.

devtools_grd_location
    Current value (from the default) = "third_party/devtools-frontend/src/front_end/devtools_resources.grd"

devtools_lit_visibility
    Current value (from the default) = ["*"]

devtools_location
    Current value (from the default) = "third_party/devtools-frontend/src/"

devtools_models_visibility
    Current value (from the default) = ["*"]

devtools_panels_visibility
    Current value (from the default) = ["*"]

devtools_release_sourcemaps
    Current value (from the default) = false

    If this is enabled, we will emit source maps for the entrypoint bundles.
    Since we only bundle release builds, this flag can't be used with
    is_debug = true.
    Note that this flag works regardless of the devtools_skip_typecheck or
    devtools_fast_bundle GN arg. Both rollup.js or ESBuild will emit source
    maps if this flag is set.

devtools_root_location
    Current value (from the default) = "third_party/devtools-frontend/src"

    devtools_location is used in DevTools to resolve to the correct location
    for any script/file referenced in the DevTools build scripts. Since
    DevTools supports both a standalone build and build integration with
    Chromium, we need to differentiate between the two versions.
    devtools_location points to the Chromium version in both Chrome-branded
    and not Chrome-branded builds. devtools_root_location points to the root
    of the Chrome-branded version when is_chrome_branded is true and to the root
    of the Chromium version when is_chrome_branded is false.
    devtools_grd_location is the location of the GRD file listing all DevTools
    resources.

devtools_skip_typecheck
    Current value (from the default) = false

devtools_third_party_visibility
    Current value (from the default) = ["*"]

devtools_ui_legacy_visibility
    Current value (from the default) = ["*"]

devtools_visibility
    Current value = ["*"]
    Overridden from the default = []

disable_brotli_filter
    Current value (from the default) = false

    Do not disable brotli filter by default.

disable_fieldtrial_testing_config
    Current value = true
    Overridden from the default = false

    Set to true make a build that disables activation of field trial tests
    specified in testing/variations/fieldtrial_testing_config.json.
    Note: For Chrome-branded Android builds, this is always considered as set to
    true (see below). This is done to avoid the binary size impact (~40 KiB) on
    Android.

disable_file_support
    Current value (from the default) = false

    Disables support for file URLs.  File URL support requires use of icu.
    Cronet does not support file URLs.

disable_histogram_support
    Current value = true
    Overridden from the default = false

    If set to true, this will remove histogram manager to reduce binary size.

disable_libfuzzer
    Current value (from the default) = false

    Helper variable for testing builds with disabled libfuzzer.
    Not for client use.

disable_zstd_filter
    Current value (from the default) = false

    Do not disable zstd filter by default.
    TODO: https://crbug.com/40282397 - Consider dropping once Cronet default enables zstd.

enable_accessibility_service
    Current value (from the default) = false

    Used to enable the Accessibility Service. Override this in
    gn args on supported platforms (see below).

enable_accessibility_service_internal
    Current value (from the default) = false

enable_allocator_shim_partition_alloc_dispatch_with_advanced_checks_support
    Current value (from the default) = false

enable_android_site_isolation
    Current value (from the default) = false

enable_arcore
    Current value (from the default) = false

enable_av1_decoder
    Current value (from the default) = true

    If overriding this to false, possibly via its component values,
    `enable_libaom` should likely also be overriddent to false.

enable_background_contents
    Current value (from the default) = true

    Enables support for background apps.

enable_background_mode
    Current value = false
    Overridden from the default = true

enable_backup_ref_ptr_feature_flag
    Current value (from the default) = false

enable_backup_ref_ptr_instance_tracer
    Current value (from the default) = false

enable_backup_ref_ptr_slow_checks
    Current value (from the default) = false

enable_backup_ref_ptr_support
    Current value = false
    Overridden from the default = true

enable_base_tracing
    Current value (from the default) = true

    Tracing support requires //third_party/perfetto, which is not available in
    libchrome (CrOS's version of //base). This flag can disable tracing support
    altogether, in which case all tracing instrumentation in //base becomes a
    no-op.
    TODO(crbug.com/40124378): Add dependency on perfetto to support typed events.

enable_basic_print_dialog
    Current value (from the default) = true

    Enables the printing system dialog for platforms that support printing
    and have a system dialog.

enable_blink_bindings_tracing
    Current value (from the default) = false

    Enable TRACE_EVENT instrumentation for Blink bindings.
    Disabled by default as it increases binary size.

enable_bound_session_credentials
    Current value (from the default) = true

    Compile time flag for Bound Session Credentials.

enable_bracketed_proxy_uris
    Current value (from the default) = false

    Bracketed URIs parsing is only available for debug builds.
    TODO(crbug.com/365771838): Ensure tests are updated if needed if this
    feature is changed at all.

enable_browser_speech_service
    Current value (from the default) = true

    Whether the speech service is implemented in the browser as a hosted service
    possibly running in a utility process.
   
    On other platforms, that service is either
    * implemented some other way (e.g. ChromeOS, where ML Service provides the
      implementation); or
    * not implemented, and corresponding features don't exist as part of Chrome
      (e.g. Android, where Live Caption is instead a system feature).

enable_call_graph_profile_sort
    Current value (from the default) = false

enable_callgrind
    Current value (from the default) = false

    Enable callgrind for performance profiling

enable_captive_portal_detection
    Current value (from the default) = true

enable_cardboard
    Current value (from the default) = false

enable_caspian
    Current value (from the default) = false

enable_cast_audio_renderer
    Current value (from the default) = false

    True to enable the cast audio renderer.
   
    TODO(crbug.com/1293520): Remove this buildflag.

enable_cast_receiver
    Current value (from the default) = false

    Set this true for a Chromecast build. Chromecast builds are supported on
    Linux, Android, ChromeOS, and Fuchsia.

enable_cast_renderer
    Current value (from the default) = false

enable_cdm_host_verification
    Current value (from the default) = false

enable_cdm_storage_id
    Current value (from the default) = false

    Enable Storage ID which is used by CDMs. This is only available with chrome
    branding, but may be overridden by other embedders.

enable_cef
    Current value (from the default) = true

enable_cet_shadow_stack
    Current value (from the default) = true

    Mark binaries as compatible with Shadow Stack of Control-flow Enforcement
    Technology (CET). If Windows version and hardware supports the feature and
    it's enabled by OS then additional validation of return address will be
    performed as mitigation against Return-oriented programming (ROP).
    https://chromium.googlesource.com/chromium/src/+/main/docs/design/sandbox.md#cet-shadow-stack

enable_check_raw_ptr_fields
    Current value (from the default) = false

enable_check_raw_ref_fields
    Current value (from the default) = false

enable_chrome_notifications
    Current value (from the default) = true

    Enables usage of notifications via Chrome's MessageCenter.

enable_chromium_prelude
    Current value (from the default) = true

    The chromium prelude crate provides the `chromium::import!` macro which
    is needed to depend on first-party rust libraries. Third-party libraries
    are specified with cargo_crate and do not get imported through this macro.
   
    The macro requires //third_party/rust for syn, quote, and proc_macro2.
    Downstream projects that want to use //build for the rust GN templates but
    don't want to enable the chromium prelude can disable it here, and should
    specify a globally unique `crate_name` in their rust library GN rules
    instead. Note that using a `crate_name` is strongly discouraged inside
    Chromium, and is also discouraged for downstream projects when possible.
   
    We do not support disabling this flag in Chromium code.

enable_chromoting_crashpad
    Current value (from the default) = true

enable_click_to_call
    Current value (from the default) = true

    TODO(crbug.com/41481724): Remove this flag and corresponding build
    conditions.
    Disable Click to Call on Fuchsia.

enable_compose
    Current value (from the default) = true

    Whether Compose is enabled in the build.

enable_compute_pressure
    Current value (from the default) = true

enable_concurrent_basic_print_dialogs
    Current value (from the default) = true

enable_constraints
    Current value (from the default) = true

    Constraint code is disabled on platforms where the on-device model does not
    run due to binary size.

enable_cros_libassistant
    Current value (from the default) = false

    Enable assistant implementation based on libassistant.
    TODO(crbug.com/388361414): delete related code.

enable_cros_media_app
    Current value (from the default) = false

    Whether to enable the "real" ChromeOS Media App. When false, a mock app is
    bundled for testing integration points.

enable_dangling_raw_ptr_checks
    Current value (from the default) = false

enable_dangling_raw_ptr_feature_flag
    Current value (from the default) = false

    Enable the feature flag required to check for dangling pointers. That is to
    say `PartitionAllocDanglingPtr`.
   
    This is meant to be modified primarily on bots. It is much easier to
    override the feature flags using a binary flag instead of updating multiple
    bots's scripts to pass command line arguments.
   
    TODO(328104161): Remove this flag.

enable_dav1d_decoder
    Current value (from the default) = true

enable_desktop_android_extensions
    Current value (from the default) = false

    `enable_desktop_android_extensions` is an experimental flag used in
    prototypes of desktop-focused android-powered builds. This is very much
    in-development, non-stable, and likely to crash at any given moment.
   
    Introducing a separate flag like this has the unfortunate effect of leading
    to a lot of `if BUILDFLAG(ENABLE_EXTENSIONS)` checks in extensions code
    itself, since those checks are instead the equivalent of
    `if BUILDFLAG(ENABLE_FULL_EXTENSIONS_SYSTEM)`. However, we don't want to
    change the stable, production-utilized `enable_extensions` flag for this
    experimental build.
   
    As the experimental build progresses, there should be fewer of those
    checks littered around the extensions codebase, since more and more of
    the extensions code will be included in the desktop android variant.
   
    TODO(https://crbug.com/356905053): Continue expanding the scope of
    enable_desktop_android_extensions.

enable_device_bound_sessions
    Current value (from the default) = true

    DBSC is only supported on Windows, Linux and Mac for now.

enable_discovery
    Current value (from the default) = false

enable_downgrade_processing
    Current value = false
    Overridden from the default = true

enable_downstream_media_tests
    Current value (from the default) = false

    Many of the targets defined in this file have dependencies that cannot be
    satisfied without additional downstream resources. Explicitly guard them
    them behind this flag so that we do not attempt to build or isolate targets
    in public chromium checkouts.

enable_dsyms
    Current value (from the default) = true

    Produce dSYM files for targets that are configured to do so. dSYM
    generation is controlled globally as it is a linker output (produced via
    the //build/toolchain/apple/linker_driver.py. Enabling this will result in
    all shared library, loadable module, and executable targets having a dSYM
    generated.

enable_enterprise_companion
    Current value (from the default) = true

enable_expensive_dchecks
    Current value (from the default) = false

enable_extensions
    Current value (from the default) = true

    `enable_extensions` controls whether the full and stable extensions platform
    is compiled.

enable_extensions_core
    Current value (from the default) = true

enable_extractors
    Current value (from the default) = true

    Whether the file_util service supports .TAR.XZ and .TAR file extraction.
    Currently only used by imageWriterPrivate extension API, so only enabled
    when Extensions are enabled.

enable_fake_assistant_microphone
    Current value (from the default) = false

    Enable a fake microphone, which can replay audio files as microphone input.
    See chromeos/ash/components/assistant/tools/send-audio.sh

enable_ffmpeg_video_decoders
    Current value (from the default) = true

enable_freetype
    Current value (from the default) = true

    Use FreeType for font rendering. If this is set to false, FreeType is
    replaced with the Rust-based Fontations set of libraries plus Skia
    path rendering.

enable_full_stack_frames_for_profiling
    Current value (from the default) = false

    Compile in such a way as to make it possible for the profiler to unwind full
    stack frames. Setting this flag has a large effect on the performance of the
    generated code than just setting profiling, but gives the profiler more
    information to analyze.
    Requires profiling to be set to true.

enable_fuzztest_fuzz
    Current value (from the default) = false

enable_glic
    Current value (from the default) = true

    Enables inclusion of glic in the build.

enable_glic_internal_resources
    Current value (from the default) = true

enable_gpu_channel_media_capture
    Current value (from the default) = true

enable_gpu_client_logging
    Current value (from the default) = false

    Enable GPU client logging without DCHECK being on.

enable_gpu_service_logging
    Current value (from the default) = false

    Whether service side logging (actual calls into the GL driver) is enabled
    or not.

enable_guest_contents
    Current value (from the default) = true

    `enable_guest_contents` controls whether the guest_contents is compiled.

enable_guest_view
    Current value (from the default) = true

    `enable_guest_view` controls whether the guest_view is compiled.
    If `enable_extensions` in //extensions/buildflags/buildflags.gni is
    set this must be enabled.

enable_gwp_asan
    Current value (from the default) = true

    Convenience definition

enable_gwp_asan_malloc
    Current value (from the default) = false

    Is GWP-ASan malloc/PartitionAlloc hooking enabled for chrome/ on a given
    platform.

enable_gwp_asan_partitionalloc
    Current value (from the default) = true

enable_hangout_services_extension
    Current value (from the default) = false

    Hangout services is an extension that adds extra features to Hangouts.
    It is enableable separately to facilitate testing.

enable_hevc_parser_and_hw_decoder
    Current value (from the default) = true

enable_hidpi
    Current value (from the default) = true

enable_hls_demuxer
    Current value (from the default) = true

    Enable HLS manifest parser and demuxer.

enable_ink
    Current value (from the default) = false

    Enable ink libraries provided by the ChromeOS media app dependency.
   
    This argument indicates whether the ink libraries provided by the ChromeOS
    media app dependency is enabled. It also determines whether the annotation
    feature is enabled for the PDF Viewer on Chrome OS.

enable_ios_corruption_hardening
    Current value (from the default) = false

    This is a flag for binary experiment on iOS. When BRP for iOS is enabled,
    we see some un-actionable `DoubleFreeOrCorruptionDetected` crashes.
    This flag enables some extra `CHECK`s to get actionable crash reports.
    TODO(crbug.com/371135823): Remove upon completion of investigation.

enable_ipc_fuzzer
    Current value (from the default) = false

    Build IPC fuzzer by default if it's a supported configuration. For
    sanitizer builds, this needs to be enabled explicitly as they can be slow
    (especially MSan).

enable_ipc_logging
    Current value (from the default) = false

    Enabling debug builds automatically sets enable_ipc_logging to true.

enable_iterator_debugging
    Current value (from the default) = false

    When set, enables libc++ debug mode with iterator debugging.
   
    Iterator debugging is generally useful for catching bugs. But it can
    introduce extra locking to check the state of an iterator against the state
    of the current object. For iterator- and thread-heavy code, this can
    significantly slow execution - two orders of magnitude slowdown has been
    seen (crbug.com/903553) and iterator debugging also slows builds by making
    generation of snapshot_blob.bin take ~40-60 s longer. Therefore this
    defaults to off.

enable_javaless_renderers
    Current value (from the default) = false

enable_jni_multiplexing
    Current value (from the default) = true

enable_js_protobuf
    Current value (from the default) = true

    Allows subprojects to omit javascript dependencies (e.g.) closure_compiler
    and google-closure-library.

enable_kythe_annotations
    Current value (from the default) = false

    Enables Kythe annotations necessary to build cross references.

enable_lens_desktop
    Current value (from the default) = true

    Includes Lens features in the build. toolkit_views is used to ensure Lens
    features are only included on Desktop devices running Chromium

enable_lens_desktop_google_branded_features
    Current value (from the default) = false

enable_libaom
    Current value (from the default) = true

    Enable encoding and decoding AV1 video files.

enable_library_cdms
    Current value (from the default) = true

    Enables the use of library CDMs that implements the interface defined at
    media/cdm/api/content_decryption_module.h. If true, the actually library CDM
    will be hosted in the mojo CDM service running in the CDM (utility) process.
    Used for all desktop platforms.

enable_linux_installer
    Current value = false
    Overridden from the default = true

enable_logging_override
    Current value (from the default) = false

    Enable logging override, e.g. enable DVLOGs through level 2 at build time.
    On Cast devices, these are logged as INFO.
    When enabled on Fuchsia, these are logged as VLOGs.

enable_mdns
    Current value (from the default) = true

    Multicast DNS.

enable_media_control_logging_override
    Current value (from the default) = false

enable_media_drm_storage
    Current value (from the default) = false

    Enable browser managed persistent metadata storage for EME persistent
    session and persistent usage record session.

enable_media_foundation_widevine_cdm
    Current value (from the default) = false

enable_media_remoting
    Current value (from the default) = true

    This switch defines whether the Media Remoting implementation will be built.
    When enabled, media is allowed to be renderer and played back on remote
    devices when the tab is being casted and other conditions are met.

enable_media_remoting_rpc
    Current value (from the default) = true

    Media Remoting RPC is disabled on Android since it's unused but increases
    the native binary size by ~70Kb.

enable_merge_request
    Current value (from the default) = false

    Request to merge features.

enable_message_center
    Current value (from the default) = true

enable_ml_internal
    Current value (from the default) = false

enable_modular_updater
    Current value (from the default) = false

    Set true to enable modular_updater.

enable_mojo_tracing
    Current value (from the default) = false

enable_mojom_fuzzer
    Current value (from the default) = false

    Enables generating javascript fuzzing-related code and the bindings for the
    MojoLPM fuzzer targets. Off by default.

enable_mojom_message_id_scrambling
    Current value (from the default) = true

    Controls message ID scrambling behavior. If |true|, message IDs are
    scrambled (i.e. randomized based on the contents of //chrome/VERSION) on
    non-Chrome OS desktop platforms. Enabled on official builds by default.
    Set to |true| to enable message ID scrambling on a specific build.
    See also `enable_scrambled_message_ids` below for more details.

enable_mojom_typemapping
    Current value (from the default) = true

    Indicates whether typemapping should be supported in this build
    configuration. This may be disabled when building external projects which
    depend on //mojo but which do not need/want all of the Chromium tree
    dependencies that come with typemapping.
   
    Note that (perhaps obviously) a huge amount of Chromium code will not build
    with typemapping disabled, so it is never valid to set this to |false| in
    any Chromium build configuration.

enable_mse_mpeg2ts_stream_parser
    Current value (from the default) = true

enable_mutex_priority_inheritance
    Current value (from the default) = false

enable_nacl
    Current value = false
    Overridden from the default = false

    Enables Native Client support.
   
    NaCl is only supported on ChromeOS.

enable_nocompile_tests
    Current value (from the default) = true

enable_offline_pages
    Current value (from the default) = false

    Whether to enable OfflinePages support. Currently user-visible features
    are Android-only.

enable_offline_pages_harness
    Current value (from the default) = false

    This enables test API for locally-built harness which is used for quality
    evaluations. Requires setting this variable manually at local environment.

enable_on_device_translation
    Current value (from the default) = true

    On Device Translation is still not supported on other platforms.
    TODO(crbug.com/364795294): Support other platforms.

enable_oop_basic_print_dialog
    Current value (from the default) = false

    Enables the printing system dialog being invoked from out-of-process for
    platforms that support printing, have a system dialog, and which can invoke
    that system print dialog from a process other than the browser process.
    TODO(crbug.com/40561724)  Determine if Linux Wayland can be made to have a
    system dialog be modal against an application window in the browser process.

enable_oop_printing
    Current value (from the default) = true

    Enables out-of-process printing.  Do not have this definition just be
    based on `enable_print_preview`; this feature could still be appropriate
    for some build configurations which explicitly disable print preview.

enable_oop_printing_no_oop_basic_print_dialog
    Current value (from the default) = true

enable_opengl_apitrace
    Current value (from the default) = false

    Enable explicit apitrace (https://apitrace.github.io) loading.
    This requires apitrace library with additional bindings.
    See ChromeOS package for details:
    https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/2659419
    Chrome will not start without an apitrace.so library.
    Trace will be saved to /tmp/gltrace.dat file by default. You can
    override it at run time with TRACE_FILE=<path> environment variable.

enable_openscreen_protocol
    Current value (from the default) = false

    Set to true to build code that supports the Open Screen Protocol.
    OSP is experimental and not yet feature-complete.

enable_openxr
    Current value (from the default) = false

    To build with OpenXR support, the OpenXR Loader needs to be pulled to
    third_party/openxr.

enable_paint_preview
    Current value (from the default) = true

    Enable basic paint preview support. Does not work on iOS. Should
    not be included with Chromecast hardware devices.
    Used by //components/paint_preview and //third_party/harfbuzz-ng.
    TODO(crbug.com/webrtc/11223) Move back this file in
    //components/paint_preview/ once WebRTC doesn't roll harfbuzz-ng anymore,
    for consistency sake.

enable_partition_lock_priority_inheritance
    Current value (from the default) = false

enable_partition_lock_reentrancy_check
    Current value (from the default) = false

    Enable reentrancy checks at `partition_alloc::internal::Lock`.
    TODO(crbug.com/371135823): Remove upon completion of investigation.

enable_pdf
    Current value (from the default) = true

enable_pdf_ink2
    Current value (from the default) = true

    Enable the next generation of ink libraries. This can co-exist with
    `enable_ink` above.

enable_perfetto_android_java_sdk
    Current value (from the default) = false

enable_perfetto_benchmarks
    Current value (from the default) = false

enable_perfetto_etm_importer
    Current value (from the default) = false

enable_perfetto_fuzzers
    Current value (from the default) = false

enable_perfetto_grpc
    Current value (from the default) = false

    Enables gRPC in the Perfetto codebase. gRPC significantly increases build
    times and the general footprint of Perfetto. As it only required for
    BigTrace and even then only to build the final ready-to-ship binary, don't
    enable this by default.

enable_perfetto_heapprofd
    Current value (from the default) = false

enable_perfetto_integration_tests
    Current value (from the default) = false

enable_perfetto_ipc
    Current value (from the default) = true

enable_perfetto_llvm_demangle
    Current value (from the default) = false

enable_perfetto_merged_protos_check
    Current value (from the default) = false

    Check that the merged perfetto_trace.proto can be translated to a C++ lite
    proto and compiled. This is disabled by default because it's expensive (it
    can take a couple of minutes).

enable_perfetto_platform_services
    Current value (from the default) = false

enable_perfetto_site
    Current value (from the default) = false

    Allows to build the perfetto.dev website.
    WARNING: if this flag is enabled, the build performs globbing at generation
    time. Incremental builds that add/remove files will not be supported without
    rerunning gn.

enable_perfetto_stderr_crash_dump
    Current value (from the default) = false

enable_perfetto_system_consumer
    Current value (from the default) = true

enable_perfetto_tools
    Current value (from the default) = false

enable_perfetto_trace_processor
    Current value (from the default) = true

enable_perfetto_trace_processor_httpd
    Current value (from the default) = true

enable_perfetto_trace_processor_json
    Current value (from the default) = true

enable_perfetto_trace_processor_linenoise
    Current value (from the default) = false

enable_perfetto_trace_processor_mac_instruments
    Current value (from the default) = false

enable_perfetto_trace_processor_percentile
    Current value (from the default) = false

enable_perfetto_trace_processor_sqlite
    Current value (from the default) = true

enable_perfetto_traceconv
    Current value (from the default) = false

enable_perfetto_traced_perf
    Current value (from the default) = false

enable_perfetto_traced_probes
    Current value (from the default) = false

enable_perfetto_traced_relay
    Current value (from the default) = false

    The relay service is enabled when platform services are enabled.
    TODO(chinglinyu) check if we can enable on Windows.

enable_perfetto_ui
    Current value (from the default) = false

enable_perfetto_unittests
    Current value (from the default) = true

enable_perfetto_version_gen
    Current value (from the default) = false

enable_perfetto_watchdog
    Current value (from the default) = false

enable_perfetto_x64_cpu_opt
    Current value (from the default) = false

enable_perfetto_zlib
    Current value (from the default) = true

enable_pkeys
    Current value (from the default) = true

enable_platform_ac3_eac3_audio
    Current value (from the default) = false

    Enables AC3/EAC3 audio handling in chromium. This includes demuxing,
    on-device decoding and bitstream passthrough as supported by device.

enable_platform_ac4_audio
    Current value (from the default) = false

    Enables AC4 audio handling in chromium. This includes demuxing,
    on-device decoding and bitstream passthrough as supported by device.

enable_platform_apps
    Current value (from the default) = true

    A control for whether support for platform apps should be compiled into the
    browser.
    TODO(https://crbug.com/41407868): This doesn't belong here; extensions code
    shouldn't rely on platform apps at all. But at least this lets it be
    toggled / if-def'd.

enable_platform_dolby_vision
    Current value (from the default) = false

enable_platform_dts_audio
    Current value (from the default) = false

    Enables DTS/DTSX audio handling in chromium. This includes demuxing,
    on-device decoding and bitstream passthrough as supported by device.

enable_platform_encrypted_dolby_vision
    Current value (from the default) = false

    Enable platform support of encrypted Dolby Vision. The actual support
    depends on platform capability and is controlled by the run time feature
    kPlatformEncryptedDolbyVision. Clear Dolby Vision is not supported by
    default, unless overwritten by the run time feature
    kAllowClearDolbyVisionInMseWhenPlatformEncryptedDvEnabled.

enable_platform_experience
    Current value (from the default) = false

    By default, only branded builds allow for platform experience.

enable_platform_hevc
    Current value (from the default) = true

enable_platform_iamf_audio
    Current value (from the default) = false

    Enables IAMF audio handling in chromium. This includes demuxing,
    on-device decoding and bitstream passthrough as supported by device.

enable_platform_mpeg_h_audio
    Current value (from the default) = false

enable_platform_vvc
    Current value (from the default) = false

    Enable inclusion of VVC/H.266 parser/demuxer, and also enable VVC/H.266 decoding
    with hardware acceleration provided by platform. Disabled by default for all builds.

enable_playready
    Current value (from the default) = false

    Enables PlayReady key system support.
    TODO(crbug.com/1498137): This feature is still in development.

enable_plugins
    Current value (from the default) = true

    Enables basic plugin support. This enables support for registering and
    looking up plugins, but does not include support for loading plugins using a
    specific technology like Pepper.
   
    In particular, the PDF viewer (enable_pdf) requires plugin support, but it
    does not require Pepper support (enable_ppapi).

enable_pointer_arithmetic_trait_check
    Current value (from the default) = true

    Enables a compile-time check that all raw_ptrs to which arithmetic
    operations are to be applied are annotated with the AllowPtrArithmetic
    trait,

enable_pointer_compression_support
    Current value (from the default) = false

    Introduces pointer compression support in PA. These are 4-byte
    pointers that can point within the core pools (regular and BRP).
   
    This is effective only for memory allocated from PartitionAlloc, so it is
    recommended to enable PA-E above, but isn't strictly necessary. Embedders
    can create and use PA partitions explicitly.

enable_pointer_subtraction_check
    Current value (from the default) = false

    Enables a bounds check when two pointers (at least one being raw_ptr) are
    subtracted (if supported by the underlying implementation).

enable_ppapi
    Current value (from the default) = false

    Enables Pepper API (PPAPI) plugin support.
    The only remaining PPAPI plugin supported is NaCl and if is disabled
    we can disable PPAPI.

enable_precompiled_headers
    Current value (from the default) = false

enable_print_media_l10n
    Current value (from the default) = false

    Enable print media localization only on the platforms that support CUPS IPP
    (ChromeOS and macOS for now). The localization expects media vendor IDs
    uniquely generated by CUPS IPP.

enable_print_preview
    Current value (from the default) = true

    Enables printing with print preview.
    Print preview requires PDF per //printing/BUILD.gn.
    The is_android condition is currently redundant but left for clarity.

enable_printing
    Current value (from the default) = true

    Enables printing support.

enable_printing_tests
    Current value (from the default) = false

    TODO(crbug.com/40263786): iOS blink port only enables printing_tests to run
    unit tests and web tests for now because the port does not enable the
    printing feature yet.

enable_profiling
    Current value (from the default) = false

    Compile in such a way as to enable profiling of the generated code. For
    example, don't omit the frame pointer and leave in symbols.

enable_pseudolocales
    Current value (from the default) = false

    We want to give pseudolocales to everyone except end-users (devs & QA).
    Note that this only packages the locales in, and doesn't add the ui to enable them.

enable_qr_print
    Current value (from the default) = false

    Enables building a development / debugging binary.

enable_quic_proxy_support
    Current value (from the default) = false

    General QUIC proxy support is only available for debug builds.
    TODO(crbug.com/367400641): If flag is changed or removed, ensure all
    TODOs for this bug are correctly modified.

enable_random_mojo_delays
    Current value (from the default) = false

    enable_random_mojo_delays starts a task runner that periodically pauses
    random Mojo bindings and later resumes them, in order to test whether parts
    of the code implicitly rely on FIFO processing of messages sent on different
    message pipes (which they should not).

enable_remoting
    Current value (from the default) = false

enable_reporting
    Current value (from the default) = true

    Reporting not used on iOS.

enable_request_header_integrity
    Current value (from the default) = false

enable_resource_allowlist_generation
    Current value = false
    Overridden from the default = false

enable_rlz
    Current value (from the default) = false

enable_rust
    Current value (from the default) = true

    Rust is available in the Chromium build but 3p repos that use //build may
    not use Rust and thus won't want to depend on having the Rust toolchain
    present, so this defaults to off in those cases.
   
    Chromium-based projects that are built for for architectures Chrome does not
    support may need to disable this as well, though they may need to replace
    code with C/C++ to get a functional product.
   
    Based on the above:
   
    * `enable_rust` may be consulted under `//build` and `//testing` directories
      (which may be used outside of Chromium build)
    * `enable_rust` should *not* be consulted in other Chromium directories
      (including `//base`, `//net`, etc.)

enable_rust_cxx
    Current value (from the default) = true

    The CXX tool is in //third_party/rust which is not shared with downstream
    projects yet. So they need to copy the required dependencies and GN files
    into their project to enable CXX there.
   
    Currently, cxx is needed to use Rust with an allocator since the Chromium
    allocator shim uses cxx

enable_rust_mojo
    Current value (from the default) = false

    Support for the experimental Rust mojo implementation.

enable_rust_mojom_bindings
    Current value (from the default) = false

    Output Rust mojom bindings when `generate_rust` is `true` for a target. The
    option has no effect if this flag is disabled.
   
    This is currently behind a build flag since it's not being actively worked
    on, but to maintain some coverage of the code on the Rust FYI bots. When we
    want to actively develop support for Mojo use with Rust again, we should do
    it without any build flags.

enable_rust_png
    Current value (from the default) = true

    WIP attempt to replace `libpng` with Rust `png` crate.
    See https://crbug.com/40278281 for more details.
   
    TODO(https://crbug.com/360375227): Either: 1) remove (if/when
    shipped) or 2) change back to `false` before branchpoint (if not
    ready for Beta/Stable yet).

enable_rust_translit
    Current value (from the default) = false

    Set to true to enable icu4x transliterator

enable_screen_ai_browsertests
    Current value (from the default) = true

enable_screen_ai_service
    Current value (from the default) = true

    Screen AI service is only supported on desktop platforms.

enable_segment_heap
    Current value (from the default) = false

enable_server_based_recognition
    Current value (from the default) = false

    Whether the server based speech recognition recognizer is available.
    Currently only available in official builds for ChromeOS.

enable_service_discovery
    Current value (from the default) = true

enable_session_service
    Current value (from the default) = true

    Enables use of the session service, which is enabled by default.
    Android stores them separately on the Java side.

enable_shadow_call_stack
    Current value (from the default) = false

    Enable ShadowCallStack for compiled binaries. SCS stores a pointer to a
    shadow call stack in register x18. Hence, x18 must not be used by the OS
    or libraries. We assume that to be the case for high end Android
    configurations. For more details see
    https://clang.llvm.org/docs/ShadowCallStack.html

enable_shadow_metadata
    Current value (from the default) = true

    Shadow metadata is still under development and only supports Linux
    for now.

enable_skia_graphite_gtests
    Current value (from the default) = false

    Enable gtests using SkiaRenderer on Skia Graphite.

enable_soda_integration_tests
    Current value (from the default) = false

    Used to enable the Speech On-Device API (SODA) in unit and browser tests.
    This affects production code on some platforms and should not be enabled in
    official builds.

enable_speech_service
    Current value (from the default) = true

    Whether the browser provides a speech recognition service
    (//media/mojo/mojom/speech_recognition_service.mojom) to the renderer.
    TODO(crbug.com/40244098) Enable on Fuchsia.

enable_sqlite_tracing
    Current value (from the default) = false

    When set to `true`, enables tracing in sqlite, which enables the use of
    tracing/profiling functions, as well as prepared statement expansion.

enable_stack_trace_line_numbers
    Current value (from the default) = true

    Enables the DWARF line number reader on Linux. This only has an effect if
    print_unsymbolized_stack_traces is false.

enable_stripping
    Current value (from the default) = true

    Strip symbols from linked targets by default. If this is enabled, the
    //build/config/apple:strip_all config will be applied to all linked targets.
    If custom stripping parameters are required, remove that config from a
    linked target and apply custom -Wcrl,strip flags. See
    //build/toolchain/apple/linker_driver.py for more information.

enable_supervised_users
    Current value (from the default) = true

    Platforms which fully support supervision features:

enable_swiftshader
    Current value (from the default) = true

enable_swiftshader_vulkan
    Current value (from the default) = true

    Enable swiftshader vulkan. Disabling it can save build time, however
    --use-vulkan=swiftshader and some tests which use swiftshader vulkan will
    not work.

enable_trace_logging
    Current value (from the default) = true

    Enables trace logging in build. This is true by default, but may be disabled
    for a slight performance increase.

enable_update_notifications
    Current value (from the default) = false

    Detect updates and notify the user for Google Chrome across all platforms.
    Chromium does not use an auto-updater.

enable_updater
    Current value (from the default) = false

    By default, only branded builds integrate with automatic updates.

enable_validating_command_decoder
    Current value (from the default) = false

    desktop android devices exclusively use angle and thus should not use
    the validating command decoder

enable_vectorized_html_scanning
    Current value (from the default) = true

enable_video_effects
    Current value (from the default) = false

enable_vr
    Current value (from the default) = true

enable_vulkan
    Current value (from the default) = true

    Enable experimental vulkan backend.

enable_websockets
    Current value (from the default) = true

    WebSockets and socket stream code are not used when blink is not used
    and are optional in cronet.

enable_webui_certificate_viewer
    Current value (from the default) = true

    Enables the webui certificate viewer dialog.

enable_webui_generate_code_cache
    Current value (from the default) = true

    Enable generation of compiled JS bytecode for opted-in WebUI scripts for
    compatible build configurations (see comment for the
    `enable_webui_generate_code_cache` update below).

enable_webui_inline_sourcemaps
    Current value (from the default) = false

    Whether to inline source maps during build. Cannot be enabled when
    `optimize_webui=true`.

enable_webui_tab_strip
    Current value (from the default) = true

    Enable the WebUI version of the browser's tab strip.

enable_widevine
    Current value = true
    Overridden from the default = false

    Enables Widevine key system support. Enabled by default in Google Chrome,
    Google Chrome for Testing and Android. For Fuchsia, see crbug.com/1354347.
    Can be optionally enabled in Chromium on non-Android platforms. Please see
    //src/third_party/widevine/LICENSE file for details.

enterprise_client_certificates
    Current value (from the default) = true

    Indicates support for client certificates provisioning.

enterprise_cloud_content_analysis
    Current value (from the default) = true

enterprise_content_analysis
    Current value (from the default) = true

enterprise_data_controls
    Current value (from the default) = true

enterprise_local_content_analysis
    Current value (from the default) = true

    Indicates support for content analysis against a cloud agent for Enterprise
    Connector policies.

enterprise_screenshot_protection
    Current value (from the default) = false

enterprise_telomere_reporting
    Current value (from the default) = true

enterprise_watermark
    Current value (from the default) = true

exclude_unwind_tables
    Current value (from the default) = true

    Exclude unwind tables by default for official builds as unwinding can be
    done from stack dumps produced by Crashpad at a later time "offline" in the
    crash server. Since this increases binary size, we don't recommend including
    them in shipping builds.
    For unofficial (e.g. development) builds and non-Chrome branded (e.g. Cronet
    which doesn't use Crashpad, crbug.com/479283) builds it's useful to be able
    to unwind at runtime.
    Include the unwind tables on Android even for official builds, as otherwise
    the crash dumps generated by Android's debuggerd are largely useless, and
    having this additional mechanism to understand issues is particularly helpful
    to WebView.

extended_tracing_enabled
    Current value (from the default) = false

    Enable more trace events. Disabled by default due to binary size impact,
    but highly recommended for local development.

extra_sysroot_libs
    Current value (from the default) = []

    Non-rlib libs provided in the toolchain sysroot. Usually this is empty, but
    e.g. the Android Rust Toolchain provides a libunwind.a that rustc expects.

fail_on_san_warnings
    Current value (from the default) = false

    When true, sanitizer warnings will cause test case failures.

fatal_linker_warnings
    Current value (from the default) = true

    Enable fatal linker warnings. Building Chromium with certain versions
    of binutils can cause linker warning.

ffmpeg_branding
    Current value = "Chrome"
    Overridden from the default = "Chromium"

    Controls whether we build the Chromium or Google Chrome version of FFmpeg.
    The Google Chrome version contains additional codecs. Typical values are
    Chromium, Chrome, and ChromeOS.

ffmpeg_include_dirs
    Current value (from the default) = []

ffmpeg_lib_dirs
    Current value (from the default) = []

ffmpeg_libs
    Current value (from the default) = ["avcodec", "avformat", "avutil", "swresample"]

ffmpeg_use_unsafe_atomics
    Current value (from the default) = false

    Set to true to force the use of ffmpeg's stdatomic fallback code. This code
    is unsafe and does not implement atomics properly. https://crbug.com/161723.
   
    Windows and GCC prior to 4.9 lack stdatomic.h.
   
    This is also useful for developers who use icecc, which relies upon
    clang's -frewrite-includes flag which is broken with #include_next
    directives as used in chromium's clang stdatomic.h.
    Some background: https://bugs.llvm.org/show_bug.cgi?id=26828

forbid_non_component_debug_builds
    Current value = false
    Overridden from the default = true

    Whether an error should be raised on attempts to make debug builds with
    is_component_build=false. Very large debug symbols can have unwanted side
    effects so this is enforced by default for chromium.

force_cast_bluetooth
    Current value (from the default) = false

force_disable_backup_ref_ptr_feature
    Current value (from the default) = false

force_enable_fieldtrial_testing_config
    Current value (from the default) = false

    Set to true to make a build that force enables activation of field trial
    tests specified in testing/variations/fieldtrial_testing_config.json.

force_enable_raw_ptr_exclusion
    Current value (from the default) = false

    RAW_PTR_EXCLUSION macro is disabled on official builds because it increased
    binary size. This flag can be used to enable it for official builds too.

force_rustc_color_output
    Current value (from the default) = false

    Force-enable `--color=always` for rustc, even when it would be disabled for
    a platform. Mostly applicable to Windows, where new versions can handle ANSI
    escape sequences but it's not reliable in general.

forward_through_malloc
    Current value (from the default) = false

    Forwards all the allocation/freeing calls in shim (e.g. operator new)
    through malloc. Useful for using with tools that intercept malloc, e.g.
    heaptrack.

gcc_target_rpath
    Current value (from the default) = ""

    When non empty, overrides the target rpath value. This allows a user to
    make a Chromium build where binaries and shared libraries are meant to be
    installed into separate directories, like /usr/bin/chromium and
    /usr/lib/chromium for instance. It is useful when a build system that
    generates a whole target root filesystem (like Yocto) is used on top of gn,
    especially when cross-compiling.
    Note: this gn arg is similar to gyp target_rpath generator flag.

generate_about_credits
    Current value (from the default) = true

    Generating the credits page requires a filesystem traversal for licenses
    that is slow in some environments.

generate_fuzzer_owners
    Current value (from the default) = false

    Generates an owners file for each fuzzer test.
    TODO(crbug.com/40175535): Remove this arg when finding OWNERS is faster.

generate_linker_map
    Current value (from the default) = false

    Used for binary size analysis.

google_api_key
    Current value (from the default) = ""

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

google_default_client_id
    Current value (from the default) = ""

    See google_api_key.

google_default_client_secret
    Current value (from the default) = ""

    See google_api_key.

gtest_enable_absl_printers
    Current value (from the default) = true

    Allows googletest to pretty-print various absl types.  Disabled for nacl due
    to lack of toolchain support.

gtk_version
    Current value (from the default) = 3

    The (major) version of GTK to build against.  A different version may be
    loaded at runtime.

has_native_accessibility
    Current value (from the default) = true

has_platform_accessibility_support
    Current value (from the default) = false

    Whether the platform provide platform-specific accessibility implementation,
    i.e. there an accessibility API of some kind on this platform that's
    implemented in Chrome's browser process, but not necessarily something that
    looks like subclassing an interface - so that includes Android (the Java
    AccessibilityNodeProvider API) and Fuchsia (uses fidl messaging, kind of
    like mojo).

have_ffmpeg
    Current value (from the default) = false

have_libaom
    Current value (from the default) = false

have_libopus
    Current value (from the default) = false

have_libsdl2
    Current value (from the default) = false

have_libvpx
    Current value (from the default) = false

headless_enable_commands
    Current value (from the default) = true

    Enable support for --screenshot, --print-to-pdf and --dump-dom commands
    Note: this option is not available if |headless_use_embedded_resources|.

headless_mode_policy_supported
    Current value (from the default) = true

    Platforms where headless mode is supported.

headless_use_embedded_resources
    Current value (from the default) = false

    Embed resource.pak file into the binary for easier distribution.

headless_use_policy
    Current value (from the default) = true

    Use Policy component to manage preferences.

headless_use_prefs
    Current value (from the default) = true

    Use Prefs component to access Local State and other preferences.

high_end_fuzzer_targets
    Current value (from the default) = false

    When true, only builds fuzzer targets that require high end machines to run.
    Otherwise, builds all the targets.
    TODO(paulsemel): once we have everything implemented on the recipe side, we
    can change the behaviour for the false case, and only build the non high-end
    jobs, so that they do not appear in the zip. As for now, this behaviour
    ensures nothing breaks.

host_byteorder
    Current value (from the default) = "undefined"

host_cpu
    Current value (from the default) = "x64"
      (Internally set; try `gn help host_cpu`.)

host_os
    Current value (from the default) = "linux"
      (Internally set; try `gn help host_os`.)

host_pkg_config
    Current value (from the default) = ""

    A optional pkg-config wrapper to use for tools built on the host.

host_toolchain
    Current value (from the default) = ""

    This should not normally be set as a build argument.  It's here so that
    every toolchain can pass through the "global" value via toolchain_args().

host_toolchain_is_msan
    Current value (from the default) = false

    These are set for some non-host toolchain which requires to run built binary
    from host toolchain with msan config but in non-host toolchain context.

host_toolchain_msan_track_origins
    Current value (from the default) = 2

icu_copy_icudata_to_root_build_dir
    Current value (from the default) = true

    If set, the ":icudata" target will copy the ICU data to $root_build_dir.

icu_disable_thin_archive
    Current value (from the default) = false

    If true, compile icu into a standalone static library. Currently this is
    only useful on Chrome OS.

icu_fuchsia_extra_compile_flags
    Current value (from the default) = []

    Fuchsia sometimes requires extra compilation flags for ICU to adapt it to
    its current toolchain. Since it takes a while for ICU to roll through
    Fuchsia, it can take a long time from an ICU commit to a fix rolling into
    Fuchsia. This flag allows us to define the flag ahead of time in
    //build/icu.gni, and remove the rollout issues.

icu_fuchsia_extra_configs
    Current value (from the default) = []

    Similar to above, except it allows adding an entire `config` target.

icu_fuchsia_override_data_dir
    Current value (from the default) = ""

    If set to nonempty, this is the label of the directory to be used to pull
    the ICU data files content.  The setting has effect only when building
    inside the Fuchsia source tree.

icu_fuchsia_remove_configs
    Current value (from the default) = []

    Similar to above, except it allows removing an entire `config` target, if
    it exists.

icu_use_data_file
    Current value (from the default) = true

    Tells icu to load an external data file rather than rely on the icudata
    being linked directly into the binary.

icu_use_stub_data
    Current value (from the default) = true

    If true, then this creates a stub data file. This should be disabled if
    a custom data file will be used instead, in order to avoid conflicting
    symbols.

ignore_missing_widevine_signing_cert
    Current value (from the default) = false

    If set, and Widevine CDM host verification signing failed due to no signing
    cert, the failure will be ignored. Otherwise the build process will fail.
    Set to false by default for official build to catch missing cert error.
    For developers building with "is_official_build" locally without Widevine
    signing certs, please manually set `ignore_missing_widevine_signing_cert`
    to true to suppress the error.

include_ash_ambient_animation_resources
    Current value (from the default) = false

    Build flag to include resources for the animated screensaver in ash builds.
   
    Currently, these resources are included by default for internal ChromeOS
    builds as both conditions below are prerequisites for downloading Lottie
    ambient mode resources from CIPD in the DEPS file.
   
    May be overridden locally to false for testing purposes if desired.

include_both_v8_snapshots
    Current value (from the default) = false

include_branded_entitlements
    Current value (from the default) = true

    On macOS, `is_chrome_branded` builds that have been signed locally will not
    launch because certain entitlements are tied to the official Google code
    signing identity. If `include_branded_entitlements` is set to false, these
    entitlements will be skipped.

include_transport_security_state_preload_list
    Current value (from the default) = true

    Includes the transport security state preload list. This list includes
    mechanisms (e.g. HSTS, HPKP) to enforce trusted connections to a significant
    set of hardcoded domains. While this list has a several hundred KB of binary
    size footprint, this flag should not be disabled unless the embedder is
    willing to take the responsibility to make sure that all important
    connections use HTTPS.

incremental_install
    Current value (from the default) = false

    Build incremental targets whenever possible.
    See //build/android/incremental_install/README.md for more details.

init_stack_vars
    Current value (from the default) = true

    Initialize all local variables with a pattern. This flag will fill
    uninitialized floating-point types (and 32-bit pointers) with 0xFF and the
    rest with 0xAA. This makes behavior of uninitialized memory bugs consistent,
    recognizable in the debugger, and crashes on memory accesses through
    uninitialized pointers.
   
    Flag discussion: https://crbug.com/977230
   
    TODO(crbug.com/40721698): This regresses binary size by ~1MB on Android and
    needs to be evaluated before enabling it there as well.

init_stack_vars_zero
    Current value (from the default) = false

    Zero init has favorable performance/size tradeoffs for Chrome OS
    but was not evaluated for other platforms.

install_prefix
    Current value (from the default) = ""

    Prefix where the artifacts should be installed on the system

ios_allow_asan_for_official_to_debug_371135823
    Current value (from the default) = false

    Allow building official with ASAN enabled to help with
    debugging https://crbug.com/371135823.

ios_app_bundle_id_prefix
    Current value (from the default) = "org.chromium.ost"

    Prefix for CFBundleIdentifier property of iOS bundles (correspond to the
    "Organization Identifier" in Xcode). Code signing will fail if no mobile
    provisioning for the selected code signing identify support that prefix.
    TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_.

ios_chrome_generate_order_file
    Current value (from the default) = false

    Generate orderfile at application startup and then exit.
    NOTE: This flag adds runtime tooling to capture function call details,
    writes out an orderfile to the documents directory, then terminates the
    application. It should generally NOT be enabled.

ios_code_signing_identity
    Current value (from the default) = ""

    Explicitly select the identity to use for codesigning. If defined, must
    be set to a non-empty string that will be passed to codesigning. Can be
    left unspecified if ios_code_signing_identity_description is used instead.
    TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_.

ios_code_signing_identity_description
    Current value (from the default) = "Apple Development"

    Pattern used to select the identity to use for codesigning. If defined,
    must be a substring of the description of exactly one of the identities by
    `security find-identity -v -p codesigning`.
    TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_.

ios_deployment_target
    Current value (from the default) = "18.4"

ios_enable_code_signing
    Current value (from the default) = true

    Control whether codesiging is enabled (ignored for simulator builds).
    TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_.

ios_mobileprovision_files
    Current value (from the default) = []

    Paths to the mobileprovision files for the chosen code signing
    identity description and app bundle id prefix.
    TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_.

ios_stack_profiler_enabled
    Current value (from the default) = true

    Control whether the ios stack sampling profiler is enabled. This flag is
    only supported on iOS 64-bit architecture, but some project build //base
    for 32-bit architecture.

is_asan
    Current value (from the default) = false

    Compile for Address Sanitizer to find memory bugs.

is_cast_android
    Current value (from the default) = false

    Set this to true to build for Android-based Cast devices.
    Set this to false to use the defaults for Android.

is_cast_audio_only
    Current value (from the default) = false

    Set this true for an audio-only Chromecast build.
    TODO(crbug.com/41489655): Remove this arg as CastOS builds are no
    longer supported.

is_castos
    Current value (from the default) = false

    Set this to true to build for Nest hardware running Linux (aka "CastOS").
    Set this to false to use the defaults for Linux.

is_cfi
    Current value = false
    Overridden from the default = true

    Compile with Control Flow Integrity to protect virtual calls and casts.
    See http://clang.llvm.org/docs/ControlFlowIntegrity.html
   
    TODO(pcc): Remove this flag if/when CFI is enabled in all official builds.

is_cfm
    Current value (from the default) = false

    True if compiling for Chromebox for Meeting devices.

is_chrome_branded
    Current value (from the default) = false

    Select the desired branding flavor. False means normal Chromium branding,
    true means official Google Chrome branding (requires extra Google-internal
    resources).

is_chrome_for_testing
    Current value (from the default) = false

    Whether to enable the Chrome for Testing (CfT) flavor. This arg is not
    compatible with `is_chrome_branded`.
   
    Design document: https://goo.gle/chrome-for-testing

is_chrome_for_testing_branded
    Current value (from the default) = false

    Whether to use internal Chrome for Testing (CfT).
    Requires `src-internal/` and `is_chrome_for_testing = true`.
   
    When true, use Google-internal icons, otherwise fall back to Chromium icons.

is_chromeos_device
    Current value (from the default) = false

    Determines if we're building for a Chrome OS device (or VM) and not just
    linux-chromeos. NOTE: Most test targets in Chrome expect to run under
    linux-chromeos, so some have compile-time asserts that intentionally fail
    when this build flag is set. Build and run the tests for linux-chromeos
    instead.
    https://chromium.googlesource.com/chromium/src/+/main/docs/chromeos_build_instructions.md
    https://chromium.googlesource.com/chromiumos/docs/+/main/simple_chrome_workflow.md

is_chromeos_with_hw_details
    Current value (from the default) = false

    Determines if we collect hardware information in chrome://system and
    feedback logs. A similar build flag "hw_details" is defined in Chrome OS
    (see https://crrev.com/c/3123455).

is_clang
    Current value (from the default) = true

    Set to true when compiling with the Clang compiler.

is_component_build
    Current value = false
    Overridden from the default = false

is_component_ffmpeg
    Current value (from the default) = false

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

is_cronet_build
    Current value (from the default) = false

    Control whether cronet is built (this is usually set by the script
    components/cronet/tools/cr_cronet.py as cronet requires specific
    gn args to build correctly).

is_cronet_for_aosp_build
    Current value (from the default) = false

    Controls whether cronet is currently being built for AOSP or Chromium.
    This will always be false when building Cronet for Chromium.
    the flag exists to accommodate for the divergence between the repos.

is_ct_supported
    Current value (from the default) = true

    Certificate transparency is not supported on iOS.

is_debug
    Current value = false
    Overridden from the default = false

    Debug build. Enabling official builds automatically sets is_debug to false.

is_desktop_android
    Current value (from the default) = false

    Set to true to set defaults that enable features on Android that are more
    typically available on desktop.

is_high_end_android
    Current value (from the default) = true

    Set to true to enable settings for high end Android devices, typically
    enhancing speed at the expense of resources such as binary sizes and memory.

is_high_end_android_secondary_toolchain
    Current value (from the default) = false

    Whether to apply size->speed trade-offs to the secondary toolchain.
    Relevant only for 64-bit target_cpu.

is_hwasan
    Current value (from the default) = false

    Compile for Hardware-Assisted Address Sanitizer to find memory bugs
    (android/arm64 only).
    See http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html

is_java_debug
    Current value (from the default) = false

    Java debug on Android. Having this on enables multidexing, and turning it
    off will enable proguard.

is_lsan
    Current value (from the default) = false

    Compile for Leak Sanitizer to find leaks.

is_msan
    Current value (from the default) = false

    Compile for Memory Sanitizer to find uninitialized reads.

is_nacl_glibc
    Current value (from the default) = false

    True if nacl_glibc is used.

is_nacl_saigo
    Current value (from the default) = false

    True if saigo_newlib is used.

is_official_build
    Current value = true
    Overridden from the default = false

    Set to enable the official build level of optimization. This has nothing
    to do with branding, but enables an additional level of optimization above
    release (!is_debug). This might be better expressed as a tri-state
    (debug, release, official) but for historical reasons there are two
    separate flags.
   
    IMPORTANT NOTE: (!is_debug) is *not* sufficient to get satisfying
    performance. In particular, DCHECK()s are still enabled for release builds,
    which can halve overall performance, and do increase memory usage. Always
    set "is_official_build" to true for any build intended to ship to end-users.

is_p2p_enabled
    Current value (from the default) = true

    Controls whether P2P is exposed by the network service.
    Optional to reduce avoid having Chrome on iOS depends on
    WebRTC and related third-party libraries (libvpx, libaom,
    ...).

is_perfetto_build_generator
    Current value (from the default) = false

    All the tools/gen_* scripts set this to true. This is mainly used to locate
    .gni files from //gn rather than //build.

is_perfetto_embedder
    Current value (from the default) = false

    This is for override via `gn args` (e.g. for tools/gen_xxx). Embedders
    based on GN (e.g. v8) should NOT set this and instead directly sets
    perfetto_build_with_embedder=true in their GN files.

is_reven
    Current value (from the default) = false

    Refers to the separate branding required for the reven build.

is_robolectric
    Current value (from the default) = false

    Do not set this directly.
    It should be set only by //build/toolchains/android:robolectric_x64.
    True when compiling native code for use with robolectric_binary().

is_skylab
    Current value (from the default) = false

    Determines if we run the test in skylab, aka the CrOS labs.

is_tsan
    Current value (from the default) = false

    Compile for Thread Sanitizer to find threading bugs.

is_ubsan
    Current value (from the default) = false

    Compile for Undefined Behaviour Sanitizer to find various types of
    undefined behaviour (excludes vptr checks).

is_ubsan_no_recover
    Current value (from the default) = false

    Halt the program if a problem is detected.

is_ubsan_security
    Current value (from the default) = false

    Enables core ubsan security features. Will later be removed once it matches
    is_ubsan.

is_ubsan_vptr
    Current value (from the default) = false

    Compile for Undefined Behaviour Sanitizer's vptr checks.

is_unsafe_developer_build
    Current value (from the default) = false

    Unsafe developer build. Has developer-friendly features that may weaken or
    disable security measures like sandboxing or ASLR.
    IMPORTANT: Unsafe developer builds should never be distributed to end users.

is_win_arm64
    Current value (from the default) = false

    Currently Windows on Arm doesn't support OpenGL or Vulkan.

lacros_use_chromium_toolchain
    Current value (from the default) = false

    If set, build lacros with Chromium's toolchain instead of with Chrome OS's.
    TODO(thakis): Set this to `= chromeos_is_browser_only` once that works.

lastchange_year_header_name
    Current value (from the default) = ""

ldso_path
    Current value (from the default) = ""

libaom_include_dirs
    Current value (from the default) = []

libaom_lib_dirs
    Current value (from the default) = []

libaom_libs
    Current value (from the default) = ["aom"]

libcxx_is_shared
    Current value (from the default) = false

    WARNING: Setting this to a non-default value is highly discouraged.
    If true, libc++ will be built as a shared library; otherwise libc++ will be
    linked statically. Setting this to something other than the default is
    unsupported and can be broken by libc++ rolls. Note that if this is set to
    true, you must also set libcxx_abi_unstable=false, which is bad for
    performance and memory use.

libcxx_natvis_include
    Current value (from the default) = true

    Builds libcxx Natvis into the symbols for type visualization.
    Set to false to workaround http://crbug.com/966676 and
    http://crbug.com/966687.

libcxx_revision
    Current value (from the default) = "a01c02c9d4acbdae3b7e8a2f3ee58579a9c29f96"

    Used to cause full rebuilds on libc++ rolls. This should be kept in sync
    with the libcxx_revision var in //DEPS.

libopus_include_dirs
    Current value (from the default) = []

libopus_lib_dirs
    Current value (from the default) = []

libopus_libs
    Current value (from the default) = ["opus"]

libsdl2_include_dirs
    Current value (from the default) = []

libsdl2_lib_dirs
    Current value (from the default) = []

libsdl2_libs
    Current value (from the default) = ["SDL2"]

libsrtp_build_boringssl
    Current value (from the default) = true

    Build with BoringSSL by default, allow WebRTC to override
    this and the include path from rtc_build_ssl and rtc_ssl_root

libsrtp_ssl_root
    Current value (from the default) = ""

libvpx_include_dirs
    Current value (from the default) = []

libvpx_lib_dirs
    Current value (from the default) = []

libvpx_libs
    Current value (from the default) = ["vpx"]

libyuv_disable_jpeg
    Current value (from the default) = false

libyuv_disable_rvv
    Current value (from the default) = false

libyuv_include_tests
    Current value (from the default) = false

libyuv_symbols_visible
    Current value (from the default) = false

    When building a shared library using a target in WebRTC or
    Chromium projects that depends on libyuv, setting this flag
    to true makes libyuv symbols visible inside that library.

libyuv_use_absl_flags
    Current value (from the default) = true

    Set to false to disable building with absl flags.

libyuv_use_lasx
    Current value (from the default) = false

libyuv_use_lsx
    Current value (from the default) = false

libyuv_use_mmi
    Current value (from the default) = false

libyuv_use_msa
    Current value (from the default) = false

libyuv_use_neon
    Current value (from the default) = false

libyuv_use_sme
    Current value (from the default) = false

    Restrict to (is_linux || is_android) to work around undefined symbol linker
    errors on Fuchsia, macOS, and compilation errors on Windows.
    TODO: bug 359006069 - Remove the restriction after the linker and
    compilation errors are fixed.

libyuv_use_sve
    Current value (from the default) = false

limit_android_deps
    Current value (from the default) = false

    Limits the defined //third_party/android_deps targets to only "buildCompile"
    and "buildCompileNoDeps" targets. This is useful for third-party
    repositories which do not use JUnit tests. For instance,
    limit_android_deps == true removes "gn gen" requirement for
    //third_party/robolectric .

link_pulseaudio
    Current value (from the default) = false

    Allows distributions to link pulseaudio directly (DT_NEEDED) instead of
    using dlopen. This helps with automated detection of ABI mismatches and
    prevents silent errors.

lld_emit_indexes_and_imports
    Current value (from the default) = false

    Set to true to enable output of ThinLTO index and import files used for
    creating a Chromium MLGO corpus in the ThinLTO case.

lld_path
    Current value (from the default) = ""

    This allows overriding the location of lld.

llvm_android_mainline
    Current value (from the default) = false

    Cronet is shipped in AOSP, where it is built using the Android Mainline
    Clang. Please refer to go/cronet-builders-with-mainline-clang-design for
    more information.
    If this arg is set to true, we use the Android Mainline LLVM.

llvm_force_head_revision
    Current value (from the default) = false

    If this is set to true, we use the revision in the llvm repo to determine
    the CLANG_REVISION to use, instead of the version hard-coded into
    //tools/clang/scripts/update.py. This should only be used in
    conjunction with setting the llvm_force_head_revision DEPS variable when
    `gclient runhooks` is run as well.

load_webui_from_disk
    Current value (from the default) = false

    Flag used for loading WebUI files directly from disk instead of .pak files.
    It causes additional file path info for each file to be added into Grit
    generated '*_resource_map.cc' files during the build, which is then used at
    runtime to read such files.
    Meant to be used during local development only (requires a local checkout
    and build) with the runtime --load-webui-from-disk command line switch.

mac_sdk_min
    Current value (from the default) = "10.15"

    Minimum supported version of the Mac SDK.

mbi_mode
    Current value (from the default) = true

    Whether or not MBI mode (Multiple Blink Isolates) should be enabled,
    depending on the build argument.

media_use_ffmpeg
    Current value (from the default) = true

    Enable usage of FFmpeg within the media library. Used for most software
    based decoding, demuxing, and sometimes optimized FFTs. If disabled,
    implementors must provide their own demuxers and decoders.

media_use_libvpx
    Current value (from the default) = true

    Enable usage of libvpx within the media library. Used for software based
    decoding of VP9 and VP8A type content.

media_use_openh264
    Current value (from the default) = true

    Enable usage of OpenH264 within the media library. Used for software based
    encoding of H264 content.

media_use_opensles
    Current value (from the default) = true

    Enables the use of OpenSLES on Android.
    Should not be disabled for versions of Android before Q, since we only
    support AAudio on level 29 and above.

mediapipe_build_with_gpu_support
    Current value (from the default) = false

mips_use_mmi
    Current value (from the default) = false

    MIPS MultiMedia Instruction compilation flag.

mojo_media_host
    Current value (from the default) = "gpu"

    The process that the mojo MediaService runs in. By default, all services
    registered in |mojo_media_services| are hosted in the MediaService, with the
    exception that when |enable_library_cdms| is true, the "cdm" service will
    run in a separate CdmService in the CDM (utility) process, while other
    |mojo_media_services| still run in the MediaService in the process specified
    by "mojo_media_host".
    Valid options are:
    - "browser": Use mojo media service hosted in the browser process.
    - "gpu": Use mojo media service hosted in the gpu process.
    - "": Do not use mojo media service.

mojo_media_services
    Current value (from the default) = ["video_decoder", "cdm"]

    A list of mojo media services that should be used in the media pipeline.
    Valid entries in the list are:
    - "renderer": Use mojo-based media Renderer service.
    - "cdm": Use mojo-based Content Decryption Module.
    - "audio_decoder": Use mojo-based audio decoder in the default media
                       Renderer. Cannot be used with the mojo Renderer above.
    - "video_decoder": Use mojo-based video decoder in the default media
                       Renderer. Cannot be used with the mojo Renderer above.

mojo_support_legacy_core
    Current value (from the default) = false

    Builds non-ipcz-based Mojo Core. No longer supported anywhere but Chrome OS.
    We check target_os instead of is_chromeos since this also needs to be set
    when building NaCl binaries (is_nacl) for Chrome OS.
   
    When this is true, ipcz-based Mojo Core can be disabled by disabling the
    MojoIpcz feature flag; and it's disabled by default on Chrome OS. When this
    is false, ipcz-based Mojo Core is used unconditionally.
   
    We also enable this by default for fuzzer builds, since some active fuzzers
    require the legacy implementation.

mojo_use_apple_channel
    Current value (from the default) = false

mojom_message_id_salt_path
    Current value (from the default) = "//chrome/VERSION"

    The path to a file whose contents can be used as the basis for a message
    ID scrambling salt.

monolithic_binaries
    Current value (from the default) = false

    Only for local development. When true the binaries (perfetto, traced, ...)
    are monolithic and don't use a common shared library. This is mainly to
    avoid LD_LIBRARY_PATH dances when testing locally.
    On Windows we default to monolithic executables, because pairing
    dllexport/import adds extra complexity for little benefit. Te only reason
    for monolithic_binaries=false is saving binary size, which matters mainly on
    Android. See also comments on PERFETTO_EXPORT_ENTRYPOINT in compiler.h.

msan_check_use_after_dtor
    Current value (from the default) = true

    TODO(crbug.com/40222690): Enable everywhere.

msan_eager_checks
    Current value (from the default) = true

    Enables "param-retval" mode, which finds more uses of uninitialized data and
    reduces code size. Behind a flag as there are a number of previously
    undetected violations that still need to be fixed.
    TODO(crbug.com/40240570): Default this to true and remove.

msan_track_origins
    Current value (from the default) = 2

    Track where uninitialized memory originates from. From fastest to slowest:
    0 - no tracking, 1 - track only the initial allocation site, 2 - track the
    chain of stores leading from allocation site to use site.

ndk_api_level_at_least_26
    Current value (from the default) = false

openscreen_monolithic
    Current value (from the default) = false

    Enable monolithic static library for embedders.

openscreen_static_library
    Current value (from the default) = false

    Use static libraries instead of source_sets.

optimize_for_fuzzing
    Current value (from the default) = false

    Optimize for coverage guided fuzzing (balance between speed and number of
    branches)

optimize_for_size
    Current value (from the default) = false

optimize_webui
    Current value = true
    Overridden from the default = true

    Optimize parts of Chrome's UI written with web technologies (HTML/CSS/JS)
    for runtime performance purposes. This does more work at compile time for
    speed benefits at runtime (so we skip in debug builds).

optional_trace_events_enabled
    Current value (from the default) = true

os_level_geolocation_permission_supported
    Current value (from the default) = false

    Specifies if we support the OS level global geolocation permission for the current platform.
    This is exposed with the macro OS_LEVEL_GEOLOCATION_PERMISSION_SUPPORTED.

overlay_include_cbx
    Current value (from the default) = false

    Compiled on a board overlay that supports CBX

ozone_auto_platforms
    Current value (from the default) = true

    Select platforms automatically. Turn this off for manual control.

ozone_extra_path
    Current value (from the default) = "//build/config/ozone_extra.gni"

    Ozone extra platforms file path. Can be overridden to build out of
    tree ozone platforms.

ozone_platform
    Current value (from the default) = "x11"

ozone_platform_cast
    Current value (from the default) = false

    Compile the 'cast' platform.

ozone_platform_drm
    Current value (from the default) = false

    Compile the 'drm' platform.

ozone_platform_flatland
    Current value (from the default) = false

    Compile the 'flatland' platform.

ozone_platform_gbm
    Current value (from the default) = -1

    TODO(petermcneeley): Backwards compatiblity support for VM images.
    Remove when deprecated. (https://crbug.com/1122009)

ozone_platform_headless
    Current value (from the default) = true

ozone_platform_wayland
    Current value (from the default) = true

ozone_platform_x11
    Current value (from the default) = true

page_info_use_internal_android_resources
    Current value (from the default) = false

partition_alloc_dcheck_always_on
    Current value (from the default) = false

    Enable PA_DCHECKs in PartitionAlloc in release mode.

partition_alloc_is_debug
    Current value (from the default) = false

    Debug configuration.

partition_alloc_optimized_debug
    Current value (from the default) = true

    Turns on compiler optimizations in PartitionAlloc in Debug build. If
    enabling PartitionAlloc-Everywhere in Debug build for tests in Debug build,
    since all memory allocations and deallocations are executed by non-optimized
    PartitionAlloc, chrome (including tests) will be much slower. This will
    cause debug trybots' timeouts. If we want to debug PartitionAlloc itself,
    use partition_alloc_optimized_debug=false. Otherwise, use
    partition_alloc_optimized_debug=true to enable optimized PartitionAlloc.

partition_alloc_realloc_growth_factor_mitigation
    Current value (from the default) = false

pdf_bundle_freetype
    Current value (from the default) = false

    Build PDFium either:
    1) When set to true, with a bundled FreeType, built from FreeType source
       code in //third_party/freetype and PDFium's FreeType configs in
       third_party/freetype/include.
    2) When set to false, use whatever FreeType target is defined in
       //build/config/freetype.

pdf_enable_click_logging
    Current value (from the default) = false

    Generate logging messages for click events that reach PDFium

pdf_enable_fontations
    Current value (from the default) = false

    Build PDFium with experimental Fontations library support.
    If enabled, coexists in build with FreeType library and the default font
    library is selectable at runtime.
    Note that Fontations requires Skia and Rust support.

pdf_enable_v8
    Current value (from the default) = true

    Build PDFium either with or without v8 support.

pdf_enable_xfa
    Current value (from the default) = true

    Build PDFium either with or without XFA Forms support.

pdf_enable_xfa_bmp
    Current value (from the default) = true

    If XFA, also support bmp codec. Ignored if not XFA.

pdf_enable_xfa_gif
    Current value (from the default) = true

    If XFA, also support gif codec. Ignored if not XFA.

pdf_enable_xfa_png
    Current value (from the default) = true

    If XFA, also support png codec. Ignored if not XFA.

pdf_enable_xfa_tiff
    Current value (from the default) = true

    If XFA, also support tiff codec. Ignored if not XFA.

pdf_is_complete_lib
    Current value (from the default) = false

    Build a complete static library

pdf_is_standalone
    Current value (from the default) = false

    Build PDFium standalone. Now only controls whether the test binaries
    are built. Most logic is conditioned by build_with_chromium.

pdf_use_partition_alloc
    Current value (from the default) = true

    Build PDFium against PartitionAlloc. When false, PDFium must build without
    requiring any PartitionAlloc headers or code to be present. When true,
    PDFium will use PartitionAlloc partitions to separate strings, scalars,
    etc. from other allocations. However, the use of PartitionAlloc for new or
    malloc is controlled by args in build_overrides/partition_alloc.gni.

pdf_use_skia
    Current value (from the default) = true

    Build PDFium to use Skia (experimental) for all PDFium graphics.
    If enabled, coexists in build with AGG graphics and the default
    renderer is selectable at runtime.

perfetto_build_with_android
    Current value (from the default) = false

    The Android blueprint file generator set this to true (as well as
    is_perfetto_build_generator). This is just about being built in the
    Android tree (AOSP and internal) and is NOT related with the target OS.
    In standalone Android builds and Chromium Android builds, this is false.

perfetto_enable_git_rev_version_header
    Current value (from the default) = false

perfetto_force_dcheck
    Current value (from the default) = ""

    Whether DCHECKs should be enabled or not. Values: "on" | "off" | "".
    By default ("") DCHECKs are enabled only:
    - If DCHECK_ALWAYS_ON is defined (which is mainly a Chromium-ism).
    - On debug builds (i.e. if NDEBUG is NOT defined) but only in Chromium,
      Android and standalone builds.
    - On all other builds (e.g., SDK) it's off regardless of NDEBUG (unless
      DCHECK_ALWAYS_ON is defined).
    See base/logging.h for the implementation of all this.

perfetto_force_dlog
    Current value (from the default) = "off"

    Whether DLOG should be enabled on debug builds (""), all builds ("on"), or
    none ("off"). We disable it by default for embedders to avoid spamming their
    console.

perfetto_thread_safety_annotations
    Current value (from the default) = false

perfetto_use_pkgconfig
    Current value (from the default) = false

    Used by CrOS builds. Uses pkg-config to determine the appropriate flags
    for including and linking system libraries.
      set `host_pkg_config` to the `BUILD_PKG_CONFIG` and
      set `pkg_config` to the target `PKG_CONFIG`.
    Note: that if this is enabled `perfetto_use_system_protobuf` should be also.

perfetto_use_system_protobuf
    Current value (from the default) = false

    Used by CrOS system builds. Uses the system version of protobuf
    from /usr/include instead of the hermetic one.

perfetto_use_system_sqlite
    Current value (from the default) = false

    Used by CrOS system builds. Uses the system version of sqlite
    from /usr/include instead of the hermetic one.

perfetto_use_system_zlib
    Current value (from the default) = false

perfetto_verbose_logs_enabled
    Current value (from the default) = false

pgo_data_path
    Current value (from the default) = ""

    When using chrome_pgo_phase = 2, read profile data from this path.

pgo_gs_bucket
    Current value (from the default) = ""

pgo_gs_bucket_path
    Current value (from the default) = ""

pgo_override_filename
    Current value (from the default) = ""

    Flags to override the pgo profile with a freshly created one (newer than
    the sha1 in the repo).

pkg_config
    Current value (from the default) = ""

    A pkg-config wrapper to call instead of trying to find and call the right
    pkg-config directly. Wrappers like this are common in cross-compilation
    environments.
    Leaving it blank defaults to searching PATH for 'pkg-config' and relying on
    the sysroot mechanism to find the right .pc files.

platform_has_optional_hevc_decode_support
    Current value (from the default) = true

platform_has_optional_hevc_encode_support
    Current value (from the default) = false

plus_addresses_use_internal_android_resources
    Current value (from the default) = false

print_unsymbolized_stack_traces
    Current value (from the default) = false

    Stack traces will not include function names. Instead they will contain
    file and offset information that can be used with
    tools/valgrind/asan/asan_symbolize.py. By piping stderr through this script,
    and also enabling symbol_level = 2, you can get much more detailed stack
    traces with file names and line numbers, even in non-ASAN builds.

produce_v8_compile_hints
    Current value (from the default) = true

    Enable V8 to produce hints regarding which functions to compile eagerly.

proprietary_codecs
    Current value = true
    Overridden from the default = false

    Enables proprietary codecs and demuxers; e.g. H264, AAC, MP3, and MP4.
    We always build Google Chrome and Chromecast with proprietary codecs.
   
    Note: this flag is used by WebRTC which is DEPSed into Chrome. Moving it
    out of //build will require using the build_overrides directory.
   
    Do not add any other conditions to the following line.
   
    TODO(crbug.com/1314528): Remove chromecast-related conditions and force
    builds to explicitly specify this.

protobuf_abseil_dir
    Current value (from the default) = "//third_party/abseil-cpp"

raw_ptr_zero_on_construct
    Current value (from the default) = true

raw_ptr_zero_on_destruct
    Current value (from the default) = false

raw_ptr_zero_on_move
    Current value (from the default) = true

rbe_bin_dir
    Current value (from the default) = ""

    Deprecated: Please use reclient_bin_dir instead.

rbe_cfg_dir
    Current value (from the default) = ""

    Deprecated: Please use reclient_cfg_dir instead.

rbe_cros_cc_wrapper
    Current value (from the default) = ""

    Deprecated: Please use reclient_cros_cc_wrapper instead.

rbe_exec_root
    Current value (from the default) = "/mnt/spare/CEF/chromium_git/chromium/src/"

    Execution root - this should be the root of the source tree.
    This is defined here instead of in the config file because
    this will vary depending on where the user has placed the
    chromium source on their system.

reclient_bin_dir
    Current value (from the default) = "../../buildtools/reclient"

reclient_cc_cfg_file
    Current value (from the default) = ""

reclient_cfg_dir
    Current value (from the default) = "//buildtools/reclient_cfgs"

reclient_cros_cc_wrapper
    Current value (from the default) = ""

reclient_py_cfg_file
    Current value (from the default) = ""

regenerate_x11_protos
    Current value (from the default) = false

register_fuzztests_in_test_suites
    Current value (from the default) = true

remoting_internal
    Current value (from the default) = false

    You can set the variable 'remoting_internal' to true to include Google-
    internal sources and implementations in a developer build. Setting this
    variable explicitly to true will cause your build to fail if the
    //remoting/internal directory is not present in your checkout.

remoting_webrtc_verbose_logging
    Current value (from the default) = false

    Enabling this will cause WebRTC's LS_INFO and LS_VERBOSE (level 1)
    messages to appear in the debug log output. Note that WebRTC's
    "VERBOSE1" messages are very spammy and it is impossible to
    separately filter LS_INFO and LS_VERBOSE messages (see
    third_party/webrtc_overrides/rtc_base/). So a separate GN option is
    provided here, to allow this logging to be quickly enabled for Debug
    or Release builds.

removed_rust_stdlib_libs
    Current value (from the default) = []

    Any removed std rlibs in your Rust toolchain, relative to the standard
    Rust toolchain. Typically used with 'rust_sysroot_absolute'

restricted_traces_outside_of_apk
    Current value (from the default) = false

root_extra_deps
    Current value (from the default) = []

    A list of extra dependencies to add to the root target. This allows a
    checkout to add additional targets without explicitly changing any checked-
    in files.

rtc_allow_deprecated_namespaces
    Current value (from the default) = true

    When true allows exports from deprecated namespaces.
    This will be set to false on Jun 23 2025. See bugs.webrtc.org/42232595
    for details.

rtc_audio_device_plays_sinus_tone
    Current value (from the default) = false

    When set to true, replace the audio output with a sinus tone at 440Hz.
    The ADM will ask for audio data from WebRTC but instead of reading real
    audio samples from NetEQ, a sinus tone will be generated and replace the
    real audio samples.

rtc_build_dcsctp
    Current value (from the default) = true

    Enable the dcsctp backend for DataChannels and related unittests

rtc_build_examples
    Current value (from the default) = true

    Set this to false to skip building examples.

rtc_build_json
    Current value (from the default) = true

    Disable these to not build components which can be externally provided.

rtc_build_libsrtp
    Current value (from the default) = true

rtc_build_libvpx
    Current value (from the default) = true

rtc_build_opus
    Current value (from the default) = true

rtc_build_ssl
    Current value (from the default) = true

rtc_build_tools
    Current value (from the default) = true

    Set this to false to skip building tools.

rtc_build_with_neon
    Current value (from the default) = false

rtc_builtin_ssl_root_certificates
    Current value (from the default) = true

    Setting this to false will require the API user to pass in their own
    SSLCertificateVerifier to verify the certificates presented from a
    TLS-TURN server. In return disabling this saves around 100kb in the binary.

rtc_common_public_deps
    Current value = ["//base"]
    Overridden from the default = []

    Embedders can define dependencies needed by WebRTC. Dependencies can be
    configs or targets. This can be defined in their `.gn` file.
   
    In practise, this is use by Chromium: Targets from
    `//third_party/webrtc_overrides` are depending on Chrome's `//base`, but
    WebRTC does not declare its public dependencies. See webrtc:8603. Instead
    WebRTC is using a global common dependencies.

rtc_disable_check_msg
    Current value (from the default) = false

    Set this to true to disable detailed error message and logging for
    RTC_CHECKs.

rtc_disable_logging
    Current value (from the default) = false

    Set this to true to fully remove logging from WebRTC.

rtc_disable_metrics
    Current value (from the default) = false

    Set this to true to disable webrtc metrics.

rtc_disable_trace_events
    Current value (from the default) = false

    Set this to true to disable trace events.

rtc_dlog_always_on
    Current value (from the default) = false

    Setting this to true, will make RTC_DLOG() expand to log statements instead
    of being removed by the preprocessor.
    This is useful for example to be able to get RTC_DLOGs on a release build.

rtc_enable_android_aaudio
    Current value (from the default) = false

    Experimental: enable use of Android AAudio which requires Android SDK 26 or above
    and NDK r16 or above.

rtc_enable_avx2
    Current value (from the default) = true

rtc_enable_external_auth
    Current value (from the default) = true

    Enable when an external authentication mechanism is used for performing
    packet authentication for RTP packets instead of libsrtp.

rtc_enable_google_benchmarks
    Current value (from the default) = true

    Enables additional build targets that rely on
    //third_party/google_benchmarks.

rtc_enable_grpc
    Current value (from the default) = true

    Enable gRPC used for negotiation in multiprocess tests

rtc_enable_objc_symbol_export
    Current value (from the default) = false

    Setting this to true will make RTC_OBJC_EXPORT expand to code that will
    manage symbols visibility. By default, Obj-C/Obj-C++ symbols are exported
    if C++ symbols are but setting this arg to true while keeping
    rtc_enable_symbol_export=false will only export RTC_OBJC_EXPORT
    annotated symbols.

rtc_enable_protobuf
    Current value (from the default) = true

    Enables the use of protocol buffers for debug recordings.

rtc_enable_sctp
    Current value (from the default) = true

    Set this to disable building with support for SCTP data channels.

rtc_enable_symbol_export
    Current value (from the default) = false

    Setting this to true will make RTC_EXPORT (see rtc_base/system/rtc_export.h)
    expand to code that will manage symbols visibility.

rtc_enable_win_wgc
    Current value (from the default) = false

    When set to true, a capturer implementation that uses the
    Windows.Graphics.Capture APIs will be available for use. This introduces a
    dependency on the Win 10 SDK v10.0.17763.0.

rtc_exclude_audio_processing_module
    Current value (from the default) = false

    Selects whether the audio processing module should be excluded.

rtc_exclude_field_trial_default
    Current value (from the default) = true

    When WebRTC is built as part of Chromium it should exclude the default
    implementation of field_trial unless it is building for NACL or
    Chromecast.

rtc_exclude_metrics_default
    Current value (from the default) = true

    Setting this to true will define WEBRTC_EXCLUDE_METRICS_DEFAULT which
    will tell the pre-processor to remove the default definition of symbols
    needed to use metrics. In that case a new implementation needs to be
    provided.

rtc_exclude_system_time
    Current value (from the default) = true

    Setting this to true will define WEBRTC_EXCLUDE_SYSTEM_TIME which
    will tell the pre-processor to remove the default definition of the
    SystemTimeNanos() which is defined in rtc_base/system_time.cc. In
    that case a new implementation needs to be provided.

rtc_include_builtin_audio_codecs
    Current value (from the default) = true

    When set to false, builtin audio encoder/decoder factories and all the
    audio codecs they depend on will not be included in libwebrtc.{a|lib}
    (they will still be included in libjingle_peerconnection_so.so and
    WebRTC.framework)

rtc_include_dav1d_in_internal_decoder_factory
    Current value (from the default) = true

    Includes the dav1d decoder in the internal decoder factory when set to true.

rtc_include_internal_audio_device
    Current value (from the default) = false

    Chromium uses its own IO handling, so the internal ADM is only built for
    standalone WebRTC.

rtc_include_opus
    Current value (from the default) = true

    Disable this to avoid building the Opus audio codec.

rtc_include_pulse_audio
    Current value (from the default) = false

    Excluded in Chromium since its prerequisites don't require Pulse Audio.

rtc_include_tests
    Current value (from the default) = false

    Set this to true to build the unit tests.
    Disabled when building with Chromium or Mozilla.

rtc_ios_use_opengl_rendering
    Current value (from the default) = false

    Determines whether OpenGL is available on iOS.

rtc_jsoncpp_root
    Current value (from the default) = "//third_party/jsoncpp/source/include"

    Used to specify an external Jsoncpp include path when not compiling the
    library that comes with WebRTC (i.e. rtc_build_json == 0).

rtc_libvpx_build_vp9
    Current value (from the default) = true

rtc_link_pipewire
    Current value (from the default) = false

    Set this to link PipeWire and required libraries directly instead of using the dlopen.

rtc_objc_prefix
    Current value (from the default) = ""

    If different from "", symbols exported with RTC_OBJC_EXPORT will be prefixed
    with this string.
    See the definition of RTC_OBJC_TYPE_PREFIX in the code.

rtc_opus_support_120ms_ptime
    Current value (from the default) = true

    Enable this if the Opus version upon which WebRTC is built supports direct
    encoding of 120 ms packets.

rtc_opus_variable_complexity
    Current value (from the default) = false

    Enable this to let the Opus audio codec change complexity on the fly.

rtc_prefer_fixed_point
    Current value (from the default) = false

    Selects fixed-point code where possible.

rtc_rusty_base64
    Current value (from the default) = true

    Enables an experimental rust version of base64 for building and testing.

rtc_sanitize_coverage
    Current value (from the default) = ""

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

rtc_ssl_root
    Current value (from the default) = ""

    Used to specify an external OpenSSL include path when not compiling the
    library that comes with WebRTC (i.e. rtc_build_ssl == 0).

rtc_strict_field_trials
    Current value (from the default) = ""

    When enabled, a run-time check will make sure that all field trial keys have
    been registered in accordance with the field trial policy, see
    g3doc/field-trials.md. The value can be set to the following:
   
     "dcheck": RTC_DCHECKs that the field trial has been registered. RTC_DCHECK
               must be enabled separately.
   
     "warn": RTC_LOGs a message with LS_WARNING severity if the field trial
             hasn't been registered.

rtc_system_openh264
    Current value (from the default) = false

    Use system OpenH264

rtc_use_absl_mutex
    Current value (from the default) = false

    Enable this flag to make webrtc::Mutex be implemented by absl::Mutex.

rtc_use_dummy_audio_file_devices
    Current value (from the default) = false

    By default, use normal platform audio support or dummy audio, but don't
    use file-based audio playout and record.

rtc_use_h264
    Current value (from the default) = true

rtc_use_h265
    Current value (from the default) = true

rtc_use_perfetto
    Current value (from the default) = false

    When true, include the Perfetto library.

rtc_use_pipewire
    Current value (from the default) = true

    Set this to use PipeWire on the Wayland display server.
    By default it's only enabled on desktop Linux (excludes ChromeOS) and
    only when using the sysroot as PipeWire is not available in older and
    supported Ubuntu and Debian distributions.

rtc_use_x11
    Current value (from the default) = true

    Set this to false to skip building code that requires X11.

rtc_use_x11_extensions
    Current value (from the default) = true

    Set this to false to skip building code that also requires X11 extensions
    such as Xdamage, Xfixes.

rtc_win_undef_unicode
    Current value (from the default) = false

    When set to true and in a standalone build, it will undefine UNICODE and
    _UNICODE (which are always defined globally by the Chromium Windows
    toolchain).
    This is only needed for testing purposes, WebRTC wants to be sure it
    doesn't assume /DUNICODE and /D_UNICODE but that it explicitly uses
    wide character functions.

runtime_call_stats_count_everything
    Current value (from the default) = false

rust_bindgen_root
    Current value (from the default) = "//third_party/rust-toolchain"

    Directory under which to find `bin/bindgen` (a `bin` directory containing
    the bindgen exectuable).

rust_sysroot_absolute
    Current value (from the default) = ""

    Chromium provides a Rust toolchain in //third_party/rust-toolchain.
   
    To use a custom toolchain instead, specify an absolute path to the root of
    a Rust sysroot, which will have a 'bin' directory and others. Commonly
    <home dir>/.rustup/toolchains/nightly-<something>-<something>

rust_toolchain_supports_nacl
    Current value (from the default) = false

    If you're using a Rust toolchain as specified by rust_sysroot_absolute,
    you can specify whether it supports nacl here.

rustc_version
    Current value (from the default) = ""

    If you're using a Rust toolchain as specified by rust_sysroot_absolute,
    set this to the output of `rustc -V`. Changing this string will cause all
    Rust targets to be rebuilt, which allows you to update your toolchain and
    not break incremental builds.

safe_browsing_mode
    Current value (from the default) = 1

safe_browsing_use_unrar
    Current value (from the default) = true

    Allows building without //third_party/unrar included, for license reasons

sample_profile_is_accurate
    Current value (from the default) = false

    Whether we should consider the profile we're using to be accurate. Accurate
    profiles have the benefit of (potentially substantial) binary size
    reductions, by instructing the compiler to optimize cold and uncovered
    functions heavily for size. This often comes at the cost of performance.

sanitizer_coverage_allowlist
    Current value (from the default) = ""

    A sanitizer coverage allowlist, specifying exactly which
    files or symbol names should be instrumented, rather than all of them.

sanitizer_coverage_flags
    Current value (from the default) = ""

    Value for -fsanitize-coverage flag. Setting this causes
    use_sanitizer_coverage to be enabled.
    This flag is not used for libFuzzer (use_libfuzzer=true). Instead, we use:
        -fsanitize=fuzzer-no-link
    Default value when unset and use_fuzzing_engine=true:
        trace-pc-guard
    Default value when unset and use_sanitizer_coverage=true:
        trace-pc-guard,indirect-calls

save_reproducers_on_lld_crash
    Current value (from the default) = false

    If true, linker crashes will be rerun with `--reproduce` which causes
    a reproducer file to be saved.

shim_supports_sized_dealloc
    Current value (from the default) = false

show_includes
    Current value (from the default) = false

    Enable -H, which prints the include tree during compilation.
    For use by tools/clang/scripts/analyze_includes.py

simple_template_names
    Current value (from the default) = true

    Use DWARF simple template names, with the following exceptions:
   
    * Windows is not supported as it doesn't use DWARF.
    * Apple platforms (e.g. MacOS, iPhone, iPad) aren't supported because xcode
      lldb doesn't have the needed changes yet.
    TODO(crbug.com/40244196): Remove if the upstream default ever changes.
   
    This greatly reduces the size of debug builds, at the cost of
    debugging information which is required by some specialized
    debugging tools.

skia_enable_skshaper
    Current value (from the default) = true

skia_enable_skshaper_tests
    Current value (from the default) = true

skia_use_dawn
    Current value (from the default) = true

skia_use_metal
    Current value (from the default) = false

    Enable experimental Skia Graphite Metal backend. Intended only for debugging
    on non-official developer builds on Mac and iOS Blink.

skip_buildtools_check
    Current value (from the default) = false

    Skip buildtools dependency checks (needed for ChromeOS).

smaller_partition_cookie
    Current value (from the default) = false

    This will change partition cookie size to 4B or 8B, whichever equivalent to
    size of InSlotMetadata. This option is useful for InSlotMetadata corruption
    investigation.
    TODO(crbug.com/371135823): Remove upon completion of investigation.

strip_debug_info
    Current value (from the default) = false

    Android-only: Strip the debug info of libraries within lib.unstripped to
    reduce size. As long as symbol_level > 0, this will still allow stacks to be
    symbolized.

structured_metrics_debug_enabled
    Current value (from the default) = true

structured_metrics_enabled
    Current value (from the default) = true

subpixel_font_rendering_disabled
    Current value (from the default) = false

support_external_google_api_key
    Current value (from the default) = false

supports_llvm
    Current value (from the default) = true

supports_os_accessibility_service
    Current value (from the default) = false

    Used to determine if the Accessibility Service should run
    assistive technology features, or if the service is running
    in a browser embedded in an OS that already has those features.

supports_subzero
    Current value (from the default) = true

    Subzero doesn't support ARM64, LOONGARCH64, MIPS64, PPC64, and RISCV64 (only x86 and ARMv7a).

swiftshader_optimized_debug_build
    Current value (from the default) = true

    By default, build SwiftShader with optimizations enabled in debug
    for performance reasons. Set to false to build as unoptimized.

swiftshader_startup_dialog
    Current value (from the default) = false

    If enabled, debug builds on Windows will pop up a dialog when the
    SwiftShader DLL gets loaded, to facilitate attaching a debugger.

symbol_level
    Current value = 1
    Overridden from the default = -1

    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.
      -1 means auto-set according to debug/release and platform.

sync_user_agent_product
    Current value (from the default) = "Chrome"

    Controls the product part of the user agent calculated in sync_util.cc.

sysroot
    Current value (from the default) = ""

    The path of the sysroot for the current toolchain. If empty, default
    sysroot is used.

system_headers_in_deps
    Current value (from the default) = false

    Use -MD instead of -MMD for compiler commands. This is useful for tracking
    the comprehensive set of dependencies.  It's also required when building
    without the sysroot so that updates to system header files trigger a
    rebuild (when using the sysroot, the CR_SYSROOT_KEY define takes care of
    this already).

system_libdir
    Current value (from the default) = "lib"

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

target_cpu
    Current value = "x64"
    Overridden from the default = ""
      (Internally set; try `gn help target_cpu`.)

target_environment
    Current value (from the default) = ""

    Configure the environment for which to build. Could be either "device",
    "simulator" or "catalyst". Must be specified.

target_os
    Current value (from the default) = ""
      (Internally set; try `gn help target_os`.)

target_platform
    Current value (from the default) = "iphoneos"

    Valid values: "iphoneos" (default), "tvos", "watchos".
    Indicates the kind of iOS or iOS-based platform that is being targeted.
    Note that this value is available only when is_ios is also true (i.e. it
    cannot be used with the host toolchain).

target_rpath
    Current value (from the default) = ""

    If non empty, rpath of executables is set to this.
    If empty, default value is used.

target_sysroot
    Current value (from the default) = ""

    The path of the sysroot that is applied when compiling using the target
    toolchain.

target_sysroot_dir
    Current value (from the default) = "//build/linux"

    The path to directory containing linux sysroot images.

temporal_pgo_profile
    Current value (from the default) = false

    Whether to enable temporal pgo or not (experimental).

tests_have_location_tags
    Current value (from the default) = true

    Some component repos (e.g. ANGLE) import //testing but do not have
    "location_tags.json", and so we don't want to try and upload the tags
    for their tests.
    And, some build configs may simply turn off generation altogether.

thin_lto_enable_cache
    Current value (from the default) = true

    Whether to enable thin lto incremental builds.
    See: https://clang.llvm.org/docs/ThinLTO.html#incremental
    The cache can lead to non-determinism: https://crbug.com/1486045

thin_lto_enable_optimizations
    Current value (from the default) = true

tint_build_benchmarks
    Current value (from the default) = true

tint_build_cmds
    Current value (from the default) = false

tint_build_glsl_validator
    Current value (from the default) = true

tint_build_glsl_writer
    Current value (from the default) = true

tint_build_hlsl_writer
    Current value (from the default) = true

tint_build_ir_binary
    Current value (from the default) = true

tint_build_msl_writer
    Current value (from the default) = true

tint_build_syntax_tree_writer
    Current value (from the default) = false

tint_build_tintd
    Current value (from the default) = false

tint_build_unittests
    Current value (from the default) = true

tint_enable_ir_validation
    Current value (from the default) = false

tint_glslang_dir
    Current value (from the default) = "//third_party/glslang/src"

tint_has_protobuf
    Current value (from the default) = true

tint_lpm_dir
    Current value (from the default) = "//third_party/libprotobuf-mutator"

tint_src_dir
    Current value (from the default) = "//third_party/dawn/src/tint"

toolchain_allows_use_partition_alloc_as_malloc
    Current value (from the default) = true

    If false, the toolchain overrides `use_partition_alloc_as_malloc` in
    PartitionAlloc, to allow use of the system allocator.

toolchain_for_rust_host_build_tools
    Current value (from the default) = false

    Whether this toolchain is to be used for building host tools that are
    consumed during the build process. That includes proc macros and Cargo build
    scripts.

toolchain_supports_rust_thin_lto
    Current value (from the default) = true

    Whether artifacts produced by the Rust compiler can participate in ThinLTO.
   
    One important consideration is whether the linker uses the same LLVM
    version as `rustc` (i.e. if it can understand the LLVM-IR from the
    compilation artifacts produced by `rustc`).  In LaCrOS and ash builds this
    may not be true - see b/299483903.
   
    TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
    TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome

toolkit_views
    Current value (from the default) = true

    True means the UI is built using the "views" framework.

translate_genders
    Current value (from the default) = false

    pass the "--translate-genders" flag into GRIT to generate 4 translation
    files per locale ("", "_FEMININE", "_MASCULINE", "_NEUTER") instead of
    one.

treat_warnings_as_errors
    Current value (from the default) = true

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

use_afl
    Current value (from the default) = false

    Compile for fuzzing with AFL.

use_allocator_shim
    Current value = false
    Overridden from the default = true

    Causes all the allocations to be routed via allocator_shim.cc. Usually,
    the allocator shim will, in turn, route them to PartitionAlloc, but
    other allocators are also supported by the allocator shim.

use_alsa
    Current value (from the default) = true

use_amdgpu_minigbm
    Current value (from the default) = false

use_android_unwinder_v2
    Current value (from the default) = true

    Set to true to use the android unwinder V2 implementation.

use_arc_protected_media
    Current value (from the default) = false

    Indicates if the ChromeOS protected media functionality should also be
    utilized by HW video decoding for ARC.

use_asan_backup_ref_ptr
    Current value (from the default) = false

use_aura
    Current value (from the default) = true

    Indicates if Aura is enabled. Aura is a low-level windowing library, sort
    of a replacement for GDI or GTK.

use_av1_hw_decoder
    Current value (from the default) = true

    A platform that is capable of hardware av1 decoding.

use_base_test_suite
    Current value (from the default) = true

    On Android, use plain GTest.

use_blink
    Current value (from the default) = true

use_blink_extensions_chromeos
    Current value (from the default) = false

    If true, the experimental renderer extensions library will be used.

use_blink_extensions_webview
    Current value (from the default) = false

    If true, the WebView renderer extensions library will be used.
   
    Android WebView and Chrome on Android both use the same build configuration
    for Blink, and may use a common installation of the Blink libraries on a
    device. There is no precise concept of "is_webview". As such, Chrome on
    Android technically has the WebView extensions available in its version of
    Blink; however, the extensions are default-disabled. Chrome (and any other
    non-WebView products) should never attempt to enable the extensions at
    runtime.

use_bluez
    Current value (from the default) = true

use_bundled_fontconfig
    Current value (from the default) = true

use_bundled_mutter
    Current value (from the default) = false

    Checks if mutter must be compiled

use_bundled_weston
    Current value (from the default) = false

    Checks if Weston must be compiled

use_centipede
    Current value (from the default) = false

    Compile for fuzzing with centipede.
    See https://github.com/google/centipede

use_cfi_cast
    Current value (from the default) = false

    Enable checks for bad casts: derived cast and unrelated cast.
    TODO(krasin): remove this, when we're ready to add these checks by default.
    https://crbug.com/626794

use_cfi_diag
    Current value (from the default) = false

    Print detailed diagnostics when Control Flow Integrity detects a violation.

use_cfi_icall
    Current value (from the default) = true

use_cfi_recover
    Current value (from the default) = false

    Let Control Flow Integrity continue execution instead of crashing when
    printing diagnostics (use_cfi_diag = true).

use_chromeos_model_service
    Current value (from the default) = false

use_chromeos_protected_av1
    Current value (from the default) = false

    Indicates if ChromeOS protected media supports the AV1 codec. By default
    H.264, VP9 and HEVC are enabled if protected media is enabled; AV1 is
    optional.

use_chromeos_protected_media
    Current value (from the default) = false

    Indicates if ChromeOS protected media support exists. This is used
    to enable the CDM daemon in Chrome OS as well as support for
    encrypted content with HW video decoders.

use_clang_coverage
    Current value (from the default) = false

use_clang_profiling
    Current value (from the default) = false

use_clang_profiling_inside_sandbox
    Current value (from the default) = false

use_command_buffer
    Current value (from the default) = false

use_cppgc_clang_plugin
    Current value (from the default) = true

    V8 uses Chrome's blink-gc clang plugin for checking V8's internal cppgc
    usages. The plugin is not exhaustive but covers most common known pitfalls.

use_cras
    Current value (from the default) = false

    Override to dynamically link the cras (ChromeOS audio) library.

use_crash_key_stubs
    Current value (from the default) = false

    If set to true, this will stub out and disable the entire crash key system.

use_cros_sysroot_libs
    Current value (from the default) = false

use_cups
    Current value (from the default) = true

use_cups_ipp
    Current value (from the default) = true

    Enables the CUPS IPP printing backend.
    TODO(crbug.com/41003486): Remove this after CUPS PPD API calls are removed.

use_custom_libcxx
    Current value (from the default) = true

    Use in-tree libc++ (buildtools/third_party/libc++ and
    buildtools/third_party/libc++abi) instead of the system C++ library for C++
    standard library support.
   
    WARNING: Bringing your own C++ standard library is deprecated and will not
    be supported in the future. This flag will be removed.

use_custom_libcxx_for_host
    Current value (from the default) = true

    Use libc++ instead of stdlibc++ when using the host_cpu toolchain, even if
    use_custom_libcxx is false. This is useful for cross-compiles where a custom
    toolchain for the target_cpu has been set as the default toolchain, but
    use_custom_libcxx should still be true when building for the host.  The
    expected usage is to set use_custom_libcxx=false and
    use_custom_libcxx_for_host=true in the passed in buildargs.
   
    WARNING: Bringing your own C++ standard library is deprecated and will not
    be supported in the future. This flag will be removed.

use_custom_libunwind
    Current value (from the default) = false

    Use in-tree libunwind (buildtools/third_party/libunwind) instead of whatever
    system library provides unwind symbols (e.g. libgcc).

use_cxx17
    Current value (from the default) = false

    Allow projects that wish to stay on C++17 to override Chromium's default.
    TODO(crbug.com/40251117): evaluate removing this end of 2023

use_dawn
    Current value (from the default) = true

    Should Dawn support be compiled to back the WebGPU implementation?
    Also controls linking Dawn dependencies in such as SPIRV-Tools/SPIRV-Cross.

use_dbus
    Current value (from the default) = true

use_debug_fission
    Current value (from the default) = true

use_dummy_lastchange
    Current value (from the default) = false

use_dwarf5
    Current value (from the default) = false

    Enable DWARF v5.

use_evdev_gestures
    Current value (from the default) = false

    Support ChromeOS touchpad gestures with ozone.

use_external_fuzzing_engine
    Current value (from the default) = false

    Compile for fuzzing with an external engine (e.g., Grammarinator).

use_external_popup_menu
    Current value (from the default) = false

    Whether or not to use external popup menu.

use_exynos_minigbm
    Current value (from the default) = false

use_fake_screen_ai
    Current value (from the default) = false

    Screen AI library is not available for MSAN and UBSAN.

use_full_mte
    Current value (from the default) = false

    Use full MTE protection available by changing the feature flag default
    values. So sync mode on all processes. Also disables permissive MTE.
   
    This is meant to be used primarily on bots. It is much easier to override
    the feature flags using a binary flag instead of updating multiple bots's
    scripts to pass command line arguments.

use_full_pdb_paths
    Current value (from the default) = false

    Override this to put full paths to PDBs in Windows PE files. This helps
    windbg and Windows Performance Analyzer with finding the PDBs in some local-
    build scenarios. This is never needed for bots or official builds. Because
    this puts the output directory in the DLLs/EXEs it breaks build determinism.
    Bugs have been reported to the windbg/WPA teams and this workaround will be
    removed when they are fixed.

use_fuzzilli
    Current value (from the default) = false

    Compile for fuzzing with Fuzzilli.

use_fuzztest_wrapper
    Current value (from the default) = true

    Build individual_fuzztest_wrapper if use_fuzztest_wrapper is set.
    Some projects doesn't have //base and cannot build
    individual_fuzztest_wrapper.

use_gcm_from_platform
    Current value (from the default) = false

    Use native GCM driver for all non-Android builds. On Android, the platform
    includes GMS which provides the GCM client.

use_ghash
    Current value (from the default) = true

    Turn this on to use ghash feature of lld for faster debug link on Windows.
    http://blog.llvm.org/2018/01/improving-link-time-on-windows-with.html

use_gio
    Current value (from the default) = true

use_glib
    Current value (from the default) = true

use_gtk
    Current value = false
    Overridden from the default = true

    Whether or not we should use libgtk.

use_hashed_jni_names
    Current value (from the default) = false

    Use hashed symbol names to reduce JNI symbol overhead when not multiplexing.

use_icf
    Current value (from the default) = true

    Set to true to use icf, Identical Code Folding.

use_implicit_libcxx_modules
    Current value (from the default) = false

    Use implicit Clang header modules for libc++.
    This is experimental only (see crbug.com/543704).
    For details on the current state of modules in Chromium see
    https://chromium.googlesource.com/chromium/src/+/main/docs/modules.md

use_intel_minigbm
    Current value (from the default) = false

use_internal_autofill_patterns
    Current value (from the default) = false

    Normally, only branded builds use Google-internal sets of parsing patterns.
   
    Setting the variable 'use_internal_autofill_patterns' in args.gn overrides
    this default.

use_internal_isolated_origins
    Current value (from the default) = false

    Normally, only Google Chrome Android and some Fuchsia WebEngine builds will
    use a Google-internal list of isolated origins defined below.
    If other Fuchsia embedders are added, the associated logic may need to be
    updated. See crbug.com/1179087.
   
    You can set the variable 'use_internal_isolated_origins' to true to use this
    Google-internal list of isolated origins even in a developer build.  Setting
    this variable explicitly to true will cause your build to fail if the
    internal file is missing.

use_jacoco_coverage
    Current value (from the default) = false

    Enables JaCoCo Java code coverage.

use_jank_tracker_for_experiments
    Current value (from the default) = false

use_javascript_coverage
    Current value (from the default) = false

    Enables TypeScript/JavaScript code coverage.

use_kerberos
    Current value (from the default) = true

    Enable Kerberos authentication. It is disabled by default on iOS, Fuchsia
    and Chromecast, at least for now. This feature needs configuration
    (krb5.conf and so on).
    TODO(fuchsia): Enable kerberos on Fuchsia when it's implemented there.

use_layout_plugin
    Current value (from the default) = true

    Set to true to enable the clang layout plugin that help you to follow the
    layout-related restrictions during compilation.

use_libcxx_modules
    Current value (from the default) = false

    Use explicit Clang header modules for libc++.
    This is experimental only (see crbug.com/543704).
    For details on the current state of modules in Chromium see
    https://chromium.googlesource.com/chromium/src/+/main/docs/modules.md

use_libfuzzer
    Current value (from the default) = false

    Compile for fuzzing with LLVM LibFuzzer.
    See http://www.chromium.org/developers/testing/libfuzzer

use_libgav1_parser
    Current value (from the default) = true

use_libinput
    Current value (from the default) = false

    Determines if we're willing to link against libinput

use_libjpeg_turbo
    Current value (from the default) = true

    Uses libjpeg_turbo as the jpeg implementation. Has no effect if
    use_system_libjpeg is set.

use_libpci
    Current value (from the default) = true

    Use the PCI lib to collect GPU information on Linux.

use_linux_video_acceleration
    Current value (from the default) = true

use_lld
    Current value (from the default) = true

    Set to true to use lld, the LLVM linker.
    In late bring-up on macOS (see docs/mac_lld.md).
    Tentatively used on iOS.
    The default linker everywhere else.

use_llvm_libatomic
    Current value (from the default) = true

    Build atomic support from in-tree compiler-rt.
   
    Apple platforms provide the intrinsics from a different library, and the
    implementations in compiler-rt are outdated, so avoid building them in this
    case.
    We disable that on LibFuzzer builds because it breaks the libfuzzer
    runtime. See crbug.com/411020147.

use_locally_built_instrumented_libraries
    Current value (from the default) = false

    Use dynamic libraries instrumented by one of the sanitizers instead of the
    standard system libraries. Set this flag to build the libraries from source.

use_login_database_as_backend
    Current value (from the default) = true

    The legacy password store backend is supported on android but usually disabled
    in favor of a downstream implementation. Important: the support for this flag
    is planned to be removed in November 2024.

use_marvell_minigbm
    Current value (from the default) = false

use_mediatek_minigbm
    Current value (from the default) = false

use_meson_minigbm
    Current value (from the default) = false

use_message_port_core
    Current value (from the default) = false

    If true, forces cast_api_bindings::CreatePlatformMessagePortPair to use
    cast_message_port::CreateMessagePortPair as its implementation. Otherwise,
    uses one of the other types based on platform.

use_ml_inliner
    Current value (from the default) = false

    Set to true to enable using the ML inliner in LLVM. This currently only
    enables the ML inliner when targeting Android.
    Currently the ML inliner is only supported on linux hosts

use_mpris
    Current value (from the default) = true

    Enables Chromium implementation of the MPRIS D-Bus interface for controlling
    media playback. See ../README.md for details.

use_msm_minigbm
    Current value (from the default) = false

use_nss_certs
    Current value (from the default) = true

    True if NSS is used for certificate handling.

use_official_enterprise_connectors_api_keys
    Current value (from the default) = false

    You can set the variable 'use_official_enterprise_connectors_api_keys' to
    true to use the Google-internal file containing official API keys
    for enterprise connector partners even in a developer build.  Setting this
    variable explicitly to true will cause your build to fail if the
    internal file is missing.
   
    Note that official builds always behave as if the variable
    was explicitly set to true, i.e. they always use official keys,
    and will fail to build if the internal file is missing.

use_official_google_api_keys
    Current value (from the default) = ""

    Set the variable 'use_official_google_api_keys' to true
    to use the Google-internal file containing official API keys
    even in a developer build.  Setting this variable explicitly to
    true will cause the build to fail if the internal file is missing.
   
    Set the variable to false to not use the internal file, even for
    Chrome-branded builds or when it exists in your checkout.
   
    Leave it set to "" to have the variable implicitly set to true for
    Chrome-branded builds or if
    //src/google_apis/internal/google_chrome_api_keys.h is present and false
    otherwise.
    This does not apply to iOS builds, which use different mechanisms and always
    evaluate to use_official_google_api_keys=false.
    See https://crbug.com/1183709.

use_ozone
    Current value (from the default) = true

    Indicates if Ozone is enabled. Ozone is a low-level library layer for Linux
    that does not require X11.

use_pangocairo
    Current value (from the default) = true

use_partition_alloc
    Current value (from the default) = true

    Whether PartitionAlloc should be available for use or not.
    true makes PartitionAlloc linked to the executable or shared library and
    makes it available for use. It doesn't mean that the default allocator
    is PartitionAlloc, which is governed by |use_partition_alloc_as_malloc|.
   
    N.B. generally, embedders should look at this GN arg and at the
    corresponding buildflag to determine whether to interact with PA
    source at all (pulling the component in via GN, including headers,
    etc.). There is nothing stopping a lazy embedder from ignoring this
    and unconditionally using PA, but such a setup is inadvisable.
   
    In Chromium, this is set true, except:
   
    1.  On Cronet bots, because Cronet doesn't use PartitionAlloc at all,
        and doesn't wish to incur the library size increase (crbug.com/674570).
    2.  On NaCl (through this declaration), where PartitionAlloc doesn't
        build at all.

use_partition_alloc_as_malloc
    Current value = false
    Overridden from the default = false

    PartitionAlloc-Everywhere (PA-E). Causes allocator_shim.cc to route
    calls to PartitionAlloc, rather than some other platform allocator.

use_partition_cookie
    Current value (from the default) = false

use_perfetto_trace_processor
    Current value (from the default) = true

    Use Perfetto's trace processor for converting protobuf-encoded traces to
    the legacy JSON format in base::TraceLog.

use_platform_icu_alternatives
    Current value (from the default) = false

    Enables the use of ICU alternatives in lieu of ICU for the target toolchain.
    The flag is used for Cronet to reduce the size of the Cronet binary.

use_profi
    Current value (from the default) = false

    Enable Profi algorithm. Profi can infer block and edge counts.
    https://clang.llvm.org/docs/UsersManual.html#using-sampling-profilers
    TODO(crbug.com/1375958i:) Possibly enable this for Android too.

use_pulseaudio
    Current value (from the default) = true

use_qt5
    Current value = false
    Overridden from the default = true

use_qt6
    Current value = false
    Overridden from the default = true

use_radeon_minigbm
    Current value (from the default) = false

use_raw_ptr_asan_unowned_impl
    Current value (from the default) = false

    Use probe-on-destruct unowned ptr detection with ASAN.

use_raw_ptr_backup_ref_impl
    Current value (from the default) = false

    We want to use RawPtrBackupRefImpl as the raw_ptr<> implementation
    iff BRP support is enabled. However, for purpose of performance
    investigations we want to be able to control each separately.
   
    TEST ONLY! Don't touch unless you think you know what you're doing. Play
    with enable_backup_ref_ptr_support instead.

use_real_dbus_clients
    Current value (from the default) = false

    Instantiate real D-Bus clients instead of fakes.

use_reclient
    Current value (from the default) = false

    Set to true to use re-client.
    Set to false to use Siso's builtin RBE client.

use_relative_vtables_abi
    Current value (from the default) = false

    Use offsets rather than pointers in vtables in order to reduce the number of
    relocations. This is safe to enable only when all C++ code is built with the
    flag set to the same value.

use_remoteexec
    Current value (from the default) = false

    Set to true to enable remote executions.

use_rockchip_minigbm
    Current value (from the default) = false

use_rts
    Current value (from the default) = false

    Regression Test Selection (RTS) will use a ML model
    to predict what test cases can be excluded from a
    given test suite based on historical data when using
    a .filter file.

use_rtti
    Current value (from the default) = false

    Build with C++ RTTI enabled. Chromium builds without RTTI by default,
    but some sanitizers are known to require it, like CFI diagnostics
    and UBsan variants.

use_safe_libstdcxx
    Current value (from the default) = false

    In case the C++ standard library implementation used is libstdc++, then
    enable its own hardening checks. As we cannot determine in GN if libstdc++
    is used or not, by default enable it for Linux without the custom libc++.
   
    WARNING: Bringing your own C++ standard library is deprecated and will not
    be supported in the future. This flag will be removed.

use_sanitizer_configs_without_instrumentation
    Current value (from the default) = false

    When enabled, only relevant sanitizer defines are set, but compilation
    happens with no extra flags. This is useful when in component build
    enabling sanitizers only in some of the components.

use_sanitizer_coverage
    Current value (from the default) = false

use_siso
    Current value = false
    Overridden from the default = false

    Placeholder to allow having use_siso in args.gn file.
    Explicit `use_siso` in args.gn can override default.
    This is used only for autoninja (to dispatch siso or ninja),
    and for use_reclient's default.

use_sized_deallocation
    Current value (from the default) = false

    Enable C++14 sized global deallocation functions.
    Disabled by default because of binary size increase.
    TODO(crbug.com/345541122): investigate the fuchsia binary size increase.

use_static_angle
    Current value (from the default) = false

    Should ANGLE be linked statically?

use_swiftshader_with_subzero
    Current value (from the default) = true

    Subzero produces much smaller binaries, so always use it when available,
    except for MSan builds which only get Reactor code instrumented with LLVM.

use_synaptics_minigbm
    Current value (from the default) = false

use_sysroot
    Current value = true
    Overridden from the default = true

use_system_freetype
    Current value (from the default) = false

    Blink needs a recent and properly build-configured FreeType version to
    support OpenType variations, color emoji and avoid security bugs. By default
    we ship and link such a version as part of Chrome. For distributions that
    prefer to keep linking to the version the system, FreeType must be newer
    than version 2.7.1 and have color bitmap support compiled in. WARNING:
    System FreeType configurations other than as described WILL INTRODUCE TEXT
    RENDERING AND SECURITY REGRESSIONS.

use_system_harfbuzz
    Current value (from the default) = false

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

use_system_lcms2
    Current value (from the default) = false

    Don't build against bundled lcms2.

use_system_libdrm
    Current value = false
    Overridden from the default = false

    Controls whether the build should use the version of libdrm library shipped
    with the system. In release builds of Chrome OS we use the system version.
    Some Chromecast devices use this as well.

use_system_libffi
    Current value (from the default) = false

    Controls whether the build should use the version of libffi library shipped
    with the system. By default, we only use the system version on Chrome OS:
    on Linux, libffi must be statically linked to prevent a situation where the
    runtime version of libffi is different from the build-time version from the
    sysroot.

use_system_libjpeg
    Current value (from the default) = false

    Uses system libjpeg. If true, overrides use_libjpeg_turbo.

use_system_libopenjpeg2
    Current value (from the default) = false

    Don't build against bundled libopenjpeg2.

use_system_libpng
    Current value (from the default) = false

    Don't build against bundled libpng.

use_system_libsync
    Current value (from the default) = false

    Controls whether the build should use the version of libsync
    library shipped with the system. In release builds of Chrome OS we
    use the system version, but when building on dev workstations we
    bundle it because Ubuntu doesn't ship a usable version.

use_system_libtiff
    Current value (from the default) = false

    Don't build against bundled libtiff.

use_system_libwayland
    Current value (from the default) = false

    Controls whether the build should use the version of Wayland
    library shipped with the system or Chromium third_party.

use_system_minigbm
    Current value (from the default) = true

    Controls whether the build should use the version of minigbm library shipped
    with the system. In release builds of desktop Linux and Chrome OS we use the
    system version.

use_system_zlib
    Current value (from the default) = false

    Don't build against bundled zlib.

use_tegra_minigbm
    Current value (from the default) = false

use_text_section_splitting
    Current value (from the default) = false

    This argument is to control whether enabling text section splitting in the
    final binary. When enabled, the separated text sections with prefix
    '.text.hot', '.text.unlikely', '.text.startup' and '.text.exit' will not be
    merged to '.text' section. This allows us to identify the hot code section
    ('.text.hot') in the binary, which allows our data collection pipelines to
    more easily identify code that we assume to be hot/cold that doesn't turn
    out to be such in the field.

use_thin_lto
    Current value = true
    Overridden from the default = true

use_udev
    Current value (from the default) = true

    libudev usage. This currently only affects the content layer.

use_unofficial_version_number
    Current value (from the default) = true

use_v4l2_codec
    Current value (from the default) = false

    Indicates if Video4Linux2 codec is used. This is used for all CrOS
    platforms which have v4l2 hardware encoder / decoder.

use_v4lplugin
    Current value (from the default) = false

    Indicates if V4L plugin is used.

use_v8_context_snapshot
    Current value (from the default) = true

use_vaapi
    Current value (from the default) = true

    Indicates if VA-API-based hardware acceleration is to be used. This
    is typically the case on x86-based ChromeOS devices.
    VA-API should also be compiled by default on x11/wayland linux devices
    using x86/x64.

use_vaapi_image_codecs
    Current value (from the default) = false

    VA-API also allows decoding of images, but we don't want to use this
    outside of chromeos, even if video decoding is enabled.

use_vc4_minigbm
    Current value (from the default) = false

use_viz_debugger
    Current value (from the default) = false

    Indicates if the Viz Debugger is enabled. This is disabled by default on
    official builds due to security and performance reasons. test
    crbug/1466891 Fuchia threading model does not play well with the
    visual debugger multithreaded submission mechanism.

use_wayland_gbm
    Current value (from the default) = true

    Checks if Wayland must be compiled with dmabuf/gbm feature, which allows a
    multi-process hardware accelerated mode.

use_webaudio_pffft
    Current value (from the default) = true

    If true, use PFFFT for WebAudio FFT support. Do not use for Mac because the
    FFT library there is much faster.

use_wuffs_gif_parser
    Current value (from the default) = true

use_xkbcommon
    Current value (from the default) = true

using_mismatched_sample_profile
    Current value (from the default) = false

    Whether we're using a sample profile collected on an architecture different
    than the one we're compiling for.
   
    It's currently not possible to collect AFDO profiles on anything but
    x86{,_64}.

v8_advanced_bigint_algorithms
    Current value (from the default) = true

    Enable advanced BigInt algorithms, costing about 10-30 KB binary size
    depending on platform. Disabled on Android to save binary size.

v8_allocation_site_tracking
    Current value (from the default) = true

    Enable global allocation site tracking.

v8_android_log_stdout
    Current value (from the default) = false

    Print to stdout on Android.

v8_annotate_torque_ir
    Current value (from the default) = false

    Generate comments describing the Torque intermediate representation.

v8_array_buffer_internal_field_count
    Current value (from the default) = 0

    Sets the number of internal fields on array buffer objects.

v8_array_buffer_view_internal_field_count
    Current value (from the default) = 0

    Sets the number of internal fields on array buffer view objects.

v8_builtins_profiling_log_file
    Current value (from the default) = "default"

    Provides the given V8 log file as an input to mksnapshot, where it can be
    used for profile-guided optimization of builtins.
   
    To do profile-guided optimizations of builtins:
    1. Build with v8_enable_builtins_profiling = true
    2. Run your chosen workload with the --turbo-profiling-output flag.
       For Chrome, the invocation might look like this:
         chrome --no-sandbox --disable-extensions
           --js-flags="--turbo-profiling-output=v8.builtins.pgo"
           "http://localhost/test-suite"
    3. Run tools/builtins-pgo/get_hints.py to produce the branch hints,
       selecting min_count and threshold_ratio as you wish.
    4. Optionally repeat steps 2-3 for additional workloads, and use
       tools/builtins-pgo/combine_hints.py to combine the hints produced in
       step 3 into a single file.
    5. Build again with v8_builtins_profiling_log_file set to the file created
       in step 3 or 4.

v8_can_use_fpu_instructions
    Current value (from the default) = true

    Similar to vfp but on MIPS.

v8_check_header_includes
    Current value (from the default) = false

    Check that each header can be included in isolation (requires also
    setting the "check_v8_header_includes" gclient variable to run a
    specific hook).

v8_code_comments
    Current value (from the default) = ""

    Allow runtime-enabled code comments (with --code-comments). Enabled by
    default in debug builds.
    Sets -DV8_CODE_COMMENTS

v8_control_flow_integrity
    Current value (from the default) = false

    Enable control-flow integrity features, such as pointer authentication for
    ARM64. Enable it by default for simulator builds and when native code
    supports it as well. On Mac, control-flow integrity does not work so we
    avoid enabling it when using the simulator.

v8_correctness_fuzzer
    Current value (from the default) = false

    Includes files needed for correctness fuzzing.

v8_current_cpu
    Current value (from the default) = "x64"

    This argument is declared here so that it can be overridden in toolchains.
    It should never be explicitly set by the user.

v8_custom_deps
    Current value (from the default) = ""

    Dynamically set an additional dependency from v8/custom_deps.

v8_dcheck_always_on
    Current value (from the default) = false

v8_depend_on_icu_data_file
    Current value (from the default) = true

    Remote builds require an explicit dependency on icudat, but
    this breaks locally building V8 with ICU support when the file
    isn't present, which some embedders rely on. This option controls
    the explicit dependency and allows the build to complete.

v8_deprecation_warnings
    Current value (from the default) = true

    Enable compiler warnings when using V8_DEPRECATED apis.

v8_dict_property_const_tracking
    Current value (from the default) = false

    Experimental feature for tracking constness of properties in non-global
    dictionaries. Enabling this also always keeps prototypes in dict mode,
    meaning that they are not switched to fast mode.
    Sets -DV8_DICT_PROPERTY_CONST_TRACKING

v8_disable_write_barriers
    Current value (from the default) = false

    Disable write barriers when GCs are non-incremental and
    heap has single generation.

v8_drumbrake_bounds_checks
    Current value (from the default) = false

v8_embed_script
    Current value (from the default) = ""

    Embeds the given script into the snapshot.

v8_embedder_string
    Current value (from the default) = ""

    Allows the embedder to add a custom suffix to the version string.

v8_enable_31bit_smis_on_64bit_arch
    Current value (from the default) = false

v8_enable_allocation_folding
    Current value (from the default) = true

    Enable allocation folding globally (sets -DV8_ALLOCATION_FOLDING).
    When it's disabled, the --turbo-allocation-folding runtime flag will be ignored.

v8_enable_atomic_object_field_writes
    Current value (from the default) = ""

    Sets -DV8_ATOMIC_OBJECT_FIELD_WRITES and turns all field write operations
    into relaxed atomic operations.

v8_enable_backtrace
    Current value (from the default) = ""

    Support for backtrace_symbols on linux.

v8_enable_black_allocated_pages
    Current value (from the default) = ""

    Black allocate objects on separate pages.

v8_enable_builtin_jump_table_switch
    Current value (from the default) = true

v8_enable_builtins_frame_elision
    Current value (from the default) = true

    Enable frame elision for builtins.

v8_enable_builtins_optimization
    Current value (from the default) = ""

    Includes profiles to optimize builtins.

v8_enable_builtins_profiling
    Current value (from the default) = false

    Runs mksnapshot with --turbo-profiling. After building in this
    configuration, any subsequent run of d8 will output information about usage
    of basic blocks in builtins.

v8_enable_builtins_profiling_verbose
    Current value (from the default) = false

    Runs mksnapshot with --turbo-profiling-verbose. After building in this
    configuration, any subsequent run of d8 will output information about usage
    of basic blocks in builtins, including the schedule and disassembly of all
    used builtins.

v8_enable_builtins_reordering
    Current value (from the default) = true

    This build flag is used to control whether reorder builtins according to
    the call graph with C3 algorithm based builtin PGO profiling.

v8_enable_cet_ibt
    Current value (from the default) = false

    Emit CET IBT landing pad instructions in JIT generated code (experimental).

v8_enable_cet_shadow_stack
    Current value (from the default) = false

    Change code emission and runtime features to be CET shadow-stack compliant
    (incomplete and experimental).

v8_enable_concurrent_marking
    Current value (from the default) = true

    Controls the default value of v8_enable_concurrent_marking_state. See the
    default setting code below.

v8_enable_concurrent_mksnapshot
    Current value (from the default) = true

    Enable using multiple threads to build builtins in mksnapshot.

v8_enable_continuation_preserved_embedder_data
    Current value (from the default) = true

    Allow embedder data to be saved on continuations. Used to support
    TaskAttribution and `scheduler.yield()`.
    The flag enables disabling the feature, to test this data's overhead.

v8_enable_debug_code
    Current value (from the default) = ""

    Allow runtime-enabled debug code (with --debug-code). Enabled by default in
    debug builds.
    Sets -DV8_ENABLE_DEBUG_CODE

v8_enable_debugging_features
    Current value (from the default) = false

    Turns on all V8 debug features. Enables running V8 in a pseudo debug mode
    within a release Chrome.

v8_enable_direct_handle
    Current value (from the default) = false

    Use direct pointers in handles (v8::internal::Handle and v8::Local).

v8_enable_disassembler
    Current value (from the default) = ""

    Sets -DENABLE_DISASSEMBLER.

v8_enable_drumbrake
    Current value (from the default) = false

    WebAssembly interpreter (DrumBrake)  build flag.

v8_enable_drumbrake_tracing
    Current value (from the default) = false

    Enable Wasm interpreter tracing.

v8_enable_etw_stack_walking
    Current value (from the default) = false

    Sets -DV8_ENABLE_ETW_STACK_WALKING. Enables ETW Stack Walking

v8_enable_experimental_tsa_builtins
    Current value (from the default) = false

    Use the experimental TSA-based definition for some builtins.

v8_enable_experimental_undefined_double
    Current value (from the default) = false

    Use the experimental encoding of undefined in double values.

v8_enable_extensible_ro_snapshot
    Current value (from the default) = true

    Whether custom embedder snapshots may extend (= allocate new objects in)
    ReadOnlySpace.

v8_enable_external_code_space
    Current value (from the default) = ""

    Enable support for external code range relative to the pointer compression
    cage.
    Sets -DV8_EXTERNAL_CODE_SPACE

v8_enable_fast_mksnapshot
    Current value (from the default) = false

    Enable fast mksnapshot runs.

v8_enable_fast_torque
    Current value (from the default) = ""

    Optimize code for Torque executable, even during a debug build.

v8_enable_future
    Current value (from the default) = false

    Sets -DV8_ENABLE_FUTURE.

v8_enable_fuzztest
    Current value (from the default) = false

    Enable FuzzTest

v8_enable_gdbjit
    Current value = false
    Overridden from the default = true

v8_enable_global_handle_zapping
    Current value (from the default) = ""

    Sets -DENABLE_GLOBAL_HANDLE_ZAPPING.  By default it is enabled if
    v8_enable_handle_zapping is enabled.

v8_enable_google_benchmark
    Current value (from the default) = false

v8_enable_handle_zapping
    Current value (from the default) = false

    Sets the default for v8_enable_local_handle_zapping and
    v8_enable_global_handle_zapping.

v8_enable_heap_snapshot_verify
    Current value (from the default) = ""

    Enable runtime verification of heap snapshots produced for devtools.

v8_enable_hugepage
    Current value (from the default) = false

    Sets -DENABLE_HUGEPAGE

v8_enable_i18n_support
    Current value (from the default) = true

    Enable ECMAScript Internationalization API. Enabling this feature will
    add a dependency on the ICU library.

v8_enable_ignition_dispatch_counting
    Current value (from the default) = false

    Sets -DV8_IGNITION_DISPATCH_COUNTING.
    Enables counting frequencies of bytecode dispatches. After building in this
    configuration, subsequent runs of d8 can output frequencies for each pair
    of (current, next) bytecode instructions executed if you specify
    --trace-ignition-dispatches-output-file, or can generate a JS object with
    those frequencies if you run with --expose-ignition-statistics and call the
    extension function getIgnitionDispatchCounters().

v8_enable_javascript_promise_hooks
    Current value (from the default) = false

    Allow for JS promise hooks (instead of just C++).

v8_enable_lazy_source_positions
    Current value (from the default) = true

    Enable lazy source positions by default.

v8_enable_leaptiering
    Current value (from the default) = true

    Enable leaptiering

v8_enable_lite_mode
    Current value (from the default) = false

    Lite mode disables a number of performance optimizations to reduce memory
    at the cost of performance.
    Sets -DV8_LITE_MODE.

v8_enable_local_handle_zapping
    Current value (from the default) = ""

    Sets -DENABLE_LOCAL_HANDLE_ZAPPING, which is more expensive than just
    the global handles.  By default it is enabled if v8_enable_handle_zapping
    is enabled.

v8_enable_local_off_stack_check
    Current value (from the default) = false

    Check for off-stack allocated local handles.

v8_enable_maglev
    Current value (from the default) = ""

    Enable the Maglev compiler.
    Sets -dV8_ENABLE_MAGLEV

v8_enable_maglev_graph_printer
    Current value (from the default) = false

    Enable Maglev's graph printer.
    Sets -DV8_ENABLE_MAGLEV_GRAPH_PRINTER.

v8_enable_map_packing
    Current value (from the default) = false

    Enable map packing & unpacking (sets -DV8_MAP_PACKING).

v8_enable_memory_accounting_checks
    Current value (from the default) = ""

    Sets -DV8_ENABLE_MEMORY_ACCOUNTING_CHECKS

v8_enable_memory_corruption_api
    Current value (from the default) = false

    Enable the memory corruption API. Useful for testing the sandbox.
    The memory corruption API is only exposed to JavaScript if sandbox testing
    mode is enabled at runtime, for example via --sandbox-fuzzing.
    WARNING This will enable builtins that (by design) cause memory corruption.
    Sets -DV8_ENABLE_MEMORY_CORRUPTION_API

v8_enable_memory_sealing
    Current value (from the default) = false

    Use memory sealing to protect various global memory mappings for CFI
    (experimental).
    TODO(sroettger): enable by default once we have bot support for testing.

v8_enable_object_print
    Current value (from the default) = ""

    Sets -DOBJECT_PRINT.

v8_enable_partition_alloc
    Current value (from the default) = false

v8_enable_pointer_compression
    Current value (from the default) = ""

    Enable pointer compression (sets -dV8_COMPRESS_POINTERS).

v8_enable_pointer_compression_8gb
    Current value (from the default) = ""

    Enables pointer compression for 8GB heaps.
    Sets -DV8_COMPRESS_POINTERS_8GB.

v8_enable_pointer_compression_shared_cage
    Current value (from the default) = ""

v8_enable_precise_zone_stats
    Current value (from the default) = false

    Experimental feature for collecting per-class zone memory stats.
    Requires use_rtti = true

v8_enable_private_mapping_fork_optimization
    Current value (from the default) = false

    Sets -DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION.
   
    This flag speeds up the performance of fork/execve on Linux systems for
    embedders which use it (like Node.js). It works by marking the pages that
    V8 allocates as MADV_DONTFORK. Without MADV_DONTFORK, the Linux kernel
    spends a long time manipulating page mappings on fork and exec which the
    child process doesn't generally need to access.
   
    See v8:7381 for more details.

v8_enable_regexp_interpreter_threaded_dispatch
    Current value (from the default) = true

    Use token threaded dispatch for the regular expression interpreter.
    Use switch-based dispatch if this is false

v8_enable_runtime_call_stats
    Current value (from the default) = false

    Enable runtime call stats.

v8_enable_sandbox
    Current value (from the default) = ""

    Enable the V8 sandbox.
    Sets -DV8_ENABLE_SANDBOX.

v8_enable_sandbox_hardware_support
    Current value (from the default) = false

    Enable experimental hardware support for the V8 sandbox if available.
    Sets -DV8_ENABLE_SANDBOX_HARDWARE_SUPPORT

v8_enable_short_builtin_calls
    Current value (from the default) = ""

    Enable short builtins call instruction sequences by un-embedding builtins.
    Sets -DV8_SHORT_BUILTIN_CALLS

v8_enable_single_generation
    Current value (from the default) = ""

    Redirect allocation in young generation so that there will be
    only one single generation.

v8_enable_slow_dchecks
    Current value (from the default) = false

    Enable slow dchecks.

v8_enable_slow_tracing
    Current value (from the default) = false

    Enable slow tracing, e.g., tracing on every instruction or Turbofan node.
    Sets -DV8_ENABLE_SLOW_TRACING.

v8_enable_snapshot_code_comments
    Current value (from the default) = false

    Enable code comments for builtins in the snapshot (impacts performance).
    This also enables v8_code_comments.

v8_enable_snapshot_compression
    Current value (from the default) = false

v8_enable_snapshot_native_code_counters
    Current value (from the default) = ""

    Enable native counters from the snapshot (impacts performance, sets
    -DV8_SNAPSHOT_NATIVE_CODE_COUNTERS).
    This option will generate extra code in the snapshot to increment counters,
    as per the --native-code-counters flag.

v8_enable_sparkplug
    Current value (from the default) = ""

    Enable Sparkplug
    Sets -DV8_ENABLE_SPARKPLUG.

v8_enable_static_roots
    Current value (from the default) = ""

    Use pre-generated static root pointer values from static-roots.h.

v8_enable_static_roots_generation
    Current value (from the default) = false

    Mode used by gen-static-roots.py to have a heap layout which is identical
    to when v8_enable_static_roots is enabled.

v8_enable_sticky_mark_bits
    Current value (from the default) = false

    Use sticky mark-bits for separating object generations.

v8_enable_swiss_name_dictionary
    Current value (from the default) = false

    Experimental feature that uses SwissNameDictionary instead of NameDictionary
    as the backing store for all dictionary mode objects.

v8_enable_system_instrumentation
    Current value (from the default) = false

    Sets -DENABLE_SYSTEM_INSTRUMENTATION. Enables OS-dependent event tracing

v8_enable_temporal_support
    Current value (from the default) = true

v8_enable_test_features
    Current value (from the default) = ""

    Enables various testing features.

v8_enable_trace_baseline_exec
    Current value (from the default) = false

v8_enable_trace_feedback_updates
    Current value (from the default) = false

    Sets -DV8_TRACE_FEEDBACK_UPDATES.

v8_enable_trace_ignition
    Current value (from the default) = false

v8_enable_trace_maps
    Current value (from the default) = ""

    Sets -DV8_TRACE_MAPS.

v8_enable_trace_unoptimized
    Current value (from the default) = ""

    Sets -DV8_TRACE_UNOPTIMIZED.

v8_enable_turbofan
    Current value (from the default) = ""

    Enable the Turbofan compiler.
    Sets -dV8_ENABLE_TURBOFAN.

v8_enable_turboshaft_csa
    Current value (from the default) = false

    Enable Turboshaft CSA pipeline.

v8_enable_unconditional_write_barriers
    Current value (from the default) = false

    Ensure that write barriers are always used.
    Useful for debugging purposes.

v8_enable_v8_checks
    Current value (from the default) = ""

    Sets -DV8_ENABLE_CHECKS.

v8_enable_verify_csa
    Current value (from the default) = false

    Enable code-generation-time checking of types in the CodeStubAssembler.

v8_enable_verify_heap
    Current value (from the default) = ""

    Sets -DVERIFY_HEAP.

v8_enable_verify_predictable
    Current value (from the default) = false

    Sets -DVERIFY_PREDICTABLE

v8_enable_vtunejit
    Current value (from the default) = false

    Sets -DENABLE_VTUNE_JIT_INTERFACE.

v8_enable_vtunetracemark
    Current value (from the default) = false

    Sets -DENABLE_VTUNE_TRACEMARK.

v8_enable_wasm_deinterleaved_mem_ops
    Current value (from the default) = false

    Deinterleaving load support.

v8_enable_wasm_gdb_remote_debugging
    Current value (from the default) = false

    Enable WebAssembly debugging via GDB-remote protocol.

v8_enable_wasm_simd256_revec
    Current value (from the default) = false

    Enable 256-bit long vector re-vectorization pass in WASM compilation pipeline.

v8_enable_webassembly
    Current value (from the default) = ""

    Include support for WebAssembly. If disabled, the 'WebAssembly' global
    will not be available, and embedder APIs to generate WebAssembly modules
    will fail. Also, asm.js will not be translated to WebAssembly and will be
    executed as standard JavaScript instead.
    Sets -dV8_ENABLE_WEBASSEMBLY.

v8_enable_zone_compression
    Current value (from the default) = ""

    Enable V8 zone compression experimental feature.
    Sets -DV8_COMPRESS_ZONES.

v8_etw_guid
    Current value (from the default) = ""

    Sets the GUID for the ETW provider

v8_expose_public_symbols
    Current value (from the default) = ""

    Expose public symbols for native modules of Node.js and Electron. Default
    is false.

v8_expose_symbols
    Current value (from the default) = false

    Deprecated for v8_expose_public_symbols.

v8_function_arguments_caller_are_own_props
    Current value (from the default) = false

    Expose F.p.caller and .arguments as own properties.

v8_fuzzilli
    Current value (from the default) = false

    Add fuzzilli fuzzer support.

v8_gcmole
    Current value (from the default) = false

    Indicate if gcmole was fetched as a hook to make it available on swarming.

v8_generate_external_defines_header
    Current value (from the default) = false

    If enabled then macro definitions that are used in externally visible
    header files are placed in a separate header file v8-gn.h.

v8_has_valgrind
    Current value (from the default) = false

    Indicate if valgrind was fetched as a custom deps to make it available on
    swarming.

v8_icu_path
    Current value (from the default) = "//third_party/icu"

    Location of icu.

v8_imminent_deprecation_warnings
    Current value = false
    Overridden from the default = true

    Enable compiler warnings when using V8_DEPRECATE_SOON apis.

v8_is_on_release_branch
    Current value (from the default) = true

v8_jitless
    Current value (from the default) = false

    Enable jitless mode, including compile-time optimizations. Note that even
    when this is set to 'false', one can run V8 in jitless mode at runtime by
    passing the `--jitless` flag; but then you miss out on compile-time
    optimizations.

v8_log_builtins_block_count_input
    Current value (from the default) = ""

    This build flag is used to input a builtin pgo file containing raw
    execution counts (as opposed to branch hints), which are embedded into
    the `--trace-turbo` .json file from `mksnapshot`.

v8_lower_limits_mode
    Current value (from the default) = false

    Experimental testing mode where various limits are artificially set lower.

v8_monolithic
    Current value (from the default) = false

    Enable monolithic static library for embedders.

v8_monolithic_for_shared_library
    Current value (from the default) = false

    Set this if V8 monolithic static library is going to be linked into
    another shared library.

v8_multi_arch_build
    Current value (from the default) = false

    Adds additional compile target for building multiple architectures at once.

v8_no_inline
    Current value (from the default) = false

    Switches off inlining in V8.

v8_optimized_debug
    Current value (from the default) = true

    Turns on compiler optimizations in V8 in Debug build.

v8_os_page_size
    Current value (from the default) = "0"

    Override OS page size when generating snapshot

v8_postmortem_support
    Current value (from the default) = false

    With post mortem support enabled, metadata is embedded into libv8 that
    describes various parameters of the VM for use by debuggers. See
    tools/gen-postmortem-metadata.py for details.

v8_promise_internal_field_count
    Current value (from the default) = 0

    Sets the number of internal fields on promise objects.

v8_scriptormodule_legacy_lifetime
    Current value (from the default) = false

    TODO(cbruni, v8:12302): Remove once API is migrated
    Enable legacy mode for ScriptOrModule's lifetime. By default it's a
    temporary object, if enabled it will be kept alive by the parent Script.
    This is only used by nodejs.

v8_shortcut_strings_in_minor_ms
    Current value (from the default) = false

v8_snapshot_toolchain
    Current value (from the default) = ""

    The v8 snapshot needs to be built by code that is compiled with a
    toolchain that matches the bit-width of the target CPU, but runs on
    the host.

v8_static_library
    Current value (from the default) = false

    Use static libraries instead of source_sets.

v8_symbol_level
    Current value (from the default) = 1

    Override global symbol level setting for v8.

v8_target_cpu
    Current value (from the default) = ""

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

v8_target_is_simulator
    Current value (from the default) = ""

    Specifies if the target build is a simulator build. By default it is set to
    true if the host and target do not match and we are not cross-compiling.

v8_typed_array_max_size_in_heap
    Current value (from the default) = 64

    Controls the threshold for on-heap/off-heap Typed Arrays.

v8_use_external_startup_data
    Current value (from the default) = ""

    Use external files for startup data blobs:
    the JS builtins sources and the start snapshot.

v8_use_libm_trig_functions
    Current value (from the default) = true

    TODO: macros for determining endian type are clang specific.

v8_use_mips_abi_hardfloat
    Current value (from the default) = true

    Similar to the ARM hard float ABI but on MIPS.

v8_use_perfetto
    Current value (from the default) = false

    Implement tracing using Perfetto (https://perfetto.dev).

v8_use_siphash
    Current value (from the default) = false

    Use Siphash as added protection against hash flooding attacks.

v8_use_zlib
    Current value (from the default) = true

    Compile V8 using zlib as dependency.
    Sets -DV8_USE_ZLIB

v8_used_in_shared_library
    Current value (from the default) = true

    Set to true if V8 will be used in a shared library.

v8_value_deserializer_hard_fail
    Current value (from the default) = false

    Make ValueDeserializer crash if the data to deserialize is invalid.

v8_verify_builtins_compatibility
    Current value (from the default) = false

    Enforce equality of builtins hashes from compatible architectures.

v8_verify_deterministic_mksnapshot
    Current value (from the default) = false

    Check mksnapshot determinism by running it multiple times.

v8_verify_torque_generation_invariance
    Current value (from the default) = false

    Enable additional targets necessary for verification of torque
    file generation

v8_wasm_random_fuzzers
    Current value (from the default) = ""

    Some fuzzers depend on fuzzing functionality linked into the v8 library.
    For binary size reasons this functionality is not always available.

v8_win64_unwinding_info
    Current value (from the default) = true

    Enable the registration of unwinding info for Windows x64 and ARM64.

v8_zlib_path
    Current value (from the default) = "//third_party/zlib"

    Location of zlib.

validate_header_name
    Current value (from the default) = ""

vma_vulkan_headers_dir
    Current value = "//third_party/vulkan-headers/src"
    Overridden from the default = "//third_party/vulkan-deps/vulkan-headers/src"

webnn_enable_tflite_profiler
    Current value (from the default) = false

    Enable logging of TFLite profiling information on MLGraph destruction.

webnn_use_chrome_ml_api
    Current value (from the default) = false

    Enable the GPU delegate provided by the Optimization Guide library.

webnn_use_tflite
    Current value (from the default) = true

    TFLite is used as a fallback option on Apple and Windows.

widevine_root
    Current value (from the default) = "."

    Relative root directory to //third_party/widevine/cdm for CDM files.
    Can be overridden if the CDM files are located in other places.

win_console_app
    Current value (from the default) = false

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

winappsdk_dir
    Current value (from the default) = ""

    Windows App SDK is a separate dependency from nuget.org that needs to
    be pre-processed before being used.

zlib_symbols_visible
    Current value (from the default) = false

    Expose zlib's symbols, used by Node.js to provide zlib APIs for its native
    modules.

