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. This is normally set to the 75predefined STD_INCOPT variable. 76.It Va <version>_INCOPTCXX 77The include flags passed to the invocation of every version of c++ 78compiler. This is normally set to either the DPORT_GCC_STD_INCOPTXX or 79DPORT_CLANG_STD_INCOPTXX predefined variables. 80.El 81.Pp 82These variables are optionally available: 83.Bl -tag -width ".Va <version>_INCOPTCXX" 84.It Va <version>_GCC 85The pathname of the 86.Nm gcc 87compiler. 88.It Va <version>_GXX 89The pathname of the 90.Nm g++ 91compiler. 92.It Va <version>_GCOV 93The pathname of the 94.Nm gcov 95coverage testing tool. 96.\" 97.\" Uncomment the following after clang is brought into base 98.\".It Va <version>_CLANG 99.\"The pathname of the 100.\".Nm clang 101.\"compiler. 102.\".It Va <version>_CLANGCXX 103.\"The pathname of the 104.\".Nm clang++ 105.\"compiler. 106.\".It Va <version>_CLANGCPP 107.\"The pathname of the 108.\".Nm clang-cpp 109.\"pre-processor. 110.\" 111.It Va <version>_CFLAGS 112Additional flags to pass to the c compilers. 113.It Va <version>_CXXFLAGS 114Additional flags to pass to the c++ compilers. 115.It Va <version>_CPPFLAGS 116Additional flags to pass to the pre-processors. 117.El 118.Pp 119Currently, defaults are provided for the 120.Xr dports 7 121compilers of 122.Nm clang35 123.Pa ( lang/clang35 ) , 124.Nm gcc48 125.Pa ( lang/gcc48 ) , 126.Nm gcc49 127.Pa ( lang/gcc49 ) , 128and 129.Nm gcc5 130.Pa ( lang/gcc5 ) . 131.Sh IMPLEMENTATION NOTES 132In 133.Dx , 134compilers are selected by setting the 135.Ev CCVER 136variable. 137The 138.Pa cpp , 139.Pa cc , 140etc\&. programs in 141.Pa /usr/bin 142are actually links to the 143.Xr objformat 1 144deflector program which is responsible for executing the 145correct programs (located in 146.Pa /usr/libexec/$CCVER ) . 147.Pp 148Traditionally, 149.Dx 150has 2 compilers in base, one of which is the default compiler and the other 151is either a newer or older version. 152In order to allow additional non-base compilers into 153.Dx Ap s 154build process, 155.Xr objformat 1 156deflects to 157.Pa /usr/libexec/custom 158when 159.Ev CCVER Ap s 160setting is not one of the compilers in base. 161This directory contains a 162.Pa cc 163wrapper script (and some links to it). 164The wrapper script then takes care of making the compiler look and behave 165like a compiler in base. 166.Pp 167The settings in 168.Nm 169specify paths and flags for the 170.Pa /usr/libexec/custom/cc 171script. 172.Sh FILES 173.Bl -tag -width ".Pa /etc/compilers.conf" -compact 174.It Pa /etc/compilers.conf 175external compiler configuration file 176.El 177.Sh EXAMPLES 178Once configured the compiler can be used like this: 179.Bd -literal -offset indent 180env CCVER=<version> make 181.Ed 182.Pp 183To try building world and kernel, use: 184.Bd -literal -offset indent 185cd /usr/src 186env WORLD_CCVER=<version> make buildworld 187env WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF 188.Ed 189.Sh SEE ALSO 190.Xr objformat 1 , 191.Xr build 7 192.Sh HISTORY 193The 194.Nm 195file first appeared in 196.Dx 2.3 . 197