/etc/portage/make.conf

The  file (previously ) is Article description::used to customize the [[Portage environment on a global level.]] Settings here will apply to every package that is emerged, so is the most important file for configuring Portage. These settings control many elements of Portage functionality such as global USE flags, language (L10N) options, Portage mirrors, etc.

A very basic version gets installed while extracting the stage tarball, and an example setup can be found at.

The Handbook covers using, particularly in the USE flags, Portage features and Variables sections.

Precedence
The final Portage configuration is not only based on. Global settings defined in this file can be refined (or redefined) 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:

Most variables are optional, can span multiple lines, but must not appear more than once.

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 GCC optimization article and CFLAGS and CXXFLAGS in the Gentoo Handbook.

GENTOO_MIRRORS
See the GENTOO_MIRRORS article.

MAKEOPTS
The MAKEOPTS variable is used to specify arguments passed to when packages are built from source. A commonly used setting is the  which specifies the number of parallel  jobs that can be used for a single package build. A widely used rule of thumb for N is to take the smaller number of the available logical CPU cores and the amount of RAM divided by 2GB. A physical CPU core employing a X -way SMT technique (eg. Hyper-Threading or SMT2) counts as X logical cores.

See the MAKEOPTS article for more information.

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's ccache support and so forth.

If enough memory is available, building packages can be accelerated by mounting PORTAGE_TMPDIR in RAM. See the article on Portage TMPDIR on tmpfs for more details.

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.

LINGUAS
See LINGUAS in the Localization guide.

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) permitted by the CPU. This information is used to optimize package builds specifically for the targeted features.

The utility (found in the  package) can be used to query a complete listing of CPU flags supported by the system's processor. After emerging the package, issue:

This flags can then be added to or. Note that this is only effective on and  architectures.

See the CPU_FLAGS_X86 article for more information.

INPUT_DEVICES
See the make.conf section of the Xorg/Guide article and the possible values.

L10N
See L10N in the localization guide and this repository news item.

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.

For more details see the AMDGPU or the NVIDIA articles.

External resources

 * FEATURES variable - specifies options which affect how Portage operates and how packages are compiled.
 * make.conf - custom settings for Portage - make.conf man page.