# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/use.desc,v 1.435 2010/02/19 04:52:55 halcy0n Exp $

# Keep them sorted

3dfx - Enable support for Voodoo chipsets, also called as 3DFX and TDFX
3dnow - Adds support for 3dnow multimedia processor instructions
X - Adds support for X11
Xaw3d - Adds support for the 3d athena widget set
a52 - Enables support for decoding ATSC A/52 streams used in DVD
aac - Enables support for MPEG-4 AAC Audio
aalib - Adds support for media-libs/aalib (ASCII-Graphics Library)
accessibility - Adds support for accessibility (eg 'at-spi' library)
acl - Adds support for Access Control Lists
acpi - Adds support for Advanced Configuration and Power Interface
adabas - Adds support for the Adabas database engine
adns - Adds support for the adns DNS client library
afs - Adds OpenAFS support (distributed file system)
aim - Enable AIM IM protocol support
alsa - Adds support for media-libs/alsa-lib (Advanced Linux Sound Architecture)
altivec - Adds support for optimizations for G4 and G5/ppc970 processors
ao - Use libao audio output library for sound playback
apache2 - Add Apache2 support
apm - Adds APM (Advanced Power Management) support
atm - Enable Asynchronous Transfer Mode protocol support
audiofile - Adds support for libaudiofile where applicable
avahi - Add avahi/Zeroconf support
aqua - Include support for the Aqua / Carbon GUI
bash-completion - Enable bash-completion support
bcmath - Adds support for libbcmath
berkdb - Adds support for sys-libs/db (Berkeley DB for MySQL)
bidi - Enables bidirectional language support
bindist - Flag to enable or disable options for prebuilt (GRP)  packages (eg. due to licensing issues)
birdstep - Adds support for the Birdstep Database Server
blas - Adds support for the virtual/blas numerical library
bluetooth - Enables Bluetooth Support
bootstrap - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used during original system bootstrapping [make stage2]
boundschecking - Adds the bounds checking patch by Haj Ten Brugge, this will DISABLE the hardened PIE+SSP patches
branding - Enable Gentoo specific branding
bsf - Enable support for Apache Bean Scripting Framework (dev-java/bsf)
build - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for creating build images and the first half of bootstrapping [make stage1]
bzip2 - Use the bzlib compression library
cairo - Enable support for the cairo graphics library
calendar - Adds support for calendars (not using mcal!)
canna - Adds support for the Canna kana to kanji conversion engine
caps - Use Linux capabilities library to control privilege
cdb - Adds support for the CDB database engine from the author of qmail
cdda - Adds Compact Disk Digital Audio (Standard Audio CD) support
cddb - Access cddb servers to retrieve and submit information about compact disks
cdinstall - Copies files from the CD rather than asking the user to copy them, mostly used with games
cdparanoia - Enables cdparanoia (audio CD ripper) support
cdr - Adds support for CD writer hardware
cgi - Add CGI script support
chasen - Enable chasen (Japanese Morphological Analysis System) support
cjk - Adds support for Multi-byte character languages (Chinese, Japanese, Korean)
clamav - Adds support for Clam AntiVirus software (usually with a plugin)
coreaudio - Build the CoreAudio driver on Mac OS X systems
cracklib - Support for cracklib strong password checking
crypt - Add support for encryption -- using mcrypt or gpg where applicable
cscope - Enables cscope interface -- in vim for example
css - Enables reading of encrypted DVDs
ctype - Enables ctype functions
cups - Add support for CUPS (Common Unix Printing System)
curl - Adds support for client-side URL transfer library
curlwrappers - Adds support for using curl in streams
custom-cflags - Build with user-specified CFLAGS (unsupported)
cvs - Enable CVS (Concurrent Versions System) integration
cxx - Builds support for C++ (bindings, extra libraries, code generation, ...)
db2 - Enables support for IBM DB2 database server
dbase - Adds support for dbase file format
dbi - Enable dev-db/libdbi (database-independent abstraction layer) support
dbm - Adds support for generic DBM databases
dbmaker - Adds support for dbmaker database server
dbus - Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
dbx - Adds database abstraction layer
debug - Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
dedicated - Adds support for dedicated game servers (some packages do not provide clients and servers at the same time)
dga - Adds DGA (Direct Graphic Access) support for X
directfb - Adds support for DirectFB layer (library for FB devices)
djvu - support DjVu, a PDF-like document format esp. suited for scanned documents
doc - Adds extra documentation (API, Javadoc, etc)
dri - Enable direct rendering: used for accelerated 3D and some 2D, like DMA
dts - Enables DTS Coherent Acoustics decoder support
dv - Enables support for a codec used by many camcorders
dvb - Adds support for DVB (Digital Video Broadcasting)
dvd - Adds support for DVDs
dvdr - Adds support for DVD writer hardware (e.g. in xcdroast)
eds - Enables support for Evolution-Data-Server (EDS)
emacs - Adds support for GNU Emacs
emboss - Adds support for the European Molecular Biology Open Software Suite
empress - Adds support for the Empress database server
empress-bcs - Adds local access support for the Empress database server
encode - Adds support for encoding of audio or video files
enscript - Add enscript support to colourize code stored in the repository
esd - Adds support for media-sound/esound (Enlightened Sound Daemon)
esoob - Adds support for Easysoft OOD database
evo - Adds support for mail-client/evolution
examples - Install examples, usually source code
exif - Adds support for reading EXIF headers from JPEG and TIFF images
expat - Enable the use of dev-libs/expat for XML parsing
fam - Enable FAM (File Alteration Monitor) support
fastcgi - Add support for the FastCGI interface
fbcon - Adds framebuffer support for the console, via the kernel
ffmpeg - Enable ffmpeg-based audio/video codec support
fftw - Use FFTW library for computing Fourier transforms
firebird - Adds support for the Firebird relational database
firefox - Build against Firefox instead of Seamonkey/Mozilla
flac - Adds support for FLAC: Free Lossless Audio Codec
flatfile - Adds dbm support for flat files
fltk - Adds support for the Fast Light Toolkit gui interface
fontconfig - Support for configuring and customizing font access via media-libs/fontconfig
foomaticdb - Adds support for the foomatic printing driver database
fortran - Adds support for fortran (formerly f77)
freetds - Adds support for the TDS protocol to connect to MSSQL/Sybase databases
freewnn - Adds support for FreeWnn kana to kanji conversion engine
frontbase - Adds support for the frontbase sql server
ftp - Adds FTP (File Transfer Protocol) support
gcj - Enable building with gcj (The GNU Compiler for the Javatm Programming Language)
gd - Adds support for media-libs/gd (to generate graphics on the fly)
gd-external - Use the external version of gd rather than the bundled one (possibly dangerous)
gdbm - Adds support for sys-libs/gdbm (GNU database libraries)
geoip - Add geoip support for country and city lookup based on IPs
ggi - Adds support for media-libs/libggi (non-X video api/drivers)
gif - Adds GIF image support
gimp - Build a plugin for the GIMP
ginac - Adds sci-mathematics/ginac (symbolic math) support
glut - Build an OpenGL plugin using the GLUT library
gmp - Adds support for dev-libs/gmp (GNU MP library)
gnome - Adds GNOME support
gnome-keyring - Enable support for storing passwords via gnome-keyring
gnuplot - Enable support for gnuplot (data and function plotting)
gnustep - Adds integration with GNUstep environment
gnutls - Adds support for net-libs/gnutls (TLS 1.0 and SSL 3.0 support)
gphoto2 - Adds digital camera support
gpm - Adds support for sys-libs/gpm (Console-based mouse driver)
gps - Adds support for Global Positioning System
graphviz - Adds support for the Graphviz library
gzip - just to commit
gsl - Use the GNU scientific library for calculations
gsm - Adds support for the gsm lossy speech compression codec
gstreamer - Adds support for media-libs/gstreamer (Streaming media)
gtk - Adds support for x11-libs/gtk+ (The GIMP Toolkit)
gtkhtml - Adds support for gnome-extra/gtkhtml
guile - Adds support for the guile Scheme interpreter
hal - Enable Hardware Abstraction Layer (HAL) support
handbook - Enable handbooks generation for KDE4.
hardened - activate default security enhancements for toolchain (gcc, glibc, binutils)
hddtemp - Enable monitoring of hdd temperature (app-admin/hddtemp)
hdf5 - Adds support for the Hierarchical Data Format v5
ibm - Add support for IBM ppc64 specific systems
iconv - Enable support for the iconv character set conversion library
icq - Enable ICQ IM protocol support
icu - Enable ICU (Internationalization Components for Unicode) support, using dev-libs/icu
idn - Enable support for Internationalized Domain Names
ieee1394 - Enable FireWire/iLink IEEE1394 support (dv, camera, ...)
imagemagick - Enables support for Imagemagick (image converter)
imap - Adds support for IMAP (Internet Mail Application Protocol)
imlib - Adds support for imlib, an image loading and rendering library
inifile - Adds dbm support for .ini files
innodb - Adds innodb support for mySQL (transaction support)
interbase - Adds support for Interbase database
iodbc - Adds support for iODBC library
ipod - Enable support for iPod device access
ipv6 - Adds support for IP version 6
jabber - Enable jabber IM protocol support
jack - Adds support for the JACK Audio Connection Kit
java - Adds support for Java
java5 - Use Java 1.5 to build package || ( reduced deps, 1.5 features, source/target 1.5 )
java6 - Use Java 1.6 to build package with || ( reduced deps, 1.6 features, source/target 1.6 )
javascript - Enables javascript support
jbig - enables jbig-kit support for tiff, Hylafax, ImageMagick, etc
jingle - Enables voice calls for jabber
joystick - Add support for joysticks in all packages
jpeg - Adds JPEG image support
jpeg2k - Support for JPEG 2000, a wavelet-based image compression format
kontact - Enable support for the KDE personal information manager (kde-base/kdepim*)
kde - Adds support for kde-base/kde (K Desktop Enviroment)
kdeenablefinal - EXPERIMENTAL: KDE ebuilds will use the enable-final flag, yielding compilation speedups at the cost of heavy mem usage and potentially causing problems. We strongly discourage setting this
kdeprefix - Makes a KDE prefixed install into /usr/kde/${SLOT} if enabled or into /usr (FHS compatible) otherwise
kerberos - Adds kerberos support
kolab - Adds support for the Kolab groupware server
krb4 - Adds optional kerberos 4 compatibility support
ladspa - Enables the ability to support ladspa plugins
lame - Prefer using LAME libraries for MP3 encoding support
lapack - Adds support for the virtual/lapack numerical library
lash - Adds LASH Audio Session Handler support
latex - Adds support for LaTeX (typesetting package)
lcms - Adds lcms support (color management engine)
ldap - Adds LDAP support (Lightweight Directory Access Protocol)
libcaca - Add support for colored ASCII-art graphics
libedit - Use the libedit library (replacement for readline)
libgda - Adds GNOME Data Access support
libnotify - Enable desktop notification support
libsamplerate - Build with support for converting sample rates using libsamplerate
libwww - Adds libwww support (General purpose WEB API)
lirc - Adds support for lirc (Linux's Infra-Red Remote Control)
livecd - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used during livecd building
lm_sensors - Adds linux lm_sensors (hardware sensors) support
lua - Enable Lua scripting support
lzo - Enables support for lzo compression
m17n-lib - Enable m17n-lib support
mad - Adds support for mad (high-quality mp3 decoder library and cli frontend)
maildir - Adds support for maildir (~/.maildir) style mail spools
mailwrapper - Adds mailwrapper support to allow multiple MTAs to be installed
matroska - Adds support for the matroska container format (extensions .mkv, .mka and .mks)
matrox - Adds Matrox MGA support to mplayer
mbox - Adds support for mbox (/var/spool/mail) style mail spools
mcve - Support for the MCVE credit card payment system
memlimit - Adds memory usage limiting in supporting programs
mhash - Adds support for the mhash library
migemo - Enables migemo support for Japanese
mikmod - Adds libmikmod support to allow playing of SoundTracker-style music files
milter - Adds sendmail mail filter (milter) support
mime - Adds MIME support
minimal - Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
mmap - Adds mmap (memory map) support
mmx - Adds support for optimizations for Pentium MMX and Athlon class processors
mng - Adds support for libmng (MNG images)
modplug - Adds libmodplug support
mono - Build Mono bindings to support dotnet type stuff
motif - Adds support for the Motif toolkit
modules - Build the kernel modules
mozilla - Adds support for the Mozilla web-browser
mp3 - Add support for reading mp3 files
mp4 - Support for MP4 container format
mpeg - Adds libmpeg3 support to various packages
mpi - Adds MPI (Message Passing Interface) layer to the apps that support it
mplayer - Enable mplayer support for playback or encoding
msn - Enable MSN Messenger IM protocol support
msql - Adds support for the MSQL database server
mssql - Adds support for Microsoft SQL Server database
mtp - Enable support for Media Transfer Protocol
mule - Adds multi-language support to XEmacs
multilib - On 64bit systems, if you want to be able to compile 32bit and 64bit binaries
musepack - Enable support for the musepack audio codec
musicbrainz - Lookup audio metadata using MusicBrainz community service (musicbrainz.org)
mysql - Adds mySQL Database support
mysqli - Adds support for the improved mySQL libraries
nas - Adds support for network audio sound
ncurses - Adds ncurses support (console display library)
neXt - Enable neXt toolkit
netboot - Enables network booting
netcdf - Enable NetCDF data format support
networkmanager - Enable net-misc/networkmanager support
nis - Support for NIS/YP services
nls - Adds Native Language Support (using gettext - GNU locale utilities)
nntp - Add support for newsgroups (Network News Transfer Protocol)
nocd - Install all files required to run the application without a CD mounted
nocxx - Disable support for C++ (DON'T USE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)
nptl - Enable support for Native POSIX Threads Library, the new threading module (requires linux-2.6 or better usually)
nsplugin - Build plugin for browsers supporting the Netscape plugin architecture (that is almost any modern browser)
ocaml - Adds support/bindings for the Ocaml language
ocamlopt - Enables ocamlopt support (ocaml native code compiler) -- Produces faster programs (Warning: you have to disable/enable it at a global scale)
oci8 - Adds Oracle 8 Database Support
oci8-instant-client - Use dev-db/oracle-instantclient-basic as Oracle provider instead of requiring a full Oracle server install
odbc - Adds ODBC Support (Open DataBase Connectivity)
offensive - Enables potentially offensive items in packages
ofx - Enable support for importing (and exporting) OFX (Open Financial eXchange) data files
ogg - Adds support for the Ogg container format (commonly used by Vorbis, Theora and flac)
old-linux - Add support for linux-2.4 and older
openal - Adds support for the Open Audio Library
openexr - Support for the OpenEXR graphics file format
opengl - Adds support for OpenGL (3D graphics)
openmp - Build support for the OpenMP (support parallel computing), requires >=sys-devel/gcc-4.2 built with USE="openmp"
oracle - Enable Oracle Database support
osc - Enables support for Open Sound Control
oscar - Enable Oscar (AIM/ICQ) IM protocol support
oss - Adds support for OSS (Open Sound System)
pam - Adds support PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip
pch - Enable precompiled header support for faster compilation at the expense of disk space and memory (>=sys-devel/gcc-3.4 only)
pcmcia - Adds support for PCMCIA slots/devices found on laptop computers
pcntl - Adds support for process creation functions
pcre - Adds support for Perl Compatible Regular Expressions
pda - Adds support for portable devices
pdf - Adds general support for PDF (Portable Document Format), this replaces the pdflib and cpdflib flags
perl - Adds support/bindings for the Perl language
php - Include support for the PHP language
plasma - Build optional plasma widgets that require kde-base/libplasma
plotutils - Add support for plotutils (library for 2-D vector graphics)
png - Adds support for libpng (PNG images)
policykit - Use sys-auth/policykit to gain privileges
portaudio - Adds support for the crossplatform portaudio audio API
posix - Adds support for POSIX-compatible functions
postgres - Adds support for the postgresql database
ppds - Adds support for automatically generated ppd (printing driver) files
prelude - Adds support/bindings for the Prelude Intrusion Detection System
prefix - Defines if a Gentoo Prefix offset installation is used
profile - Adds support for software performance analysis (will likely vary from ebuild to ebuild)
pulseaudio - Adds support for PulseAudio sound server
python - Adds support/bindings for the Python language
qdbm - Adds support for the qdbm (Quick Database Manager) library
qmail-spp - Adds support for qmail SMTP plugins
qt3 - Adds support for the Qt GUI/Application Toolkit version 3.x
qt4 - Adds support for the Qt GUI/Application Toolkit version 4.x
quicktime - Adds support for OpenQuickTime
radius - Adds support for RADIUS authentication
raw - Add support for raw image formats
rdesktop - Adds support for the remote desktop protocol, usually used to connect to Windows servers
readline - Enables support for libreadline, a GNU line-editing library that almost everyone wants
recode - Enables support for the GNU recode library
rss - Enables support for RSS feeds
ruby - Adds support/bindings for the Ruby language
samba - Adds support for SAMBA (Windows File and Printer sharing)
sapdb - Adds support for SAP DB
sasl - Adds support for the Simple Authentication and Security Layer
savedconfig - Use this to restore your config from /etc/portage/savedconfig ${CATEGORY}/${PN}. Make sure your USE flags allow for appropriate dependencies
scanner - Adds support for scanner hardware (e.g. build the sane frontend in kdegraphics)
sdl - Adds support for Simple Direct Layer (media library)
seamonkey - Adds support for the Seamonkey web-browser
selinux - !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
semantic-desktop - Cross-KDE support for semantic search and information retrieval
session - Adds persistent session support
sharedext - Adds support for building shared extensions in PHP
sharedmem - Adds support for shared memory use
shorten - Adds support for the shorten audio compressor
simplexml - support for SimpleXML
skey - Enable S/Key (Single use password) authentication support
slang - Adds support for the slang text display library (it's like ncurses, but different)
slp - Adds Service Locator Protocol support
smartcard - Enables smartcard support
smp - Enable support for multiprocessors or multicore systems
sndfile - Adds support for libsndfile
snmp - Adds support for the Simple Network Management Protocol if available
soap - Adds support for SOAP (Simple Object Access Protocol)
sockets - Adds support for tcp/ip sockets
socks5 - Adds support for the socks5 proxy
solid - Adds support for the Solid database engine
source - Zip the sources and install them
sox - Adds support for Sound eXchange (SoX)
speex - Adds support for the speex audio codec (used for speech)
spell - Adds dictionary support
spl - Adds support for the Standard PHP Library
sqlite - Adds support for sqlite - embedded sql database
sqlite3 - Adds support for sqlite3 - embedded sql database
sse - fast floating point optimization for PentiumIII+ class chips
sse2 - faster floating point optimization for SSE2 capable chips
ssl - Adds support for Secure Socket Layer connections
startup-notification - Enable application startup event feedback mechanism
static - !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically
static-libs - Build static libraries
subversion - Enable subversion (version control system) support
suid - Enable setuid root program, with potential security risks
svg - Adds support for SVG (Scalable Vector Graphics)
svga - Adds support for SVGAlib (graphics library)
sybase - Adds support for the Sybase SQL Database Server
sybase-ct - Adds support for Sybase-CT
symlink - Force kernel ebuilds to automatically update the /usr/src/linux symlink
syslog - Enables support for syslog
sysvipc - Support for System V-compatible inter-process communication
szip - Use the szip compression library
taglib - Enable tagging support with taglib
tcl - Adds support the Tcl language
tcpd - Adds support for TCP wrappers
test - Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don't set it in make.conf/package.use anymore
theora - Adds support for the Theora Video Compression Codec
threads - Adds threads support for various packages. Usually pthreads
tidy - Adds support for HTML Tidy
tiff - Adds support for the TIFF image format
timidity - Build with Timidity++ (MIDI sequencer) support
tk - Adds support for Tk GUI toolkit
tokenizer - Adds support for the PHP file parser
truetype - Adds support for FreeType and/or FreeType2 fonts
uclibc - Enable uclibc specific patches and build or link uclibc
unicode - Adds support for Unicode
usb - Adds USB support to applications that have optional USB support (e.g. cups)
v4l - Enables video4linux support
v4l2 - Enable video4linux2 support
vanilla - Do not add extra patches which change default behaviour; DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically
vcd - Video CD support
vhosts - Adds support for installing web-based applications into a virtual-hosting environment
videos - Install optional video files (used in some games)
vim-syntax - Pulls in related vim syntax scripts
vnc - Enable VNC (remote desktop viewer) support
voodoo3 - Adds support for 3Dfx's Voodoo3 video chipset, else defaults to Voodoo4/5 support if not in USE
vorbis - Adds support for the OggVorbis audio codec
wavpack - Add support for wavpack audio compression tools
wddx - Adds support for Web Distributed Data eXchange
wifi - Enable wireless network functions
win32codecs - use win32codecs package for dll avi decoding support (wmv and what not)
wmf - Adds support for the Windows Metafile vector image format
wxwidgets - Adds support for wxWidgets/wxGTK GUI toolkit
wxwindows - Adds support for wxWidgets/wxGTK GUI toolkit (deprecated, use wxwidgets)
x264 - Enable h264 encoding using x264
xattr - Adds support for extended attributes (filesystem-stored metadata)
xcb - Support the X C-language Binding, a replacement for Xlib
xcomposite - Enable support for the Xorg composite extension
xemacs - Add support for XEmacs
xface - Adds xface support used to allow a small image of xface format to be included in an email via the header 'X-Face'
xft - Build with support for XFT font renderer (x11-libs/libXft)
xine - Add support for the XINE movie libraries
xinerama - Add support for the xinerama X11 extension, which allows you to stretch your display across multiple monitors
xinetd - Add support for the xinetd super-server
xml - Add support for XML files
xmlrpc - Support for xml-rpc library
xmp - Enable support for Extensible Metadata Platform (Adobe XMP)
xosd - Sends display using the X On Screen Display library
xpm - Adds support for XPM graphics format
xscreensaver - Adds support for XScreenSaver extension
xsl - Check/Support flag for XSL library (version 1)
xulrunner - Build native browser integration against xulrunner instead of firefox or seamonkey
xv - Adds in optional support for the Xvideo extension (an X API for video playback)
xvid - Adds support for xvid.org's open-source mpeg-4 codec
yahoo - Enable Yahoo Messenger IM protocol support
yaz - Adds in optional support for the Z39.50 Protocol for Information Retrieval (YAZ)
zeroconf - Support for DNS Service Discovery (DNS-SD)
zlib - Adds support for zlib (de)compression
zsh-completion - Enable zsh completion support
