# Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/chromecast_build.gni") import("//build/config/locales.gni") import("//extensions/buildflags/buildflags.gni") import("//media/media_options.gni") # This args block should contain arguments used within the //chromecast # directory. Arguments which are used in other Chrome components should # be instead declared in //build/config/chromecast_build.gni. declare_args() { # The incremental build number. The Cast automated builders will set this # value to indicate the buildset. Note: The default value should be greater # than any value the builder may assign to prevent attempted automatic updates # when the default value is used. cast_build_incremental = "999999" if (is_android) { # If true, run receiver apps in an Android service instead of an activity. display_web_contents_in_service = is_cast_audio_only } # If true, Chromecast WebUI resources are included in a build. # TODO(antz): default to false for audio-only builds, might need further # clean up (b/27119303) enable_chromecast_webui = !is_cast_audio_only && !is_android # Set true to enable assistant features. enable_assistant = false # Set to true on devices that support multizone. Only indicates that the # device supports multizone. The command line flag --enable-multizone must # still be used to enable multizone. supports_multizone = is_cast_audio_only && !is_cast_desktop_build # Set to true if there is a full mixer implementation; if not, we create a # shim mixer service receiver that pushes audio to the CMA backend. have_full_mixer = is_cast_audio_only # If true, the mixer will be instantiated inside cast_shell. When false, the # mixer is expected to be running in another process. mixer_in_cast_shell = true # Set to true on devices where the VolumeControl implementation is in the # libcast_avsettings_1.0.so instead of in libcast_media_1.0.so. cast_volume_control_in_avsettings = false # Set to true for builds targeting ARC. is_android_arc = false # Set true for builds targeting Android Things. is_android_things = false # Set true if the platform works as a single volume device, mapping all # volume streams to a single one. is_single_volume = false # Set to true to keep Android activities alive when they are moved to the # background. enable_background_activities = false # Set to true to use CastWebContentsFragment instead of CastWebContentsActivity # to run cast receiver app. # TODO(thoren) merge this flag with display_web_contents_in_service enable_cast_fragment = false # Set the number of lines for LogcatExtractor to send. logcat_extractor_size = 512 if (is_android) { # Set to true to get logcat from a remote service # If false, will only get the logs of the app. use_remote_service_logcat = false # Set the package name and class path for the component which will provide device logs # Values defined in eureka-internal # These values are unused if use_remote_service_logcat is false # device_logs_provider_package is a CSV, and the first resolved one would be used. device_logs_provider_package = "" device_logs_provider_class = "" } # Set to true to enable a CMA media backend that allows mixed audio to be # output with sync'd video. enable_video_with_mixed_audio = false # unified flag to pick monotonic_clock OR monotonic_clock_raw media_clock_monotonic_raw = !is_android && !is_cast_desktop_build # Include 'Android' in user agent string to avoid being served desktop # versions of websites. # TODO(halliwell): consider making this default for all Cast hardware. use_android_user_agent = false # Contain default command line switches we want to set. # The syntax: "test-flag-one=public,test-flag-two=true,test-flag-three=1,". # This arg can be overridden but not supports += operator. # TODO(ziyangch): make the parsing logic have ability to quote/escape characters. default_command_line_flags = "" # Set to true to disable secure flac/opus support in EME, when using # cast CMA media backend and supporting Widevine or Playready. disable_secure_flac_and_opus_decoding = false # Set to true to enable mixing in CastAudioManager. Only needed on devices # that do not have a mixer in the CMA backend. enable_cast_audio_manager_mixer = chromecast_branding == "google" && !is_cast_audio_only && !is_android # Set to true to enable video capture service for video input and output. enable_video_capture_service = false # Set to true to enable external Mojo services to communicate with services # within cast_shell. enable_external_mojo_services = is_linux # Support Perfetto tracing of processes that depend on entry points in # //chromecast/external_mojo/external_service_support enable_external_mojo_tracing = false # Recording happens at this sample rate. Must be 16000, 48000 or 96000 Hz. audio_input_sample_rate = 16000 # Whether use unix sockets in Cast input/output stream. use_unix_sockets = is_linux # Set to true to enable audio capture service for audio input. enable_audio_capture_service = false # Extra rpath to use for standalone services. iot_service_rpath = "" # Set to true to enable media overlay for volume bar, etc. enable_media_overlay = false # Set to true to forward crashes to the system's crash handler instead of # handling them internally. This disables the built-in crash handler. use_system_crash_handler = false } declare_args() { enable_volume_tables_access = is_android_things && chromecast_branding != "public" is_android_things_non_public = is_android_things && chromecast_branding != "public" } declare_args() { # Use Playready CDMs for internal non-desktop builds. enable_playready = !is_cast_desktop_build && chromecast_branding != "public" } # This is the release version, which takes the form .. Internal # builds will read the value from an internal file containing this value as a # string. Public builds, lacking this file, will set a dummy value. if (chromecast_branding == "public") { cast_build_release = "eng." + getenv("USER") } else { cast_build_release = read_file("//chromecast/internal/build/cast_build_release", "trim string") } # All locales supported by Cast builds. This provides a single point of # reference for all GN files referencing a locales list. |locales| is declared # in //build/config/locales.gni. cast_locales = locales # Android currently supports more locales than Desktop and ChromeOS. # If Cast will also the android files update this and the Cast grd files. if (is_android) { # Subtract out additional Android locales cast_locales -= android_bundle_only_locales } declare_args() { enable_chromecast_extensions = enable_extensions } # Use Chromecast CDMs for protected content. Some Android platforms use # MediaDrm for CDM support. declare_args() { use_chromecast_cdms = true } foreach(target_type, [ "executable", "shared_library", "loadable_module", "source_set", ]) { template("cast_${target_type}") { target(target_type, target_name) { forward_variables_from(invoker, "*") configs += [ "//chromecast:cast_config" ] } } } # Set the defaults for each target. The defaults for these target wrappers # should match their unwrapped counterparts in BUILDCONFIG.gn. The variables # referenced below are declared in BUILDCONFIG.gn. set_defaults("cast_executable") { configs = default_executable_configs } set_defaults("cast_shared_library") { configs = default_shared_library_configs if (is_android) { configs -= [ "//build/config/android:hide_all_but_jni_onload" ] } } set_defaults("cast_loadable_module") { configs = default_shared_library_configs if (is_android) { configs -= [ "//build/config/android:hide_all_but_jni_onload" ] } } set_defaults("cast_source_set") { configs = default_compiler_configs }