COMPILERS.CONF(5)

NAME
compilers.conf - configuration file for external compilers

SYNOPSIS
/etc/compilers.conf

DESCRIPTION
The compilers.conf file allows to configure “external” compilers for usage with the DragonFly build(7) system.

The /etc/defaults/compilers.conf file specifies the default settings for all variables, the /etc/compilers.conf file specifies override settings.

The following variable definitions are mandatory:

<version>_CC
    The pathname of the cc compiler.

<version>_CXX
    The pathname of the c++ and CC compilers.

<version>_CPP
    The pathname of the cpp pre-processor.

<version>_INCOPT
    The include flags passed to the invocation of every version of c compiler, c++ compiler, and pre-processor program. This is normally set to the predefined STD_INCOPT variable.

<version>_INCOPTCXX
    The include flags passed to the invocation of every version of c++ compiler. This is normally set to either the DPORT_GCC_STD_INCOPTXX or DPORT_CLANG_STD_INCOPTXX predefined variables.

These variables are optionally available:

<version>_GCC
    The pathname of the gcc compiler.

<version>_GXX
    The pathname of the g++ compiler.

<version>_GCOV
    The pathname of the gcov coverage testing tool.

<version>_CFLAGS
    Additional flags to pass to the c compilers.

<version>_CXXFLAGS
    Additional flags to pass to the c++ compilers.

<version>_CPPFLAGS
    Additional flags to pass to the pre-processors.

Currently, defaults are provided for the dports(7) compilers of clang10 (devel/clang10).

IMPLEMENTATION NOTES
In DragonFly, compilers are selected by setting the CCVER variable. The cpp, cc, etc. programs in /usr/bin are actually links to the objformat(1) deflector program which is responsible for executing the correct programs (located in /usr/libexec/$CCVER).

Traditionally, DragonFly has 2 compilers in base, one of which is the default compiler and the other is either a newer or older version. In order to allow additional non-base compilers into DragonFly's build process, objformat(1) deflects to /usr/libexec/custom when CCVER's setting is not one of the compilers in base. This directory contains a cc wrapper script (and some links to it). The wrapper script then takes care of making the compiler look and behave like a compiler in base.

The settings in compilers.conf specify paths and flags for the /usr/libexec/custom/cc script.

FILES
/etc/compilers.conf
    external compiler configuration file

EXAMPLES
Once configured the compiler can be used like this:

    env CCVER=<version> make

To try building world and kernel, use:

    cd /usr/src
    env WORLD_CCVER=<version> make buildworld
    env WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF

SEE ALSO
objformat(1), build(7)

HISTORY
The compilers.conf file first appeared in DragonFly 2.3.