.TH "MAKE.CONF" "5" "Jan 2013" "Portage VERSION" "Portage"
.SH "NAME"
make.conf \- custom settings for Portage
.SH "SYNOPSIS"
\fB/etc/make.conf\fR and \fB/etc/portage/make.conf\fR
.SH "DESCRIPTION"
This file contains various variables that are used by Portage.
Portage will check the currently\-defined environment variables
first for any settings.  If no environment settings are found,
Portage then checks the make.conf files. Both /etc/make.conf and
/etc/portage/make.conf are checked (if present), and settings from
/etc/portage/make.conf will override settings from /etc/make.conf.
If no setting is found in the make.conf files, Portage checks
make.globals. If no
setting is found there, the profile's default setting is grabbed
from /etc/portage/make.profile/make.defaults. Please note that all user
settings should be made in the environment or in the make.conf
files, which are intended to be customized by the user.
.br
Exceptions are incremental variables such as USE, CONFIG_PROTECT*,
and ACCEPT_KEYWORDS.  Incremental variables are propagated down from
make.defaults to make.globals to make.conf to the environment
settings.  Clearing these variables requires a clear\-all as in:
export USE="\-*"
.br
In order to create per\-package environment settings, refer to
\fBpackage.env\fR in \fBportage\fR(5).
.SH "VARIABLES"
.TP
\fBACCEPT_CHOSTS\fR = \fI[space delimited list of CHOST values]\fR
Specifies acceptable \fBCHOST\fR values. Regular
expression syntax is supported, so it is necessary to escape
\fBCHOST\fR characters if they have special meaning in regular expressions.
.br
Defaults to the value of $CHOST.
.TP
\fBACCEPT_KEYWORDS\fR = \fI[space delimited list of KEYWORDS]\fR
Enable testing of ebuilds that have not yet been deemed 'stable'.  Users
of the 'x86' architecture would set this to '~x86' while ppc users would
set this to '~ppc'.  This is an incremental variable.  Only define a 
~arch.
.br
Defaults to the value of $ARCH.
.TP
\fBACCEPT_LICENSE\fR = \fI[space delimited list of licenses or groups]\fR
This variable is used to mask packages based on licensing restrictions. It
may contain both license and group names, where group names are prefixed
with the '@' symbol. License groups are defined in the \fIlicense_groups\fR
file (see \fBportage\fR(5)). In addition to license and group names, the
\fI*\fR and \fI-*\fR wildcard tokens are also supported. Refer to GLEP 23
for further information:
\fIhttp://www.gentoo.org/proj/en/glep/glep-0023.html\fR.
.br
Defaults to the value of * -@EULA.
.br
.I Examples:
.nf
# Accept any license
ACCEPT_LICENSE="*"
# Accept any license except the "public-domain" license
ACCEPT_LICENSE="* -public-domain"
# Only accept licenses in the FSF-APPROVED license group
ACCEPT_LICENSE="-* @FSF-APPROVED"
.fi
.TP
\fBACCEPT_PROPERTIES\fR = \fI[space delimited list of properties]\fR
This variable is used to mask packages based on PROPERTIES restrictions.
In addition to property names, the \fI*\fR and \fI-*\fR wildcard tokens are
also supported. This variable can be temporarily overridden using the
\fB\-\-accept\-properties\fR option of \fBemerge\fR(1).
See \fBebuild\fR(5) for more information about PROPERTIES. 
.br
Defaults to the value of *.
.br
.I Examples:
.nf
# Accept any properties
ACCEPT_PROPERTIES="*"
# Accept any properties except the "interactive" property
ACCEPT_PROPERTIES="* -interactive"
.fi
.TP
.B CBUILD
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-build=${CBUILD}\fR only if it is defined.  Do not set this yourself
unless you know what you are doing.
.TP
\fBCCACHE_DIR\fR = \fI[path]\fR
Defines the location of the ccache working directory.  See the \fBccache\fR(1)
man page for more information.
.br
Defaults to /var/tmp/ccache
.TP
\fBCCACHE_SIZE\fR = \fI"size"\fR
This controls the space use limitations for ccache.  The default is 2 gigabytes 
('2G').  Sizes are specified with 'G', 'M', or 'K'.
.TP
.B CFLAGS CXXFLAGS
Use these variables to set the desired optimization/CPU instruction settings
for applications that you compile.  These two variables are passed to the C
and C++ compilers, respectively. (CXX is used to refer to the C++ compiler
within many buildsystems.) Nearly all ebuild files will take advantage
of your custom settings, resulting in a Gentoo Linux that is fully customized
to your specifications.  Please use sane settings as some packages will fail to
compile/run if the optimizations are too extreme.

For more information, see the \fIInvoking GCC\fR section of the gcc manual:
.br
http://gcc.gnu.org/onlinedocs/
.TP
.B CHOST
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
step as \fI\-\-host=${CHOST}\fR.  This way you can force the build\-host.

For more information:
.br
http://gcc.gnu.org/onlinedocs/gcc\-4.1.1/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.3/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.2/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-2.95.3/gcc_2.html
.TP
\fBCLEAN_DELAY\fR = \fIinteger\fR
Determines how long the countdown delay will be after running
`emerge --unmerge`.
.br
Defaults to 5 seconds.
.TP
\fBCOLLISION_IGNORE\fR = \fI[space delimited list of fnmatch patterns]\fR
This variable allows the user to disable \fIcollision\-protect\fR and
\fIprotect\-owned\fR for specific \fBfnmatch\fR(3) patterns. For backward
compatibility, directories that are listed without a fnmatch pattern will
automatically have /* appended to them.
.br
Defaults to "/lib/modules/* *.py[co]".
.TP
\fBCONFIG_PROTECT\fR = \fI[space delimited list of files and/or directories]\fR
All files and/or directories that are defined here will have "config file protection"
enabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
\fBCONFIG_PROTECT_MASK\fR = \fI[space delimited list of files and/or directories]\fR
All files and/or directories that are defined here will have "config file protection"
disabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
.B CTARGET
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-target=${CTARGET}\fR only if it is defined.
.TP
\fBDISTDIR\fR = \fI[path]\fR
Defines the location of your local source file repository. After packages
are built, it is safe to remove any and all files from this directory since
they will be automatically fetched on demand for a given build. If you would
like to selectively prune obsolete files from this directory, see
\fBeclean\fR(1) from the gentoolkit package.

Use the \fBPORTAGE_RO_DISTDIRS\fR variable to specify one or
more read-only directories containing distfiles.

Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/distfiles.
.TP
.B DOC_SYMLINKS_DIR
If this variable contains a directory then symlinks to html documentation will
be installed into it.
.TP
.B EBEEP_IGNORE
Defines whether or not to ignore audible beeps when displaying important
informational messages.  This variable is unset by default.
.TP
.B EMERGE_DEFAULT_OPTS
Options to append to the end of the \fBemerge\fR(1) command line on every invocation.
These options will not be appended to the command line if \-\-ignore\-default\-opts
is specified.
.TP
.B EMERGE_LOG_DIR
Controls the location of emerge.log and emerge-fetch.log.
.br
Defaults to /var/log.
.TP
\fBEMERGE_WARNING_DELAY\fR = \fIinteger\fR
Determines how long the countdown delay will be after running
`emerge --unmerge` for a system package.
.br
Defaults to 10 seconds.
.TP
.B EPAUSE_IGNORE
Defines whether or not to ignore short pauses that occur when displaying
important informational messages.  This variable is unset by default.
If it is set to any value pauses are ignored.
.TP
\fBEXTRA_ECONF\fR = \fI[configure options string]\fR
Contains additional options that \fBeconf\fR will append to configure
script arguments (see \fBebuild\fR(5)).
.TP
\fBFEATURES\fR = \fI"sandbox"\fR
Defines actions portage takes by default. This is an incremental variable.
Most of these settings are for developer use, but some are available to
non-developers as well. The \fBsandbox\fR feature is very important and
should not be disabled by default.
.RS
.TP
.B assume\-digests
When commiting work to cvs with \fBrepoman\fR(1), assume that all existing 
SRC_URI digests are correct.  This feature also affects digest generation via
\fBebuild\fR(1) and \fBemerge\fR(1) (emerge generates digests only when the
\fIdigest\fR feature is enabled). Existing digests for files that do not exist
in ${DISTDIR} will be automatically assumed even when \fIassume\-digests\fR is
not enabled. If a file exists in ${DISTDIR} but its size does not match the
existing digest, the digest will be regenerated regardless of whether or
not \fIassume\-digests\fR is enabled. The \fBebuild\fR(1) \fBdigest\fR command
has a \fB\-\-force\fR option that can be used to force regeneration of digests.
.TP
.B binpkg\-logs
Keep logs from successful binary package merges. This is relevant only when
\fBPORT_LOGDIR\fR is set.
.TP
.B buildpkg
Binary packages will be created for all packages that are merged. Also see
\fBquickpkg\fR(1) and \fBemerge\fR(1) \fB\-\-buildpkg\fR and
\fB\-\-buildpkgonly\fR options.
.TP
.B buildsyspkg
Build binary packages for just packages in the system set.
.TP
.B candy
Enable a special progress indicator when \fBemerge\fR(1) is calculating
dependencies.
.TP
.B ccache
Enable portage support for the ccache package.  If the ccache dir is not 
present in the user's environment, then portage will default to 
${PORTAGE_TMPDIR}/ccache.

\fBWarning\fR: This feature is known to cause numerous compilation failures.
Sometimes ccache will retain stale code objects or corrupted files, which can
lead to packages that cannot be emerged. If this happens (if you receive errors
like "File not recognized: File truncated"), try recompiling the application
with ccache disabled before reporting a bug. Unless you are doing development
work, do not enable ccache.
.TP
.B clean\-logs
Enable automatic execution of the command specified by the
PORT_LOGDIR_CLEAN variable. The default PORT_LOGDIR_CLEAN setting will
remove all files from PORT_LOGDIR that were last modified at least 7
days ago.
.TP
.B collision\-protect
A QA\-feature to ensure that a package doesn't overwrite files it doesn't own.
The \fICOLLISION_IGNORE\fR variable can be used to selectively disable this
feature. Also see the related \fIprotect\-owned\fR feature.
.TP
.B compress\-build\-logs
The causes all build logs to be compressed while they are being written.
Log file names have an extension that is appropriate for the compression
type. Currently, only \fBgzip\fR(1) compression is supported, so build
logs will have a '.gz' extension when this feature is enabled.
.TP
.B compressdebug
Compress the debug sections in the split debug files with zlib to save
space.  Make sure you have built both binutils and gdb with USE=zlib
support for this to work.  See \fBsplitdebug\fR for general split debug
information (upon which this feature depends).
.TP
.B compress\-index
If set then a compressed copy of 'Packages' index file will be written.
This feature is intended for Gentoo binhosts using certain webservers
(such as, but not limited to, Nginx with gzip_static module) to avoid
redundant on\-the\-fly compression.  The resulting file will be called
\(aqPackages.gz' and its modification time will match that of 'Packages'.
.TP
.B config\-protect\-if\-modified
This causes the \fBCONFIG_PROTECT\fR behavior to be skipped for files
that have not been modified since they were installed. This feature is
enabled by default.
.TP
.B digest
Autogenerate digests for packages when running the
\fBemerge\fR(1), \fBebuild\fR(1), or \fBrepoman\fR(1) commands. If
the \fIassume\-digests\fR feature is also enabled then existing SRC_URI digests
will be reused whenever they are available.
.TP
.B distcc
Enable portage support for the distcc package.
.TP
.B distcc\-pump
Enable portage support for the distcc package with pump mode.
.TP
.B distlocks
Portage uses lockfiles to ensure competing instances don't clobber
each other's files. This feature is enabled by default but may cause
heartache on less intelligent remote filesystems like NFSv2 and some
strangely configured Samba server (oplocks off, NFS re\-export). A tool
/usr/lib/portage/bin/clean_locks exists to help handle lock issues
when a problem arises (normally due to a crash or disconnect).
.TP
.B downgrade\-backup
When a package is downgraded to a lower version, call \fBquickpkg\fR(1)
in order to create a backup of the installed version before it is
unmerged (if a binary package of the same version does not already
exist). Also see the related \fIunmerge\-backup\fR feature.
.TP
.B ebuild\-locks
Use locks to ensure that unsandboxed ebuild phases never execute
concurrently. Also see \fIparallel\-install\fR.
.TP
.B fakeroot
Enable fakeroot for the install and package phases when a non-root user runs
the \fBebuild\fR(1) command.
.TP
.B fail\-clean
Clean up temporary files after a build failure. This is particularly useful
if you have \fBPORTAGE_TMPDIR\fR on tmpfs. If this feature is enabled, you
probably also want to enable \fBPORT_LOGDIR\fR in order to save the build log.
Both the \fBebuild\fR(1) command and the \fInoclean\fR feature cause the
\fIfail\-clean\fR feature to be automatically disabled.
.TP
.B getbinpkg
Force emerges to always try to fetch files from the \fIPORTAGE_BINHOST\fR.  See 
\fBmake.conf\fR(5) for more information.
.TP
.B installsources
Install source code into /usr/src/debug/${CATEGORY}/${PF} (also see
\fBsplitdebug\fR). This feature works only if debugedit is installed and CFLAGS
is set to include debug information (such as with the \-ggdb flag).
.TP
.B keeptemp
Do not delete the ${T} directory after the merge process.
.TP
.B keepwork
Do not delete the ${WORKDIR} directory after the merge process. ${WORKDIR} can
then be reused since this feature disables most of the clean phase that runs
prior to each build. Due to lack of proper cleanup, this feature can
interfere with normal emerge operation and therefore it should not be left
enabled for more than a short period of time.
.TP
.B fixlafiles
Modifies .la files to not include other .la files and some other
fixes (order of flags, duplicated entries, ...)
.TP
.B force\-mirror
Only fetch files from configured mirrors, ignoring \fBSRC_URI\fR,
except when \fImirror\fR is in the \fBebuild\fR(5) \fBRESTRICT\fR variable.
.TP
.B force\-prefix
Enable prefix support for all ebuilds, regardless of EAPI, since older EAPIs
would otherwise be useless with prefix configurations. This brings
compatibility with the prefix branch of portage, which also supports EPREFIX
for all EAPIs (for obvious reasons).
.TP
.B lmirror
When \fImirror\fR is enabled in \fBFEATURES\fR, fetch files even
when \fImirror\fR is also in the \fBebuild\fR(5) \fBRESTRICT\fR variable.
Do \fBNOT\fR use \fIlmirror\fR for clients that need to override \fBRESTRICT\fR
when fetching from a local mirror, but instead use a "local" mirror setting
in \fI/etc/portage/mirrors\fR, as described in \fBportage\fR(5).
.TP
.B merge\-sync
After a package is merged or unmerged, sync relevant files to
disk in order to avoid data\-loss in the event of a power failure.
This feature is enabled by default.
.TP
.B metadata\-transfer
Automatically perform a metadata transfer when `emerge \-\-sync` is run.
In versions of portage >=2.1.5, this feature is disabled by
default. When metadata\-transfer is disabled, metadata cache from the
${PORTDIR}/metadata/cache/ directory will be used directly (if available)
and eclasses in ${PORTDIR}/eclass/ must not be modified except by
`emerge \-\-sync` operations since the cache validation mechanism
will not recognize eclass modifications. Normally, this issue only
pertains to users of the rsync tree since the cvs tree does not contain
a metadata/cache/ directory. Users of the rsync tree who want to modify
eclasses should use \fBPORTDIR_OVERLAY\fR in order for the cache
validation mechanism to work correctly.
.TP
.B mirror
Fetch everything in \fBSRC_URI\fR regardless of \fBUSE\fR settings,
except do not fetch anything when \fImirror\fR is in \fBRESTRICT\fR.
.TP
.B multilib\-strict
Many Makefiles assume that their libraries should go to /usr/lib, or
$(prefix)/lib. This assumption can cause a serious mess if /usr/lib
isn't a symlink to /usr/lib64. To find the bad packages, we have a
portage feature called \fImultilib\-strict\fR. It will prevent emerge
from putting 64bit libraries into anything other than (/usr)/lib64.
.TP
.B news
Enable GLEP 42 news support. See
\fIhttp://www.gentoo.org/proj/en/glep/glep-0042.html\fR.
.TP
.B noauto
When utilizing \fBebuild\fR(1), only run the function requested.
.TP
.B noclean
Do not delete the the source and temporary files after the merge process.
.TP
.B nodoc
Do not install doc files (/usr/share/doc).
.TP
.B noinfo
Do not install info pages.
.TP
.B noman
Do not install manpages.
.TP
.B nostrip
Prevents the stripping of binaries that are merged to the live filesystem.
.TP
.B notitles
Disables xterm titlebar updates (which contains status info).
.TP
.B parallel\-fetch
Fetch in the background while compiling. Run
`tail \-f /var/log/emerge\-fetch.log` in a
terminal to view parallel-fetch progress.
.TP
.B parallel\-install
Use finer\-grained locks when installing packages, allowing for greater
parallelization. For additional parallelization, disable
\fIebuild\-locks\fR.
.TP
.B prelink\-checksums
If \fBprelink\fR(8) is installed then use it to undo any prelinks on files
before computing checksums for merge and unmerge. This feature is
useful only if \fBprelink\fR(8) is installed and accurate checksums (despite
prelinking) are needed for some reason such as for checking the integrity of
installed files or because the \fIunmerge\-orphans\fR feature is disabled.

Note that normal emerging of packages from source computes the
checksums before things will be prelinked, so in such cases, this
feature isn't required either. Undoing prelinking while merging is
only required when using tools like \fBquickpkg\fR(1) which can cause
already prelinked files to be merged.
.TP
.B preserve\-libs
Preserve libraries when the sonames change during upgrade or downgrade.
Libraries are preserved only if consumers of those libraries are detected.
.TP
.B protect\-owned
This is identical to the \fIcollision\-protect\fR feature except that files
may be overwritten if they are not explicitly listed in the contents of a
currently installed package. This is particularly useful on systems that
have lots of orphan files that have been left behind by older versions
of portage that did not support the \fIunmerge\-orphans\fR feature. Like
\fIcollision\-protect\fR, the \fICOLLISION_IGNORE\fR variable can be used to
selectively disable this feature. It is recommended to leave either
\fIprotect\-owned\fR or \fIcollision\-protect\fR enabled at all times,
since otherwise file collisions between packages may result in files being
overwritten or uninstalled at inappropriate times.
If \fIcollision\-protect\fR is enabled then it takes precedence over
\fIprotect\-owned\fR. 
.TP
.B python\-trace
Output a verbose trace of python execution to stderr when a command's 
\-\-debug option is enabled.
.TP
.B sandbox
Enable sandbox\-ing when running \fBemerge\fR(1) and \fBebuild\fR(1).
.TP
.B sesandbox
Enable SELinux sandbox\-ing.  Do not toggle this \fBFEATURE\fR yourself.
.TP
.B sfperms
Stands for Smart Filesystem Permissions.  Before merging packages to the 
live filesystem, automatically search for and set permissions on setuid 
and setgid files.  Files that are setuid have the group and other read 
bits removed while files that are setgid have the other read bit removed.  
See also \fIsuidctl\fR below.
.TP
.B sign
When commiting work to cvs with \fBrepoman\fR(1), sign the Manifest with 
a GPG key.  Read about the \fIPORTAGE_GPG_KEY\fR variable in \fBmake.conf\fR(5).
.TP
.B skiprocheck
Skip write access checks on \fBDISTDIR\fR when fetching files. This is
useful when \fBFETCHCOMMAND\fR and \fBRESUMECOMMAND\fR are used to
forward fetch requests to a server that exposes \fBDISTDIR\fR as
a read-only NFS share. A read-only \fBDISTDIR\fR is not compatible with the
\fIdistlocks\fR, so it is recommended to also add "-distlocks" to
\fBFEATURES\fR in order to avoid warning messages that are triggered by this
incompatibility.
.TP
.B split\-elog
Store logs created by \fBPORTAGE_ELOG_SYSTEM="save"\fR in category
subdirectories of \fBPORT_LOGDIR/elog\fR, instead of using
\fBPORT_LOGDIR/elog\fR directly.
.TP 
.B split\-log
Store build logs in category subdirectories of \fBPORT_LOGDIR/build\fR,
instead of using \fBPORT_LOGDIR\fR directly.
.TP
.B splitdebug
Prior to stripping ELF etdyn and etexec files, the debugging info is 
stored for later use by various debuggers.  This feature is disabled by
\fBnostrip\fR.  You should also consider setting \fBcompressdebug\fR so
the files don't suck up a lot of space.  For installation of source code,
see \fBinstallsources\fR.
.TP
.B strict
Have portage react strongly to conditions that have the potential to be 
dangerous (like missing or incorrect digests for ebuilds).
.TP
.B stricter
Have portage react strongly to conditions that may conflict with system
security provisions (for example textrels, executable stack).  Read about
the \fIQA_STRICT_*\fR variables in \fBmake.conf\fR(5).
.TP
.B suidctl
Before merging packages to the live filesystem, automatically strip setuid 
bits from any file that is not listed in \fI/etc/portage/suidctl.conf\fR.
.TP
.B test
Run package\-specific tests during each merge to help make sure 
the package compiled properly.  See \fItest\fR in \fBebuild\fR(1) 
and \fIsrc_test()\fR in \fBebuild\fR(5). This feature implies the "test"
\fBUSE\fR flag if it is a member of \fBIUSE\fR, either explicitly or
implicitly (see \fBebuild\fR(5) for more information about \fBIUSE\fR).
The "test" \fBUSE\fR flag is also automatically disabled when the
"test" feature is disabled.
.TP
.B test\-fail\-continue
If "test" is enabled \fBFEATURES\fR and the test phase of an ebuild fails,
continue to execute the remaining phases as if the failure had not occurred.
Note that the test phase for a specific package may be disabled by masking
the "test" \fBUSE\fR flag in \fBpackage.use.mask\fR (see \fBportage\fR(5)).
.TP
.B unmerge\-backup
Call \fBquickpkg\fR(1) to create a backup of each package before it is
unmerged (if a binary package of the same version does not already exist).
Also see the related \fIdowngrade\-backup\fR feature.
.TP
.B unmerge\-logs
Keep logs from successful unmerge phases. This is relevant only when
\fBPORT_LOGDIR\fR is set.
.TP
.B unmerge\-orphans
If a file is not claimed by another package in the same slot and it is not
protected by \fICONFIG_PROTECT\fR, unmerge it even if the modification time or
checksum differs from the file that was originally installed.
.TP
.B unknown\-features\-filter
Filter out any unknown values that the FEATURES variable contains.
.TP
.B unknown\-features\-warn
Warn if FEATURES contains one or more unknown values.
.TP
.B userfetch
When portage is run as root, drop privileges to portage:portage during the
fetching of package sources.
.TP
.B userpriv
Allow portage to drop root privileges and compile packages as 
portage:portage without a sandbox (unless \fIusersandbox\fR is also used).
.TP
.B usersandbox
Enable the sandbox in the compile phase, when running without root privs (\fIuserpriv\fR).
.TP
.B usersync
Drop privileges to the owner of \fBPORTDIR\fR for \fBemerge(1) --sync\fR
operations.
.TP
.B webrsync-gpg
Enable GPG verification when using \fIemerge\-webrsync\fR.
.TP
.B xattr
Preserve extended attributes (filesystem-stored metadata) when installing
files (see \fBattr\fR(1)).
.RE
.TP
.B FETCHCOMMAND
This variable contains the command used for fetching package sources from
the internet.  It must contain the full path to the executable as well as the
place\-holders \\${DISTDIR}, \\${FILE} and \\${URI}.  The command should be
written to place the fetched file at \\${DISTDIR}/\\${FILE}.
Also see \fBRESUMECOMMAND\fR.
.TP
.B FFLAGS FCFLAGS
Use these variables to set the desired optimization/CPU instruction settings
for applications that you compile with a FORTRAN compiler. FFLAGS is usually
passed to the FORTRAN 77 compiler, and FCFLAGS to any FORTRAN compiler in
more modern build systems.

For more information, see the \fIInvoking GCC\fR section of the gcc manual:
.br
http://gcc.gnu.org/onlinedocs/
.TP
\fBGENTOO_MIRRORS\fR = \fI[URIs]\fR
Insert your space\-separated list of local mirrors here.  These
locations are used to download files before the ones listed in
the \fIebuild scripts\fR. Merging 'mirrorselect' can help.  Entries in this
variable that have no protocol and simply start with a '/' path separator may
be used to specify mounted filesystem mirrors.
.TP
\fBhttp_proxy ftp_proxy\fR = \fI[protocol://host:port]\fR
These vars are used if the sources must be downloaded from the
internet by \fBwget\fR(1).  They are only required if you use a
proxy server for internet access.
.TP
\fBINSTALL_MASK\fR = \fI[space delimited list of file names]\fR
Use this variable if you want to selectively prevent certain files from being
copied into your file system tree.  This does not work on symlinks, but only on
actual files.  Useful if you wish to filter out files like HACKING.gz and
TODO.gz. The \fBINSTALL_MASK\fR is processed just before a package is merged.
Also supported is a \fBPKG_INSTALL_MASK\fR variable that behaves exactly like
\fBINSTALL_MASK\fR except that it is processed just before creation of a binary
package.
.TP
.B LDFLAGS
A list of flags to pass to the compiler when the linker will be called. See
\fBld\fR(1) for linker flags, but don't forget that these flags will be passed
directly to the compiler. Thus, you must use '-Wl' to escape the flags
which only the linker understands (see \fBgcc\fR(1)).

\fB***warning***\fR
.br
Setting this and other *FLAGS variables arbitrarily may cause compile or
runtime failures. Bug reports submitted when nonstandard values are
enabled for these flags may be closed as INVALID.
.TP
.B MAKEOPTS
Use this variable if you want to use parallel make.  For example, if you
have a dual\-processor system, set this variable to "\-j2" or "\-j3" for 
enhanced build performance with many packages. Suggested settings are
between \fICPUs+1\fR and \fI2*CPUs+1\fR. In order to avoid
excess load, the \fB\-\-load\-average\fR option is recommended.
For more information, see \fBmake\fR(1). Also see \fBemerge\fR(1) for
information about analogous \fB\-\-jobs\fR and \fB\-\-load\-average\fR options.
.TP
\fBNOCOLOR\fR = \fI["true" | "false"]\fR
Defines if color should be disabled by default.
.br
Defaults to false.
.TP
\fBPKGDIR\fR = \fI[path]\fR
Defines the location where created .tbz2 binary packages will be
stored when the \fBemerge\fR(1) \fB\-\-buildpkg\fR option is enabled.
By default, a given package is stored in a subdirectory corresponding
to it's category. However, for backward compatibility with the layout
used by older versions of portage, if the \fI${PKGDIR}/All\fR directory
exists then all packages will be stored inside of it and symlinks to
the packages will be created in the category subdirectories. Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/packages.
.TP
.B PORT_LOGDIR
This variable defines the directory in which per\-ebuild logs are kept.
Logs are created only when this is set. They are stored as
${CATEGORY}:${PF}:YYYYMMDD\-HHMMSS.log in the directory specified. If the
directory does not exist, it will be created automatically and group permissions
will be applied to it.  If the directory already exists, portage will not
modify it's permissions.
.TP
.B PORT_LOGDIR_CLEAN
This variable should contain a command for portage to call in order
to clean PORT_LOGDIR. The command string should contain a
\\${PORT_LOGDIR} place\-holder that will be substituted
with the value of that variable. This variable will have no effect
unless \fBclean\-logs\fR is enabled in \fBFEATURES\fR.
.TP
\fBPORTAGE_BINHOST\fR = \fI[space delimited URI list]\fR
This is a list of hosts from which portage will grab prebuilt\-binary packages.
Each entry in the list must specify the full address of a directory
serving tbz2's for your system (this directory must contain a 'Packages' index
file). This is only used when running with
the get binary pkg options are given to \fBemerge\fR.  Review \fBemerge\fR(1) 
for more information.
.TP
\fBPORTAGE_BINHOST_HEADER_URI\fR = \fI"ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon\-xp/"\fR
This variable only makes sense on a system that will serve as a binhost and
build packages for clients.  It defines the URI header field for the package
index file which is located at ${PKGDIR}/Packages. Clients that have
\fBPORTAGE_BINHOST\fR properly configured will be able to fetch the index and
use the URI header field as a base URI for fetching binary packages. If the URI
header field is not defined then the client will use it's ${PORTAGE_BINHOST}
setting as the base URI.
.TP
.B PORTAGE_BINPKG_TAR_OPTS
This variable contains options to be passed to the tar command for creation
of binary packages.
.TP
\fBPORTAGE_BUNZIP2_COMMAND\fR = \fI[bunzip2 command string]\fR
This variable should contain a command that is suitable for portage to call
for bunzip2 extraction operations.
.TP
\fBPORTAGE_BZIP2_COMMAND\fR = \fI[bzip2 command string]\fR
This variable should contain a command that is suitable for portage to call
for bzip2 compression operations. \fBPORTAGE_BZIP2_COMMAND\fR will also be
called for extraction operation, with -d appended, unless the
\fBPORTAGE_BUNZIP2_COMMAND\fR variable is set.
.TP
\fBPORTAGE_CHECKSUM_FILTER\fR = \fI[space delimited list of hash names]\fR
This variable may be used to filter the hash functions that are used to
verify integrity of files. Hash function names are case\-insensitive, and
the \fI*\fR and \fI\-*\fR wildcard tokens are supported.
.br
Defaults to the value of *.
.br
.I Examples:
.nf
# Use all available hash functions
PORTAGE_CHECKSUM_FILTER="*"
# Use any function except whirlpool
PORTAGE_CHECKSUM_FILTER="* \-whirlpool"
# Only use sha256
PORTAGE_CHECKSUM_FILTER="\-* sha256"
.fi
.TP
\fBPORTAGE_COMPRESS\fR = \fI"bzip2"\fR
This variable contains the command used to compress documentation during the
install phase.
.TP
\fBPORTAGE_COMPRESS_FLAGS\fR = \fI"\-9"\fR
This variable contains flags for the \fBPORTAGE_COMPRESS\fR command.
.TP
.TP
\fBPORTAGE_COMPRESS_EXCLUDE_SUFFIXES\fR = \fI"gif htm[l]? jp[e]?g pdf png"\fR
This variable contains a space delimited list of file suffixes for which
matching files are excluded when the \fBPORTAGE_COMPRESS\fR command is
called. Regular expressions are supported and the match is performed only
against the portion of the file name which follows the last period character.
.TP
.B PORTAGE_ELOG_CLASSES
.TP
.B PORTAGE_ELOG_SYSTEM
.TP
.B PORTAGE_ELOG_COMMAND
.TP
.B PORTAGE_ELOG_MAILURI
.TP
.B PORTAGE_ELOG_MAILFROM
.TP
.B PORTAGE_ELOG_MAILSUBJECT
Please see /usr/share/portage/config/make.conf.example for elog documentation.
.TP
\fBPORTAGE_FETCH_CHECKSUM_TRY_MIRRORS\fR = \fI5\fR
Number of mirrors to try when a downloaded file has an incorrect checksum.
.TP
\fBPORTAGE_FETCH_RESUME_MIN_SIZE\fR = \fI350K\fR
Minimum size of existing file for \fBRESUMECOMMAND\fR to be called. Files
smaller than this size will be removed and \fBFETCHCOMMAND\fR will be called
to download the file from the beginning. This is useful for helping to ensure
that small garbage files such as html 404 pages are properly discarded. The
variable should contain an integer number of bytes and may have a suffix such
as K, M, or G.
.TP
.B PORTAGE_GPG_DIR
The \fBgpg\fR(1) home directory that is used by \fBrepoman\fR(1)
when \fBsign\fR is in \fBFEATURES\fR.
.br
Defaults to $HOME/.gnupg.
.TP
.B PORTAGE_GPG_KEY
The \fBgpg\fR(1) key used by \fBrepoman\fR(1) to sign manifests
when \fBsign\fR is in \fBFEATURES\fR. In order to sign commits with
\fBgit\fR(1), you will need Git >=1.7.9 and your commit key will have
to be configured by \fI`git config user.signingkey key_id`\fR.
.TP
.B PORTAGE_GPG_SIGNING_COMMAND
The command used by \fBrepoman\fR(1) to sign manifests when \fBsign\fR is
in \fBFEATURES\fR.
.TP
\fBPORTAGE_GRPNAME\fR = \fI[group]\fR
Defines the groupname to use when executing in userpriv/etc... modes (i.e.
non-root).
.br
Defaults to portage.
.TP
\fBPORTAGE_INST_GID\fR = \fI[gid]\fR
Defines the group id when installing files via dobin/dosbin.  Useful when
running ebuild as yourself.
.br
Defaults to 0.
.TP
\fBPORTAGE_INST_UID\fR = \fI[uid]\fR
Defines the user id when installing files via dobin/dosbin.  Useful when
running ebuild as yourself.
.br
Defaults to 0.
.TP
\fBPORTAGE_IONICE_COMMAND\fR = \fI[ionice command string]\fR
This variable should contain a command for portage to call in order
to adjust the io priority of portage and it's subprocesses. The command
string should contain a \\${PID} place-holder that will be substituted
with an integer pid. For example, a value of "ionice \-c 3 \-p \\${PID}"
will set idle io priority. For more information about ionice, see
\fBionice\fR(1). This variable is unset by default.
.TP
\fBPORTAGE_NICENESS\fR = \fI[number]\fR
The value of this variable will be added to the current nice level that
emerge is running at.  In other words, this will not set the nice level,
it will increment it.  For more information about nice levels and what
are acceptable ranges, see \fBnice\fR(1).
.TP
\fBPORTAGE_RO_DISTDIRS\fR = \fI[space delimited list of directories]\fR
When a given file does not exist in \fBDISTDIR\fR, search for the file
in this list of directories. Search order is from left to right. Note
that the current implementation works by creating a symlink inside
\fBDISTDIR\fR, but that may change in the future.
.TP
\fBPORTAGE_RSYNC_INITIAL_TIMEOUT\fR = \fIinteger\fR
Used by \fBemerge \-\-sync\fR as a timeout for the initial connection to an
rsync server.
.br
Defaults to 15 seconds.
.TP
\fBPORTAGE_RSYNC_EXTRA_OPTS\fR = \fI[rsync options string]\fR
Additional rsync options to be used by \fBemerge \-\-sync\fR.
.br
Defaults to no value.
.TP
\fBPORTAGE_RSYNC_OPTS\fR = \fI[rsync options string]\fR
Default rsync options to be used by \fBemerge \-\-sync\fR. 
.br
\fBDon't change this unless you know exactly what you're doing!\fR
.br
Defaults to "\-\-recursive \-\-links \-\-safe\-links \-\-perms \-\-times
\-\-compress \-\-force \-\-whole\-file \-\-delete \-\-stats
\-\-timeout=180 \-\-exclude='/distfiles' \-\-exclude='/local'
\-\-exclude='/packages'"
.TP
\fBPORTAGE_RSYNC_RETRIES\fR = \fI[NUMBER]\fR
The number of times rsync should retry on failed connections before
giving up. If set to a negative number, then retry until all possible
addresses are exhausted.
.br
Defaults to -1.
.TP
\fBPORTAGE_SYNC_STALE\fR = \fI[NUMBER]\fR
Defines the number of days after the last `emerge \-\-sync` that a warning
message should be produced. A value of 0 will disable warnings.
.br
Defaults to 30.
.TP
\fBPORTAGE_TMPDIR\fR = \fI[path]\fR
Defines the location of the temporary build directories.
.br
Defaults to /var/tmp.

This should not be set to point anywhere under the directory tree
specified by \fBPORTDIR\fR (/usr/portage by default).
.TP
\fBPORTAGE_USERNAME\fR = \fI[user]\fR
Defines the username to use when executing in userpriv/etc... modes (i.e.
non-root).
.br
Defaults to portage.
.TP
\fBPORTAGE_WORKDIR_MODE\fR = \fI"0700"\fR
This variable controls permissions for \fIWORKDIR\fR (see \fBebuild\fR(5)).
.TP
\fBPORTDIR\fR = \fI[path]\fR
Defines the location of the Portage tree. This is the repository for all
profile information as well as all ebuilds. If you change this, you must update
your /etc/portage/make.profile symlink accordingly.
.br
Defaults to /usr/portage. 
.br
\fB***Warning***\fR
.br
Data stored inside \fBPORTDIR\fR is in peril of being overwritten or deleted by
the emerge \-\-sync command. The default value of
\fBPORTAGE_RSYNC_OPTS\fR will protect the default locations of
\fBDISTDIR\fR and \fBPKGDIR\fR, but users are warned that any other locations
inside \fBPORTDIR\fR are not necessarily safe for data storage.  You should not 
put other data (such as overlays) in your \fBPORTDIR\fB.  Portage will walk 
directory structures and may arbitrarily add invalid categories as packages.
.TP
\fBPORTDIR_OVERLAY\fR = \fI"[path] [different\-path] [etc...]"\fR
Defines the directories in which user made ebuilds may be stored and not 
overwriten when `emerge \-\-sync` is run.  This is a space delimited list of 
directories.
.br
Defaults to no value.
.TP
\fBQA_STRICT_EXECSTACK = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_EXECSTACK\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_WX_LOAD = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_WX_LOAD\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_TEXTRELS = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_TEXTREL\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_FLAGS_IGNORED = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_FLAGS_IGNORED\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_MULTILIB_PATHS = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_MULTILIB_PATHS\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_PRESTRIPPED = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_PRESTRIPPED\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
.B RESUMECOMMAND
This variable contains the command used for resuming package sources that
have been partially downloaded.  It should be defined using the same format
as \fBFETCHCOMMAND\fR, and must include any additional option(s) that may
be necessary in order to continue a partially downloaded file located at
\\${DISTDIR}/\\${FILE}.
.TP
\fBROOT\fR = \fI[path]\fR
Use \fBROOT\fR to specify the target root filesystem to be used for merging 
packages or ebuilds.
Typically, you should set this setting in the environment rather than in 
\fImake.conf\fR itself. It's commonly used for creating new build
images. Make sure you use an absolute path. Refer to the
\fBCross-compilation\fR section of \fBebuild\fR(5) for information about
how dependencies are handled for \fBROOT\fR.
.br
Defaults to /.
.TP
\fBRPMDIR\fR = \fI[path]\fR
Defines the location where created RPM packages will be stored.
.br
Defaults to ${PORTDIR}/rpm.
.TP
\fBSYNC\fR = \fI[RSYNC]\fR
Insert your preferred rsync mirror here.  This rsync server
is used to sync the local portage tree when `emerge \-\-sync` is run.
.br
Defaults to rsync://rsync.gentoo.org/gentoo\-portage
.TP
\fBUNINSTALL_IGNORE\fR = \fI[space delimited list of fnmatch patterns]\fR
This variable prevents uninstallation of files that match
specific \fBfnmatch\fR(3) patterns. In order to ignore file
collisions with these files at install time, the same patterns
can be added to the \fBCOLLISION_IGNORE\fR variable.
.br
Defaults to "/lib/modules/*".
.TP
\fBUSE\fR = \fI[space delimited list of USE items]\fR
This variable contains options that control the build behavior of several
packages.  More information in \fBebuild\fR(5).  Possible USE values
can be found in \fI/usr/portage/profiles/use.desc\fR.
.TP
\fBUSE_ORDER\fR = \fI"env:pkg:conf:defaults:pkginternal:repo:env.d"\fR
Determines the precedence of layers in the incremental stacking of the USE
variable. Precedence decreases from left to right such that env overrides
pkg, pkg overrides conf, and so forth.

.B ***warning***
.br
Do not modify this value unless you're a developer and you know what
you're doing. If you change this and something breaks, we will not help
you fix it.
.br
.RS
.TP
.B env
USE from the current environment variables (USE and those listed in USE_EXPAND)
.TP
.B pkg
Per\-package USE from \fB/etc/portage/package.use\fR (see \fBportage\fR(5))
.TP
.B conf
USE from make.conf
.TP
.B defaults
USE from make.defaults and package.use in the profile
(e.g. /etc/portage/make.profile/package.use) (see \fBportage\fR(5))
.TP
.B pkginternal
USE from \fBebuild\fR(5) IUSE defaults
.TP
.B repo
USE from make.defaults and package.use in the repo's profiles/ top dir
(e.g. /usr/portage/profiles/package.use) (see \fBportage\fR(5))
.TP
.B env.d
USE from the environment variables, such as LINGUAS, defined by files in
\fI/etc/env.d/\fR
.RE

.SH "REPORTING BUGS"
Please report bugs via http://bugs.gentoo.org/
.SH "AUTHORS"
.nf
Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
.fi
.SH "FILES"
.TP
\fB/etc/make.conf\fR and \fB/etc/portage/make.conf\fR
Contains variables for the build\-process and overwrites those in make.defaults.
.TP
.B /usr/share/portage/config/make.globals
Contains the default variables for the build\-process, you should edit \fI/etc/portage/make.conf\fR instead.
.TP
.B /etc/portage/color.map
Contains variables customizing colors.
.TP
.B /usr/portage/profiles/use.desc
Contains a list of all global USE flags.
.TP
.B /usr/portage/profiles/use.local.desc
Contains a list of all local USE variables.
.SH "SEE ALSO"
.BR emerge (1),
.BR portage (5),
.BR ebuild (1),
.BR ebuild (5)
.TP
The \fI/usr/sbin/ebuild.sh\fR script. 
.TP
The helper apps in \fI/usr/lib/portage/bin\fR.
