From Gentoo Wiki
/etc/portage(Redirected from Make.conf)
Jump to: navigation, search
This page contains changes which are not marked for translation.

The /etc/portage/make.conf file (previously at /etc/make.conf) 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.

A very basic version gets installed on expanding the stage tarball and an example setup can be found at /usr/share/portage/config/make.conf.example


The final Portage configuration is not only based on make.conf. Global settings defined in this file can be refined on a per-package basis in the /etc/portage/package.* 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).

Although Portage still supports the old /etc/make.conf file, its use is discouraged in favor of /etc/portage/make.conf. When both files are available, the settings in /etc/portage/make.conf take precedence over those in /etc/make.conf.


There are many possible variables to customize in make.conf. 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 make.conf man page by running:

user $man make.conf
Different configurations will require different variables to be set up. Do not treat the following examples as a definitive list, or a minimum set of requirements.


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.


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.

FILE /etc/portage/make.confCommonly used sane setting for CFLAGS and CXXFLAGS
CFLAGS="-march=native -O2 -pipe"

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


The CONFIG_PROTECT variable contains a space-delimited list of directories where Portage will not blindly copy over new versions of files, but instead treat the files as configuration files where the user should manually check if the changes are needed and valid or not. Sub-directories of the listed directories can be excluded through the CONFIG_PROTECT_MASK variable.

The variable has a sane default setting handled by the Portage installation and the users' Gentoo profile. It can be extended through the system environment (which is often used by applications that update the variable through their /etc/env.d file) and the users' /etc/portage/make.conf setting.

FILE /etc/portage/make.confExample CONFIG_PROTECT use in make.conf

See also the Environment variables chapter in the Gentoo Handbook.


The FEATURES variable contains a list of Portage features that the user wants enabled on the system, effectively influencing Portage's behavior. It is set by default via the Gentoo profile, but can be easily updated through /etc/portage/make.conf. Since this is an incremental variable, FEATURES values can be added without directly overriding the ones implemented through the Gentoo profile.

FILE /etc/portage/make.confAdding keepwork to FEATURES in Portage

For more information, please see Portage features in the Gentoo Handbook and the FEATURES article. For a complete list of available features, see man 5 make.conf.


See the GENTOO_MIRRORS article.


The MAKEOPTS variable is used to specify arguments passed to make when packages are built from source. A commonly used setting is the -jN 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.

FILE /etc/portage/make.confRecommended setting for a dual-core processor with hyper-threading enabled

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


The EMERGE_DEFAULT_OPTS variable entries are appended to the emerge command line. It is often used to allow for concurrent emerge operations through the --jobs N and --load-average X.Y options, which tell Portage how many parallel package builds can be used and up to what system load (load average) the parallelism can be used.

For example, to run up to three jobs in parallel:

FILE /etc/portage/make.confEnabling 3 parallel package builds

For more information, see the EMERGE_DEFAULT_OPTS article.


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

FILE /etc/portage/make.confDefault PORTAGE_TMPDIR setting


The DISTDIR variable defines the location where Portage will store the downloaded source code archives. Its value defaults to /usr/portage/distfiles.

Users can set the DISTDIR variable in /etc/portage/make.conf:

FILE /etc/portage/make.confUsing a different DISTDIR location

For more information, please refer to the DISTDIR article.


The PORTDIR variable was used to point to the main package repository hosted on the system. It has since been deprecated in favor of individual configuration files in the /etc/portage/repos.conf file or directory.


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

Layman versions less than 2.3.0 still use the PORTDIR_OVERLAY variable.


See the SYNC article.


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

FILE /etc/portage/make.confExample
USE="-kde -qt4 ldap"

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


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.

FILE /etc/portage/make.confTo accept all licenses on all packages (not a good idea)
FILE /etc/portage/make.confTo accept free software only


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


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.

FILE /etc/portage/make.conf
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3"

See this news item. and CPU_FLAGS_X86 for more information.


For possible values of this USE_EXPAND variable see INPUT_DEVICES.

FILE /etc/portage/make.confSet INPUT_DEVICES
INPUT_DEVICES="evdev synaptics"

After setting the INPUT_DEVICES variable remember to update the system using the following command so the changes take effect:

root #emerge --ask --changed-use --deep @world


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

FILE /etc/portage/make.conf
L10N="de pt_BR en en_US en_GB"


For possible values of this USE_EXPAND variable see VIDEO_CARDS.

FILE /etc/portage/make.confSet VIDEO_CARDS
VIDEO_CARDS="intel nvidia radeon vesa"

After setting the VIDEO_CARDS variable remember to update the system using the following command so the changes take effect:

root #emerge --ask --changed-use --deep @world

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#make.conf_configuration.

See also

External resources