# The USE flags specified in this file are applied to packages
# for all linux targets. In ChromeOS, that means they are applied
# to the host packages in the chroot, as well as packages built for a
# target board.

app-admin/webapp-config	-portage
app-arch/tar		minimal
app-crypt/mit-krb5	-keyutils
dev-db/sqlite		extensions
dev-embedded/libftdi	-cxx tools
dev-lang/python		sqlite
# We want to re-enable this, but we'll have to update hard-host-depends to
# stop pulling in app-crypt/nss and add an upgrade hook to uninstall that
# from the sdk.
#dev-libs/nss		utils
dev-libs/dbus-glib	tools
dev-libs/gmp		-cxx
dev-libs/libevent	-ssl -threads
dev-perl/GD             png
dev-python/pyudev	pygobject
# This requires deps we haven't imported (zeromq) and doesn't seem worth the
# effort at this time.
dev-python/ipython -smp
dev-util/perf		audit tui -unwind -doc
dev-vcs/git		bash-completion curl cvs -gpg subversion webdav
dev-vcs/subversion	-dso webdav-serf
games-emulation/zsnes	ao -debug
media-libs/libao	alsa
media-libs/freeimage	-cxx
media-libs/gd           png
media-libs/libmtp       -crypt
# We don't want any driver/hw rendering on the host
media-libs/mesa         -llvm -gallium -classic
media-sound/alsa-utils	-libsamplerate minimal
net-misc/curl		ares
net-wireless/bluez	-consolekit
sci-geosciences/gpsd	-cxx
# verity and other packages link statically with libuuid.
sys-apps/util-linux	-perl static-libs
sys-boot/grub       grub_platforms_pc grub_platforms_efi-64 grub_platforms_coreboot static
sys-devel/gettext	-git
# Remove dependency on libmix which is deprecated and unsupported.
net-analyzer/netcat -crypt
net-dns/avahi		dbus
net-misc/dhcpcd -crash

cross-armv7a-cros-linux-gnueabi/gcc   hardfp
cross-armv7a-cros-linux-gnueabihf/gcc   hardfp
cross-armv6j-cros-linux-gnueabi/gcc   hardfp -thumb
sys-devel/clang		multitarget
sys-devel/llvm		multitarget

sys-apps/pciutils	-udev
# xz-utils includes liblzma, which is picked by bmpblk_utility (vboot_reference)
# and may be executed outside chroot.
app-arch/xz-utils	static-libs
sys-apps/util-linux	-suid
# We don't have any font with graphite table. Drop graphite from harfbuzz.
# We don't need instrospection either.
media-libs/harfbuzz	-graphite -introspection
dev-java/icedtea-bin -alsa -cups -X
# Need png for color font support. bzip2 is not used. It's only for X11 *pcf.bz2
# that we don't have.
media-libs/freetype     png -bzip2
dev-embedded/openocd  ftdi
# Resolve circular dependency between libcap and pam.
# http://crbug.com/508630 (see #8)
sys-libs/libcap	-pam

# Disable obsolete/unused protocols.
dev-libs/openssl -sslv2 -sslv3 -tls-heartbeat

# Build selected kernels with AutoFDO
sys-kernel/chromeos-kernel-4_4 kernel_afdo
sys-kernel/chromeos-kernel-3_18 kernel_afdo
sys-kernel/chromeos-kernel-3_14 kernel_afdo
sys-kernel/chromeos-kernel-3_8 kernel_afdo

# start using coreboot-sdk across firmware packages
sys-boot/coreboot		coreboot-sdk
sys-boot/libpayload		coreboot-sdk
sys-boot/depthcharge		coreboot-sdk
sys-boot/chromeos-seabios	coreboot-sdk
chromeos-base/chromeos-ec	coreboot-sdk

# clang doesn't recognize gcc pragmas, so libgcrypt needs to turn off -O flags.
dev-libs/libgcrypt	o-flag-munging
