# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI="7"

# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
# the canonical empty project.
CROS_WORKON_COMMIT="e8d0ce9c4326f0e57235f1acead1fcbc1ba2d0b9"
CROS_WORKON_TREE="f365214c3256d3259d78a5f4516923c79940b702"
CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
CROS_WORKON_LOCALNAME="platform/empty-project"

inherit cros-workon

DESCRIPTION="Text file listing USE flags for chromeos-base/libchromeos"

LICENSE="BSD-Google"
# Nothing depends on this package for build info.  All the files are used at
# runtime only by design.
SLOT="0/0"
KEYWORDS="*"

# NB: Flags listed here are off by default unless prefixed with a '+'.
# This list is lengthy since it determines the USE flags that will be written to
# the /etc/ui_use_flags.txt file that's used to generate Chrome's command line.
IUSE="
	allow_consumer_kiosk
	arc
	arc_adb_sideloading
	arc_disable_cros_video_decoder
	arc_force_2x_scaling
	arc_transition_m_to_n
	arcpp
	arcvm
	arcvm_virtio_blk_data
	asan
	background_blur
	big_little
	biod
	borealis_host
	broken_24hours_wake
	cfm_enabled_device
	cheets
	clear_fast_ink_buffer
	compupdates
	diagnostics
	disable_background_blur
	disable_cros_video_decoder
	disable_explicit_dma_fences
	disable_native_gpu_memory_buffers
	disable_instant_tethering
	disable_spectre_variant2_mitigation
	drm_atomic
	edge_touch_filtering
	enable_dsp_hotword
	enable_heuristic_palm_detection_filter
	enable_neural_palm_detection_filter
	force_breakpad
	gpu_sandbox_allow_sysv_shm
	gpu_sandbox_failures_not_fatal
	gpu_sandbox_start_early
	houdini
	houdini64
	houdini_dlc
	kvm_guest
	kvm_host
	lacros
	legacy_keyboard
	legacy_power_button
	ml_service
	moblab
	mojo_service_manager
	native_gpu_memory_buffers
	natural_scroll_default
	ndk_translation
	ndk_translation64
	neon
	ondevice_document_scanner
	ondevice_document_scanner_dlc
	ondevice_grammar
	ondevice_handwriting
	ondevice_handwriting_dlc
	ondevice_speech
	oobe_skip_postlogin
	oobe_skip_to_login
	opengles
	os_install_service
	passive_event_listeners
	pita
	pita-camera
	pita-microphone
	reven_branding
	rialto
	scheduler_configuration_performance
	screenshare_sw_codec
	set_hw_overlay_strategy_none
	shelf-hotseat
	smartdim
	tablet_form_factor
	touch_centric_device
	touchscreen_wakeup
	touchview
	tpm_dynamic
	video_capture_use_gpu_memory_buffer
	virtio_gpu
	webui-tab-strip
	wilco
"

src_install() {
	# Install a file containing a list of currently-set USE flags that
	# ChromiumCommandBuilder reads at runtime while constructing Chrome's
	# command line.
	local path="${WORKDIR}/ui_use_flags.txt"
	cat <<EOF >"${path}"
# This file is just for libchromeos's ChromiumCommandBuilder class.
# Don't use it for anything else. Your code will break.
EOF

	# If you need to use a new flag, add it to $IUSE at the top of the file.
	local flags=( ${IUSE} )
	local flag
	for flag in "${flags[@]/#[-+]}" ; do
		usev "${flag}"
	done | sort -u >>"${path}"

	insinto /etc
	doins "${path}"
}
