# Unmask the flag which corresponds to ARCH.
-arm

# Unmask arm flags.
-armvfp
-armv5te
-armv6
-armv6t2
-iwmmxt
-neon

# 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
