# 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.510 2013/10/14 12:44:09 jlec Exp $

# Keep them sorted

3dfx - Enable support for Voodoo chipsets, also called as 3DFX and TDFX
3dnow - Add support for 3dnow multimedia processor instructions
X - Add support for X11
Xaw3d - Add support for the 3d athena widget set
a52 - Enable support for decoding ATSC A/52 streams used in DVD
aac - Enable support for MPEG-4 AAC Audio
aalib - Add support for media-libs/aalib (ASCII-Graphics Library)
accessibility - Add support for accessibility (eg 'at-spi' library)
acl - Add support for Access Control Lists
acpi - Add support for Advanced Configuration and Power Interface
adns - Add support for asynchronous DNS resolution
afs - Add OpenAFS support (distributed file system)
aim - Enable AIM IM protocol support
alsa - Add support for media-libs/alsa-lib (Advanced Linux Sound Architecture)
altivec - Add support for optimizations for G4 and G5/ppc970 processors
ao - Use libao audio output library for sound playback
apache2 - Add Apache2 support
apm - Add 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 - Add 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 - Add support for libbcmath
berkdb - Add support for sys-libs/db (Berkeley DB for MySQL)
bidi - Enable bidirectional language support
bindist - Flag to enable or disable options for prebuilt (GRP) packages (eg. due to licensing issues)
blas - Add support for the virtual/blas numerical library
bluetooth - Enable Bluetooth Support
bootstrap - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used during original system bootstrapping [make stage2]
boundschecking - Add 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 - Add support for calendars (not using mcal!)
canna - Add support for the Canna kana to kanji conversion engine
caps - Use Linux capabilities library to control privilege
cdb - Add support for the CDB database engine from the author of qmail
cdda - Add Compact Disk Digital Audio (Standard Audio CD) support
cddb - Access cddb servers to retrieve and submit information about compact disks
cdinstall - Copy files from the CD rather than asking the user to copy them, mostly used with games
cdparanoia - Enable cdparanoia (audio CD ripper) support
cdr - Add support for CD writer hardware
cgi - Add CGI script support
cjk - Add support for Multi-byte character languages (Chinese, Japanese, Korean)
clamav - Add support for Clam AntiVirus software (usually with a plugin)
connman - Add support for net-misc/connman
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 - Enable cscope interface -- in vim for example
css - Enable reading of encrypted DVDs
ctype - Enable ctype functions
cups - Add support for CUPS (Common Unix Printing System)
curl - Add support for client-side URL transfer library
curlwrappers - Add support for using curl in streams
custom-cflags - Build with user-specified CFLAGS (unsupported)
cvs - Enable CVS (Concurrent Versions System) integration
cxx - Build support for C++ (bindings, extra libraries, code generation, ...)
dbi - Enable dev-db/libdbi (database-independent abstraction layer) support
dbm - Add 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 - Add support for dedicated game servers (some packages do not provide clients and servers at the same time)
dga - Add DGA (Direct Graphic Access) support for X
directfb - Add support for DirectFB layer (library for FB devices)
djvu - Support DjVu, a PDF-like document format esp. suited for scanned documents
doc - Add 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 - Enable DTS Coherent Acoustics decoder support
dv - Enable support for a codec used by many camcorders
dvb - Add support for DVB (Digital Video Broadcasting)
dvd - Add support for DVDs
dvdr - Add support for DVD writer hardware (e.g. in xcdroast)
eds - Enable support for Evolution-Data-Server (EDS)
emacs - Add support for GNU Emacs
emboss - Add support for the European Molecular Biology Open Software Suite
encode - Add support for encoding of audio or video files
enscript - Add enscript support to colourize code stored in the repository
evo - Add support for mail-client/evolution
examples - Install examples, usually source code
exif - Add 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 - Add 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 - Add support for the Firebird relational database
flac - Add support for FLAC: Free Lossless Audio Codec
flatfile - Add dbm support for flat files
fltk - Add support for the Fast Light Toolkit gui interface
fontconfig - Support for configuring and customizing font access via media-libs/fontconfig
foomaticdb - Add support for the foomatic printing driver database
fortran - Add support for fortran
freetds - Add support for the TDS protocol to connect to MSSQL/Sybase databases
freewnn - Add support for FreeWnn kana to kanji conversion engine
frontbase - Add support for the frontbase sql server
ftp - Add FTP (File Transfer Protocol) support
gcj - Enable building with gcj (The GNU Compiler for the Javatm Programming Language)
gd - Add support for media-libs/gd (to generate graphics on the fly)
gdbm - Add support for sys-libs/gdbm (GNU database libraries)
geoip - Add geoip support for country and city lookup based on IPs
ggi - Add support for media-libs/libggi (non-X video api/drivers)
gif - Add GIF image support
gimp - Build a plugin for the GIMP
git - Enable git (version control system) support
glut - Build an OpenGL plugin using the GLUT library
gmp - Add support for dev-libs/gmp (GNU MP library)
gnome - Add GNOME support
gnome-keyring - Enable support for storing passwords via gnome-keyring
gnuplot - Enable support for gnuplot (data and function plotting)
gnutls - Add support for net-libs/gnutls (TLS 1.0 and SSL 3.0 support)
gphoto2 - Add digital camera support
gpm - Add support for sys-libs/gpm (Console-based mouse driver)
gps - Add support for Global Positioning System
graphviz - Add support for the Graphviz library
gsl - Use the GNU scientific library for calculations
gsm - Add support for the gsm lossy speech compression codec
gstreamer - Add support for media-libs/gstreamer (Streaming media)
gtk - Add support for x11-libs/gtk+ (The GIMP Toolkit)
gtkhtml - Add support for gnome-extra/gtkhtml
guile - Add 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 - Add support for the Hierarchical Data Format v5
hscolour - Include 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 - Enable support for Imagemagick (image converter)
imap - Add support for IMAP (Internet Mail Application Protocol)
imlib - Add support for imlib, an image loading and rendering library
infiniband - Enable Infiniband RDMA transport support
inifile - Add dbm support for .ini files
inotify - Enable inotify filesystem monitoring support
introspection - Add support for GObject based introspection
iodbc - Add 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 - Add support for IP version 6
iwmmxt - Add support for optimizations for ARM iwMMXt instructions
jabber - Enable jabber IM protocol support
jack - Add support for the JACK Audio Connection Kit
java - Add support for Java
java6 - Use Java 1.6 to build package with || ( reduced deps, 1.6 features, source/target 1.6 )
javascript - Enable javascript support
jbig - Enable jbig-kit support for tiff, Hylafax, ImageMagick, etc
jingle - Enable 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 - Add JPEG image support
jpeg2k - Support for JPEG 2000, a wavelet-based image compression format
kde - Add support for KDE (K Desktop Environment)
kerberos - Add kerberos support
kolab - Add support for the Kolab groupware server
kontact - Enable support for the KDE personal information manager (kde-base/kdepim*)
ladspa - Enable the ability to support ladspa plugins
lame - Prefer using LAME libraries for MP3 encoding support
lapack - Add support for the virtual/lapack numerical library
lash - Add LASH Audio Session Handler support
latex - Add support for LaTeX (typesetting package)
lcms - Add lcms support (color management engine)
ldap - Add 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 - Add libwww support (General purpose WEB API)
lirc - Add 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 - Add linux lm_sensors (hardware sensors) support
lua - Enable Lua scripting support
lzma - Support for LZMA (de)compression algorithm
lzo - Enable support for lzo compression
m17n-lib - Enable m17n-lib support
mad - Add support for mad (high-quality mp3 decoder library and cli frontend)
maildir - Add support for maildir (~/.maildir) style mail spools
matroska - Add support for the matroska container format (extensions .mkv, .mka and .mks)
matrox - Add Matrox MGA support to mplayer
mbox - Add support for mbox (/var/spool/mail) style mail spools
memlimit - Add memory usage limiting in supporting programs
mhash - Add support for the mhash library
migemo - Enable migemo support for Japanese
mikmod - Add libmikmod support to allow playing of SoundTracker-style music files
milter - Add sendmail mail filter (milter) support
mime - Add MIME support
minimal - Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
mmap - Add mmap (memory map) support
mms - Support for Microsoft Media Server (MMS) streams
mmx - Add support for optimizations for Pentium MMX and Athlon class processors
mng - Add support for libmng (MNG images)
modplug - Add libmodplug support for playing SoundTracker-style music files
modules - Build the kernel modules
mono - Build Mono bindings to support dotnet type stuff
motif - Add support for the Motif toolkit
mozilla - Add support for the Mozilla web-browser
mp3 - Add support for reading mp3 files
mp4 - Support for MP4 container format
mpeg - Add libmpeg3 support to various packages
mpi - Add 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 - Add support for Microsoft SQL Server database
mtp - Enable support for Media Transfer Protocol
mule - Add 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 - Add mySQL Database support
mysqli - Add support for the improved mySQL libraries
nas - Add support for network audio sound
ncurses - Add ncurses support (console display library)
neXt - Enable neXt toolkit
neon - Enable optimization support for ARM NEON processors
netboot - Enable network booting
netcdf - Enable NetCDF data format support
networkmanager - Enable net-misc/networkmanager support
nis - Support for NIS/YP services
nls - Add 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
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 - Add support/bindings for the Ocaml language
ocamlopt - Enable ocamlopt support (ocaml native code compiler) -- Produces faster programs (Warning: you have to disable/enable it at a global scale)
oci8 - Add 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 - Add ODBC Support (Open DataBase Connectivity)
offensive - Enable potentially offensive items in packages
ofx - Enable support for importing (and exporting) OFX (Open Financial eXchange) data files
ogg - Add support for the Ogg container format (commonly used by Vorbis, Theora and flac)
old-linux - Add support for linux-2.4 and older
openal - Add support for the Open Audio Library
openexr - Support for the OpenEXR graphics file format
opengl - Add 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 - Enable support for Open Sound Control
oscar - Enable Oscar (AIM/ICQ) IM protocol support
oss - Add support for OSS (Open Sound System)
pam - Add 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 - Add support for PCMCIA slots/devices found on laptop computers
pcntl - Add support for process creation functions
pcre - Add support for Perl Compatible Regular Expressions
pda - Add support for portable devices
pdf - Add general support for PDF (Portable Document Format), this replaces the pdflib and cpdflib flags
perl - Add 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 - Add support for libpng (PNG images)
policykit - Enable PolicyKit authentication support
portaudio - Add support for the crossplatform portaudio audio API
posix - Add support for POSIX-compatible functions
postgres - Add support for the postgresql database
postscript - Enable support for the PostScript language (often with ghostscript-gpl or libspectre)
ppds - Add support for automatically generated ppd (printing driver) files
prefix - Defines if a Gentoo Prefix offset installation is used
prelude - Add support/bindings for the Prelude Intrusion Detection System
profile - Add support for software performance analysis (will likely vary from ebuild to ebuild)
pulseaudio - Add support for PulseAudio sound server
python - Add optional support/bindings for the Python language
qdbm - Add support for the qdbm (Quick Database Manager) library
qmail-spp - Add support for qmail SMTP plugins
qt4 - Add support for the Qt GUI/Application Toolkit version 4.x
qt5 - Add support for the Qt 5 application and UI framework
quicktime - Add support for OpenQuickTime
radius - Add support for RADIUS authentication
raw - Add support for raw image formats
rdesktop - Add support for the remote desktop protocol, usually used to connect to Windows servers
readline - Enable support for libreadline, a GNU line-editing library that almost everyone wants
recode - Enable support for the GNU recode library
rss - Enable support for RSS feeds
ruby - Add support/bindings for the Ruby language
samba - Add support for SAMBA (Windows File and Printer sharing)
sasl - Add 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 - Add support for scanner hardware (e.g. build the sane frontend in kdegraphics)
sdl - Add support for Simple Direct Layer (media library)
seamonkey - Add 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 - Add persistent session support
sharedmem - Add support for shared memory use
shorten - Add support for the shorten audio compressor
simplexml - Support for SimpleXML
skey - Enable S/Key (Single use password) authentication support
slang - Add support for the slang text display library (it's like ncurses, but different)
slp - Add Service Locator Protocol support
smartcard - Enable smartcard support
smp - Enable support for multiprocessors or multicore systems
sndfile - Add support for libsndfile
snmp - Add support for the Simple Network Management Protocol if available
soap - Add support for SOAP (Simple Object Access Protocol)
sockets - Add support for tcp/ip sockets
socks5 - Add support for the socks5 proxy
sound - Enable sound support
source - Zip the sources and install them
sox - Add support for Sound eXchange (SoX)
speex - Add support for the speex audio codec (used for speech)
spell - Add dictionary support
sqlite - Add support for sqlite - embedded sql database
sqlite3 - Add 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 - Add 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 - Add support for SVG (Scalable Vector Graphics)
svga - Add support for SVGAlib (graphics library)
sybase - Add support for the Sybase SQL Database Server
sybase-ct - Add support for Sybase-CT
symlink - Force kernel ebuilds to automatically update the /usr/src/linux symlink
syslog - Enable 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 - Add support the Tcl language
tcmalloc - Use the dev-util/google-perftools libraries to replace the malloc() implementation with a possibly faster one
tcpd - Add 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 - Add support for the Theora Video Compression Codec
threads - Add threads support for various packages. Usually pthreads
tidy - Add support for HTML Tidy
tiff - Add support for the TIFF image format
timidity - Build with Timidity++ (MIDI sequencer) support
tk - Add support for Tk GUI toolkit
tokenizer - Add support for the PHP file parser
truetype - Add 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 - Add support for Unicode
upnp - Enable UPnP port mapping support
upnp-av - Enable UPnP audio/video streaming support
usb - Add USB support to applications that have optional USB support (e.g. cups)
v4l - Enable support for video4linux (using linux-headers or userspace libv4l libraries)
vala - Enable bindings for dev-lang/vala
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 - Add 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 - Add support for the OggVorbis audio codec
wayland - Enable dev-libs/wayland backend
wavpack - Add support for wavpack audio compression tools
wddx - Add support for Web Distributed Data eXchange
webkit - Add support for the WebKit HTML rendering/layout engine
wifi - Enable wireless network functions
wmf - Add support for the Windows Metafile vector image format
wxwidgets - Add support for wxWidgets/wxGTK GUI toolkit
x264 - Enable h264 encoding using x264
xattr - Add 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 - Add 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 - Add support for XPM graphics format
xscreensaver - Add support for XScreenSaver extension
xsl - Check/Support flag for XSL library (version 1)
xv - Add in optional support for the Xvideo extension (an X API for video playback)
xvid - Add support for xvid.org's open-source mpeg-4 codec
yahoo - Enable Yahoo Messenger IM protocol support
yaz - Add in optional support for the Z39.50 Protocol for Information Retrieval (YAZ)
zeroconf - Support for DNS Service Discovery (DNS-SD)
zlib - Add support for zlib (de)compression
zsh-completion - Enable zsh completion support
