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 September 29, 2012 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 variables are available: 57.Bl -tag -width ".Va <version>_CPPFLAGS" 58.It Va <version>_CC 59The pathname of the 60.Nm cc 61program of the compiler. 62.It Va <version>_CFLAGS 63Any additional flags to pass to 64.Va <version>_CC . 65.It Va <version>_CPP 66The pathname of the 67.Nm cpp 68program of the compiler. 69.It Va <version>_CPPFLAGS 70Any additional flags to pass to 71.Va <version>_CPP . 72.It Va <version>_CXX 73The pathname of the 74.Nm c++ 75program of the compiler. 76.It Va <version>_CXXFLAGS 77Any additional flags to pass to 78.Va <version>_CXX . 79.It Va <version>_VERSION 80What to output when the 81.Fl dumpversion 82option is used. 83This helps 84.Nm clang 85with 86.Xr pkgsrc 7 . 87.El 88.Pp 89Once configured the compiler can then be used like this: 90.Bd -literal -offset indent 91env CCVER=clang make 92.Ed 93.Pp 94To build world and kernel, use the following instructions: 95.Bd -literal -offset indent 96cd /usr/src 97fetch http://leaf.dragonflybsd.org/~swildner/world_clang.diff 98patch -p1 <world_clang.diff 99env WORLD_CCVER=clang make -DNO_GCC47 buildworld 100env WORLD_CCVER=clang make buildkernel KERNCONF=MYCONF 101.Ed 102.Pp 103Currently, defaults are provided for 104.Nm clang 105(installed from 106.Xr pkgsrc 7 Ap s 107.Pa lang/clang ) , 108.Nm clangsvn 109(installed from SVN trunk as described in 110.Pa http://clang.llvm.org/get_started.html ) , 111.Nm gcc46 112(installed from 113.Xr pkgsrc 7 Ap s 114.Pa lang/gnat-aux ) , 115.Nm gcc47 116(base compiler) 117and 118.Nm pcc 119(installed from 120.Xr pkgsrc 7 Ap s 121.Pa lang/pcc-current ) . 122.Sh IMPLEMENTATION NOTES 123In 124.Dx , 125compilers are selected by setting the 126.Ev CCVER 127variable. 128The 129.Pa cpp , 130.Pa cc 131etc\&. programs in 132.Pa /usr/bin 133are actually links to the 134.Xr objformat 1 135deflector program which is responsible for executing the 136correct programs (located in 137.Pa /usr/libexec/$CCVER ) . 138.Pp 139Traditionally, 140.Dx 141has 2 compilers in base, one of which is the default compiler and the other 142is either a newer or older version. 143In order to allow additional non-base compilers into 144.Dx Ap s 145build process, 146.Xr objformat 1 147deflects to 148.Pa /usr/libexec/custom 149when 150.Ev CCVER Ap s 151setting is not one of the compilers in base. 152This directory contains a 153.Pa cc 154wrapper script (and some links to it). 155The wrapper script then takes care of making the compiler look and behave 156like a compiler in base. 157.Pp 158The settings in 159.Nm 160specify paths and flags for the 161.Pa /usr/libexec/custom/cc 162script. 163.Sh FILES 164.Bl -tag -width ".Pa /etc/compilers.conf" -compact 165.It Pa /etc/compilers.conf 166external compiler configuration file 167.El 168.Sh SEE ALSO 169.Xr objformat 1 , 170.Xr build 7 171.Sh HISTORY 172The 173.Nm 174file first appeared in 175.Dx 2.3 . 176