# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/mips/use.mask,v 1.70 2013/10/19 01:58:38 vapier Exp $

# Unmask the flag which corresponds to ARCH.
-mips

# Markos Chandras <hwoarang@gentoo.org>
# Needs packages that lack ~mips keywords
# See #485366
m17n-lib

# Ryan Hill <dirtyepic@gentoo.org>
# Needs sci-mathematics/glpk.
lpsol

# Kacper Kowalik <xarthisius@gentoo.org> (9 Aug 2010)
# cblas-external as virtual/cblas is also masked
cblas-external

# Samuli Suominen <ssuominen@gentoo.org>
# Media cannot be tested for MIPS at the moment.
# media-libs/libmpeg3
# media-libs/portaudio
# dev-libs/libcdio
# media-libs/musicbrainz
# media-libs/openexr
mpeg
portaudio
cdio
cdda
musicbrainz
openexr

# Ryan Hill <dirtyepic@gentoo.org>
# Various Gnome flags
beagle
gtkhtml
gnome

# Peter Volkov <pva@gentoo.org> MPI was never tested on mips, but
# some programs with this useflag are useful, e.g #227631
mpi

# Ryan Hill <dirtyepic@gentoo.org>
# virtual/blas virtual/cblas and virtual/lapack not keyworded
lapack
blas

# Ryan Hill <dirtyepic@gentoo.org>
dell

# Alexander Færøy <eroyf@gentoo.org>
# Masking for now.
libnotify

# Alexander Færøy <eroyf@gentoo.org>
# ldap -- untested, masking for now.
ldap

# Alexander Færøy <eroyf@gentoo.org>
# Clamav -- untested, masking for now.
clamav

# Untested on mips, masking for now.
cdb
nextaw

# Ilya A. Volynets-Evenbakh <iluxa@gentoo.org>
# Not yet tested, and gets in the way for some KDE-related packages
qt4

# Until someone actually needs fuse, we'll mask it as
# it holds up stablizing ntfsprogs
fuse

# 2006/03/07 - Donnie Berkholz <dberkholz@gentoo.org>
# Modular X: mask for architectures lacking direct rendering
dri

# Stephen P. Becker <geoman@gentoo.org>
-video_cards_newport
-video_cards_impact

# Stephen P. Becker <geoman@gentoo.org>
# more modular X stuff
video_cards_epson
video_cards_tdfx
video_cards_sunffb
video_cards_mach64
video_cards_mga
video_cards_nouveau
video_cards_nv
video_cards_r128
video_cards_radeon
video_cards_sis
input_devices_acecad
input_devices_aiptek
input_devices_calcomp
input_devices_digitaledge
input_devices_dmc
input_devices_dynapro
input_devices_elo2300
input_devices_elographics
input_devices_fpit
input_devices_hyperpen
input_devices_jamstudio
input_devices_magellan
input_devices_magictouch
input_devices_microtouch
input_devices_mutouch
input_devices_palmax
input_devices_penmount
input_devices_spaceorb
input_devices_summa
input_devices_synaptics
input_devices_tek4957
input_devices_ur98
input_devices_vmmouse
input_devices_void
input_devices_wacom
input_devices_joystick
video_cards_chips
video_cards_cirrus
video_cards_glint
video_cards_nvidia
video_cards_s3
video_cards_s3virge
video_cards_savage
video_cards_sisusb
video_cards_sunbw2
video_cards_suncg14
video_cards_suncg3
video_cards_suncg6
video_cards_sunleo
video_cards_suntcx
video_cards_trident
video_cards_vmware
video_cards_voodoo

# Matt Turner <mattst88@gentoo.org>
# Mask more VIDEO_CARDs added with mesa-8.0
video_cards_r100
video_cards_r200
video_cards_r300
video_cards_r600
video_cards_radeonsi
video_cards_i915
video_cards_i965
video_cards_ilo
# vmware wasn't added with mesa-8.0, but it should still be masked
video_cards_vmware

# 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_cyrix
video_cards_i128
video_cards_i740
video_cards_imstt
video_cards_intel
video_cards_neomagic
video_cards_nsc
video_cards_rendition
video_cards_tga
video_cards_tseng
video_cards_vesa
video_cards_vga
video_cards_ast

# Diego Pettenò <flameeyes@gentoo.org>
# Until xine-lib's keywording can be maintained, please leave it masked.
xine

# Stephen P. Becker <geoman@gentoo.org>
# masking mono because it doesn't work on mips
mono

# Hardave Riar <hardave@gentoo.org>
# Temporarily masking ieee1394 until it can be tested
# Quick fix to my tree b0rkage
ieee1394

# Henrik Brix Andersen <brix@gentoo.org>
# According to the mips herd, we currently have no way of testing
# pcmcia on mips, bug #90359
pcmcia

# John N. Laliberte <allanonjl@gentoo.org>
# mask scanner support
scanner

# Armando Di Cianno <fafhrd@gentoo.org>
# gnustep is currently unbuildable on mips - masking this to repair windowmaker
#   broken mips keywording becuase of 'gnustep' USE flag
gnustep

# Hardave Riar <hardave@gentoo.org>
# This should work, someone with a usb card and digital camera should test it
gphoto2

# Hardave Riar <hardave@gentoo.org>
# This will probablly work, but no hardware to test with
gnokii

# Ciaran McCreesh <ciaranm@gentoo.org>
# unresolved dep, bug #82428
emboss

# Joshua Kinard <kumba@gentoo.org>
# dietlibc isn't known to work on mips
diet

# Stephen P. Becker <geoman@gentoo.org>
# masked because it hoses xchat on 64-bit machines
xosd

# Stephen P. Becker <geoman@gentoo.org>
# masked for now until this can be properly tested with alsa
jack

# Stephen P. Becker <geoman@gentoo.org>
# masked because of silly java deps with gnome (we have no jre on mips)
accessibility

# Stephen P. Becker <geoman@gentoo.org>
# masked because mozilla doesn't work on mips
mozilla

# Stephen P. Becker <geoman@gentoo.org>
# masked because I say so, gnome--
pda

# Ciaran McCreesh <ciaranm@gentoo.org>
# not even slightly reliable, bug #65216
mzscheme

# Stephen P. Becker <geoman@gentoo.org>
# masked because gaim sucks
evo

# 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

# Ciaran McCreesh <ciaranm@gentoo.org>
# No java, no netbeans
netbeans

# masked until gnome-extra/evolution-data-server is keyworded for mips
eds

# Flags which aren't applicable to mips (Mostly copied from sparc)
3dfx
acpi
afs
apm
directfb
dvdr
ibm
ggi
lirc
trusted
voodoo3
smartcard

#
# Anthony G. Basile <blueness@gentoo.org> (18 Jul 2012)
# php is an old mask which works now
# pike is no longer a use flag
#
## see email to gentoo-dev with subject "use.mask and PHP5's crazy IUSE"
## Dated Sat, 31 Jul 2004 14:49:28 -0700, from robbat2@gentoo.org
## all of these are binary-only, and not presently available on this
## architecture.
#php
#pike
djbfft
timidity

# We don't use smartcards, afaik
pcsc-lite

# Diego Pettenò <flameeyes@gentoo.org> (6 Dec 2006)
# Unmask specific MIPS ALSA drivers
-alsa_cards_au1x00

#Daniel Black <dragonheart@gentoo.org> (28 Feb 2007)
# Use mask l7-filter for iptables dependency - bug #150343 until mips tested
l7filter

# Fernando J. Pereda <ferdy@gentoo.org> (20 Mar 2007)
# New optional dependency of >=mail-client/mutt-1.5.14
qdbm

# Doug Goldstein <cardoe@gentoo.org> (08 May 2007)
# no one in mips land has smartcard hardware to test with
# see bug #162205 comment 10.
smartcard
openct

# kumba (02 Jun 2007)
# pulseaudio hasn't been tested on mips; maybe someday
pulseaudio

# kumba (01 Nov 2007)
# mask ladspa USE
# [22:30] <beandog> mips: plz to mask ladspa use flag
ladspa

# Matt Turner <mattst88@gentoo.org> (13 Dec 2010)
# Dropping app-arch/rpm keywords, mask rpm USE accordingly
rpm

# Matt Turner <mattst88@gentoo.org> (13 Dec 2010)
# We don't have net-libs/libsmi keyworded
smi

# Matt Turner <mattst88@gentoo.org> (13 Dec 2010)
# We don't have sys-devel/llvm
llvm

# Matt Turner <mattst88@gentoo.org (14 Jun 2011)
# pdfannotextractor needs java
pdfannotextractor

# Matt Turner <mattst88@gentoo.org) (11 Jul 2011)
# xemacs dependencies not keyworded
xemacs

# Matt Turner <mattst88@gentoo.org) (11 Jul 2011)
# no native mips/linux code generation, see bug 319649
ocamlopt

# Matt Turner <mattst88@gentoo.org) (10 Feb 2012)
# mask d3d since we don't have wine
d3d

# Matt Turner <mattst88@gentoo.org) (10 Feb 2012)
# mask wayland since dev-libs/wayland isn't keyworded
wayland

# Michael Sterrett <mr_bones_@gentoo.org) (24 Aug 2012)
# media-sound/fluidsynth isn't keyworded
fluidsynth

# Mips USE flags
-n32
-n64
-ip27
-ip28
-ip30
-fixed-point
-loongson2f

# Samuli Suominen <ssuominen@gentoo.org> (18 Jan 2013)
# libdlm and cman are not keyworded
cman
clvm

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (22 Aug 2013)
# virtual/opencl is not keyworded
opencl

# Unmask once sys-libs/libunwind gets keyworded.
unwind
