blob: f82aea23079a0774240a223d782b44381cfaded9 [file] [log] [blame]
# 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.
# 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 on devices where the VolumeControl implementation is in the
# instead of in
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 start music apps in headless mode.
enable_headless_music_mode = 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 = ""
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 wayland server
enable_cast_wayland_server = false
# Whether to build cast for Android Things N version
build_for_android_things_n = 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 for desktop builds to ensure that Chromium CQ
# builds the external Mojo broker code.
enable_external_mojo_services = is_cast_desktop_build
# Recording happens at this sample rate. Must be 16000, 48000 or 96000 Hz.
audio_input_sample_rate = 16000
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 <major>.<minor>. 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
enable_chromecast_extensions = enable_extensions
# Use Chromecast CDMs for protected content. Some Android platforms use
# MediaDrm for CDM support.
declare_args() {
use_chromecast_cdms = is_cast_using_cma_backend
]) {
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 The variables
# referenced below are declared in
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