1.\" 2.\" Copyright (c) 2009 3.\" The DragonFly Project. All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in 13.\" the documentation and/or other materials provided with the 14.\" distribution. 15.\" 3. Neither the name of The DragonFly Project nor the names of its 16.\" contributors may be used to endorse or promote products derived 17.\" from this software without specific, prior written permission. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 22.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 23.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 24.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 25.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 27.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 29.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.Dd October 21, 2014 33.Dt COMPILERS.CONF 5 34.Os 35.Sh NAME 36.Nm compilers.conf 37.Nd configuration file for external compilers 38.Sh SYNOPSIS 39.Pa /etc/compilers.conf 40.Sh DESCRIPTION 41The 42.Nm 43file allows to configure 44.Dq external 45compilers for usage with the 46.Dx 47.Xr build 7 48system. 49.Pp 50The 51.Pa /etc/defaults/compilers.conf 52file specifies the default settings for all variables, the 53.Pa /etc/compilers.conf 54file specifies override settings. 55.Pp 56The following variable definitions are mandatory: 57.Bl -tag -width ".Va <version>_INCOPTCXX" 58.It Va <version>_CC 59The pathname of the 60.Nm cc 61compiler. 62.It Va <version>_CXX 63The pathname of the 64.Nm c++ 65and 66.Nm CC 67compilers. 68.It Va <version>_CPP 69The pathname of the 70.Nm cpp 71pre-processor. 72.It Va <version>_INCOPT 73The include flags passed to the invocation of every version of c compiler, 74c++ compiler, and pre-processor program. 75This is normally set to the 76predefined STD_INCOPT variable. 77.It Va <version>_INCOPTCXX 78The include flags passed to the invocation of every version of c++ 79compiler. 80This is normally set to either the DPORT_GCC_STD_INCOPTXX or 81DPORT_CLANG_STD_INCOPTXX predefined variables. 82.El 83.Pp 84These variables are optionally available: 85.Bl -tag -width ".Va <version>_INCOPTCXX" 86.It Va <version>_GCC 87The pathname of the 88.Nm gcc 89compiler. 90.It Va <version>_GXX 91The pathname of the 92.Nm g++ 93compiler. 94.It Va <version>_GCOV 95The pathname of the 96.Nm gcov 97coverage testing tool. 98.\" 99.\" Uncomment the following after clang is brought into base 100.\".It Va <version>_CLANG 101.\"The pathname of the 102.\".Nm clang 103.\"compiler. 104.\".It Va <version>_CLANGCXX 105.\"The pathname of the 106.\".Nm clang++ 107.\"compiler. 108.\".It Va <version>_CLANGCPP 109.\"The pathname of the 110.\".Nm clang-cpp 111.\"pre-processor. 112.\" 113.It Va <version>_CFLAGS 114Additional flags to pass to the c compilers. 115.It Va <version>_CXXFLAGS 116Additional flags to pass to the c++ compilers. 117.It Va <version>_CPPFLAGS 118Additional flags to pass to the pre-processors. 119.El 120.Pp 121Currently, defaults are provided for the 122.Xr dports 7 123compilers of 124.Nm clang35 125.Pa ( lang/clang35 ) , 126.Nm gcc48 127.Pa ( lang/gcc48 ) , 128.Nm gcc49 129.Pa ( lang/gcc49 ) , 130and 131.Nm gcc5 132.Pa ( lang/gcc5 ) . 133.Sh IMPLEMENTATION NOTES 134In 135.Dx , 136compilers are selected by setting the 137.Ev CCVER 138variable. 139The 140.Pa cpp , 141.Pa cc , 142etc\&. programs in 143.Pa /usr/bin 144are actually links to the 145.Xr objformat 1 146deflector program which is responsible for executing the 147correct programs (located in 148.Pa /usr/libexec/$CCVER ) . 149.Pp 150Traditionally, 151.Dx 152has 2 compilers in base, one of which is the default compiler and the other 153is either a newer or older version. 154In order to allow additional non-base compilers into 155.Dx Ap s 156build process, 157.Xr objformat 1 158deflects to 159.Pa /usr/libexec/custom 160when 161.Ev CCVER Ap s 162setting is not one of the compilers in base. 163This directory contains a 164.Pa cc 165wrapper script (and some links to it). 166The wrapper script then takes care of making the compiler look and behave 167like a compiler in base. 168.Pp 169The settings in 170.Nm 171specify paths and flags for the 172.Pa /usr/libexec/custom/cc 173script. 174.Sh FILES 175.Bl -tag -width ".Pa /etc/compilers.conf" -compact 176.It Pa /etc/compilers.conf 177external compiler configuration file 178.El 179.Sh EXAMPLES 180Once configured the compiler can be used like this: 181.Bd -literal -offset indent 182env CCVER=<version> make 183.Ed 184.Pp 185To try building world and kernel, use: 186.Bd -literal -offset indent 187cd /usr/src 188env WORLD_CCVER=<version> make buildworld 189env WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF 190.Ed 191.Sh SEE ALSO 192.Xr objformat 1 , 193.Xr build 7 194.Sh HISTORY 195The 196.Nm 197file first appeared in 198.Dx 2.3 . 199