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 20, 2020 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 clang10 125.Pa ( devel/clang10 ) . 126.Sh IMPLEMENTATION NOTES 127In 128.Dx , 129compilers are selected by setting the 130.Ev CCVER 131variable. 132The 133.Pa cpp , 134.Pa cc , 135etc\&. programs in 136.Pa /usr/bin 137are actually links to the 138.Xr objformat 1 139deflector program which is responsible for executing the 140correct programs (located in 141.Pa /usr/libexec/$CCVER ) . 142.Pp 143Traditionally, 144.Dx 145has 2 compilers in base, one of which is the default compiler and the other 146is either a newer or older version. 147In order to allow additional non-base compilers into 148.Dx Ap s 149build process, 150.Xr objformat 1 151deflects to 152.Pa /usr/libexec/custom 153when 154.Ev CCVER Ap s 155setting is not one of the compilers in base. 156This directory contains a 157.Pa cc 158wrapper script (and some links to it). 159The wrapper script then takes care of making the compiler look and behave 160like a compiler in base. 161.Pp 162The settings in 163.Nm 164specify paths and flags for the 165.Pa /usr/libexec/custom/cc 166script. 167.Sh FILES 168.Bl -tag -width ".Pa /etc/compilers.conf" -compact 169.It Pa /etc/compilers.conf 170external compiler configuration file 171.El 172.Sh EXAMPLES 173Once configured the compiler can be used like this: 174.Bd -literal -offset indent 175env CCVER=<version> make 176.Ed 177.Pp 178To try building world and kernel, use: 179.Bd -literal -offset indent 180cd /usr/src 181env WORLD_CCVER=<version> make buildworld 182env WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF 183.Ed 184.Sh SEE ALSO 185.Xr objformat 1 , 186.Xr build 7 187.Sh HISTORY 188The 189.Nm 190file first appeared in 191.Dx 2.3 . 192