# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/use.desc,v 1.500 2013/01/27 18:04:13 vapier 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
adns - Adds support for asynchronous DNS resolution
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
aqua - Include support for the Mac OS X Aqua (Carbon/Cocoa) GUI
atm - Enable Asynchronous Transfer Mode protocol support
audiofile - Adds support for libaudiofile where applicable
ayatana - Build in support for Ayatana notification using the libindicate or libappindicator plugin
avahi - Add avahi/Zeroconf support
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)
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
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, ...)
dbi - Enable dev-db/libdbi (database-independent abstraction layer) support
dbm - Adds support for generic DBM databases
dbus - Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
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). It is recommended to enable per package instead of globally
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
encode - Adds support for encoding of audio or video files
enscript - Add enscript support to colourize code stored in the repository
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
filecaps - Use Linux file capabilities to control privilege rather than set*id
firebird - Adds support for the Firebird relational database
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)
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
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)
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
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
gzip - Compress files with Lempel-Ziv coding (LZ77)
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
hscolour - Includes coloured haskell sources to generated documentation (dev-haskell/hscolour)
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
infiniband - Enable Infiniband RDMA transport support
inifile - Adds dbm support for .ini files
introspection - Adds support for GObject based introspection
iodbc - Adds support for iODBC library
ios - Enable support for Apple's iDevice with iOS operating system (iPad, iPhone, iPod, etc)
ipod - Enable support for iPod device access
ipv6 - Adds support for IP version 6
iwmmxt - Adds support for optimizations for ARM iwMMXt instructions
jabber - Enable jabber IM protocol support
jack - Adds support for the JACK Audio Connection Kit
java - Adds support for Java
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
jit - Enable just-in-time compilation for improved performance. May prevent use of some PaX memory protection features in Gentoo Hardened.
joystick - Add support for joysticks in all packages
jpeg - Adds JPEG image support
jpeg2k - Support for JPEG 2000, a wavelet-based image compression format
kde - Adds support for KDE (K Desktop Environment)
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
kontact - Enable support for the KDE personal information manager (kde-base/kdepim*)
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)
libass - SRT/SSA/ASS (SubRip / SubStation Alpha) subtitle support
libcaca - Add support for colored ASCII-art graphics
libedit - Use the libedit library (replacement for readline)
libffi - Enable support for Foreign Function Interface library
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
lzma - Support for LZMA (de)compression algorithm
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
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
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
mms - Support for Microsoft Media Server (MMS) streams
mmx - Adds support for optimizations for Pentium MMX and Athlon class processors
mng - Adds support for libmng (MNG images)
modplug - Adds libmodplug support for playing SoundTracker-style music files
modules - Build the kernel modules
mono - Build Mono bindings to support dotnet type stuff
motif - Adds support for the Motif toolkit
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
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
neon - Enable optimization support for ARM NEON processors
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 - Old flag -- USE=cxx from now on
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
orc - Use dev-lang/orc for just-in-time optimization of array operations
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 for 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 optional support/bindings for the Perl language
php - Include support for the PHP language
plasma - Build optional KDE plasma addons
plotutils - Add support for plotutils (library for 2-D vector graphics)
png - Adds support for libpng (PNG images)
policykit - Enable PolicyKit authentication support
portaudio - Adds support for the crossplatform portaudio audio API
posix - Adds support for POSIX-compatible functions
postgres - Adds support for the postgresql database
postscript - Enable support for the PostScript language (often with ghostscript-gpl or libspectre)
ppds - Adds support for automatically generated ppd (printing driver) files
prefix - Defines if a Gentoo Prefix offset installation is used
prelude - Adds support/bindings for the Prelude Intrusion Detection System
profile - Adds support for software performance analysis (will likely vary from ebuild to ebuild)
pulseaudio - Adds support for PulseAudio sound server
python - Adds optional support/bindings for the Python language
qdbm - Adds support for the qdbm (Quick Database Manager) library
qmail-spp - Adds support for qmail SMTP plugins
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)
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
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
sound - Enable sound support
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
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
sse3 - faster floating point optimization for SSE3 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
systemd - Enable use of systemd-specific libraries and features like socket activation or session tracking
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
tcmalloc - Use the dev-util/google-perftools libraries to replace the malloc() implementation with a possibly faster one
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
udev - Enable sys-fs/udev integration (device discovery, power and storage device support, etc)
unicode - Adds support for Unicode
upnp - Enable UPnP port mapping support
upnp-av - Enable UPnP audio/video streaming support
usb - Adds USB support to applications that have optional USB support (e.g. cups)
v4l - Enable support for video4linux (using linux-headers or userspace libv4l libraries)
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
vdpau - Enable the Video Decode and Presentation API for Unix acceleration interface
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
vorbis - Adds support for the OggVorbis audio codec
wayland - Enable dev-libs/wayland backend
wavpack - Add support for wavpack audio compression tools
wddx - Adds support for Web Distributed Data eXchange
webkit - Add support for the WebKit HTML rendering/layout engine
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
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 is mandatory if you work in multiple monitors setup
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)
xmpp - Enable support for Extensible Messaging and Presence Protocol (XMPP) formerly known as Jabber
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)
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
