# Unmask the flag which corresponds to ARCH.
-arm64

# Unmask arm flags.
-armv8a

# Raúl Porcel <armin76@gentoo.org>
# I've been told xfs is broken on ARM
xfs

# Mart Raudsepp <leio@gentoo.org>
# net-misc/networkmanager not keyworded
networkmanager

# Raúl Porcel <armin76@gentoo.org>
# Fails to build/work
openexr

# Samuli Suominen <drac@gentoo.org>
# media-libs/amrnb and media-libs/amrwb not tested.
amr

# Samuli Suominen <drac@gentoo.org>
# sci-visualization/grace not tested.
grace

# Samuli Suominen <drac@gentoo.org>
# media-gfx/gimp not tested.
gimp

# Saleem Abdulrasool <compnerd@gentoo.org>
# With vapier's permission masking this.
mozilla

hardened

# Krzysiek Pawlik <nelchael@gentoo.org>
# With vapier's permission masking aoss:
aoss

# Paul de Vrieze <pauldv@gentoo.org>
# There is no java in this profile (if there is it must be available). Without
# this repoman will fail on apps like sys-libs/db
java
java-internal
java-external

# Stuff that doesn't make sense on this arch
3dfx
cpufreq
dell
laptop
dmi

# Stuff we don't want
chicken
clisp
fuse
R
octave
tracker
xindy
lyx
mpi
lasi
fusion

# havent tested yet
cupsddk
gphoto2
mythtv
dvb
qt3
arts
kde
afs
mono
pike
lirc
lm_sensors
netjack
beagle
nvtv
mzscheme
xemacs
madwifi
libupnp
zvbi
dvd
fluidsynth
gnomecd
lapack
cblas
webkit
prolog
sid
libmms
mtp
ieee1394

# 2006/02/05 - Donnie Berkholz <dberkholz@gentoo.org>
# Modular X: mask for architectures on which they aren't available
video_cards_apm
video_cards_ark
video_cards_ast
video_cards_ati
video_cards_cirrus
video_cards_chips
video_cards_cyrix
video_cards_glint
video_cards_i128
video_cards_i740
video_cards_imstt
video_cards_intel
video_cards_mach64
video_cards_mga
video_cards_neomagic
video_cards_newport
video_cards_nsc
video_cards_nv
video_cards_r128
video_cards_radeon
video_cards_radeonhd
video_cards_rendition
video_cards_s3
video_cards_s3virge
video_cards_savage
video_cards_siliconmotion
video_cards_sis
video_cards_tdfx
video_cards_tga
video_cards_trident
video_cards_tseng
video_cards_vesa
video_cards_via
video_cards_voodoo

# Unmask synaptics for use on ARM
-input_devices_synaptics

# Unmask Wacom for use on ARM
-input_devices_wacom

# Diego Pettenò <flameeyes@gentoo.org> (6 Dec 2006)
# Unmask the ARM-specific ALSA drivers
-alsa_cards_pxa2xx-i2sound
-alsa_cards_pxa2xx-soc
-alsa_cards_pxa2xx-soc-corgi
-alsa_cards_pxa2xx-soc-poodle
-alsa_cards_pxa2xx-soc-spitz
-alsa_cards_pxa2xx-soc-tosa
-alsa_cards_sa11xx-uda1341ts
-alsa_cards_armaaci
-alsa_cards_at91-soc
-alsa_cards_at91-soc-eti-b1-wm8731

# USE=audit masked prior to testing on alpha, arm, hppa, ppc64, s390, sh.
# Bug #184563, 18 Sep 2007
# Robin H. Johnson <robbat2@gentoo.org>
audit

# Disable pepper_flash on arm64.
pepper_flash

# As DriveFS is built with bazel and bazel's support of cros-compiling to
# aarch64 is somewhat deffective as of end of 2019, disable drivefs for arm64.
drivefs

# Some SANE backends that we want to disable to conserve disk space
# TODO(b/161252439): synchronize with x86.
sane_backends_hp3900
sane_backends_plustek
sane_backends_snapscan
sane_backends_umax
sane_backends_mustek_usb
sane_backends_avision
sane_backends_gt68xx
sane_backends_rts8891
sane_backends_u12
sane_backends_kvs1025
sane_backends_artec_eplus48u
sane_backends_hp5590
sane_backends_hp5400
sane_backends_hp4200
sane_backends_hp4200
sane_backends_hpljm1005
sane_backends_ma1509

