xref: /dflybsd-src/share/man/man5/compilers.conf.5 (revision 571f588a5c6622ead0ed757b2884a76bb45bdb56)
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*571f588aSJohn Marino.Dd October 21, 2014
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
56*571f588aSJohn MarinoThe following variable definitions are mandatory:
57*571f588aSJohn Marino.Bl -tag -width ".Va <version>_INCOPTCXX"
58c97b9141SSascha Wildner.It Va <version>_CC
59c97b9141SSascha WildnerThe pathname of the
60c97b9141SSascha Wildner.Nm cc
61*571f588aSJohn Marinocompiler.
62c97b9141SSascha Wildner.It Va <version>_CXX
63c97b9141SSascha WildnerThe pathname of the
64c97b9141SSascha Wildner.Nm c++
65*571f588aSJohn Marinoand
66*571f588aSJohn Marino.Nm CC
67*571f588aSJohn Marinocompilers.
68*571f588aSJohn Marino.It Va <version>_CPP
69*571f588aSJohn MarinoThe pathname of the
70*571f588aSJohn Marino.Nm cpp
71*571f588aSJohn Marinopre-processor.
72*571f588aSJohn Marino.It Va <version>_INCOPT
73*571f588aSJohn MarinoThe include flags passed to the invocation of every version of c compiler,
74*571f588aSJohn Marinoc++ compiler, and pre-processor program.  This is normally set to the
75*571f588aSJohn Marinopredefined STD_INCOPT variable.
76*571f588aSJohn Marino.It Va <version>_INCOPTCXX
77*571f588aSJohn MarinoThe include flags passed to the invocation of every version of c++
78*571f588aSJohn Marinocompiler.  This is normally set to either the DPORT_GCC_STD_INCOPTXX or
79*571f588aSJohn MarinoDPORT_CLANG_STD_INCOPTXX predefined variables.
80c97b9141SSascha Wildner.El
81c97b9141SSascha Wildner.Pp
82*571f588aSJohn MarinoThese variables are optionally available:
83*571f588aSJohn Marino.Bl -tag -width ".Va <version>_INCOPTCXX"
84*571f588aSJohn Marino.It Va <version>_GCC
85*571f588aSJohn MarinoThe pathname of the
86*571f588aSJohn Marino.Nm gcc
87*571f588aSJohn Marinocompiler.
88*571f588aSJohn Marino.It Va <version>_GXX
89*571f588aSJohn MarinoThe pathname of the
90*571f588aSJohn Marino.Nm g++
91*571f588aSJohn Marinocompiler.
92*571f588aSJohn Marino.It Va <version>_GCOV
93*571f588aSJohn MarinoThe pathname of the
94*571f588aSJohn Marino.Nm gcov
95*571f588aSJohn Marinocoverage testing tool.
96*571f588aSJohn Marino.\"
97*571f588aSJohn Marino.\" Uncomment the following after clang is brought into base
98*571f588aSJohn Marino.\".It Va <version>_CLANG
99*571f588aSJohn Marino.\"The pathname of the
100*571f588aSJohn Marino.\".Nm clang
101*571f588aSJohn Marino.\"compiler.
102*571f588aSJohn Marino.\".It Va <version>_CLANGCXX
103*571f588aSJohn Marino.\"The pathname of the
104*571f588aSJohn Marino.\".Nm clang++
105*571f588aSJohn Marino.\"compiler.
106*571f588aSJohn Marino.\".It Va <version>_CLANGCPP
107*571f588aSJohn Marino.\"The pathname of the
108*571f588aSJohn Marino.\".Nm clang-cpp
109*571f588aSJohn Marino.\"pre-processor.
110*571f588aSJohn Marino.\"
111*571f588aSJohn Marino.It Va <version>_CFLAGS
112*571f588aSJohn MarinoAdditional flags to pass to the c compilers.
113*571f588aSJohn Marino.It Va <version>_CXXFLAGS
114*571f588aSJohn MarinoAdditional flags to pass to the c++ compilers.
115*571f588aSJohn Marino.It Va <version>_CPPFLAGS
116*571f588aSJohn MarinoAdditional flags to pass to the pre-processors.
117*571f588aSJohn Marino.El
118*571f588aSJohn Marino.Pp
119*571f588aSJohn MarinoCurrently, defaults are provided for the
120*571f588aSJohn Marino.Xr dports 7
121*571f588aSJohn Marinocompilers of
122*571f588aSJohn Marino.Nm clang35
123*571f588aSJohn Marino.Pa ( lang/clang35 ) ,
1240bd9ff77SSascha Wildner.Nm gcc48
125*571f588aSJohn Marino.Pa ( lang/gcc48 ) ,
1260bd9ff77SSascha Wildner.Nm gcc49
127*571f588aSJohn Marino.Pa ( lang/gcc49 ) ,
1286673f254SSascha Wildnerand
1290bd9ff77SSascha Wildner.Nm gcc5
130*571f588aSJohn Marino.Pa ( lang/gcc5 ) .
1311237441aSSascha Wildner.Sh IMPLEMENTATION NOTES
1321237441aSSascha WildnerIn
1331237441aSSascha Wildner.Dx ,
1341237441aSSascha Wildnercompilers are selected by setting the
1351237441aSSascha Wildner.Ev CCVER
1361237441aSSascha Wildnervariable.
1371237441aSSascha WildnerThe
138cc9ebe4dSSascha Wildner.Pa cpp ,
139c0e19b6eSSascha Wildner.Pa cc ,
140cc9ebe4dSSascha Wildneretc\&. programs in
141cc9ebe4dSSascha Wildner.Pa /usr/bin
142cc9ebe4dSSascha Wildnerare actually links to the
1431237441aSSascha Wildner.Xr objformat 1
144cc9ebe4dSSascha Wildnerdeflector program which is responsible for executing the
145cc9ebe4dSSascha Wildnercorrect programs (located in
146cc9ebe4dSSascha Wildner.Pa /usr/libexec/$CCVER ) .
147cc9ebe4dSSascha Wildner.Pp
1481237441aSSascha WildnerTraditionally,
1491237441aSSascha Wildner.Dx
1501237441aSSascha Wildnerhas 2 compilers in base, one of which is the default compiler and the other
1511237441aSSascha Wildneris either a newer or older version.
1521237441aSSascha WildnerIn order to allow additional non-base compilers into
1531237441aSSascha Wildner.Dx Ap s
1541237441aSSascha Wildnerbuild process,
1551237441aSSascha Wildner.Xr objformat 1
1561237441aSSascha Wildnerdeflects to
1571237441aSSascha Wildner.Pa /usr/libexec/custom
1581237441aSSascha Wildnerwhen
1591237441aSSascha Wildner.Ev CCVER Ap s
1601237441aSSascha Wildnersetting is not one of the compilers in base.
1611237441aSSascha WildnerThis directory contains a
1621237441aSSascha Wildner.Pa cc
1631237441aSSascha Wildnerwrapper script (and some links to it).
1641237441aSSascha WildnerThe wrapper script then takes care of making the compiler look and behave
1651237441aSSascha Wildnerlike a compiler in base.
1661237441aSSascha Wildner.Pp
1671237441aSSascha WildnerThe settings in
1681237441aSSascha Wildner.Nm
1691237441aSSascha Wildnerspecify paths and flags for the
1701237441aSSascha Wildner.Pa /usr/libexec/custom/cc
1711237441aSSascha Wildnerscript.
172c97b9141SSascha Wildner.Sh FILES
173c97b9141SSascha Wildner.Bl -tag -width ".Pa /etc/compilers.conf" -compact
174c97b9141SSascha Wildner.It Pa /etc/compilers.conf
175c97b9141SSascha Wildnerexternal compiler configuration file
176c97b9141SSascha Wildner.El
177c0e19b6eSSascha Wildner.Sh EXAMPLES
178c0e19b6eSSascha WildnerOnce configured the compiler can be used like this:
179c0e19b6eSSascha Wildner.Bd -literal -offset indent
1800bd9ff77SSascha Wildnerenv CCVER=<version> make
181c0e19b6eSSascha Wildner.Ed
182c0e19b6eSSascha Wildner.Pp
183c0e19b6eSSascha WildnerTo try building world and kernel, use:
184c0e19b6eSSascha Wildner.Bd -literal -offset indent
185c0e19b6eSSascha Wildnercd /usr/src
1860bd9ff77SSascha Wildnerenv WORLD_CCVER=<version> make buildworld
187c0e19b6eSSascha Wildnerenv WORLD_CCVER=<version> make buildkernel KERNCONF=MYCONF
188c0e19b6eSSascha Wildner.Ed
189c97b9141SSascha Wildner.Sh SEE ALSO
190c97b9141SSascha Wildner.Xr objformat 1 ,
191c97b9141SSascha Wildner.Xr build 7
192c97b9141SSascha Wildner.Sh HISTORY
193c97b9141SSascha WildnerThe
194c97b9141SSascha Wildner.Nm
195c97b9141SSascha Wildnerfile first appeared in
196c97b9141SSascha Wildner.Dx 2.3 .
197