# Copyright 1999-2013 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License, v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/x86/use.mask,v 1.54 2013/08/22 16:10:39 chithanh Exp $

# Unmask the flag which corresponds to ARCH.
-x86

# Alexandre Rostovtsev <tetromino@gentoo.org> (09 Dec 2012)
# Orc optimisations work fine on amd64 and x86
-orc

# Diego Elio Pettenò <flameeyes@gentoo.org> (21 Aug 2012)
# IPMI is only implemented for x86, amd64 and ia64
-ipmi

# Ralph Sennhauser <sera@gentoo.org> (31 Jul 2012)
# Keyworded on x86
-python_targets_jython2_5
-python_single_target_jython2_5
-python_targets_jython2_7
-python_single_target_jython2_7

# Joerg Bornkessel <hd_brummy@gentoo.org> (05. Mar 2012)
# Unmask, works with v4l2, #350211
-dxr3

# Samuli Suominen <ssuominen@gentoo.org> (28 Feb 2012)
# Unmasking vidix for x86 which is masked in base/use.mask for others
-vidix

# Justin Lecher <jlec@gentoo.org> (04 Feb 2012)
# Unmask because deps are keyworded
-zeitgeist

# This file masks out USE flags that are simply NOT allowed in the default
# x86 profile.  This works, for example, if another architecture's
# profile have a USE flag associated with (such as altivec, mmx, etc).

# 2011/12/22 - Alexis Ballier <aballier@gentoo.org>
# Unmask vdpau as its supported here
-vdpau

# 2011/07/01 - Alexey Shvetsov <alexxy@gentoo.org>
# Infiniband stuff works on x86
-infiniband

# 2010/07/27 - Matti Bickel <mabi@gentoo.org>
# app-text/fdf is only supported on x86
-fdftk

# 2010/02/14 - Samuli Suominen <ssuominen@gentoo.org>
# Unmask amd64/x86 only SANE_BACKENDS
-sane_backends_canon_pp
-sane_backends_hpsj5s
-sane_backends_mustek_pp
-sane_backends_qcam

# 2010/05/03 - Alex Legler <a3li@gentoo.org>
# Add support for Ruby Enterprise Edition targets where rubyee is available
# -ruby_targets_ree18

# 2010/01/08 - Diego E. Pettenò <flameeyes@gentoo.org>
# Add support for JRuby targets where jruby is available
-ruby_targets_jruby

# pbbuttonsd and macbook for KDE and pbuttonsd it
#-pbbuttonsd
-macbook

# Unmask x86 instruction sets
-3dnow
-3dnowext
-lilo
-mmx
-mmxext
-sse
-sse2
-sse3
-sse4
-sse4_1
-sse4a
-ssse3
-avx
-avx128fma
-avx256
-svga
-kqemu
-nvram

# Unmask nvidia XvMC support
-nvidia

# Unmask dev-db/oracle-instantclient-basic support
-oci8-instant-client
-oracle

# Unmask osp, used by asterisk; bug 115798
-osp

# Unmask yellownet, used by aqbanking (bug 149970)
-yellownet

# Modular X: unmask for architectures on which they are available
-input_devices_synaptics
-input_devices_virtualbox
-input_devices_vmmouse
-input_devices_wacom
-video_cards_nvidia
-video_cards_fglrx
-video_cards_vmware
-video_cards_geode
-video_cards_via
-video_cards_virtualbox
-video_cards_xgi
-video_cards_qxl

# Modular X: mask for architectures on which they aren't available
video_cards_newport

#codec support
-x264

# lvm2 cluster
-gulm

# psyco works on x86
-psyco

# Diego Pettenò <flameeyes@gentoo.org> (4 Jan 2007)
# Unmask the flags for PHP that are available only on x86
-fdftk
-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)
# Unmask as it works on x86
-lcd_devices_svga
-lcd_devices_luise

# George Shapovalov <george@gentoo.org> (8 Apr 2007)
# supported on x86
-ada

# tcc is x86 only
-tcc

# 64bit Windows doesn't work on 32bit systems
win64

# fdk-aac is already keyworded here
-fdk

# Michał Górny <mgorny@gentoo.org> (26 Jan 2013)
# Unmask the flag corresponding to the only ABI. This allows x86 binary
# packages to have uniform dependencies for amd64-multilib & x86.
-abi_x86_32

# Andrey Grozin <grozin@gentoo.org> (1 May 2013)
# available on x86
-cmucl
-clozurecl

# Michał Górny <mgorny@gentoo.org> (4 May 2013)
# Unmask systemd since it is keyworded here.
-systemd
