1c97b9141SSascha Wildner.\" 2c97b9141SSascha Wildner.\" Copyright (c) 2009 3c97b9141SSascha Wildner.\" The DragonFly Project. All rights reserved. 4c97b9141SSascha Wildner.\" 5c97b9141SSascha Wildner.\" Redistribution and use in source and binary forms, with or without 6c97b9141SSascha Wildner.\" modification, are permitted provided that the following conditions 7c97b9141SSascha Wildner.\" are met: 8c97b9141SSascha Wildner.\" 9c97b9141SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 10c97b9141SSascha Wildner.\" notice, this list of conditions and the following disclaimer. 11c97b9141SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 12c97b9141SSascha Wildner.\" notice, this list of conditions and the following disclaimer in 13c97b9141SSascha Wildner.\" the documentation and/or other materials provided with the 14c97b9141SSascha Wildner.\" distribution. 15c97b9141SSascha Wildner.\" 3. Neither the name of The DragonFly Project nor the names of its 16c97b9141SSascha Wildner.\" contributors may be used to endorse or promote products derived 17c97b9141SSascha Wildner.\" from this software without specific, prior written permission. 18c97b9141SSascha Wildner.\" 19c97b9141SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20c97b9141SSascha Wildner.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21c97b9141SSascha Wildner.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 22c97b9141SSascha Wildner.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 23c97b9141SSascha Wildner.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 24c97b9141SSascha Wildner.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 25c97b9141SSascha Wildner.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26c97b9141SSascha Wildner.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 27c97b9141SSascha Wildner.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28c97b9141SSascha Wildner.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 29c97b9141SSascha Wildner.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30c97b9141SSascha Wildner.\" SUCH DAMAGE. 31c97b9141SSascha Wildner.\" 321c4f2fa4SSascha Wildner.Dd February 23, 2010 33c97b9141SSascha Wildner.Os 34c97b9141SSascha Wildner.Dt COMPILERS.CONF 5 35c97b9141SSascha Wildner.Sh NAME 36c97b9141SSascha Wildner.Nm compilers.conf 37c97b9141SSascha Wildner.Nd configuration file for external compilers 38c97b9141SSascha Wildner.Sh SYNOPSIS 39c97b9141SSascha Wildner.Pa /etc/compilers.conf 40c97b9141SSascha Wildner.Sh DESCRIPTION 41c97b9141SSascha WildnerThe 42c97b9141SSascha Wildner.Nm 43c97b9141SSascha Wildnerfile allows to configure 44c97b9141SSascha Wildner.Dq external 45c97b9141SSascha Wildnercompilers for usage with the 46c97b9141SSascha Wildner.Dx 47c97b9141SSascha Wildner.Xr build 7 48c97b9141SSascha Wildnersystem. 49c97b9141SSascha Wildner.Pp 50c97b9141SSascha WildnerThe 51c97b9141SSascha Wildner.Pa /etc/defaults/compilers.conf 52c97b9141SSascha Wildnerfile specifies the default settings for all variables, the 53c97b9141SSascha Wildner.Pa /etc/compilers.conf 54c97b9141SSascha Wildnerfile specifies override settings. 55c97b9141SSascha Wildner.Pp 56c97b9141SSascha WildnerThe following variables are available: 57c97b9141SSascha Wildner.Bl -tag -width ".Va <version>_CPPFLAGS" 58c97b9141SSascha Wildner.It Va <version>_CC 59c97b9141SSascha WildnerThe pathname of the 60c97b9141SSascha Wildner.Nm cc 61c97b9141SSascha Wildnerprogram of the compiler. 62c97b9141SSascha Wildner.It Va <version>_CFLAGS 63c97b9141SSascha WildnerAny additional flags to pass to 64c97b9141SSascha Wildner.Va <version>_CC . 65c97b9141SSascha Wildner.It Va <version>_CPP 66c97b9141SSascha WildnerThe pathname of the 67c97b9141SSascha Wildner.Nm cpp 68c97b9141SSascha Wildnerprogram of the compiler. 69c97b9141SSascha Wildner.It Va <version>_CPPFLAGS 70c97b9141SSascha WildnerAny additional flags to pass to 71c97b9141SSascha Wildner.Va <version>_CPP . 72c97b9141SSascha Wildner.It Va <version>_CXX 73c97b9141SSascha WildnerThe pathname of the 74c97b9141SSascha Wildner.Nm c++ 75c97b9141SSascha Wildnerprogram of the compiler. 76c97b9141SSascha Wildner.It Va <version>_CXXFLAGS 77c97b9141SSascha WildnerAny additional flags to pass to 78c97b9141SSascha Wildner.Va <version>_CXX . 79c97b9141SSascha Wildner.It Va <version>_VERSION 80c97b9141SSascha WildnerWhat to output when the 81c97b9141SSascha Wildner.Fl dumpversion 82c97b9141SSascha Wildneroption is used. 83c97b9141SSascha WildnerThis helps 84c97b9141SSascha Wildner.Nm clang 85c97b9141SSascha Wildnerwith 86c97b9141SSascha Wildner.Xr pkgsrc 7 . 87c97b9141SSascha Wildner.El 88c97b9141SSascha Wildner.Pp 89c97b9141SSascha WildnerOnce configured the compiler can then be used like this: 90c97b9141SSascha Wildner.Bd -literal -offset indent 911c4f2fa4SSascha Wildnerenv CCVER=clang make 921c4f2fa4SSascha Wildner.Ed 931c4f2fa4SSascha Wildner.Pp 941c4f2fa4SSascha WildnerTo build world and kernel, use the following instructions: 951c4f2fa4SSascha Wildner.Bd -literal -offset indent 96c97b9141SSascha Wildnercd /usr/src 971c4f2fa4SSascha Wildnerfetch http://leaf.dragonflybsd.org/~swildner/world_clang.diff 981c4f2fa4SSascha Wildnerpatch -p1 <world_clang.diff 991c4f2fa4SSascha Wildnerenv WORLD_CCVER=clang make -DNO_GCC44 buildworld 1001c4f2fa4SSascha Wildnerenv WORLD_CCVER=clang make buildkernel KERNCONF=MYCONF 101c97b9141SSascha Wildner.Ed 102c97b9141SSascha Wildner.Pp 103cfe16058SSascha WildnerCurrently, defaults are provided for 104c97b9141SSascha Wildner.Nm clang 1051c4f2fa4SSascha Wildner(installed from pkgsrc's 1061c4f2fa4SSascha Wildner.Pa lang/clang ) 1071c4f2fa4SSascha Wildnerand 1081c4f2fa4SSascha Wildner.Nm clangsvn 1091c4f2fa4SSascha Wildner(installed from SVN trunk as described in 1101c4f2fa4SSascha Wildner.Pa http://clang.llvm.org/get_started.html ) . 111*1237441aSSascha Wildner.Sh IMPLEMENTATION NOTES 112*1237441aSSascha WildnerIn 113*1237441aSSascha Wildner.Dx , 114*1237441aSSascha Wildnercompilers are selected by setting the 115*1237441aSSascha Wildner.Ev CCVER 116*1237441aSSascha Wildnervariable. 117*1237441aSSascha WildnerThe 118*1237441aSSascha Wildner.Xr objformat 1 119*1237441aSSascha Wildnerdeflector program is responsible for executing the correct programs (located in 120*1237441aSSascha Wildner.Pa /usr/libexec/$CCVER ) 121*1237441aSSascha Wildnerbased on the setting of that variable. 122*1237441aSSascha WildnerTraditionally, 123*1237441aSSascha Wildner.Dx 124*1237441aSSascha Wildnerhas 2 compilers in base, one of which is the default compiler and the other 125*1237441aSSascha Wildneris either a newer or older version. 126*1237441aSSascha Wildner.Pp 127*1237441aSSascha WildnerIn order to allow additional non-base compilers into 128*1237441aSSascha Wildner.Dx Ap s 129*1237441aSSascha Wildnerbuild process, 130*1237441aSSascha Wildner.Xr objformat 1 131*1237441aSSascha Wildnerdeflects to 132*1237441aSSascha Wildner.Pa /usr/libexec/custom 133*1237441aSSascha Wildnerwhen 134*1237441aSSascha Wildner.Ev CCVER Ap s 135*1237441aSSascha Wildnersetting is not one of the compilers in base. 136*1237441aSSascha WildnerThis directory contains a 137*1237441aSSascha Wildner.Pa cc 138*1237441aSSascha Wildnerwrapper script (and some links to it). 139*1237441aSSascha WildnerThe wrapper script then takes care of making the compiler look and behave 140*1237441aSSascha Wildnerlike a compiler in base. 141*1237441aSSascha Wildner.Pp 142*1237441aSSascha WildnerThe settings in 143*1237441aSSascha Wildner.Nm 144*1237441aSSascha Wildnerspecify paths and flags for the 145*1237441aSSascha Wildner.Pa /usr/libexec/custom/cc 146*1237441aSSascha Wildnerscript. 147c97b9141SSascha Wildner.Sh FILES 148c97b9141SSascha Wildner.Bl -tag -width ".Pa /etc/compilers.conf" -compact 149c97b9141SSascha Wildner.It Pa /etc/compilers.conf 150c97b9141SSascha Wildnerexternal compiler configuration file 151c97b9141SSascha Wildner.El 152c97b9141SSascha Wildner.Sh SEE ALSO 153c97b9141SSascha Wildner.Xr objformat 1 , 154c97b9141SSascha Wildner.Xr build 7 155c97b9141SSascha Wildner.Sh HISTORY 156c97b9141SSascha WildnerThe 157c97b9141SSascha Wildner.Nm 158c97b9141SSascha Wildnerfile first appeared in 159c97b9141SSascha Wildner.Dx 2.3 . 160