/etc/portage/make.conf

The file (previously at ) is used to customize the Portage environment on a global level. Settings here will apply to every package that is emerged. They control many elements of Portage functionality such as global USE flags, language (L10N) options, Portage mirrors, etc.

An example setup can be found at

Precedence
The final Portage configuration is not only based on. Global settings defined in this file can be refined on a per-package basis in the files, as well as through environment variables. Default settings, managed by the distribution, are available as well (partially through the Portage package defaults, partially through the Gentoo profile that is in use).

Variables
There are many possible variables to customize in. Only the most commonly used ones are explained further within this article, with an example and a link to a more detailed article (if applicable). For more information, and the full list of variables, consult the man page by running:

CHOST
The CHOST variable is passed through the configure step of ebuilds to set the build-host of the system. Note that the Gentoo profile already sets the appropriate CHOST value, and updating it requires insight and experience in build chains.

See the CHOST article for more information.

CFLAGS and CXXFLAGS
The CFLAGS and CXXFLAGS variables define the build and compile flags that will be used for all package deployments (some exceptions notwithstanding who filter out flags known to cause problems with the package). The CFLAGS variable is for C based applications, while CXXFLAGS is meant for C++ based applications. Most users will keep the content of both variables the same.

For more information see the CFLAGS article and CFLAGS and CXXFLAGS in the Gentoo Handbook.

GENTOO_MIRRORS
The GENTOO_MIRRORS variable defines a list of Gentoo mirrors to check before downloading from the source defined in the ebuild. Properly chosen mirrors will generally be able to offer faster download speeds. Try using the command to find the fastest mirror server.

See the Mirrors page on the main site for available URLs.

MAKEOPTS
The MAKEOPTS variable is used to specify arguments passed to make when packages are built from source. A commonly used setting is the  which specifies the number of parallel build jobs that can be used for a single package build. A widely used rule of thumb for N is to take the number of available cores (hyper-threaded cores count as 2) and add one.

See the MAKEOPTS article for more information, and read up on  as this influences build behavior as well.

PORTAGE_TMPDIR
The PORTAGE_TMPDIR variable defines the location of the temporary files for Portage. The value defaults to, resulting in for the build location,  for Portage' ccache support and so forth.

PORTDIR_OVERLAY
The PORTDIR_OVERLAY variable has been deprecated in favor of the file.

Layman versions less than 2.3.0 still use the PORTDIR_OVERLAY variable.

SYNC
See the SYNC article.

USE
The USE variable allows the system wide setting or deactivation of USE flags in a space separated list.

For a fine grained per package control of USE flags, the file should be used instead.

ACCEPT_LICENSE
The ACCEPT_LICENSE variable tells Portage which software licenses are allowed. Packages who have a license that is not accepted cannot be installed on the system.

USE_EXPAND
The USE_EXPAND variable is a list set in profiles/base/make.defaults as of Portage 2.0.51.20.

CPU_FLAGS_X86
The CPU_FLAGS_X86 variable informs Portage about the CPU flags (features) that the system allows. This information is used to optimize package builds specifically for the targeted features.

See this news item. and CPU_FLAGS_X86 for more information.

INPUT_DEVICES
For possible values of this USE_EXPAND variable see INPUT_DEVICES.

L10N
See L10N in the Localization guide and this Repository News Item. For possible values of this USE_EXPAND variable see L10N.

VIDEO_CARDS
For possible values of this USE_EXPAND variable see VIDEO_CARDS.

For the average user, if a graphical desktop environment is to be used this variable should be explicitly defined. For further information see Xorg/Guide.

External resources

 * https://devmanual.gentoo.org/general-concepts/features/