# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/base/use.mask,v 1.81 2009/09/10 12:03:43 scarabeus Exp $

# profile specific USE flags
# Don't put hardened in here.
uclibc
multilib

# amd64/x86 arch specific USE flags
kqemu
3dnow
3dnowext
lilo
mmx
mmxext
sse
sse2
ssse3
svga
win32codecs
real
nvram

# ppc arch specific USE flags
altivec
pbbuttonsd
ppcsha1

# mips arch specific USE flags
n32
n64
fixed-point

# arm arch specific USE flags
armvfp
armv5te
armv6
armv6t2
iwmmxt
neon

# ppc64 arch specific USE flags
ibm

# sparc arch specific USE flags
vis
ultra1

# nVidia XvMC requires nvidia-drivers/nvidia-legacy-drivers
nvidia

# dev-db/oracle-instantclient-basic is only available on x86
oci8-instant-client

# net-libs/osptoolkit is only available on x86 (used by asterisk, bug 115798)
osp

# yellownet is only avaible as a binary blob (bug 149970)
yellownet

# not keyworded on non-x86 systems
video_cards_geode
video_cards_vermilion
video_cards_xgi
video_cards_voodoo

# not needed on non-sparc systems
video_cards_sunbw2
video_cards_suncg14
video_cards_suncg3
video_cards_suncg6
video_cards_sunffb
video_cards_sunleo
video_cards_suntcx

# not needed on non-mips system
video_cards_newport
video_cards_impact

# not needed on non-x86, non-amd64 systems
input_devices_virtualbox
input_devices_vmmouse
video_cards_nvidia
video_cards_fglrx
video_cards_via
video_cards_vmware
video_cards_virtualbox

# not needed on non-x86, non-amd64, non-ppc systems
input_devices_synaptics
input_devices_wacom

# psyco only works on x86
psyco

# Mask ELIBC, KERNEL, and USERLAND flags that apply to specific profiles.
userland_BSD

elibc_AIX
elibc_Darwin
elibc_DragonFly
elibc_FreeBSD
elibc_HPUX
elibc_Interix
elibc_IRIX
elibc_mintlib
elibc_NetBSD
elibc_OpenBSD
elibc_SunOS
elibc_uclibc

kernel_AIX
kernel_Darwin
kernel_FreeBSD
kernel_freemint
kernel_HPUX
kernel_Interix
kernel_IRIX
kernel_NetBSD
kernel_OpenBSD
kernel_SunOS

# Diego Pettenò <flameeyes@gentoo.org> (6 Dec 2006)
# Mask specific Apple drivers
alsa_cards_aoa
alsa_cards_aoa-fabric-layout
alsa_cards_aoa-onyx
alsa_cards_aoa-soundbus
alsa_cards_aoa-soundbus-i2s
alsa_cards_aoa-tas
alsa_cards_aoa-toonie
alsa_cards_powermac
# Mask specific Sun drivers
alsa_cards_sun-amd7930
alsa_cards_sun-cs4231
alsa_cards_sun-dbri
# Mask specific ARM 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
# Mask specific HPPA drivers
alsa_cards_harmony
# Mask specific MIPS drivers
alsa_cards_au1x00

# Diego Pettenò <flameeyes@gentoo.org> (29 Dec 2006)
# Adobe FDF toolkit is x86 only.
fdftk

# Diego Pettenò <flameeyes@gentoo.org> (30 Dec 2006)
# These are specific of Mac OS X
aqua
coreaudio

# Diego Pettenò <flameeyes@gentoo.org> (4 Jan 2007)
# Mask the flags for PHP that are available only on x86
sybase-ct
ingres
birdstep
adabas
filepro
pfpro
informix
empress
empress-bcs
sybase
frontbase
dbmaker
esoob
solid
# Shared with amd64
oci8
oracle7
firebird
db2

# Robert Buchholz <rbu@gentoo.org> (03 Jun 2007)
# Only works on x86 or amd64
lcd_devices_svga
lcd_devices_luise

# Joseph Jezak <josejx@gentoo.org> (11 Mar 2007)
# Only for x86 and amd64 (in pbbuttonsd)
macbook

# George Shapovalov <george@gentoo.org> (8 Apr 2007)
# Ada is supported only on x86, amd64 and ppc at present
ada

# lvm2 clustered use flags (moved from default-linux)
clvm
gulm
cman

# tcc is x86 only
tcc

# Diego Pettenò <flameeyes@gentoo.org> (15 Nov 2007)
# pam_console was masked for removal for security issue.
# mask the flag too.
pam_console

# Jeremy Olexa <darkside@gentoo.org>
# The prefix USE flag should never be used on non prefix profiles
prefix

# Alexey Shvetsov <alexxy@gentoo.org>
# Mask kdeprefix since its broken by now
kdeprefix

# Diego E. Pettenò <flameeyes@gentoo.org> (6 Jul 2009)
#  on behalf of QA Team
# Removal of cman is scheduled for 2009-10-06
cman

# Markus Duft <mduft@gentoo.org> (7 Jul 2009)
# This use flag only applies to _one_ version of interix (all
# versions share the same keyword, that's why i need a USE flag).
# Since this is meaningless for all others, it's globally masked.
i6fork

# Samuli Suominen <ssuominen@gentoo.org> (01 Aug 2009)
# RealMagic Hollywood+/Creative DXR3 support
dxr3

# Michał Górny <mgorny@gentoo.org> (26 Jan 2013)
# Mask the multilib flags globally. Unmasked in specific arches.
abi_x86_32
abi_x86_64
abi_x86_x32
# Matt Turner <mattst88@gentoo.org> (29 Jul 2013)
abi_mips_o32
abi_mips_n32
abi_mips_n64
abi_ppc_32
abi_ppc_64
abi_s390_32
abi_s390_64
# multilib for ARC++ ARM64
abi_arm_32
abi_arm_64

# TODO(b/65121142): don't enable until these are resolved:
#   https://issuetracker.google.com/142963605
#   https://issuetracker.google.com/136606696
iwlwifi_dump
