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.\" 32*2fb215b1SSascha Wildner.Dd October 20, 2020 33c97b9141SSascha Wildner.Dt COMPILERS.CONF 5 34fb5b3747SSascha Wildner.Os 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 56571f588aSJohn MarinoThe following variable definitions are mandatory: 57571f588aSJohn Marino.Bl -tag -width ".Va <version>_INCOPTCXX" 58c97b9141SSascha Wildner.It Va <version>_CC 59c97b9141SSascha WildnerThe pathname of the 60c97b9141SSascha Wildner.Nm cc 61571f588aSJohn Marinocompiler. 62c97b9141SSascha Wildner.It Va <version>_CXX 63c97b9141SSascha WildnerThe pathname of the 64c97b9141SSascha Wildner.Nm c++ 65571f588aSJohn Marinoand 66571f588aSJohn Marino.Nm CC 67571f588aSJohn Marinocompilers. 68571f588aSJohn Marino.It Va <version>_CPP 69571f588aSJohn MarinoThe pathname of the 70571f588aSJohn Marino.Nm cpp 71571f588aSJohn Marinopre-processor. 72571f588aSJohn Marino.It Va <version>_INCOPT 73571f588aSJohn MarinoThe include flags passed to the invocation of every version of c compiler, 745a52b3b3SSascha Wildnerc++ compiler, and pre-processor program. 755a52b3b3SSascha WildnerThis is normally set to the 76571f588aSJohn Marinopredefined STD_INCOPT variable. 77571f588aSJohn Marino.It Va <version>_INCOPTCXX 78571f588aSJohn MarinoThe include flags passed to the invocation of every version of c++ 795a52b3b3SSascha Wildnercompiler. 805a52b3b3SSascha WildnerThis is normally set to either the DPORT_GCC_STD_INCOPTXX or 81571f588aSJohn MarinoDPORT_CLANG_STD_INCOPTXX predefined variables. 82c97b9141SSascha Wildner.El 83c97b9141SSascha Wildner.Pp 84571f588aSJohn MarinoThese variables are optionally available: 85571f588aSJohn Marino.Bl -tag -width ".Va <version>_INCOPTCXX" 86571f588aSJohn Marino.It Va <version>_GCC 87571f588aSJohn MarinoThe pathname of the 88571f588aSJohn Marino.Nm gcc 89571f588aSJohn Marinocompiler. 90571f588aSJohn Marino.It Va <version>_GXX 91571f588aSJohn MarinoThe pathname of the 92571f588aSJohn Marino.Nm g++ 93571f588aSJohn Marinocompiler. 94571f588aSJohn Marino.It Va <version>_GCOV 95571f588aSJohn MarinoThe pathname of the 96571f588aSJohn Marino.Nm gcov 97571f588aSJohn Marinocoverage testing tool. 98571f588aSJohn Marino.\" 99571f588aSJohn Marino.\" Uncomment the following after clang is brought into base 100571f588aSJohn Marino.\".It Va <version>_CLANG 101571f588aSJohn Marino.\"The pathname of the 102571f588aSJohn Marino.\".Nm clang 103571f588aSJohn Marino.\"compiler. 104571f588aSJohn Marino.\".It Va <version>_CLANGCXX 105571f588aSJohn Marino.\"The pathname of the 106571f588aSJohn Marino.\".Nm clang++ 107571f588aSJohn Marino.\"compiler. 108571f588aSJohn Marino.\".It Va <version>_CLANGCPP 109571f588aSJohn Marino.\"The pathname of the 110571f588aSJohn Marino.\".Nm clang-cpp 111571f588aSJohn Marino.\"pre-processor. 112571f588aSJohn Marino.\" 113571f588aSJohn Marino.It Va <version>_CFLAGS 114571f588aSJohn MarinoAdditional flags to pass to the c compilers. 115571f588aSJohn Marino.It Va <version>_CXXFLAGS 116571f588aSJohn MarinoAdditional flags to pass to the c++ compilers. 117571f588aSJohn Marino.It Va <version>_CPPFLAGS 118571f588aSJohn MarinoAdditional flags to pass to the pre-processors. 119571f588aSJohn Marino.El 120571f588aSJohn Marino.Pp 121571f588aSJohn MarinoCurrently, defaults are provided for the 122571f588aSJohn Marino.Xr dports 7 123571f588aSJohn Marinocompilers of 124*2fb215b1SSascha Wildner.Nm clang10 125*2fb215b1SSascha Wildner.Pa ( devel/clang10 ) . 1261237441aSSascha Wildner.Sh IMPLEMENTATION NOTES 1271237441aSSascha WildnerIn 1281237441aSSascha Wildner.Dx , 1291237441aSSascha Wildnercompilers are selected by setting the 1301237441aSSascha Wildner.Ev CCVER 1311237441aSSascha Wildnervariable. 1321237441aSSascha WildnerThe 133cc9ebe4dSSascha Wildner.Pa cpp , 134c0e19b6eSSascha Wildner.Pa cc , 135cc9ebe4dSSascha Wildneretc\&. programs in 136cc9ebe4dSSascha Wildner.Pa /usr/bin 137cc9ebe4dSSascha Wildnerare actually links to the 1381237441aSSascha Wildner.Xr objformat 1 139cc9ebe4dSSascha Wildnerdeflector program which is responsible for executing the 140cc9ebe4dSSascha Wildnercorrect programs (located in 141cc9ebe4dSSascha Wildner.Pa /usr/libexec/$CCVER ) . 142cc9ebe4dSSascha Wildner.Pp 1431237441aSSascha WildnerTraditionally, 1441237441aSSascha Wildner.Dx 1451237441aSSascha Wildnerhas 2 compilers in base, one of which is the default compiler and the other 1461237441aSSascha Wildneris either a newer or older version. 1471237441aSSascha WildnerIn order to allow additional non-base compilers into 1481237441aSSascha Wildner.Dx Ap s 1491237441aSSascha Wildnerbuild process, 1501237441aSSascha Wildner.Xr objformat 1 1511237441aSSascha Wildnerdeflects to 1521237441aSSascha Wildner.Pa /usr/libexec/custom 1531237441aSSascha Wildnerwhen 1541237441aSSascha Wildner.Ev CCVER Ap s 1551237441aSSascha Wildnersetting is not one of the compilers in base. 1561237441aSSascha WildnerThis directory contains a 1571237441aSSascha Wildner.Pa cc 1581237441aSSascha Wildnerwrapper script (and some links to it). 1591237441aSSascha WildnerThe wrapper script then takes care of making the compiler look and behave 1601237441aSSascha Wildnerlike a compiler in base. 1611237441aSSascha Wildner.Pp 1621237441aSSascha WildnerThe settings in 1631237441aSSascha Wildner.Nm 1641237441aSSascha Wildnerspecify paths and flags for the 1651237441aSSascha Wildner.Pa /usr/libexec/custom/cc 1661237441aSSascha Wildnerscript. 167c97b9141SSascha Wildner.Sh FILES 168c97b9141SSascha Wildner.Bl -tag -width ".Pa /etc/compilers.conf" -compact 169c97b9141SSascha Wildner.It Pa /etc/compilers.conf 170c97b9141SSascha Wildnerexternal compiler configuration file 171c97b9141SSascha Wildner.El 172c0e19b6eSSascha Wildner.Sh EXAMPLES 173c0e19b6eSSascha WildnerOnce configured the compiler can be used like this: 174c0e19b6eSSascha Wildner.Bd -literal -offset indent 1750bd9ff77SSascha Wildnerenv CCVER=<version> make 176c0e19b6eSSascha Wildner.Ed 177c0e19b6eSSascha Wildner.Pp 178c0e19b6eSSascha WildnerTo try building world and kernel, use: 179c0e19b6eSSascha Wildner.Bd -literal -offset indent 180c0e19b6eSSascha Wildnercd /usr/src 1810bd9ff77SSascha Wildnerenv WORLD_CCVER=<version> make buildworld 182c0e19b6eSSascha Wildnerenv WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF 183c0e19b6eSSascha Wildner.Ed 184c97b9141SSascha Wildner.Sh SEE ALSO 185c97b9141SSascha Wildner.Xr objformat 1 , 186c97b9141SSascha Wildner.Xr build 7 187c97b9141SSascha Wildner.Sh HISTORY 188c97b9141SSascha WildnerThe 189c97b9141SSascha Wildner.Nm 190c97b9141SSascha Wildnerfile first appeared in 191c97b9141SSascha Wildner.Dx 2.3 . 192