blob: 6feaaaefe4dd2f470647b460d19b544457c89649 [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.
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
# 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 = ""
}
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
# 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
}