January 3, 2015

Specific compiler switches per package in Gentoo

Modifying environmental variables per package

The package.env file can be used to modify environmental variables per package. See /etc/portage/env in the Gentoo Wiki for details.

Conflicting compiler switches

In make.conf one typically specifies compiler switches that are selected to optimize for one's specific machine. But some packages (e.g. www-client/chromium) have their own build system, which can result in conflicting compiler switches.

Disabling compiler switches per package

This can be done via package.env and helper files in the env subdirectory. For example, if /etc/portage/make.conf specifies the following section:

CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"

then in /etc/portage/package.env the following section will select specific flags for the www-client/chromium package:

www-client/chromium cflags-no-optimization

and in the /etc/portage/env/cflags-no-optimization file holds the specific environmental variable:

# No optimization
#
CFLAGS="-march=native -pipe"
CXXFLAGS="${CFLAGS}"

This prevents that the -O2 compiler switch that is specified in make.conf is used for the www-client/chromium package.

Tags: Software Computer Linux Gentoo