Sat Jan 28 21:32:14 2012 UTC ()
Provide a way to override the default objcopy flags for library modules.


(christos)
diff -r1.290 -r1.291 src/share/mk/bsd.README
diff -r1.318 -r1.319 src/share/mk/bsd.lib.mk
diff -r1.210 -r1.211 src/share/mk/bsd.sys.mk

cvs diff -r1.290 -r1.291 src/share/mk/bsd.README (switch to unified diff)

--- src/share/mk/bsd.README 2011/11/05 22:56:30 1.290
+++ src/share/mk/bsd.README 2012/01/28 21:32:13 1.291
@@ -1,1834 +1,1837 @@ @@ -1,1834 +1,1837 @@
1# $NetBSD: bsd.README,v 1.290 2011/11/05 22:56:30 christos Exp $ 1# $NetBSD: bsd.README,v 1.291 2012/01/28 21:32:13 christos Exp $
2# @(#)bsd.README 8.2 (Berkeley) 4/2/94 2# @(#)bsd.README 8.2 (Berkeley) 4/2/94
3 3
4This is the README file for the make "include" files for the NetBSD 4This is the README file for the make "include" files for the NetBSD
5source tree. The files are installed in /usr/share/mk, and are, 5source tree. The files are installed in /usr/share/mk, and are,
6by convention, named with the suffix ".mk". 6by convention, named with the suffix ".mk".
7 7
8Note, this file is not intended to replace reading through the .mk 8Note, this file is not intended to replace reading through the .mk
9files for anything tricky. 9files for anything tricky.
10 10
11=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 11=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
12 12
13RANDOM THINGS WORTH KNOWING: 13RANDOM THINGS WORTH KNOWING:
14 14
15The files are simply C-style #include files, and pretty much behave like 15The files are simply C-style #include files, and pretty much behave like
16you'd expect. The syntax is slightly different in that a single '.' is 16you'd expect. The syntax is slightly different in that a single '.' is
17used instead of the hash mark, i.e. ".include <bsd.prog.mk>". 17used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
18 18
19One difference that will save you lots of debugging time is that inclusion 19One difference that will save you lots of debugging time is that inclusion
20of the file is normally done at the *end* of the Makefile. The reason for 20of the file is normally done at the *end* of the Makefile. The reason for
21this is because .mk files often modify variables and behavior based on the 21this is because .mk files often modify variables and behavior based on the
22values of variables set in the Makefile. To make this work, remember that 22values of variables set in the Makefile. To make this work, remember that
23the FIRST target found is the target that is used, i.e. if the Makefile has: 23the FIRST target found is the target that is used, i.e. if the Makefile has:
24 24
25 a: 25 a:
26 echo a 26 echo a
27 a: 27 a:
28 echo a number two 28 echo a number two
29 29
30the command "make a" will echo "a". To make things confusing, the SECOND 30the command "make a" will echo "a". To make things confusing, the SECOND
31variable assignment is the overriding one, i.e. if the Makefile has: 31variable assignment is the overriding one, i.e. if the Makefile has:
32 32
33 a= foo 33 a= foo
34 a= bar 34 a= bar
35 35
36 b: 36 b:
37 echo ${a} 37 echo ${a}
38 38
39the command "make b" will echo "bar". This is for compatibility with the 39the command "make b" will echo "bar". This is for compatibility with the
40way the V7 make behaved. 40way the V7 make behaved.
41 41
42It's fairly difficult to make the BSD .mk files work when you're building 42It's fairly difficult to make the BSD .mk files work when you're building
43multiple programs in a single directory. It's a lot easier to split up the 43multiple programs in a single directory. It's a lot easier to split up the
44programs than to deal with the problem. Most of the agony comes from making 44programs than to deal with the problem. Most of the agony comes from making
45the "obj" directory stuff work right, not because we switched to a new version 45the "obj" directory stuff work right, not because we switched to a new version
46of make. So, don't get mad at us, figure out a better way to handle multiple 46of make. So, don't get mad at us, figure out a better way to handle multiple
47architectures so we can quit using the symbolic link stuff. (Imake doesn't 47architectures so we can quit using the symbolic link stuff. (Imake doesn't
48count.) 48count.)
49 49
50The file .depend in the source directory is expected to contain dependencies 50The file .depend in the source directory is expected to contain dependencies
51for the source files. This file is read automatically by make after reading 51for the source files. This file is read automatically by make after reading
52the Makefile. 52the Makefile.
53 53
54The variable DESTDIR works as before. It's not set anywhere but will change 54The variable DESTDIR works as before. It's not set anywhere but will change
55the tree where the file gets installed. 55the tree where the file gets installed.
56 56
57The profiled libraries are no longer built in a different directory than 57The profiled libraries are no longer built in a different directory than
58the regular libraries. A new suffix, ".po", is used to denote a profiled 58the regular libraries. A new suffix, ".po", is used to denote a profiled
59object, and ".pico" denotes a shared (position-independent) object. 59object, and ".pico" denotes a shared (position-independent) object.
60 60
61There are various make variables used during the build. 61There are various make variables used during the build.
62 62
63Many variables support a (case sensitive) value of "no" or "yes", 63Many variables support a (case sensitive) value of "no" or "yes",
64and are tested with ${VAR} == "no" and ${VAR} != "no" . 64and are tested with ${VAR} == "no" and ${VAR} != "no" .
65 65
66 66
67The basic rule for the variable naming scheme is as follows: 67The basic rule for the variable naming scheme is as follows:
68 68
69HOST_xxx A command that runs on the host machine regardless of 69HOST_xxx A command that runs on the host machine regardless of
70 whether or not the system is being cross compiled, or 70 whether or not the system is being cross compiled, or
71 flags for such a command. 71 flags for such a command.
72 72
73MKxxx Can be set to "no" to disable functionality, or 73MKxxx Can be set to "no" to disable functionality, or
74 "yes" to enable it. 74 "yes" to enable it.
75 Usually defaults to "yes", although some variables 75 Usually defaults to "yes", although some variables
76 default to "no". 76 default to "no".
77 Due to make(1) implementation issues, if a temporary 77 Due to make(1) implementation issues, if a temporary
78 command-line override of a mk.conf(5) or <bsd.own.mk> 78 command-line override of a mk.conf(5) or <bsd.own.mk>
79 setting is required whilst still honoring a particular 79 setting is required whilst still honoring a particular
80 Makefile's setting of MKxxx, use 80 Makefile's setting of MKxxx, use
81 env MKxxx=value make 81 env MKxxx=value make
82 instead of 82 instead of
83 make MKxxx=value 83 make MKxxx=value
84 84
85NOxxx If defined, disables a feature. 85NOxxx If defined, disables a feature.
86 Not intended for users. 86 Not intended for users.
87 This is to allow Makefiles to disable functionality 87 This is to allow Makefiles to disable functionality
88 that they don't support (such as missing man pages). 88 that they don't support (such as missing man pages).
89 NOxxx variables must be defined before <bsd.own.mk> 89 NOxxx variables must be defined before <bsd.own.mk>
90 is included. 90 is included.
91 91
92TOOL_xxx A tool that is provided as part of the USETOOLS 92TOOL_xxx A tool that is provided as part of the USETOOLS
93 framework. When not using the USETOOLS framework, 93 framework. When not using the USETOOLS framework,
94 TOOL_xxx variables should refer to tools that are 94 TOOL_xxx variables should refer to tools that are
95 already installed on the host system. 95 already installed on the host system.
96 96
97The following variables that control how things are made/installed that 97The following variables that control how things are made/installed that
98are not set by default. These should not be set by Makefiles; they're for 98are not set by default. These should not be set by Makefiles; they're for
99the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5)) 99the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5))
100or on the make(1) command line: 100or on the make(1) command line:
101 101
102BUILD If defined, 'make install' checks that the targets in the 102BUILD If defined, 'make install' checks that the targets in the
103 source directories are up-to-date and remakes them if they 103 source directories are up-to-date and remakes them if they
104 are out of date, instead of blindly trying to install 104 are out of date, instead of blindly trying to install
105 out of date or non-existent targets. 105 out of date or non-existent targets.
106 106
107MAKEVERBOSE Control how "verbose" the standard make(1) rules are. 107MAKEVERBOSE Control how "verbose" the standard make(1) rules are.
108 Default: 2 108 Default: 2
109 Supported values: 109 Supported values:
110 0 Minimal output ("quiet") 110 0 Minimal output ("quiet")
111 1 Describe what is occurring 111 1 Describe what is occurring
112 2 Describe what is occurring and echo the actual command 112 2 Describe what is occurring and echo the actual command
113 3 Ignore the effect of the "@" prefix in make commands 113 3 Ignore the effect of the "@" prefix in make commands
114 4 Trace shell commands using the shell's -x flag 114 4 Trace shell commands using the shell's -x flag
115 115
116MKATF If "no", don't build libatf-c, libatf-c++ libraries associated 116MKATF If "no", don't build libatf-c, libatf-c++ libraries associated
117 with the Automated Testing Framework (ATF). 117 with the Automated Testing Framework (ATF).
118 Default: yes 118 Default: yes
119 119
120MKBFD Obsolete, use MKBINUTILS 120MKBFD Obsolete, use MKBINUTILS
121 121
122MKBINUTILS If "no", don't build binutils (gas, ld, etc and libbfd, 122MKBINUTILS If "no", don't build binutils (gas, ld, etc and libbfd,
123 libopcodes) 123 libopcodes)
124 Default: yes 124 Default: yes
125 125
126MKBSDTAR If "yes", use the libarchive based cpio and tar instead of 126MKBSDTAR If "yes", use the libarchive based cpio and tar instead of
127 the pax frontends. 127 the pax frontends.
128 Default: no 128 Default: no
129 129
130MKCATPAGES If "no", don't build or install the catman pages. 130MKCATPAGES If "no", don't build or install the catman pages.
131 Default: yes 131 Default: yes
132 132
133MKCOMPAT If "no", don't build or install the src/compat. 133MKCOMPAT If "no", don't build or install the src/compat.
134 Default: yes on amd64/sparc64, no elsewhere. 134 Default: yes on amd64/sparc64, no elsewhere.
135 135
136MKCOMPLEX If "no", don't build libm support for <complex.h> 136MKCOMPLEX If "no", don't build libm support for <complex.h>
137 Default: yes 137 Default: yes
138 138
139MKCRYPTO If "no", no cryptography support will be built into the system, 139MKCRYPTO If "no", no cryptography support will be built into the system,
140 and also acts as "MKKERBEROS=no". 140 and also acts as "MKKERBEROS=no".
141 Default: yes 141 Default: yes
142 142
143MKCRYPTO_IDEA If not "no", IDEA support will be built into libcrypto_idea.a. 143MKCRYPTO_IDEA If not "no", IDEA support will be built into libcrypto_idea.a.
144 Default: no 144 Default: no
145 145
146MKCRYPTO_MDC2 If not "no", MDC2 support will be built into libcrypto_mdc2.a 146MKCRYPTO_MDC2 If not "no", MDC2 support will be built into libcrypto_mdc2.a
147 Default: no 147 Default: no
148 148
149MKCRYPTO_RC5 If not "no", RC5 support will be built into libcrypto_rc5.a. 149MKCRYPTO_RC5 If not "no", RC5 support will be built into libcrypto_rc5.a.
150 Default: no 150 Default: no
151 151
152MKCVS If "no", don't build or install cvs(1). 152MKCVS If "no", don't build or install cvs(1).
153 Default: yes 153 Default: yes
154 154
155MKDEBUG If "no", don't build and install separate debugging symbols 155MKDEBUG If "no", don't build and install separate debugging symbols
156 into /usr/libdata/debug. 156 into /usr/libdata/debug.
157 Default: no 157 Default: no
158 158
159MKDEBUGLIB Build *_g.a debugging libraries, which are compiled 159MKDEBUGLIB Build *_g.a debugging libraries, which are compiled
160 with -DDEBUG. 160 with -DDEBUG.
161 Default: no 161 Default: no
162 162
163MKDOC If "no", don't build or install the documentation. 163MKDOC If "no", don't build or install the documentation.
164 Default: yes 164 Default: yes
165 165
166MKDYNAMICROOT If "no", build programs in /bin and /sbin statically, 166MKDYNAMICROOT If "no", build programs in /bin and /sbin statically,
167 don't install certain libraries in /lib, and don't 167 don't install certain libraries in /lib, and don't
168 install the shared linker into /libexec. 168 install the shared linker into /libexec.
169 Default: yes 169 Default: yes
170 170
171MKEXTSRC If not "no", 'make build' also descends into either src/extsrc 171MKEXTSRC If not "no", 'make build' also descends into either src/extsrc
172 to cross-build programs and libraries externally added by 172 to cross-build programs and libraries externally added by
173 users, and automatically enables creation of those sets. 173 users, and automatically enables creation of those sets.
174 Default: no 174 Default: no
175 175
176MKGCC If "no", don't build gcc(1) or any of the GCC-related 176MKGCC If "no", don't build gcc(1) or any of the GCC-related
177 libraries (libgcc, libobjc, libstdc++). 177 libraries (libgcc, libobjc, libstdc++).
178 Default: yes 178 Default: yes
179 179
180MKGCCCMDS If "no", don't build gcc(1), but do build the GCC-related 180MKGCCCMDS If "no", don't build gcc(1), but do build the GCC-related
181 libraries (libgcc, libobjc, libstdc++). 181 libraries (libgcc, libobjc, libstdc++).
182 Default: yes 182 Default: yes
183 183
184MKGDB If "no", don't build gdb(1). 184MKGDB If "no", don't build gdb(1).
185 Default: yes 185 Default: yes
186 186
187MKHESIOD If "no", disables building of Hesiod infrastructure 187MKHESIOD If "no", disables building of Hesiod infrastructure
188 (libraries and support programs). 188 (libraries and support programs).
189 Default: yes 189 Default: yes
190 190
191MKHOSTOBJ If not "no", for programs intended to be run on the compile 191MKHOSTOBJ If not "no", for programs intended to be run on the compile
192 host, the name, release, and architecture of the host 192 host, the name, release, and architecture of the host
193 operating system will be suffixed to the name of the object 193 operating system will be suffixed to the name of the object
194 directory created by "make obj". 194 directory created by "make obj".
195 Default: no 195 Default: no
196 196
197MKHTML If "no", don't build or install the HTML man pages. 197MKHTML If "no", don't build or install the HTML man pages.
198 Default: yes 198 Default: yes
199 199
200MKIEEEFP If "no", don't add code for IEEE754/IEC60559 conformance. 200MKIEEEFP If "no", don't add code for IEEE754/IEC60559 conformance.
201 Has no effect on most platforms. 201 Has no effect on most platforms.
202 Default: yes 202 Default: yes
203 203
204MKSTRIPIDENT Strip the RCS IDs from program binaries and shared libraries. 204MKSTRIPIDENT Strip the RCS IDs from program binaries and shared libraries.
205 Default: no 205 Default: no
206 206
207MKINET6 If "no", disables building of INET6 (IPv6) infrastructure 207MKINET6 If "no", disables building of INET6 (IPv6) infrastructure
208 (libraries and support programs). This option must not be 208 (libraries and support programs). This option must not be
209 set to "no" if MKX11 is not "no". 209 set to "no" if MKX11 is not "no".
210 Default: yes 210 Default: yes
211 211
212MKINFO If "no", don't build or install Info documentation from 212MKINFO If "no", don't build or install Info documentation from
213 Texinfo source files. 213 Texinfo source files.
214 Default: yes 214 Default: yes
215 215
216MKIPFILTER If "no", don't build or install the IP Filter programs and LKM. 216MKIPFILTER If "no", don't build or install the IP Filter programs and LKM.
217 Default: yes 217 Default: yes
218 218
219MKISCSI If "no", don't build or install iSCSI library or applications 219MKISCSI If "no", don't build or install iSCSI library or applications
220 (depends on libpthread.) 220 (depends on libpthread.)
221 Default: yes 221 Default: yes
222 222
223MKKERBEROS If "no", disables building of Kerberos v5 223MKKERBEROS If "no", disables building of Kerberos v5
224 infrastructure (libraries and support programs). 224 infrastructure (libraries and support programs).
225 Default: yes 225 Default: yes
226 226
227MKLDAP If "no", disables building of LDAP infrastructure 227MKLDAP If "no", disables building of LDAP infrastructure
228 (libraries and support programs). 228 (libraries and support programs).
229 Default: yes 229 Default: yes
230 230
231MKLINKLIB If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no". 231MKLINKLIB If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
232 Also: 232 Also:
233 - don't install the .a libraries 233 - don't install the .a libraries
234 - don't install _pic.a libraries on PIC systems 234 - don't install _pic.a libraries on PIC systems
235 - don't build .a libraries on PIC systems 235 - don't build .a libraries on PIC systems
236 - don't install the .so symlink on ELF systems 236 - don't install the .so symlink on ELF systems
237 I.e, only install the shared library (and the .so.major 237 I.e, only install the shared library (and the .so.major
238 symlink on ELF). 238 symlink on ELF).
239 Default: yes 239 Default: yes
240 240
241MKLINT If "no", don't build or install the lint libraries. 241MKLINT If "no", don't build or install the lint libraries.
242 Default: yes 242 Default: yes
243 243
244MKLVM If "no", don't build or install the logical volume manager 244MKLVM If "no", don't build or install the logical volume manager
245 and device mapper tools and libraries 245 and device mapper tools and libraries
246 Default: yes 246 Default: yes
247 247
248MKMAN If "no", don't build or install the man or catman pages, 248MKMAN If "no", don't build or install the man or catman pages,
249 and also acts as "MKCATPAGES=no MKHTML=no". 249 and also acts as "MKCATPAGES=no MKHTML=no".
250 Default: yes 250 Default: yes
251 251
252MKMANDOC If "yes", mandoc is built as tool and used to compile 252MKMANDOC If "yes", mandoc is built as tool and used to compile
253 catman or html pages. A directory can be exempted by 253 catman or html pages. A directory can be exempted by
254 defining NOMANDOC. Individual man pages are exempted 254 defining NOMANDOC. Individual man pages are exempted
255 if NOMANDOC.${target} is set to "yes". 255 if NOMANDOC.${target} is set to "yes".
256 Default: no 256 Default: no
257 257
258MKMANZ If not "no", compress manual pages at installation time. 258MKMANZ If not "no", compress manual pages at installation time.
259 Default: no 259 Default: no
260 260
261MKMDNS If "no", disables building of mDNS infrastructure 261MKMDNS If "no", disables building of mDNS infrastructure
262 (libraries and support programs). 262 (libraries and support programs).
263 Default: yes 263 Default: yes
264 264
265MKNLS If "no", don't build or install the NLS files and locale 265MKNLS If "no", don't build or install the NLS files and locale
266 definition files. 266 definition files.
267 Default: yes 267 Default: yes
268 268
269MKNPF If "no", don't build or install the NPF and its modules. 269MKNPF If "no", don't build or install the NPF and its modules.
270 Default: yes 270 Default: yes
271 271
272MKOBJ If "no", don't enable the rule which creates objdirs, 272MKOBJ If "no", don't enable the rule which creates objdirs,
273 and also acts as "MKOBJDIRS=no". 273 and also acts as "MKOBJDIRS=no".
274 Default: yes 274 Default: yes
275 275
276MKOBJDIRS If "no", don't create objdirs during a "make build". 276MKOBJDIRS If "no", don't create objdirs during a "make build".
277 Default: no 277 Default: no
278 278
279MKPAM If "no", disables building of PAM authentication 279MKPAM If "no", disables building of PAM authentication
280 infrastructure (libraries and support programs). 280 infrastructure (libraries and support programs).
281 Default: yes 281 Default: yes
282 282
283MKPCC If "no", don't build pcc(1) or any of the PCC-related 283MKPCC If "no", don't build pcc(1) or any of the PCC-related
284 libraries (libpcc, libpccsoftfloat). 284 libraries (libpcc, libpccsoftfloat).
285 Default: no 285 Default: no
286 286
287MKPF If "no", don't build or install the pf programs and LKM. 287MKPF If "no", don't build or install the pf programs and LKM.
288 Default: yes 288 Default: yes
289 289
290MKPIC If "no", don't build or install shared libraries, and 290MKPIC If "no", don't build or install shared libraries, and
291 also acts as "MKPICLIB=no" 291 also acts as "MKPICLIB=no"
292 Default: yes (for MACHINE_ARCHs that support it)  292 Default: yes (for MACHINE_ARCHs that support it)
293 293
294MKPICINSTALL If "no", don't install the *_pic.a libraries. 294MKPICINSTALL If "no", don't install the *_pic.a libraries.
295 Default: yes 295 Default: yes
296 296
297MKPICLIB If "no", don't build *_pic.a libraries, and build the 297MKPICLIB If "no", don't build *_pic.a libraries, and build the
298 shared object libraries from the .a libraries. 298 shared object libraries from the .a libraries.
299 A symlink is installed in ${DESTDIR}/usr/lib for the 299 A symlink is installed in ${DESTDIR}/usr/lib for the
300 _pic.a library pointing to the .a library. 300 _pic.a library pointing to the .a library.
301 Default: yes 301 Default: yes
302 302
303MKPIE If "no", create regular executables. Otherwise create 303MKPIE If "no", create regular executables. Otherwise create
304 PIE (Position Independent Executables). 304 PIE (Position Independent Executables).
305 Default: no 305 Default: no
306 306
307MKPIGZGZIP If "no", only install pigz as pigz, not gzip. 307MKPIGZGZIP If "no", only install pigz as pigz, not gzip.
308 Default: no 308 Default: no
309 309
310MKPOSTFIX If "no", don't build or install postfix(1). 310MKPOSTFIX If "no", don't build or install postfix(1).
311 Default: yes 311 Default: yes
312 312
313MKPROFILE If "no", don't build or install the profiling (*_p.a) libraries. 313MKPROFILE If "no", don't build or install the profiling (*_p.a) libraries.
314 Default: yes 314 Default: yes
315 315
316MKSHARE If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no 316MKSHARE If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
317 MKMAN=no MKNLS=no". 317 MKMAN=no MKNLS=no".
318 I.e, don't build catman pages, documentation, Info 318 I.e, don't build catman pages, documentation, Info
319 documentation, man pages, NLS files, ... 319 documentation, man pages, NLS files, ...
320 Default: yes 320 Default: yes
321 321
322MKSKEY If "no", disables building of S/key authentication 322MKSKEY If "no", disables building of S/key authentication
323 infrastructure (libraries and support programs). 323 infrastructure (libraries and support programs).
324 Default: yes 324 Default: yes
325 325
326MKSOFTFLOAT If not "no", build with options to enable the compiler to 326MKSOFTFLOAT If not "no", build with options to enable the compiler to
327 generate output containing library calls for floating 327 generate output containing library calls for floating
328 point and possibly soft-float library support. 328 point and possibly soft-float library support.
329 Default: no 329 Default: no
330 330
331MKSTATICLIB If "no", don't build or install the normal static (*.a) 331MKSTATICLIB If "no", don't build or install the normal static (*.a)
332 libraries. 332 libraries.
333 Default: yes 333 Default: yes
334 334
335MKUNPRIVED If not "no", don't set the owner/group/mode when installing 335MKUNPRIVED If not "no", don't set the owner/group/mode when installing
336 files or directories, and keep a metadata log of what 336 files or directories, and keep a metadata log of what
337 the owner/group/mode should be. This allows a 337 the owner/group/mode should be. This allows a
338 non-root "make install". 338 non-root "make install".
339 Default: no 339 Default: no
340 340
341MKUPDATE If not "no", 'make install' only installs targets that are 341MKUPDATE If not "no", 'make install' only installs targets that are
342 more recently modified in the source directories that their 342 more recently modified in the source directories that their
343 installed counterparts. 343 installed counterparts.
344 Default: no 344 Default: no
345 345
346MKX11 If not "no", depending on the value of ${X11FLAVOUR}, 346MKX11 If not "no", depending on the value of ${X11FLAVOUR},
347 'make build' also descends into either src/x11 (XFree86) or 347 'make build' also descends into either src/x11 (XFree86) or
348 src/external/mit/xorg (modular Xorg) to cross-build X11 and 348 src/external/mit/xorg (modular Xorg) to cross-build X11 and
349 automatically enables creation of X sets. 349 automatically enables creation of X sets.
350 Default: no 350 Default: no
351 351
352MKX11FONTS If not "no", if ${X11FLAVOUR} is "Xorg", do not build or 352MKX11FONTS If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
353 install the X fonts. The xfont set is still created but 353 install the X fonts. The xfont set is still created but
354 will be empty. 354 will be empty.
355 Default: yes 355 Default: yes
356 356
357MKYP If "no", disables building of YP (NIS) 357MKYP If "no", disables building of YP (NIS)
358 infrastructure (libraries and support programs). 358 infrastructure (libraries and support programs).
359 Default: yes 359 Default: yes
360 360
361MKZFS If "no", do not build and install utilities and libraries  361MKZFS If "no", do not build and install utilities and libraries
362 used to manage ZFS file system. Do not build zfs and solaris  362 used to manage ZFS file system. Do not build zfs and solaris
363 compatibility kernel modules. 363 compatibility kernel modules.
364 Default: yes on i386/amd64, no elsewhere. 364 Default: yes on i386/amd64, no elsewhere.
365 365
366USE_HESIOD If "no", disables building Hesiod support into 366USE_HESIOD If "no", disables building Hesiod support into
367 various system utilities/libraries that support it. 367 various system utilities/libraries that support it.
368 If ${MKHESIOD} is "no", USE_HESIOD will also be 368 If ${MKHESIOD} is "no", USE_HESIOD will also be
369 forced to "no". 369 forced to "no".
370 370
371USE_INET6 If "no", disables building INET6 (IPv6) support into 371USE_INET6 If "no", disables building INET6 (IPv6) support into
372 various system utilities/libraries that support it. 372 various system utilities/libraries that support it.
373 If ${MKINET6} is "no", USE_INET6 will also be 373 If ${MKINET6} is "no", USE_INET6 will also be
374 forced to "no". 374 forced to "no".
375 375
376USE_JEMALLOC If "no", disables building the "jemalloc" allocator 376USE_JEMALLOC If "no", disables building the "jemalloc" allocator
377 designed for improved performance with threaded 377 designed for improved performance with threaded
378 applications. The "phkmalloc" allocator as used up 378 applications. The "phkmalloc" allocator as used up
379 before NetBSD-5.0 will be substituted. 379 before NetBSD-5.0 will be substituted.
380 380
381USE_KERBEROS If "no", disables building Kerberos v5 381USE_KERBEROS If "no", disables building Kerberos v5
382 support into various system utilities/libraries that 382 support into various system utilities/libraries that
383 support it. If ${MKKERBEROS} is "no", USE_KERBEROS 383 support it. If ${MKKERBEROS} is "no", USE_KERBEROS
384 will also be forced to "no". 384 will also be forced to "no".
385 385
386USE_LDAP If "no", disables building LDAP support into various 386USE_LDAP If "no", disables building LDAP support into various
387 system utilities/libraries that support it. 387 system utilities/libraries that support it.
388 If ${MKLDAP} is "no", USE_LDAP will also be forced to "no". 388 If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
389 389
390USE_PAM If "no", disables building PAM authentication support 390USE_PAM If "no", disables building PAM authentication support
391 into various system utilities/libraries that support it. 391 into various system utilities/libraries that support it.
392 If ${MKPAM} is "no", USE_PAM will also be forced to "no". 392 If ${MKPAM} is "no", USE_PAM will also be forced to "no".
393 393
394USE_SKEY If "no", disables building S/key authentication 394USE_SKEY If "no", disables building S/key authentication
395 support into various system utilities/libraries that 395 support into various system utilities/libraries that
396 support it. If ${MKSKEY} is "no", USE_SKEY will 396 support it. If ${MKSKEY} is "no", USE_SKEY will
397 also be forced to "no". 397 also be forced to "no".
398 Default: no 398 Default: no
399 399
400USE_SSP If "no", disables GCC stack protection code, which 400USE_SSP If "no", disables GCC stack protection code, which
401 detects stack overflows and aborts the program. The 401 detects stack overflows and aborts the program. The
402 stack protection code imposes a performance penalty 402 stack protection code imposes a performance penalty
403 of about 5%. 403 of about 5%.
404 Default: "no", unless "USE_FORT" is set to "yes" 404 Default: "no", unless "USE_FORT" is set to "yes"
405 405
406USE_FORT If "yes" turns on substitute wrappers for commonly used 406USE_FORT If "yes" turns on substitute wrappers for commonly used
407 functions that do not do bounds checking regularly, but 407 functions that do not do bounds checking regularly, but
408 they could in some cases by using the gcc 408 they could in some cases by using the gcc
409 __builtin_object_size() function to determine the buffer  409 __builtin_object_size() function to determine the buffer
410 size where it is known and detect buffer overflows. 410 size where it is known and detect buffer overflows.
411 These substitute functions are in /usr/include/ssp. 411 These substitute functions are in /usr/include/ssp.
412 Default: depends on the part of the source tree 412 Default: depends on the part of the source tree
413 413
414USE_YP If "no", disables building YP (NIS) support into 414USE_YP If "no", disables building YP (NIS) support into
415 various system utilities/libraries that support it. 415 various system utilities/libraries that support it.
416 If ${MKYP} is "no", USE_YP will also be forced to "no". 416 If ${MKYP} is "no", USE_YP will also be forced to "no".
417 417
418USE_PIGZGZIP If "no", use the host "gzip" program to compress things. 418USE_PIGZGZIP If "no", use the host "gzip" program to compress things.
419 Otherwise, build tools/pigz and use nbpigz to compress 419 Otherwise, build tools/pigz and use nbpigz to compress
420 things. 420 things.
421 Default: "no". 421 Default: "no".
422 422
423X11FLAVOUR Set to "Xorg" or "XFree86", depending on whether to build 423X11FLAVOUR Set to "Xorg" or "XFree86", depending on whether to build
424 XFree86 or modular Xorg. Only matters if MKX11!=no. 424 XFree86 or modular Xorg. Only matters if MKX11!=no.
425 Default: "Xorg" on amd64, i386, macppc, shark and sparc64, 425 Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
426 "XFree86" on everything else. 426 "XFree86" on everything else.
427 427
428COPTS.lib<lib> 428COPTS.lib<lib>
429OBJCOPTS.lib<lib> 429OBJCOPTS.lib<lib>
430LDADD.lib<lib> 430LDADD.lib<lib>
431CPPFLAGS.lib<lib> 431CPPFLAGS.lib<lib>
432CXXFLAGS.lib<lib> 432CXXFLAGS.lib<lib>
433COPTS.<prog> 433COPTS.<prog>
434OBJCCOPTS.<prog> 434OBJCCOPTS.<prog>
435LDADD.<prog> 435LDADD.<prog>
436CPPFLAGS.<prog> 436CPPFLAGS.<prog>
437CXXFLAGS.<prog> These provide a way to specify additions to the associated 437CXXFLAGS.<prog> These provide a way to specify additions to the associated
438 variables in a way that applies only to a particular library 438 variables in a way that applies only to a particular library
439 or program. <lib> corresponds to the LIB variable set in 439 or program. <lib> corresponds to the LIB variable set in
440 the library's makefile. <prog> corresponds to either PROG 440 the library's makefile. <prog> corresponds to either PROG
441 or PROG_CXX (if set). For example, if COPTS.libcrypto is 441 or PROG_CXX (if set). For example, if COPTS.libcrypto is
442 set to "-g", "-g" will be added to COPTS only when compiling 442 set to "-g", "-g" will be added to COPTS only when compiling
443 the crypto library. 443 the crypto library.
444 444
445The active compiler is selected using the following variables: 445The active compiler is selected using the following variables:
446AVAILABLE_COMPILER 446AVAILABLE_COMPILER
447 List of available compiler suites. Processed in order 447 List of available compiler suites. Processed in order
448 for selecting the active compiler for each frontend. 448 for selecting the active compiler for each frontend.
449HAVE_PCC If defined, PCC is present and enabled. 449HAVE_PCC If defined, PCC is present and enabled.
450HAVE_LLVM If defined, LLVM/Clang is present and enabled. 450HAVE_LLVM If defined, LLVM/Clang is present and enabled.
451UNSUPPORTED_COMPILER.xxx 451UNSUPPORTED_COMPILER.xxx
452 If defined, the support for compiler "xxx" is disabled. 452 If defined, the support for compiler "xxx" is disabled.
453 453
454For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist: 454For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
455ACTIVE_CC Active compile suite for the CC frontend. 455ACTIVE_CC Active compile suite for the CC frontend.
456SUPPORTED_CC Compile suite with support for the CC frontend. 456SUPPORTED_CC Compile suite with support for the CC frontend.
457TOOL_CC.xxx Path to the CC frontend for compiler "xxx" 457TOOL_CC.xxx Path to the CC frontend for compiler "xxx"
458 458
459=-=-=-=-= sys.mk =-=-=-=-= 459=-=-=-=-= sys.mk =-=-=-=-=
460 460
461The include file <sys.mk> has the default rules for all makes, in the BSD 461The include file <sys.mk> has the default rules for all makes, in the BSD
462environment or otherwise. You probably don't want to touch this file. 462environment or otherwise. You probably don't want to touch this file.
463 463
464=-=-=-=-= bsd.own.mk =-=-=-=-= 464=-=-=-=-= bsd.own.mk =-=-=-=-=
465 465
466The include file <bsd.own.mk> contains source tree configuration parameters, 466The include file <bsd.own.mk> contains source tree configuration parameters,
467such as the owners, groups, etc. for both manual pages and binaries, and 467such as the owners, groups, etc. for both manual pages and binaries, and
468a few global "feature configuration" parameters. 468a few global "feature configuration" parameters.
469 469
470It has no targets. 470It has no targets.
471 471
472To get system-specific configuration parameters, <bsd.own.mk> will try to 472To get system-specific configuration parameters, <bsd.own.mk> will try to
473include the file specified by the "MAKECONF" variable. If MAKECONF is not 473include the file specified by the "MAKECONF" variable. If MAKECONF is not
474set, or no such file exists, the system make configuration file, /etc/mk.conf 474set, or no such file exists, the system make configuration file, /etc/mk.conf
475is included. These files may define any of the variables described below. 475is included. These files may define any of the variables described below.
476 476
477<bsd.own.mk> sets the following variables, if they are not already defined 477<bsd.own.mk> sets the following variables, if they are not already defined
478(defaults are in brackets): 478(defaults are in brackets):
479 479
480NETBSDSRCDIR Top of the NetBSD source tree. 480NETBSDSRCDIR Top of the NetBSD source tree.
481 If _SRC_TOP_ != "", that will be used as the default, 481 If _SRC_TOP_ != "", that will be used as the default,
482 otherwise BSDSRCDIR will be used as the default. 482 otherwise BSDSRCDIR will be used as the default.
483 Various makefiles within the NetBSD source tree will 483 Various makefiles within the NetBSD source tree will
484 use this to reference the top level of the source tree. 484 use this to reference the top level of the source tree.
485 485
486_SRC_TOP_ Top of the system source tree, as determined by <bsd.own.mk> 486_SRC_TOP_ Top of the system source tree, as determined by <bsd.own.mk>
487 based on the presence of tools/ and build.sh. This variable 487 based on the presence of tools/ and build.sh. This variable
488 is "internal" to <bsd.own.mk>, although its value is only 488 is "internal" to <bsd.own.mk>, although its value is only
489 determined once and then propagated to all sub-makes. 489 determined once and then propagated to all sub-makes.
490 490
491BSDSRCDIR The real path to the system sources, so that 'make obj' 491BSDSRCDIR The real path to the system sources, so that 'make obj'
492 will work correctly. [/usr/src] 492 will work correctly. [/usr/src]
493 493
494BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj' 494BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj'
495 will work correctly. [/usr/obj] 495 will work correctly. [/usr/obj]
496 496
497BINGRP Binary group. [wheel] 497BINGRP Binary group. [wheel]
498 498
499BINOWN Binary owner. [root] 499BINOWN Binary owner. [root]
500 500
501BINMODE Binary mode. [555] 501BINMODE Binary mode. [555]
502 502
503NONBINMODE Mode for non-executable files. [444] 503NONBINMODE Mode for non-executable files. [444]
504 504
505MANDIR Base path for manual installation. [/usr/share/man/cat] 505MANDIR Base path for manual installation. [/usr/share/man/cat]
506 506
507MANGRP Manual group. [wheel] 507MANGRP Manual group. [wheel]
508 508
509MANOWN Manual owner. [root] 509MANOWN Manual owner. [root]
510 510
511MANMODE Manual mode. [${NONBINMODE}] 511MANMODE Manual mode. [${NONBINMODE}]
512 512
513MANINSTALL Manual installation type. Space separated list: 513MANINSTALL Manual installation type. Space separated list:
514 catinstall, htmlinstall, maninstall 514 catinstall, htmlinstall, maninstall
515 [catinstall maninstall htmlinstall] 515 [catinstall maninstall htmlinstall]
516 516
517LDSTATIC Control program linking; if set blank, link everything 517LDSTATIC Control program linking; if set blank, link everything
518 dynamically. If set to "-static", link everything statically. 518 dynamically. If set to "-static", link everything statically.
519 If not set, programs link according to their makefile. 519 If not set, programs link according to their makefile.
520 520
521LIBDIR Base path for library installation. [/usr/lib] 521LIBDIR Base path for library installation. [/usr/lib]
522 522
523LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint] 523LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint]
524 524
525LIBGRP Library group. [${BINGRP}] 525LIBGRP Library group. [${BINGRP}]
526 526
527LIBOWN Library owner. [${BINOWN}] 527LIBOWN Library owner. [${BINOWN}]
528 528
529LIBMODE Library mode. [${NONBINMODE}] 529LIBMODE Library mode. [${NONBINMODE}]
530 530
531DOCDIR Base path for system documentation (e.g. PSD, USD, etc.) 531DOCDIR Base path for system documentation (e.g. PSD, USD, etc.)
532 installation. [/usr/share/doc] 532 installation. [/usr/share/doc]
533 533
534HTMLDOCDIR Base path for html system documentation installation. 534HTMLDOCDIR Base path for html system documentation installation.
535 [/usr/share/doc/html] 535 [/usr/share/doc/html]
536 536
537DOCGRP Documentation group. [wheel] 537DOCGRP Documentation group. [wheel]
538 538
539DOCOWN Documentation owner. [root] 539DOCOWN Documentation owner. [root]
540 540
541DOCMODE Documentation mode. [${NONBINMODE}] 541DOCMODE Documentation mode. [${NONBINMODE}]
542 542
543NLSDIR Base path for Native Language Support files installation. 543NLSDIR Base path for Native Language Support files installation.
544 [/usr/share/nls] 544 [/usr/share/nls]
545 545
546NLSGRP Native Language Support files group. [wheel] 546NLSGRP Native Language Support files group. [wheel]
547 547
548NLSOWN Native Language Support files owner. [root] 548NLSOWN Native Language Support files owner. [root]
549 549
550NLSMODE Native Language Support files mode. [${NONBINMODE}] 550NLSMODE Native Language Support files mode. [${NONBINMODE}]
551 551
552X11SRCDIR The path to the xsrc tree. [${NETBSDSRCDIR}/../xsrc, 552X11SRCDIR The path to the xsrc tree. [${NETBSDSRCDIR}/../xsrc,
553 if that exists; otherwise /usr/xsrc] 553 if that exists; otherwise /usr/xsrc]
554 554
555X11SRCDIR.xc The path to the (old) X11 xc src tree. [${X11SRCDIR}/xfree/xc] 555X11SRCDIR.xc The path to the (old) X11 xc src tree. [${X11SRCDIR}/xfree/xc]
556 556
557X11SRCDIR.local The path to the local X11 src tree. [${X11SRCDIR}/local] 557X11SRCDIR.local The path to the local X11 src tree. [${X11SRCDIR}/local]
558 558
559X11SRCDIR.lib<package> 559X11SRCDIR.lib<package>
560X11SRCDIR.<package> 560X11SRCDIR.<package>
561 The path to the xorg src tree for the specificed package>. 561 The path to the xorg src tree for the specificed package>.
562 [${X11SRCDIR}/external/mit/xorg/<package>/dist] 562 [${X11SRCDIR}/external/mit/xorg/<package>/dist]
563 563
564X11ROOTDIR Root directory of the X11 installation. [/usr/X11R6 or 564X11ROOTDIR Root directory of the X11 installation. [/usr/X11R6 or
565 [/usr/X11R7] 565 [/usr/X11R7]
566 566
567X11BINDIR X11 bin directory. [${X11ROOTDIR}/bin] 567X11BINDIR X11 bin directory. [${X11ROOTDIR}/bin]
568 568
569X11FONTDIR X11 font directory. [${X11ROOTDIR}/lib/X11/fonts] 569X11FONTDIR X11 font directory. [${X11ROOTDIR}/lib/X11/fonts]
570 570
571X11INCDIR X11 include directory. [${X11ROOTDIR}/include] 571X11INCDIR X11 include directory. [${X11ROOTDIR}/include]
572 572
573X11LIBDIR X11 lib/x11 (config) directory. [${X11ROOTDIR}/lib/X11] 573X11LIBDIR X11 lib/x11 (config) directory. [${X11ROOTDIR}/lib/X11]
574 574
575X11MANDIR X11 manual directory. [${X11ROOTDIR}/man] 575X11MANDIR X11 manual directory. [${X11ROOTDIR}/man]
576 576
577X11USRLIBDIR X11 library directory. [${X11ROOTDIR}/lib] 577X11USRLIBDIR X11 library directory. [${X11ROOTDIR}/lib]
578 578
579STRIPFLAG The flag passed to the install program to cause the binary 579STRIPFLAG The flag passed to the install program to cause the binary
580 to be stripped. This is to be used when building your 580 to be stripped. This is to be used when building your
581 own install script so that the entire system can be made 581 own install script so that the entire system can be made
582 stripped/not-stripped using a single knob. [] 582 stripped/not-stripped using a single knob. []
583 583
584COPY The flag passed to the install program to cause the binary 584COPY The flag passed to the install program to cause the binary
585 to be copied rather than moved. This is to be used when 585 to be copied rather than moved. This is to be used when
586 building our own install script so that the entire system 586 building our own install script so that the entire system
587 can either be installed with copies, or with moves using 587 can either be installed with copies, or with moves using
588 a single knob. [-c] 588 a single knob. [-c]
589 589
590MAKEDIRTARGET dir target [params] 590MAKEDIRTARGET dir target [params]
591 Runs "cd $${dir} && ${MAKE} [params] $${target}", 591 Runs "cd $${dir} && ${MAKE} [params] $${target}",
592 displaying a "pretty" message whilst doing so. 592 displaying a "pretty" message whilst doing so.
593 593
594RELEASEMACHINEDIR 594RELEASEMACHINEDIR
595 Subdirectory used below RELEASEDIR when building 595 Subdirectory used below RELEASEDIR when building
596 a release. [${MACHINE}] 596 a release. [${MACHINE}]
597 597
598RELEASEMACHINE Subdirectory or path component used for the following 598RELEASEMACHINE Subdirectory or path component used for the following
599 paths: 599 paths:
600 distrib/${RELEASEMACHINE} 600 distrib/${RELEASEMACHINE}
601 distrib/notes/${RELEASEMACHINE} 601 distrib/notes/${RELEASEMACHINE}
602 etc/etc.${RELEASEMACHINE} 602 etc/etc.${RELEASEMACHINE}
603 Used when building a release. [${MACHINE}] 603 Used when building a release. [${MACHINE}]
604 604
605Additionally, the following variables may be set by <bsd.own.mk> or in a 605Additionally, the following variables may be set by <bsd.own.mk> or in a
606make configuration file to modify the behavior of the system build 606make configuration file to modify the behavior of the system build
607process (default values are in brackets along with comments, if set by 607process (default values are in brackets along with comments, if set by
608<bsd.own.mk>): 608<bsd.own.mk>):
609 609
610USETOOLS Indicates whether the tools specified by ${TOOLDIR} should 610USETOOLS Indicates whether the tools specified by ${TOOLDIR} should
611 be used as part of a build in progress. 611 be used as part of a build in progress.
612 Supported values: 612 Supported values:
613 613
614 yes Use the tools from TOOLDIR. 614 yes Use the tools from TOOLDIR.
615 Must be set to this if cross-compiling. 615 Must be set to this if cross-compiling.
616 616
617 no Do not use the tools from TOOLDIR, but refuse to 617 no Do not use the tools from TOOLDIR, but refuse to
618 build native compilation tool components that are 618 build native compilation tool components that are
619 version-specific for that tool. 619 version-specific for that tool.
620 620
621 never Do not use the tools from TOOLDIR, even when 621 never Do not use the tools from TOOLDIR, even when
622 building native tool components. This is similar to 622 building native tool components. This is similar to
623 the traditional NetBSD build method, but does not 623 the traditional NetBSD build method, but does not
624 verify that the compilation tools in use are 624 verify that the compilation tools in use are
625 up-to-date enough in order to build the tree 625 up-to-date enough in order to build the tree
626 successfully. This may cause build or runtime 626 successfully. This may cause build or runtime
627 problems when building the whole NetBSD source tree. 627 problems when building the whole NetBSD source tree.
628 628
629 Default: "yes" if building all or part of a whole NetBSD 629 Default: "yes" if building all or part of a whole NetBSD
630 source tree (detected automatically); "no" otherwise 630 source tree (detected automatically); "no" otherwise
631 (to preserve traditional semantics of the <bsd.*.mk> 631 (to preserve traditional semantics of the <bsd.*.mk>
632 make(1) include files). 632 make(1) include files).
633 633
634OBJECT_FMT Object file format. [set to "ELF" on architectures that 634OBJECT_FMT Object file format. [set to "ELF" on architectures that
635 use ELF -- currently all architectures]. 635 use ELF -- currently all architectures].
636 636
637TOOLCHAIN_MISSING 637TOOLCHAIN_MISSING
638 If not "no", this indicates that the platform being built 638 If not "no", this indicates that the platform being built
639 does not have a working in-tree toolchain. If the 639 does not have a working in-tree toolchain. If the
640 ${MACHINE_ARCH} in question falls into this category, 640 ${MACHINE_ARCH} in question falls into this category,
641 TOOLCHAIN_MISSING is conditionally assigned the value "yes".  641 TOOLCHAIN_MISSING is conditionally assigned the value "yes".
642 Otherwise, the variable is unconditionally assigned the 642 Otherwise, the variable is unconditionally assigned the
643 value "no". 643 value "no".
644 If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are 644 If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
645 unconditionally assigned the value "no". 645 unconditionally assigned the value "no".
646 646
647EXTERNAL_TOOLCHAIN 647EXTERNAL_TOOLCHAIN
648 This variable is not directly set by <bsd.own.mk>, but 648 This variable is not directly set by <bsd.own.mk>, but
649 including <bsd.own.mk> is the canonical way to gain 649 including <bsd.own.mk> is the canonical way to gain
650 access to this variable. The variable should be defined 650 access to this variable. The variable should be defined
651 either in the user's environment or in the user's mk.conf 651 either in the user's environment or in the user's mk.conf
652 file. If defined, this variable indicates the root of 652 file. If defined, this variable indicates the root of
653 an external toolchain which will be used to build the 653 an external toolchain which will be used to build the
654 tree. For example, if a platform is a ${TOOLCHAIN_MISSING} 654 tree. For example, if a platform is a ${TOOLCHAIN_MISSING}
655 platform, EXTERNAL_TOOLCHAIN can be used to re-enable the 655 platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
656 cross-compile framework. 656 cross-compile framework.
657 657
658 If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally 658 If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
659 assigned the value "no", since the external version of the 659 assigned the value "no", since the external version of the
660 compiler may not be able to build the library components of 660 compiler may not be able to build the library components of
661 the in-tree compiler. 661 the in-tree compiler.
662 662
663 NOTE: This variable is not yet used in as many places as 663 NOTE: This variable is not yet used in as many places as
664 it should be. Expect the exact semantics of this variable 664 it should be. Expect the exact semantics of this variable
665 to change in the short term as parts of the cross-compile 665 to change in the short term as parts of the cross-compile
666 framework continue to be cleaned up. 666 framework continue to be cleaned up.
667 667
668The following variables are defined to commands to perform the 668The following variables are defined to commands to perform the
669appropriate operation, with the default in [brackets]. Note that 669appropriate operation, with the default in [brackets]. Note that
670the defaults change if USETOOLS == "yes": 670the defaults change if USETOOLS == "yes":
671 671
672TOOL_AMIGAAOUT2BB aout to Amiga bootblock converter. [amiga-aout2bb] 672TOOL_AMIGAAOUT2BB aout to Amiga bootblock converter. [amiga-aout2bb]
673 673
674TOOL_AMIGAELF2BB ELF to Amiga bootblock converter. [amiga-elf2bb] 674TOOL_AMIGAELF2BB ELF to Amiga bootblock converter. [amiga-elf2bb]
675 675
676TOOL_AMIGATXLT Amige assembly language format translator. [amiga-txlt] 676TOOL_AMIGATXLT Amige assembly language format translator. [amiga-txlt]
677 677
678TOOL_ASN1_COMPILE ASN1 compiler. [asn1_compile] 678TOOL_ASN1_COMPILE ASN1 compiler. [asn1_compile]
679 679
680TOOL_AWK Pattern-directed scanning/processing language. [awk] 680TOOL_AWK Pattern-directed scanning/processing language. [awk]
681 681
682TOOL_CAP_MKDB Create capability database. [cap_mkdb] 682TOOL_CAP_MKDB Create capability database. [cap_mkdb]
683 683
684TOOL_CAT Concatenate and print files. [cat] 684TOOL_CAT Concatenate and print files. [cat]
685 685
686TOOL_CKSUM Display file checksums. [cksum] 686TOOL_CKSUM Display file checksums. [cksum]
687 687
688TOOL_COMPILE_ET Error table compiler. [compile_et] 688TOOL_COMPILE_ET Error table compiler. [compile_et]
689 689
690TOOL_CONFIG Build kernel compilation directories. [config] 690TOOL_CONFIG Build kernel compilation directories. [config]
691 691
692TOOL_CRUNCHGEN Generate crunched binary build environment. [crunchgen] 692TOOL_CRUNCHGEN Generate crunched binary build environment. [crunchgen]
693 693
694TOOL_CTAGS Create a tags file. [ctags] 694TOOL_CTAGS Create a tags file. [ctags]
695 695
696TOOL_DB Manipulate db(3) databases. [db] 696TOOL_DB Manipulate db(3) databases. [db]
697 697
698TOOL_DISKLABEL Read and write disk pack label. [disklabel] 698TOOL_DISKLABEL Read and write disk pack label. [disklabel]
699 699
700TOOL_EQN Format equations for groff. [eqn] 700TOOL_EQN Format equations for groff. [eqn]
701 701
702TOOL_FDISK MS-DOS partition maintenance program. [fdisk] 702TOOL_FDISK MS-DOS partition maintenance program. [fdisk]
703 703
704TOOL_FGEN IEEE 1275 Open Firmware FCode Tokenizer. [fgen] 704TOOL_FGEN IEEE 1275 Open Firmware FCode Tokenizer. [fgen]
705 705
706TOOL_GENASSYM Generate constants for assembly files. [genassym] 706TOOL_GENASSYM Generate constants for assembly files. [genassym]
707 707
708TOOL_GENCAT Generate NLS message catalogs. [gencat] 708TOOL_GENCAT Generate NLS message catalogs. [gencat]
709 709
710TOOL_GMAKE GNU make utility. [gmake] 710TOOL_GMAKE GNU make utility. [gmake]
711 711
712TOOL_GREP Print lines matching a pattern. [grep] 712TOOL_GREP Print lines matching a pattern. [grep]
713 713
714TOOL_GROFF Front end for groff document formatting system. [groff] 714TOOL_GROFF Front end for groff document formatting system. [groff]
715 715
716TOOL_HEXDUMP Ascii, decimal, hexadecimal, octal dump. [hexdump] 716TOOL_HEXDUMP Ascii, decimal, hexadecimal, octal dump. [hexdump]
717 717
718TOOL_HP300MKBOOT Make bootable image for hp300. [hp300-mkboot] 718TOOL_HP300MKBOOT Make bootable image for hp300. [hp300-mkboot]
719 719
720TOOL_HP700MKBOOT Make bootable image for hp700. [hp700-mkboot] 720TOOL_HP700MKBOOT Make bootable image for hp700. [hp700-mkboot]
721 721
722TOOL_INDXBIB Make bibliographic database's inverted index. [indxbib] 722TOOL_INDXBIB Make bibliographic database's inverted index. [indxbib]
723 723
724TOOL_INSTALLBOOT Install disk bootstrap software. [installboot] 724TOOL_INSTALLBOOT Install disk bootstrap software. [installboot]
725 725
726TOOL_INSTALL_INFO Update info/dir entries. [install-info] 726TOOL_INSTALL_INFO Update info/dir entries. [install-info]
727 727
728TOOL_JOIN Relational database operator. [join] 728TOOL_JOIN Relational database operator. [join]
729 729
730TOOL_M4 M4 macro language processor. [m4] 730TOOL_M4 M4 macro language processor. [m4]
731 731
732TOOL_MACPPCFIXCOFF Fix up xcoff headers for macppc. [macppc-fixcoff] 732TOOL_MACPPCFIXCOFF Fix up xcoff headers for macppc. [macppc-fixcoff]
733 733
734TOOL_MAKEFS Create file system image from directory tree. [makefs] 734TOOL_MAKEFS Create file system image from directory tree. [makefs]
735 735
736TOOL_MAKEINFO Translate Texinfo documents. [makeinfo] 736TOOL_MAKEINFO Translate Texinfo documents. [makeinfo]
737 737
738TOOL_MAKEWHATIS Create a whatis.db database. [makewhatis] 738TOOL_MAKEWHATIS Create a whatis.db database. [makewhatis]
739 739
740TOOL_MDSETIMAGE Set kernel RAM disk image. [mdsetimage] 740TOOL_MDSETIMAGE Set kernel RAM disk image. [mdsetimage]
741 741
742TOOL_MENUC Menu compiler. [menuc] 742TOOL_MENUC Menu compiler. [menuc]
743 743
744TOOL_MIPSELF2ECOFF Convert ELF-format executable to ECOFF for mips. 744TOOL_MIPSELF2ECOFF Convert ELF-format executable to ECOFF for mips.
745 [mips-elf2ecoff] 745 [mips-elf2ecoff]
746 746
747TOOL_MKCSMAPPER Make charset mapping table. [mkcsmapper] 747TOOL_MKCSMAPPER Make charset mapping table. [mkcsmapper]
748 748
749TOOL_MKESDB Make encoding scheme database. [mkesdb] 749TOOL_MKESDB Make encoding scheme database. [mkesdb]
750 750
751TOOL_MKLOCALE Make LC_CTYPE locale files. [mklocale] 751TOOL_MKLOCALE Make LC_CTYPE locale files. [mklocale]
752 752
753TOOL_MKMAGIC Create database for file(1). [file] 753TOOL_MKMAGIC Create database for file(1). [file]
754 754
755TOOL_MKTEMP Make (unique) temporary file name. [mktemp] 755TOOL_MKTEMP Make (unique) temporary file name. [mktemp]
756 756
757TOOL_MSGC Simple message list compiler. [msgc] 757TOOL_MSGC Simple message list compiler. [msgc]
758 758
759TOOL_MTREE Map a directory hierarchy. [mtree] 759TOOL_MTREE Map a directory hierarchy. [mtree]
760 760
761TOOL_PAX Manipulate file archives and copy directories. [pax] 761TOOL_PAX Manipulate file archives and copy directories. [pax]
762 762
763TOOL_PIC Compile pictures for groff. [pic] 763TOOL_PIC Compile pictures for groff. [pic]
764 764
765TOOL_PIGZ Parallel compressor. [pigz] 765TOOL_PIGZ Parallel compressor. [pigz]
766 766
767TOOL_POWERPCMKBOOTIMAGE Make bootable image for powerpc. [powerpc-mkbootimage] 767TOOL_POWERPCMKBOOTIMAGE Make bootable image for powerpc. [powerpc-mkbootimage]
768 768
769TOOL_PWD_MKDB Generate the password databases. [pwd_mkdb] 769TOOL_PWD_MKDB Generate the password databases. [pwd_mkdb]
770 770
771TOOL_REFER Preprocess bibliographic references for groff. [refer] 771TOOL_REFER Preprocess bibliographic references for groff. [refer]
772 772
773TOOL_ROFF_ASCII Generate ASCII groff output. [nroff] 773TOOL_ROFF_ASCII Generate ASCII groff output. [nroff]
774 774
775TOOL_ROFF_DVI Generate DVI groff output. [${TOOL_GROFF} -Tdvi] 775TOOL_ROFF_DVI Generate DVI groff output. [${TOOL_GROFF} -Tdvi]
776 776
777TOOL_ROFF_HTML Generate HTML groff output. 777TOOL_ROFF_HTML Generate HTML groff output.
778 [${TOOL_GROFF} -Tlatin1 -mdoc2html] 778 [${TOOL_GROFF} -Tlatin1 -mdoc2html]
779 779
780TOOL_ROFF_PS Generate PS groff output. [${TOOL_GROFF} -Tps] 780TOOL_ROFF_PS Generate PS groff output. [${TOOL_GROFF} -Tps]
781 781
782TOOL_ROFF_RAW Generate "raw" groff output. [${TOOL_GROFF} -Z] 782TOOL_ROFF_RAW Generate "raw" groff output. [${TOOL_GROFF} -Z]
783 783
784TOOL_RPCGEN Remote Procedure Call (RPC) protocol compiler. [rpcgen] 784TOOL_RPCGEN Remote Procedure Call (RPC) protocol compiler. [rpcgen]
785 785
786TOOL_SED Stream editor. [sed] 786TOOL_SED Stream editor. [sed]
787 787
788TOOL_SOELIM Eliminate .so's from groff input. [soelim] 788TOOL_SOELIM Eliminate .so's from groff input. [soelim]
789 789
790TOOL_SPARKCRC Generate a crc suitable for use in a sparkive file. 790TOOL_SPARKCRC Generate a crc suitable for use in a sparkive file.
791 [sparkcrc] 791 [sparkcrc]
792 792
793TOOL_STAT Display file status. [stat] 793TOOL_STAT Display file status. [stat]
794 794
795TOOL_STRFILE Create a random access file for storing strings. 795TOOL_STRFILE Create a random access file for storing strings.
796 [strfile] 796 [strfile]
797 797
798TOOL_SUNLABEL Read or modify a SunOS disk label. [sunlabel] 798TOOL_SUNLABEL Read or modify a SunOS disk label. [sunlabel]
799 799
800TOOL_TBL Format tables for groff. [tbl] 800TOOL_TBL Format tables for groff. [tbl]
801 801
802TOOL_UUDECODE Uudecode a binary file. [uudecode] 802TOOL_UUDECODE Uudecode a binary file. [uudecode]
803 803
804TOOL_VGRIND Grind nice listings of programs. [vgrind -f] 804TOOL_VGRIND Grind nice listings of programs. [vgrind -f]
805 805
806TOOL_ZIC Time zone compiler. [zic] 806TOOL_ZIC Time zone compiler. [zic]
807 807
808<bsd.own.mk> is generally useful when building your own Makefiles so that 808<bsd.own.mk> is generally useful when building your own Makefiles so that
809they use the same default owners etc. as the rest of the tree. 809they use the same default owners etc. as the rest of the tree.
810 810
811 811
812=-=-=-=-= bsd.clean.mk =-=-=-=-= 812=-=-=-=-= bsd.clean.mk =-=-=-=-=
813 813
814The include file <bsd.clean.mk> defines the clean and cleandir 814The include file <bsd.clean.mk> defines the clean and cleandir
815targets. It uses the following variables: 815targets. It uses the following variables:
816 816
817CLEANFILES Files to remove for both the clean and cleandir targets. 817CLEANFILES Files to remove for both the clean and cleandir targets.
818 818
819CLEANDIRFILES Files to remove for the cleandir target, but not for 819CLEANDIRFILES Files to remove for the cleandir target, but not for
820 the clean target. 820 the clean target.
821 821
822MKCLEANSRC Controls whether or not the clean and cleandir targets 822MKCLEANSRC Controls whether or not the clean and cleandir targets
823 will delete files from both the object directory, 823 will delete files from both the object directory,
824 ${.OBJDIR}, and the source directory, ${.CURDIR}. 824 ${.OBJDIR}, and the source directory, ${.CURDIR}.
825 825
826 If MKCLEANSRC is set to "no", then the file names in 826 If MKCLEANSRC is set to "no", then the file names in
827 CLEANFILES or CLEANDIRFILES are interpreted relative 827 CLEANFILES or CLEANDIRFILES are interpreted relative
828 to the object directory, ${.OBJDIR}. This is the 828 to the object directory, ${.OBJDIR}. This is the
829 traditional behaviour. 829 traditional behaviour.
830 830
831 If MKCLEANSRC is set to "yes", then the file deletion 831 If MKCLEANSRC is set to "yes", then the file deletion
832 is performed relative to both the object directory, 832 is performed relative to both the object directory,
833 ${.OBJDIR}, and the source directory, ${.CURDIR}. (This 833 ${.OBJDIR}, and the source directory, ${.CURDIR}. (This
834 has no effect if ${.OBJDIR} is the same as ${.CURDIR}.) 834 has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
835 Deleting files from ${.CURDIR} is intended to remove 835 Deleting files from ${.CURDIR} is intended to remove
836 stray output files that had been left in the source 836 stray output files that had been left in the source
837 directory by an earlier build that did not use object 837 directory by an earlier build that did not use object
838 directories. 838 directories.
839 839
840 The default is MKCLEANSRC=yes. If you always build with 840 The default is MKCLEANSRC=yes. If you always build with
841 separate object directories, and you are sure that there 841 separate object directories, and you are sure that there
842 are no stray files in the source directories, then you 842 are no stray files in the source directories, then you
843 may set MKCLEANSRC=no to save some time. 843 may set MKCLEANSRC=no to save some time.
844 844
845MKCLEANVERIFY Controls whether or not the clean and cleandir targets 845MKCLEANVERIFY Controls whether or not the clean and cleandir targets
846 will verify that files have been deleted. 846 will verify that files have been deleted.
847 847
848 If MKCLEANVERIFY is set to "no", then the files will 848 If MKCLEANVERIFY is set to "no", then the files will
849 be deleted using a "rm -f" command, and its success or 849 be deleted using a "rm -f" command, and its success or
850 failure will be ignored. 850 failure will be ignored.
851 851
852 If MKCLEANVERIFY is set to "yes", then the success of 852 If MKCLEANVERIFY is set to "yes", then the success of
853 the "rm -f" command will be verified using an "ls" 853 the "rm -f" command will be verified using an "ls"
854 command. 854 command.
855 855
856 The default is MKCLEANVERIFY=yes. If you are sure that 856 The default is MKCLEANVERIFY=yes. If you are sure that
857 there will be no problems caused by file permissions, 857 there will be no problems caused by file permissions,
858 read-only file systems, or the like, then you may set 858 read-only file systems, or the like, then you may set
859 MKCLEANVERIFY=no to save some time. 859 MKCLEANVERIFY=no to save some time.
860 860
861To use the clean and cleandir targets defined in <bsd.clean.mk>, other 861To use the clean and cleandir targets defined in <bsd.clean.mk>, other
862Makefiles or bsd.*.mk files should append file names to the CLEANFILES 862Makefiles or bsd.*.mk files should append file names to the CLEANFILES
863or CLEANDIRFILES variables. For example: 863or CLEANDIRFILES variables. For example:
864 864
865 CLEANFILES+= a.out 865 CLEANFILES+= a.out
866 CLEANDIRFILES+= .depend 866 CLEANDIRFILES+= .depend
867 867
868 .include <bsd.clean.mk> 868 .include <bsd.clean.mk>
869 869
870 870
871=-=-=-=-= bsd.dep.mk =-=-=-=-= 871=-=-=-=-= bsd.dep.mk =-=-=-=-=
872 872
873The include file <bsd.dep.mk> contains the default targets for building 873The include file <bsd.dep.mk> contains the default targets for building
874.depend files. It creates .d files from entries in SRCS and DPSRCS 874.depend files. It creates .d files from entries in SRCS and DPSRCS
875that are C, C++, or Objective C source files, and builds .depend from the 875that are C, C++, or Objective C source files, and builds .depend from the
876.d files. All other files in SRCS and all of DPSRCS will be used as 876.d files. All other files in SRCS and all of DPSRCS will be used as
877dependencies for the .d files. In order for this to function correctly, 877dependencies for the .d files. In order for this to function correctly,
878it should be .included after all other .mk files and directives that may 878it should be .included after all other .mk files and directives that may
879modify SRCS or DPSRCS. It uses the following variables: 879modify SRCS or DPSRCS. It uses the following variables:
880 880
881SRCS List of source files to build the program. 881SRCS List of source files to build the program.
882 882
883DPSRCS List of source files which are needed for generating 883DPSRCS List of source files which are needed for generating
884 dependencies, but are not needed in ${SRCS}. 884 dependencies, but are not needed in ${SRCS}.
885 885
886 886
887=-=-=-=-= bsd.files.mk =-=-=-=-= 887=-=-=-=-= bsd.files.mk =-=-=-=-=
888 888
889The include file <bsd.files.mk> handles the FILES variables and is included 889The include file <bsd.files.mk> handles the FILES variables and is included
890from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables: 890from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
891 891
892FILES The list of files to install. 892FILES The list of files to install.
893 893
894CONFIGFILES Similar semantics to FILES, except that the files 894CONFIGFILES Similar semantics to FILES, except that the files
895 are installed by the `configinstall' target, 895 are installed by the `configinstall' target,
896 not the `install' target. 896 not the `install' target.
897 The FILES* variables documented below also apply. 897 The FILES* variables documented below also apply.
898 898
899FILESOWN File owner. [${BINOWN}] 899FILESOWN File owner. [${BINOWN}]
900 900
901FILESGRP File group. [${BINGRP}] 901FILESGRP File group. [${BINGRP}]
902 902
903FILESMODE File mode. [${NONBINMODE}] 903FILESMODE File mode. [${NONBINMODE}]
904 904
905FILESDIR The location to install the files. 905FILESDIR The location to install the files.
906 906
907FILESNAME Optional name to install each file as. 907FILESNAME Optional name to install each file as.
908 908
909FILESOWN_<fn> File owner of the specific file <fn>. 909FILESOWN_<fn> File owner of the specific file <fn>.
910 910
911FILESGRP_<fn> File group of the specific file <fn>. 911FILESGRP_<fn> File group of the specific file <fn>.
912 912
913FILESMODE_<fn> File mode of the specific file <fn>. 913FILESMODE_<fn> File mode of the specific file <fn>.
914 914
915FILESDIR_<fn> The location to install the specific file <fn>. 915FILESDIR_<fn> The location to install the specific file <fn>.
916 916
917FILESNAME_<fn> Optional name to install <fn> as. 917FILESNAME_<fn> Optional name to install <fn> as.
918 918
919FILESBUILD If this variable is defined, then its value will be 919FILESBUILD If this variable is defined, then its value will be
920 used as the default for all FILESBUILD_<fn> variables. 920 used as the default for all FILESBUILD_<fn> variables.
921 Otherwise, the default will be "no". 921 Otherwise, the default will be "no".
922 922
923FILESBUILD_<fn> A value different from "no" will add the file to the list of 923FILESBUILD_<fn> A value different from "no" will add the file to the list of
924 targets to be built by `realall'. Users of that variable 924 targets to be built by `realall'. Users of that variable
925 should provide a target to build the file. 925 should provide a target to build the file.
926 926
927 927
928BUILDSYMLINKS List of two word items: 928BUILDSYMLINKS List of two word items:
929 lnsrc lntgt 929 lnsrc lntgt
930 For each lnsrc item, create a symlink named lntgt. 930 For each lnsrc item, create a symlink named lntgt.
931 The lntgt symlinks are removed by the cleandir target. 931 The lntgt symlinks are removed by the cleandir target.
932 932
933UUDECODE_FILES List of files which are stored as <file>.uue in the source 933UUDECODE_FILES List of files which are stored as <file>.uue in the source
934 tree. Each one will be decoded with ${TOOL_UUDECODE}. 934 tree. Each one will be decoded with ${TOOL_UUDECODE}.
935 The source files have a `.uue' suffix, the generated files do  935 The source files have a `.uue' suffix, the generated files do
936 not. 936 not.
937 937
938UUDECODE_FILES_RENAME_<fn> 938UUDECODE_FILES_RENAME_<fn>
939 Rename the output from the decode to the provided name. 939 Rename the output from the decode to the provided name.
940  940
941 *NOTE: These files are simply decoded, with no install or other 941 *NOTE: These files are simply decoded, with no install or other
942 rule applying implicitly except being added to the clean 942 rule applying implicitly except being added to the clean
943 target. 943 target.
944 944
945=-=-=-=-= bsd.gcc.mk =-=-=-=-= 945=-=-=-=-= bsd.gcc.mk =-=-=-=-=
946 946
947The include file <bsd.gcc.mk> computes various parameters related to GCC 947The include file <bsd.gcc.mk> computes various parameters related to GCC
948support libraries. It defines no targets. <bsd.own.mk> MUST be included 948support libraries. It defines no targets. <bsd.own.mk> MUST be included
949before <bsd.gcc.mk>. 949before <bsd.gcc.mk>.
950 950
951The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each 951The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
952of which need to know where to find certain GCC support libraries. 952of which need to know where to find certain GCC support libraries.
953 953
954The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable, 954The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
955which is generally set by the user. If EXTERNAL_TOOLCHAIN it set, then 955which is generally set by the user. If EXTERNAL_TOOLCHAIN it set, then
956the compiler is asked where to find the support libraries, otherwise the 956the compiler is asked where to find the support libraries, otherwise the
957support libraries are found in ${DESTDIR}/usr/lib. 957support libraries are found in ${DESTDIR}/usr/lib.
958 958
959<bsd.gcc.mk> sets the following variables: 959<bsd.gcc.mk> sets the following variables:
960 960
961_GCC_CRTBEGIN The full path name to crtbegin.o. 961_GCC_CRTBEGIN The full path name to crtbegin.o.
962 962
963_GCC_CRTBEGINS The full path name to crtbeginS.o. 963_GCC_CRTBEGINS The full path name to crtbeginS.o.
964 964
965_GCC_CRTEND The full path name to crtend.o. 965_GCC_CRTEND The full path name to crtend.o.
966 966
967_GCC_CRTENDS The full path name to crtendS.o. 967_GCC_CRTENDS The full path name to crtendS.o.
968 968
969_GCC_LIBGCCDIR The directory where libgcc.a is located. 969_GCC_LIBGCCDIR The directory where libgcc.a is located.
970 970
971 971
972=-=-=-=-= bsd.inc.mk =-=-=-=-= 972=-=-=-=-= bsd.inc.mk =-=-=-=-=
973 973
974The include file <bsd.inc.mk> defines the includes target and uses the 974The include file <bsd.inc.mk> defines the includes target and uses the
975variables: 975variables:
976 976
977INCS The list of include files. 977INCS The list of include files.
978 978
979INCSDIR The location to install the include files. 979INCSDIR The location to install the include files.
980 980
981INCSNAME Target name of the include file, if only one; same as 981INCSNAME Target name of the include file, if only one; same as
982 FILESNAME, but for include files. 982 FILESNAME, but for include files.
983 983
984INCSYMLINKS Similar to SYMLINKS in <bsd.links.mk>, except that these 984INCSYMLINKS Similar to SYMLINKS in <bsd.links.mk>, except that these
985 are installed in the 'includes' target and not the 985 are installed in the 'includes' target and not the
986 (much later) 'install' target. 986 (much later) 'install' target.
987 987
988INCSNAME_<file> The name file <file> should be installed as, if not <file>, 988INCSNAME_<file> The name file <file> should be installed as, if not <file>,
989 same as FILESNAME_<file>, but for include files. 989 same as FILESNAME_<file>, but for include files.
990 990
991 991
992=-=-=-=-= bsd.info.mk =-=-=-=-= 992=-=-=-=-= bsd.info.mk =-=-=-=-=
993 993
994The include file <bsd.info.mk> is used to generate and install GNU Info 994The include file <bsd.info.mk> is used to generate and install GNU Info
995documentation from respective Texinfo source files. It defines three 995documentation from respective Texinfo source files. It defines three
996implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the 996implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
997following variables: 997following variables:
998 998
999TEXINFO List of Texinfo source files. Info documentation will 999TEXINFO List of Texinfo source files. Info documentation will
1000 consist of single files with the extension replaced by 1000 consist of single files with the extension replaced by
1001 .info. 1001 .info.
1002 1002
1003INFOFLAGS Flags to pass to makeinfo. [] 1003INFOFLAGS Flags to pass to makeinfo. []
1004 1004
1005 1005
1006=-=-=-=-= bsd.kernobj.mk =-=-=-=-= 1006=-=-=-=-= bsd.kernobj.mk =-=-=-=-=
1007 1007
1008The include file <bsd.kernobj.mk> defines variables related to the 1008The include file <bsd.kernobj.mk> defines variables related to the
1009location of kernel sources and object directories. 1009location of kernel sources and object directories.
1010 1010
1011KERNSRCDIR Is the location of the top of the kernel src. 1011KERNSRCDIR Is the location of the top of the kernel src.
1012 [${_SRC_TOP_}/sys] 1012 [${_SRC_TOP_}/sys]
1013 1013
1014KERNARCHDIR Is the location of the machine dependent kernel sources. 1014KERNARCHDIR Is the location of the machine dependent kernel sources.
1015 [arch/${MACHINE}] 1015 [arch/${MACHINE}]
1016 1016
1017KERNCONFDIR Is where the configuration files for kernels are found. 1017KERNCONFDIR Is where the configuration files for kernels are found.
1018 [${KERNSRCDIR}/${KERNARCHDIR}/conf] 1018 [${KERNSRCDIR}/${KERNARCHDIR}/conf]
1019 1019
1020KERNOBJDIR Is the kernel build directory. The kernel GENERIC for 1020KERNOBJDIR Is the kernel build directory. The kernel GENERIC for
1021 instance will be compiled in ${KERNOBJDIR}/GENERIC. 1021 instance will be compiled in ${KERNOBJDIR}/GENERIC.
1022 The default value is 1022 The default value is
1023 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile 1023 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
1024 if it exists or the target 'obj' is being made. 1024 if it exists or the target 'obj' is being made.
1025 Otherwise the default is 1025 Otherwise the default is
1026 ${KERNSRCDIR}/${KERNARCHDIR}/compile. 1026 ${KERNSRCDIR}/${KERNARCHDIR}/compile.
1027 1027
1028It is important that Makefiles (such as those under src/distrib) that 1028It is important that Makefiles (such as those under src/distrib) that
1029wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR} 1029wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
1030rather than make assumptions about the location of the compiled kernel. 1030rather than make assumptions about the location of the compiled kernel.
1031 1031
1032 1032
1033=-=-=-=-= bsd.kinc.mk =-=-=-=-= 1033=-=-=-=-= bsd.kinc.mk =-=-=-=-=
1034 1034
1035The include file <bsd.kinc.mk> defines the many targets (includes, 1035The include file <bsd.kinc.mk> defines the many targets (includes,
1036subdirectories, etc.), and is used by kernel makefiles to handle 1036subdirectories, etc.), and is used by kernel makefiles to handle
1037include file installation. It is intended to be included alone, by 1037include file installation. It is intended to be included alone, by
1038kernel Makefiles. It uses similar variables to <bsd.inc.mk>. 1038kernel Makefiles. It uses similar variables to <bsd.inc.mk>.
1039Please see <bsd.kinc.mk> for more details, and keep the documentation 1039Please see <bsd.kinc.mk> for more details, and keep the documentation
1040in that file up to date. 1040in that file up to date.
1041 1041
1042 1042
1043=-=-=-=-= bsd.lib.mk =-=-=-=-= 1043=-=-=-=-= bsd.lib.mk =-=-=-=-=
1044 1044
1045The include file <bsd.lib.mk> has support for building libraries. It has 1045The include file <bsd.lib.mk> has support for building libraries. It has
1046the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend, 1046the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1047includes, install, lint, and tags. Additionally, it has a checkver target 1047includes, install, lint, and tags. Additionally, it has a checkver target
1048which checks for installed shared object libraries whose version is greater 1048which checks for installed shared object libraries whose version is greater
1049that the version of the source. It has a limited number of suffixes, 1049that the version of the source. It has a limited number of suffixes,
1050consistent with the current needs of the BSD tree. <bsd.lib.mk> includes 1050consistent with the current needs of the BSD tree. <bsd.lib.mk> includes
1051<bsd.shlib.mk> to get shared library parameters. 1051<bsd.shlib.mk> to get shared library parameters.
1052 1052
1053It sets/uses the following variables: 1053It sets/uses the following variables:
1054 1054
1055LIB The name of the library to build. 1055LIB The name of the library to build.
1056 1056
1057LIBDIR Target directory for libraries. 1057LIBDIR Target directory for libraries.
1058 1058
1059MKARZERO Normally, ar(1) sets the timestamps, uid, gid and 1059MKARZERO Normally, ar(1) sets the timestamps, uid, gid and
1060 permissions in files inside its archives to those of 1060 permissions in files inside its archives to those of
1061 the file it was fed. This leads to non-reproduceable 1061 the file it was fed. This leads to non-reproduceable
1062 builds. If MKARZERO is set to "yes" (default is "no") 1062 builds. If MKARZERO is set to "yes" (default is "no")
1063 then the "D" flag is passed to ar, causing the 1063 then the "D" flag is passed to ar, causing the
1064 timestamp, uid and gid to be zeroed and the file 1064 timestamp, uid and gid to be zeroed and the file
1065 permissions to be set to 644. This allows .a files 1065 permissions to be set to 644. This allows .a files
1066 from different builds to be bit identical. 1066 from different builds to be bit identical.
1067 1067
1068SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR} 1068SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR}
1069 is not "no". 1069 is not "no".
1070 1070
1071SHLIB_MAJOR 1071SHLIB_MAJOR
1072SHLIB_MINOR 1072SHLIB_MINOR
1073SHLIB_TEENY Major, minor, and teeny version numbers of shared library 1073SHLIB_TEENY Major, minor, and teeny version numbers of shared library
1074 1074
1075USE_SHLIBDIR If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR} 1075USE_SHLIBDIR If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
1076 as the path to install shared libraries to. 1076 as the path to install shared libraries to.
1077 USE_SHLIBDIR must be defined before <bsd.own.mk> is included. 1077 USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
1078 Default: no 1078 Default: no
1079 1079
1080LIBISMODULE If not "no", install as ${LIB}.so (without the "lib" prefix), 1080LIBISMODULE If not "no", install as ${LIB}.so (without the "lib" prefix),
1081 and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no 1081 and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
1082 MKPROFILE=no MKSTATICLIB=no". 1082 MKPROFILE=no MKSTATICLIB=no".
1083 Default: no 1083 Default: no
1084 1084
1085LIBISPRIVATE If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no 1085LIBISPRIVATE If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
1086 MKPROFILE=no", and don't install the (.a) library. 1086 MKPROFILE=no", and don't install the (.a) library.
1087 This is useful for "build only" helper libraries. 1087 This is useful for "build only" helper libraries.
1088 Default: no 1088 Default: no
1089 1089
1090LIBISCXX If not "no", Use ${CXX} instead of ${CC} to link 1090LIBISCXX If not "no", Use ${CXX} instead of ${CC} to link
1091 shared libraries. 1091 shared libraries.
1092 This is useful for C++ libraries. 1092 This is useful for C++ libraries.
1093 Default: no 1093 Default: no
1094 1094
1095LINTLIBDIR Target directory for lint libraries. 1095LINTLIBDIR Target directory for lint libraries.
1096 1096
1097LIBGRP Library group. 1097LIBGRP Library group.
1098 1098
1099LIBOWN Library owner. 1099LIBOWN Library owner.
1100 1100
1101LIBMODE Library mode. 1101LIBMODE Library mode.
1102 1102
1103LDADD Additional loader objects. 1103LDADD Additional loader objects.
1104 1104
1105MAN The manual pages to be installed (use a .1 - .9 suffix). 1105MAN The manual pages to be installed (use a .1 - .9 suffix).
1106 1106
1107NOCHECKVER_<library> 1107NOCHECKVER_<library>
1108NOCHECKVER If set, disables checking for installed shared object 1108NOCHECKVER If set, disables checking for installed shared object
1109 libraries with versions greater than the source. A 1109 libraries with versions greater than the source. A
1110 particular library name, without the "lib" prefix, may 1110 particular library name, without the "lib" prefix, may
1111 be appended to the variable name to disable the check for 1111 be appended to the variable name to disable the check for
1112 only that library. 1112 only that library.
1113 1113
1114SRCS List of source files to build the library. Suffix types 1114SRCS List of source files to build the library. Suffix types
1115 .s, .c, and .f are supported. Note, .s files are preferred 1115 .s, .c, and .f are supported. Note, .s files are preferred
1116 to .c files of the same name. (This is not the default for 1116 to .c files of the same name. (This is not the default for
1117 versions of make.) 1117 versions of make.)
1118 1118
1119LIBDPLIBS A list of the tuples: 1119LIBDPLIBS A list of the tuples:
1120 libname path-to-srcdir-of-libname 1120 libname path-to-srcdir-of-libname
1121 1121
1122 For each tuple; 1122 For each tuple;
1123 * LIBDO.libname contains the .OBJDIR of the library 1123 * LIBDO.libname contains the .OBJDIR of the library
1124 `libname', and if it is not set it is determined 1124 `libname', and if it is not set it is determined
1125 from the srcdir and added to MAKEOVERRIDES (the 1125 from the srcdir and added to MAKEOVERRIDES (the
1126 latter is to allow for build time optimization). 1126 latter is to allow for build time optimization).
1127 * LDADD gets -L${LIBDO.libname} -llibname added. 1127 * LDADD gets -L${LIBDO.libname} -llibname added.
1128 * DPADD gets ${LIBDO.libname}/liblibname.so or 1128 * DPADD gets ${LIBDO.libname}/liblibname.so or
1129 ${LIBDO.libname}/liblibname.a added. 1129 ${LIBDO.libname}/liblibname.a added.
1130 1130
1131 This variable may be used for individual libraries, as 1131 This variable may be used for individual libraries, as
1132 well as in parent directories to cache common libraries  1132 well as in parent directories to cache common libraries
1133 as a build-time optimization. 1133 as a build-time optimization.
1134 1134
1135The include file <bsd.lib.mk> includes the file named "../Makefile.inc" 1135The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1136if it exists, as well as the include file <bsd.man.mk>. 1136if it exists, as well as the include file <bsd.man.mk>.
1137 1137
1138It has rules for building profiled objects; profiled libraries are 1138It has rules for building profiled objects; profiled libraries are
1139built by default. 1139built by default.
1140 1140
1141Libraries are ranlib'd when made. 1141Libraries are ranlib'd when made.
1142 1142
1143 1143
1144=-=-=-=-= bsd.links.mk =-=-=-=-= 1144=-=-=-=-= bsd.links.mk =-=-=-=-=
1145 1145
1146The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables 1146The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1147and is included from from <bsd.lib.mk> and <bsd.prog.mk>. 1147and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1148 1148
1149LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log 1149LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1150is used. The defaults may be modified by other bsd.*.mk files which 1150is used. The defaults may be modified by other bsd.*.mk files which
1151include bsd.links.mk. In the future, these variables may be replaced 1151include bsd.links.mk. In the future, these variables may be replaced
1152by a method for explicitly recording hard links in a metadata log. 1152by a method for explicitly recording hard links in a metadata log.
1153 1153
1154LINKS The list of hard links, consisting of pairs of paths: 1154LINKS The list of hard links, consisting of pairs of paths:
1155 source-file target-file 1155 source-file target-file
1156 ${DESTDIR} is prepended to both paths before linking. 1156 ${DESTDIR} is prepended to both paths before linking.
1157 For example, to link /bin/test and /bin/[, use: 1157 For example, to link /bin/test and /bin/[, use:
1158 LINKS=/bin/test /bin/[ 1158 LINKS=/bin/test /bin/[
1159 1159
1160CONFIGLINKS Similar semantics to LINKS, except that the links 1160CONFIGLINKS Similar semantics to LINKS, except that the links
1161 are installed by the `configinstall' target, 1161 are installed by the `configinstall' target,
1162 not the `install' target. 1162 not the `install' target.
1163 1163
1164SYMLINKS The list of symbolic links, consisting of pairs of paths: 1164SYMLINKS The list of symbolic links, consisting of pairs of paths:
1165 source-file target-file 1165 source-file target-file
1166 ${DESTDIR} is only prepended to target-file before linking. 1166 ${DESTDIR} is only prepended to target-file before linking.
1167 For example, to symlink /usr/bin/tar to /bin/tar resulting 1167 For example, to symlink /usr/bin/tar to /bin/tar resulting
1168 in ${DESTDIR}/usr/bin/tar -> /bin/tar: 1168 in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1169 SYMLINKS=/bin/tar /usr/bin/tar 1169 SYMLINKS=/bin/tar /usr/bin/tar
1170 1170
1171CONFIGSYMLINKS Similar semantics to SYMLINKS, except that the symbolic links 1171CONFIGSYMLINKS Similar semantics to SYMLINKS, except that the symbolic links
1172 are installed by the `configinstall' target, 1172 are installed by the `configinstall' target,
1173 not the `install' target. 1173 not the `install' target.
1174 1174
1175LINKSOWN Link owner. [${BINOWN}] 1175LINKSOWN Link owner. [${BINOWN}]
1176 1176
1177LINKSGRP Link group. [${BINGRP}] 1177LINKSGRP Link group. [${BINGRP}]
1178 1178
1179LINKSMODE Link mode. [${NONBINMODE}] 1179LINKSMODE Link mode. [${NONBINMODE}]
1180 1180
1181LINKSOWN_<fn> Link owner of the specific file <fn>. 1181LINKSOWN_<fn> Link owner of the specific file <fn>.
1182 1182
1183LINKSGRP_<fn> Link group of the specific file <fn>. 1183LINKSGRP_<fn> Link group of the specific file <fn>.
1184 1184
1185LINKSMODE_<fn> Link mode of the specific file <fn>. 1185LINKSMODE_<fn> Link mode of the specific file <fn>.
1186 1186
1187 1187
1188=-=-=-=-= bsd.man.mk =-=-=-=-= 1188=-=-=-=-= bsd.man.mk =-=-=-=-=
1189 1189
1190The include file <bsd.man.mk> handles installing manual pages and their 1190The include file <bsd.man.mk> handles installing manual pages and their
1191links. 1191links.
1192 1192
1193It has a three targets: 1193It has a three targets:
1194 1194
1195 catinstall: 1195 catinstall:
1196 Install the preformatted manual pages and their links. 1196 Install the preformatted manual pages and their links.
1197 htmlinstall: 1197 htmlinstall:
1198 Install the HTML manual pages and their links. 1198 Install the HTML manual pages and their links.
1199 maninstall: 1199 maninstall:
1200 Install the manual page sources and their links. 1200 Install the manual page sources and their links.
1201 1201
1202It sets/uses the following variables: 1202It sets/uses the following variables:
1203 1203
1204MANDIR Base path for manual installation. 1204MANDIR Base path for manual installation.
1205 1205
1206MANGRP Manual group. 1206MANGRP Manual group.
1207 1207
1208MANOWN Manual owner. 1208MANOWN Manual owner.
1209 1209
1210MANMODE Manual mode. 1210MANMODE Manual mode.
1211 1211
1212MANSUBDIR Subdirectory under the manual page section, i.e. "/vax" 1212MANSUBDIR Subdirectory under the manual page section, i.e. "/vax"
1213 or "/tahoe" for machine specific manual pages. 1213 or "/tahoe" for machine specific manual pages.
1214 1214
1215MAN The manual pages to be installed (use a .1 - .9 suffix). 1215MAN The manual pages to be installed (use a .1 - .9 suffix).
1216 1216
1217MLINKS List of manual page links (using a .1 - .9 suffix). The 1217MLINKS List of manual page links (using a .1 - .9 suffix). The
1218 linked-to file must come first, the linked file second, 1218 linked-to file must come first, the linked file second,
1219 and there may be multiple pairs. 1219 and there may be multiple pairs.
1220 1220
1221The include file <bsd.man.mk> includes a file named "../Makefile.inc" if 1221The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1222it exists. 1222it exists.
1223 1223
1224 1224
1225=-=-=-=-= bsd.obj.mk =-=-=-=-= 1225=-=-=-=-= bsd.obj.mk =-=-=-=-=
1226 1226
1227The include file <bsd.obj.mk> defines targets related to the creation 1227The include file <bsd.obj.mk> defines targets related to the creation
1228and use of separated object and source directories. 1228and use of separated object and source directories.
1229 1229
1230If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses 1230If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1231${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if 1231${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1232it exists. Otherwise make(1) looks for the existence of a 1232it exists. Otherwise make(1) looks for the existence of a
1233subdirectory (or a symlink to a directory) of the source directory 1233subdirectory (or a symlink to a directory) of the source directory
1234into which built targets should be placed. If an environment variable 1234into which built targets should be placed. If an environment variable
1235named MAKEOBJDIR is set, make(1) uses its value as the name of the 1235named MAKEOBJDIR is set, make(1) uses its value as the name of the
1236object directory; failing that, make first looks for a subdirectory 1236object directory; failing that, make first looks for a subdirectory
1237named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj". 1237named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1238 1238
1239Object directories are not created automatically by make(1) if they 1239Object directories are not created automatically by make(1) if they
1240don't exist; you need to run a separate "make obj". (This will happen 1240don't exist; you need to run a separate "make obj". (This will happen
1241during a top-level build if "MKOBJDIRS" is set to a value other than 1241during a top-level build if "MKOBJDIRS" is set to a value other than
1242"no"). When the source directory is a subdirectory of ${BSDSRCDIR} -- 1242"no"). When the source directory is a subdirectory of ${BSDSRCDIR} --
1243and this is determined by a simple string prefix comparison -- object 1243and this is determined by a simple string prefix comparison -- object
1244directories are created in a separate object directory tree, and a 1244directories are created in a separate object directory tree, and a
1245symlink to the object directory in that tree is created in the source 1245symlink to the object directory in that tree is created in the source
1246directory; otherwise, "make obj" assumes that you're not in the main 1246directory; otherwise, "make obj" assumes that you're not in the main
1247source tree and that it's not safe to use a separate object tree. 1247source tree and that it's not safe to use a separate object tree.
1248 1248
1249Several variables used by <bsd.obj.mk> control exactly what 1249Several variables used by <bsd.obj.mk> control exactly what
1250directories and links get created during a "make obj": 1250directories and links get created during a "make obj":
1251 1251
1252MAKEOBJDIR If set, this is the component name of the object 1252MAKEOBJDIR If set, this is the component name of the object
1253 directory. 1253 directory.
1254 1254
1255OBJMACHINE If this is set but MAKEOBJDIR is not set, creates 1255OBJMACHINE If this is set but MAKEOBJDIR is not set, creates
1256 object directories or links named "obj.${MACHINE}"; 1256 object directories or links named "obj.${MACHINE}";
1257 otherwise, just creates ones named "obj". 1257 otherwise, just creates ones named "obj".
1258 1258
1259USR_OBJMACHINE If set, and the current directory is a subdirectory of 1259USR_OBJMACHINE If set, and the current directory is a subdirectory of
1260 ${BSDSRCDIR}, create object directory in the 1260 ${BSDSRCDIR}, create object directory in the
1261 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE}; 1261 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1262 otherwise, create it in the corresponding subdirectory 1262 otherwise, create it in the corresponding subdirectory
1263 of ${BSDOBJDIR} 1263 of ${BSDOBJDIR}
1264 1264
1265BUILDID If set, the contents of this variable are appended 1265BUILDID If set, the contents of this variable are appended
1266 to the object directory name. If OBJMACHINE is also 1266 to the object directory name. If OBJMACHINE is also
1267 set, ".${BUILDID}" is added after ".${MACHINE}". 1267 set, ".${BUILDID}" is added after ".${MACHINE}".
1268 1268
1269 1269
1270=-=-=-=-= bsd.prog.mk =-=-=-=-= 1270=-=-=-=-= bsd.prog.mk =-=-=-=-=
1271 1271
1272The include file <bsd.prog.mk> handles building programs from one or 1272The include file <bsd.prog.mk> handles building programs from one or
1273more source files, along with their manual pages. It has a limited number 1273more source files, along with their manual pages. It has a limited number
1274of suffixes, consistent with the current needs of the BSD tree.  1274of suffixes, consistent with the current needs of the BSD tree.
1275<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters. 1275<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1276 1276
1277It has eight targets: 1277It has eight targets:
1278 1278
1279 all: 1279 all:
1280 build the program and its manual page. This also 1280 build the program and its manual page. This also
1281 creates a GDB initialization file (.gdbinit) in 1281 creates a GDB initialization file (.gdbinit) in
1282 the objdir. The .gdbinit file sets the shared library 1282 the objdir. The .gdbinit file sets the shared library
1283 prefix to ${DESTDIR} to facilitate cross-debugging. 1283 prefix to ${DESTDIR} to facilitate cross-debugging.
1284 clean: 1284 clean:
1285 remove the program, any object files and the files a.out, 1285 remove the program, any object files and the files a.out,
1286 Errs, errs, mklog, and ${PROG}.core. 1286 Errs, errs, mklog, and ${PROG}.core.
1287 cleandir: 1287 cleandir:
1288 remove all of the files removed by the target clean, as 1288 remove all of the files removed by the target clean, as
1289 well as .depend, tags, and any manual pages. 1289 well as .depend, tags, and any manual pages.
1290 `distclean' is a synonym for `cleandir'. 1290 `distclean' is a synonym for `cleandir'.
1291 depend: 1291 depend:
1292 make the dependencies for the source files, and store 1292 make the dependencies for the source files, and store
1293 them in the file .depend. 1293 them in the file .depend.
1294 includes: 1294 includes:
1295 install any header files. 1295 install any header files.
1296 install: 1296 install:
1297 install the program and its manual pages; if the Makefile 1297 install the program and its manual pages; if the Makefile
1298 does not itself define the target install, the targets 1298 does not itself define the target install, the targets
1299 beforeinstall and afterinstall may also be used to cause 1299 beforeinstall and afterinstall may also be used to cause
1300 actions immediately before and after the install target 1300 actions immediately before and after the install target
1301 is executed. 1301 is executed.
1302 lint: 1302 lint:
1303 run lint on the source files 1303 run lint on the source files
1304 tags: 1304 tags:
1305 create a tags file for the source files. 1305 create a tags file for the source files.
1306 1306
1307It sets/uses the following variables: 1307It sets/uses the following variables:
1308 1308
1309BINGRP Binary group. 1309BINGRP Binary group.
1310 1310
1311BINOWN Binary owner. 1311BINOWN Binary owner.
1312 1312
1313BINMODE Binary mode. 1313BINMODE Binary mode.
1314 1314
1315CLEANDIRFILES Additional files to remove for the cleandir target. 1315CLEANDIRFILES Additional files to remove for the cleandir target.
1316 1316
1317CLEANFILES Additional files to remove for the clean and cleandir targets. 1317CLEANFILES Additional files to remove for the clean and cleandir targets.
1318 1318
1319COPTS Additional flags to the compiler when creating C objects. 1319COPTS Additional flags to the compiler when creating C objects.
1320 1320
1321COPTS.<fn> Additional flags to the compiler when creating the 1321COPTS.<fn> Additional flags to the compiler when creating the
1322 C objects for <fn>. 1322 C objects for <fn>.
1323 For <fn>.[ly], "<fn>.c" must be used. 1323 For <fn>.[ly], "<fn>.c" must be used.
1324 1324
1325CPUFLAGS Additional flags to the compiler/assembler to select 1325CPUFLAGS Additional flags to the compiler/assembler to select
1326 CPU instruction set options, CPU tuning options, etc. 1326 CPU instruction set options, CPU tuning options, etc.
1327 1327
1328CPUFLAGS.<fn> Additional flags to the compiler/assembler for <fn>. 1328CPUFLAGS.<fn> Additional flags to the compiler/assembler for <fn>.
1329 For <fn>.[ly], "<fn>.c" must be used. 1329 For <fn>.[ly], "<fn>.c" must be used.
1330 1330
1331CPPFLAGS Additional flags to the C pre-processor. 1331CPPFLAGS Additional flags to the C pre-processor.
1332 1332
1333CPPFLAGS.<fn> Additional flags to the C pre-processor for <fn>. 1333CPPFLAGS.<fn> Additional flags to the C pre-processor for <fn>.
1334 For <fn>.[ly], "<fn>.c" must be used. 1334 For <fn>.[ly], "<fn>.c" must be used.
1335 1335
1336GDBINIT List of GDB initialization files to add to "source" 1336GDBINIT List of GDB initialization files to add to "source"
1337 directives in the .gdbinit file that is created in the 1337 directives in the .gdbinit file that is created in the
1338 objdir. 1338 objdir.
1339 1339
1340LDADD Additional loader objects. Usually used for libraries. 1340LDADD Additional loader objects. Usually used for libraries.
1341 For example, to load with the compatibility and utility 1341 For example, to load with the compatibility and utility
1342 libraries, use: 1342 libraries, use:
1343 1343
1344 LDADD+=-lutil -lcompat 1344 LDADD+=-lutil -lcompat
1345 1345
1346LDFLAGS Additional linker flags (passed to ${CC} during link). 1346LDFLAGS Additional linker flags (passed to ${CC} during link).
1347 1347
1348LINKS See <bsd.links.mk> 1348LINKS See <bsd.links.mk>
1349 1349
1350OBJCOPTS Additional flags to the compiler when creating ObjC objects. 1350OBJCOPTS Additional flags to the compiler when creating ObjC objects.
1351 1351
1352OBJCOPTS.<fn> Additional flags to the compiler when creating the 1352OBJCOPTS.<fn> Additional flags to the compiler when creating the
1353 ObjC objects for <fn>. 1353 ObjC objects for <fn>.
1354 For <fn>.[ly], "<fn>.c" must be used. 1354 For <fn>.[ly], "<fn>.c" must be used.
1355 1355
1356SYMLINKS See <bsd.links.mk> 1356SYMLINKS See <bsd.links.mk>
1357 1357
1358MAN Manual pages (should end in .1 - .9). If no MAN variable is 1358MAN Manual pages (should end in .1 - .9). If no MAN variable is
1359 defined, "MAN=${PROG}.1" is assumed. 1359 defined, "MAN=${PROG}.1" is assumed.
1360 1360
1361PAXCTL_FLAGS If defined, run paxctl(1) on the program binary after link 1361PAXCTL_FLAGS If defined, run paxctl(1) on the program binary after link
1362 time, with the value of this variable as args to paxctl(1). 1362 time, with the value of this variable as args to paxctl(1).
1363 1363
1364PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS. 1364PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1365 1365
1366PROG The name of the program to build. If not supplied, nothing 1366PROG The name of the program to build. If not supplied, nothing
1367 is built. 1367 is built.
1368 1368
1369PROG_CXX If defined, the name of the program to build. Also 1369PROG_CXX If defined, the name of the program to build. Also
1370 causes <bsd.prog.mk> to link the program with the C++ 1370 causes <bsd.prog.mk> to link the program with the C++
1371 compiler rather than the C compiler. PROG_CXX overrides 1371 compiler rather than the C compiler. PROG_CXX overrides
1372 the value of PROG if PROG is also set. 1372 the value of PROG if PROG is also set.
1373 1373
1374PROGNAME The name that the above program will be installed as, if 1374PROGNAME The name that the above program will be installed as, if
1375 different from ${PROG}. 1375 different from ${PROG}.
1376 1376
1377SRCS List of source files to build the program. If SRCS is not 1377SRCS List of source files to build the program. If SRCS is not
1378 defined, it's assumed to be ${PROG}.c. 1378 defined, it's assumed to be ${PROG}.c.
1379 1379
1380DPSRCS List of source files which are needed for generating 1380DPSRCS List of source files which are needed for generating
1381 dependencies, but are not needed in ${SRCS}. 1381 dependencies, but are not needed in ${SRCS}.
1382 1382
1383DPADD Additional dependencies for the program. Usually used for 1383DPADD Additional dependencies for the program. Usually used for
1384 libraries. For example, to depend on the compatibility and 1384 libraries. For example, to depend on the compatibility and
1385 utility libraries use: 1385 utility libraries use:
1386 1386
1387 DPADD+=${LIBCOMPAT} ${LIBUTIL} 1387 DPADD+=${LIBCOMPAT} ${LIBUTIL}
1388 1388
1389 The following system libraries are predefined for DPADD: 1389 The following system libraries are predefined for DPADD:
1390 1390
1391 LIBARCHIVE?= ${DESTDIR}/usr/lib/libarchive.a 1391 LIBARCHIVE?= ${DESTDIR}/usr/lib/libarchive.a
1392 LIBASN1?= ${DESTDIR}/usr/lib/libasn1.a 1392 LIBASN1?= ${DESTDIR}/usr/lib/libasn1.a
1393 LIBATF_C?= ${DESTDIR}/usr/lib/libatf-c.a 1393 LIBATF_C?= ${DESTDIR}/usr/lib/libatf-c.a
1394 LIBATF_CXX?= ${DESTDIR}/usr/lib/libatf-c++.a 1394 LIBATF_CXX?= ${DESTDIR}/usr/lib/libatf-c++.a
1395 LIBBIND9?= ${DESTDIR}/usr/lib/libbind9.a 1395 LIBBIND9?= ${DESTDIR}/usr/lib/libbind9.a
1396 LIBBLUETOOTH?= ${DESTDIR}/usr/lib/libbluetooth.a 1396 LIBBLUETOOTH?= ${DESTDIR}/usr/lib/libbluetooth.a
1397 LIBBSDMALLOC?= ${DESTDIR}/usr/lib/libbsdmalloc.a 1397 LIBBSDMALLOC?= ${DESTDIR}/usr/lib/libbsdmalloc.a
1398 LIBBZ2?= ${DESTDIR}/usr/lib/libbz2.a 1398 LIBBZ2?= ${DESTDIR}/usr/lib/libbz2.a
1399 LIBC?= ${DESTDIR}/usr/lib/libc.a 1399 LIBC?= ${DESTDIR}/usr/lib/libc.a
1400 LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a 1400 LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a
1401 LIBCOM_ERR?= ${DESTDIR}/usr/lib/libcom_err.a 1401 LIBCOM_ERR?= ${DESTDIR}/usr/lib/libcom_err.a
1402 LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 1402 LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o
1403 LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a 1403 LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a
1404 LIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a 1404 LIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a
1405 LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a 1405 LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
1406 LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a 1406 LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
1407 LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a 1407 LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a
1408 LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 1408 LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a
1409 LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a 1409 LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a
1410 LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a 1410 LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a
1411 LIBDES?= ${DESTDIR}/usr/lib/libdes.a 1411 LIBDES?= ${DESTDIR}/usr/lib/libdes.a
1412 LIBDNS?= ${DESTDIR}/usr/lib/libdns.a 1412 LIBDNS?= ${DESTDIR}/usr/lib/libdns.a
1413 LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 1413 LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a
1414 LIBEVENT?= ${DESTDIR}/usr/lib/libevent.a 1414 LIBEVENT?= ${DESTDIR}/usr/lib/libevent.a
1415 LIBFETCH?= ${DESTDIR}/usr/lib/libfetch.a 1415 LIBFETCH?= ${DESTDIR}/usr/lib/libfetch.a
1416 LIBFORM?= ${DESTDIR}/usr/lib/libform.a 1416 LIBFORM?= ${DESTDIR}/usr/lib/libform.a
1417 LIBFL?= ${DESTDIR}/usr/lib/libfl.a 1417 LIBFL?= ${DESTDIR}/usr/lib/libfl.a
1418 LIBG2C?= ${DESTDIR}/usr/lib/libg2c.a 1418 LIBG2C?= ${DESTDIR}/usr/lib/libg2c.a
1419 LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a 1419 LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a
1420 LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a 1420 LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a
1421 LIBGSSAPI?= ${DESTDIR}/usr/lib/libgssapi.a 1421 LIBGSSAPI?= ${DESTDIR}/usr/lib/libgssapi.a
1422 LIBHDB?= ${DESTDIR}/usr/lib/libhdb.a 1422 LIBHDB?= ${DESTDIR}/usr/lib/libhdb.a
1423 LIBHEIMBASE?= ${DESTDIR}/usr/lib/libheimbase.a 1423 LIBHEIMBASE?= ${DESTDIR}/usr/lib/libheimbase.a
1424 LIBHEIMNTLM?= ${DESTDIR}/usr/lib/libheimntlm.a 1424 LIBHEIMNTLM?= ${DESTDIR}/usr/lib/libheimntlm.a
1425 LIBHX500?= ${DESTDIR}/usr/lib/libhx500.a 1425 LIBHX500?= ${DESTDIR}/usr/lib/libhx500.a
1426 LIBINTL?= ${DESTDIR}/usr/lib/libintl.a 1426 LIBINTL?= ${DESTDIR}/usr/lib/libintl.a
1427 LIBIPSEC?= ${DESTDIR}/usr/lib/libipsec.a 1427 LIBIPSEC?= ${DESTDIR}/usr/lib/libipsec.a
1428 LIBISC?= ${DESTDIR}/usr/lib/libisc.a 1428 LIBISC?= ${DESTDIR}/usr/lib/libisc.a
1429 LIBISCCC?= ${DESTDIR}/usr/lib/libisccc.a 1429 LIBISCCC?= ${DESTDIR}/usr/lib/libisccc.a
1430 LIBISCFG?= ${DESTDIR}/usr/lib/libiscfg.a 1430 LIBISCFG?= ${DESTDIR}/usr/lib/libiscfg.a
1431 LIBKADM5CLNT?= ${DESTDIR}/usr/lib/libkadm5clnt.a 1431 LIBKADM5CLNT?= ${DESTDIR}/usr/lib/libkadm5clnt.a
1432 LIBKADM5SRV?= ${DESTDIR}/usr/lib/libkadm5srv.a 1432 LIBKADM5SRV?= ${DESTDIR}/usr/lib/libkadm5srv.a
1433 LIBKAFS?= ${DESTDIR}/usr/lib/libkafs.a 1433 LIBKAFS?= ${DESTDIR}/usr/lib/libkafs.a
1434 LIBKRB5?= ${DESTDIR}/usr/lib/libkrb5.a 1434 LIBKRB5?= ${DESTDIR}/usr/lib/libkrb5.a
1435 LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 1435 LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a
1436 LIBL?= ${DESTDIR}/usr/lib/libl.a 1436 LIBL?= ${DESTDIR}/usr/lib/libl.a
1437 LIBLBER?= ${DESTDIR}/usr/lib/liblber.a 1437 LIBLBER?= ${DESTDIR}/usr/lib/liblber.a
1438 LIBLDAP?= ${DESTDIR}/usr/lib/libldap.a 1438 LIBLDAP?= ${DESTDIR}/usr/lib/libldap.a
1439 LIBLDAP_R?= ${DESTDIR}/usr/lib/libldap_r.a 1439 LIBLDAP_R?= ${DESTDIR}/usr/lib/libldap_r.a
1440 LIBLUA?= ${DESTDIR}/usr/lib/liblua.a 1440 LIBLUA?= ${DESTDIR}/usr/lib/liblua.a
1441 LIBLWRES?= ${DESTDIR}/usr/lib/liblwres.a 1441 LIBLWRES?= ${DESTDIR}/usr/lib/liblwres.a
1442 LIBM?= ${DESTDIR}/usr/lib/libm.a 1442 LIBM?= ${DESTDIR}/usr/lib/libm.a
1443 LIBMAGIC?= ${DESTDIR}/usr/lib/libmagic.a 1443 LIBMAGIC?= ${DESTDIR}/usr/lib/libmagic.a
1444 LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 1444 LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a
1445 LIBOBJC?= ${DESTDIR}/usr/lib/libobjc.a 1445 LIBOBJC?= ${DESTDIR}/usr/lib/libobjc.a
1446 LIBOSSAUDIO?= ${DESTDIR}/usr/lib/libossaudio.a 1446 LIBOSSAUDIO?= ${DESTDIR}/usr/lib/libossaudio.a
1447 LIBPAM?= ${DESTDIR}/usr/lib/libpam.a 1447 LIBPAM?= ${DESTDIR}/usr/lib/libpam.a
1448 LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 1448 LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a
1449 LIBPCI?= ${DESTDIR}/usr/lib/libpci.a 1449 LIBPCI?= ${DESTDIR}/usr/lib/libpci.a
1450 LIBPMC?= ${DESTDIR}/usr/lib/libpmc.a 1450 LIBPMC?= ${DESTDIR}/usr/lib/libpmc.a
1451 LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a 1451 LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a
1452 LIBPTHREAD?= ${DESTDIR}/usr/lib/libpthread.a 1452 LIBPTHREAD?= ${DESTDIR}/usr/lib/libpthread.a
1453 LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a 1453 LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
1454 LIBPUFFS?= ${DESTDIR}/usr/lib/libpuffs.a 1454 LIBPUFFS?= ${DESTDIR}/usr/lib/libpuffs.a
1455 LIBQUOTA?= ${DESTDIR}/usr/lib/libquota.a 1455 LIBQUOTA?= ${DESTDIR}/usr/lib/libquota.a
1456 LIBRADIUS?= ${DESTDIR}/usr/lib/libradius.a 1456 LIBRADIUS?= ${DESTDIR}/usr/lib/libradius.a
1457 LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a 1457 LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a
1458 LIBRMT?= ${DESTDIR}/usr/lib/librmt.a 1458 LIBRMT?= ${DESTDIR}/usr/lib/librmt.a
1459 LIBROKEN?= ${DESTDIR}/usr/lib/libroken.a 1459 LIBROKEN?= ${DESTDIR}/usr/lib/libroken.a
1460 LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 1460 LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a
1461 LIBRT?= ${DESTDIR}/usr/lib/librt.a 1461 LIBRT?= ${DESTDIR}/usr/lib/librt.a
1462 LIBRUMP?= ${DESTDIR}/usr/lib/librump.a 1462 LIBRUMP?= ${DESTDIR}/usr/lib/librump.a
1463 LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a 1463 LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
1464 LIBRUMPFS_EFS?= ${DESTDIR}/usr/lib/librumpfs_efs.a 1464 LIBRUMPFS_EFS?= ${DESTDIR}/usr/lib/librumpfs_efs.a
1465 LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a 1465 LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
1466 LIBRUMPFS_FFS?= ${DESTDIR}/usr/lib/librumpfs_ffs.a 1466 LIBRUMPFS_FFS?= ${DESTDIR}/usr/lib/librumpfs_ffs.a
1467 LIBRUMPFS_HFS?= ${DESTDIR}/usr/lib/librumpfs_hfs.a 1467 LIBRUMPFS_HFS?= ${DESTDIR}/usr/lib/librumpfs_hfs.a
1468 LIBRUMPFS_LFS?= ${DESTDIR}/usr/lib/librumpfs_lfs.a 1468 LIBRUMPFS_LFS?= ${DESTDIR}/usr/lib/librumpfs_lfs.a
1469 LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a 1469 LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
1470 LIBRUMPFS_NFS?= ${DESTDIR}/usr/lib/librumpfs_nfs.a 1470 LIBRUMPFS_NFS?= ${DESTDIR}/usr/lib/librumpfs_nfs.a
1471 LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a 1471 LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
1472 LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a 1472 LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
1473 LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a 1473 LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
1474 LIBRUMPFS_UDF?= ${DESTDIR}/usr/lib/librumpfs_udf.a 1474 LIBRUMPFS_UDF?= ${DESTDIR}/usr/lib/librumpfs_udf.a
1475 LIBRUMPFS_UFS?= ${DESTDIR}/usr/lib/librumpfs_ufs.a 1475 LIBRUMPFS_UFS?= ${DESTDIR}/usr/lib/librumpfs_ufs.a
1476 LIBRUMPUSER?= ${DESTDIR}/usr/lib/librumpuser.a 1476 LIBRUMPUSER?= ${DESTDIR}/usr/lib/librumpuser.a
1477 LIBSASLC?= ${DESTDIR}/usr/lib/libsaslc.a 1477 LIBSASLC?= ${DESTDIR}/usr/lib/libsaslc.a
1478 LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 1478 LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a
1479 LIBSL?= ${DESTDIR}/usr/lib/libsl.a 1479 LIBSL?= ${DESTDIR}/usr/lib/libsl.a
1480 LIBSQLITE3?= ${DESTDIR}/usr/lib/libsqlite3.a 1480 LIBSQLITE3?= ${DESTDIR}/usr/lib/libsqlite3.a
1481 LIBSS?= ${DESTDIR}/usr/lib/libss.a 1481 LIBSS?= ${DESTDIR}/usr/lib/libss.a
1482 LIBSSH?= ${DESTDIR}/usr/lib/libssh.a 1482 LIBSSH?= ${DESTDIR}/usr/lib/libssh.a
1483 LIBSSL?= ${DESTDIR}/usr/lib/libssl.a 1483 LIBSSL?= ${DESTDIR}/usr/lib/libssl.a
1484 LIBSSP?= ${DESTDIR}/usr/lib/libssp.a 1484 LIBSSP?= ${DESTDIR}/usr/lib/libssp.a
1485 LIBSTDCXX?= ${DESTDIR}/usr/lib/libstdc++.a 1485 LIBSTDCXX?= ${DESTDIR}/usr/lib/libstdc++.a
1486 LIBSUPCXX?= ${DESTDIR}/usr/lib/libsupc++.a 1486 LIBSUPCXX?= ${DESTDIR}/usr/lib/libsupc++.a
1487 LIBTERMINFO?= ${DESTDIR}/usr/lib/libterminfo.a 1487 LIBTERMINFO?= ${DESTDIR}/usr/lib/libterminfo.a
1488 LIBTRE?= ${DESTDIR}/usr/lib/libtre.a 1488 LIBTRE?= ${DESTDIR}/usr/lib/libtre.a
1489 LIBUSBHID?= ${DESTDIR}/usr/lib/libusbhid.a 1489 LIBUSBHID?= ${DESTDIR}/usr/lib/libusbhid.a
1490 LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 1490 LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a
1491 LIBWIND?= ${DESTDIR}/usr/lib/libwind.a 1491 LIBWIND?= ${DESTDIR}/usr/lib/libwind.a
1492 LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a 1492 LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a
1493 LIBY?= ${DESTDIR}/usr/lib/liby.a 1493 LIBY?= ${DESTDIR}/usr/lib/liby.a
1494 LIBZ?= ${DESTDIR}/usr/lib/libz.a 1494 LIBZ?= ${DESTDIR}/usr/lib/libz.a
1495 1495
1496 The following X-Windows libraries are predefined for DPADD: 1496 The following X-Windows libraries are predefined for DPADD:
1497 1497
1498 LIBFS?= ${DESTDIR}/usr/X11R7/lib/libFS.a 1498 LIBFS?= ${DESTDIR}/usr/X11R7/lib/libFS.a
1499 LIBGL?= ${DESTDIR}/usr/X11R7/lib/libGL.a 1499 LIBGL?= ${DESTDIR}/usr/X11R7/lib/libGL.a
1500 LIBGLU?= ${DESTDIR}/usr/X11R7/lib/libGLU.a 1500 LIBGLU?= ${DESTDIR}/usr/X11R7/lib/libGLU.a
1501 LIBICE?= ${DESTDIR}/usr/X11R7/lib/libICE.a 1501 LIBICE?= ${DESTDIR}/usr/X11R7/lib/libICE.a
1502 LIBSM?= ${DESTDIR}/usr/X11R7/lib/libSM.a 1502 LIBSM?= ${DESTDIR}/usr/X11R7/lib/libSM.a
1503 LIBX11?= ${DESTDIR}/usr/X11R7/lib/libX11.a 1503 LIBX11?= ${DESTDIR}/usr/X11R7/lib/libX11.a
1504 LIBXTRAP?= ${DESTDIR}/usr/X11R7/lib/libXTrap.a 1504 LIBXTRAP?= ${DESTDIR}/usr/X11R7/lib/libXTrap.a
1505 LIBXAU?= ${DESTDIR}/usr/X11R7/lib/libXau.a 1505 LIBXAU?= ${DESTDIR}/usr/X11R7/lib/libXau.a
1506 LIBXAW?= ${DESTDIR}/usr/X11R7/lib/libXaw.a 1506 LIBXAW?= ${DESTDIR}/usr/X11R7/lib/libXaw.a
1507 LIBXDMCP?= ${DESTDIR}/usr/X11R7/lib/libXdmcp.a 1507 LIBXDMCP?= ${DESTDIR}/usr/X11R7/lib/libXdmcp.a
1508 LIBXEXT?= ${DESTDIR}/usr/X11R7/lib/libXext.a 1508 LIBXEXT?= ${DESTDIR}/usr/X11R7/lib/libXext.a
1509 LIBXFONT?= ${DESTDIR}/usr/X11R7/lib/libXfont.a 1509 LIBXFONT?= ${DESTDIR}/usr/X11R7/lib/libXfont.a
1510 LIBXFT?= ${DESTDIR}/usr/X11R7/lib/libXft.a 1510 LIBXFT?= ${DESTDIR}/usr/X11R7/lib/libXft.a
1511 LIBXI?= ${DESTDIR}/usr/X11R7/lib/libXi.a 1511 LIBXI?= ${DESTDIR}/usr/X11R7/lib/libXi.a
1512 LIBXINERAMA?= ${DESTDIR}/usr/X11R7/lib/libXinerama.a 1512 LIBXINERAMA?= ${DESTDIR}/usr/X11R7/lib/libXinerama.a
1513 LIBXMU?= ${DESTDIR}/usr/X11R7/lib/libXmu.a 1513 LIBXMU?= ${DESTDIR}/usr/X11R7/lib/libXmu.a
1514 LIBXMUU?= ${DESTDIR}/usr/X11R7/lib/libXmuu.a 1514 LIBXMUU?= ${DESTDIR}/usr/X11R7/lib/libXmuu.a
1515 LIBXPM?= ${DESTDIR}/usr/X11R7/lib/libXpm.a 1515 LIBXPM?= ${DESTDIR}/usr/X11R7/lib/libXpm.a
1516 LIBXRANDR?= ${DESTDIR}/usr/X11R7/lib/libXrandr.a 1516 LIBXRANDR?= ${DESTDIR}/usr/X11R7/lib/libXrandr.a
1517 LIBXRENDER?= ${DESTDIR}/usr/X11R7/lib/libXrender.a 1517 LIBXRENDER?= ${DESTDIR}/usr/X11R7/lib/libXrender.a
1518 LIBXSS?= ${DESTDIR}/usr/X11R7/lib/libXss.a 1518 LIBXSS?= ${DESTDIR}/usr/X11R7/lib/libXss.a
1519 LIBXT?= ${DESTDIR}/usr/X11R7/lib/libXt.a 1519 LIBXT?= ${DESTDIR}/usr/X11R7/lib/libXt.a
1520 LIBXTST?= ${DESTDIR}/usr/X11R7/lib/libXtst.a 1520 LIBXTST?= ${DESTDIR}/usr/X11R7/lib/libXtst.a
1521 LIBXV?= ${DESTDIR}/usr/X11R7/lib/libXv.a 1521 LIBXV?= ${DESTDIR}/usr/X11R7/lib/libXv.a
1522 LIBXXF86DGA?= ${DESTDIR}/usr/X11R7/lib/libXxf86dga.a 1522 LIBXXF86DGA?= ${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
1523 LIBXXF86MISC?= ${DESTDIR}/usr/X11R7/lib/libXxf86misc.a 1523 LIBXXF86MISC?= ${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
1524 LIBXXF86VM?= ${DESTDIR}/usr/X11R7/lib/libXxf86vm.a 1524 LIBXXF86VM?= ${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
1525 LIBDPS?= ${DESTDIR}/usr/X11R7/lib/libdps.a 1525 LIBDPS?= ${DESTDIR}/usr/X11R7/lib/libdps.a
1526 LIBEXPAT?= ${DESTDIR}/usr/X11R7/lib/libexpat.a 1526 LIBEXPAT?= ${DESTDIR}/usr/X11R7/lib/libexpat.a
1527 LIBFNTSTUBS?= ${DESTDIR}/usr/X11R7/lib/libfntstubs.a 1527 LIBFNTSTUBS?= ${DESTDIR}/usr/X11R7/lib/libfntstubs.a
1528 LIBFONTCACHE?= ${DESTDIR}/usr/X11R7/lib/libfontcache.a 1528 LIBFONTCACHE?= ${DESTDIR}/usr/X11R7/lib/libfontcache.a
1529 LIBFONTCONFIG?= ${DESTDIR}/usr/X11R7/lib/libfontconfig.a 1529 LIBFONTCONFIG?= ${DESTDIR}/usr/X11R7/lib/libfontconfig.a
1530 LIBFONTENC?= ${DESTDIR}/usr/X11R7/lib/libfontenc.a 1530 LIBFONTENC?= ${DESTDIR}/usr/X11R7/lib/libfontenc.a
1531 LIBFREETYPE?= ${DESTDIR}/usr/X11R7/lib/libfreetype.a 1531 LIBFREETYPE?= ${DESTDIR}/usr/X11R7/lib/libfreetype.a
1532 LIBLBXUTIL?= ${DESTDIR}/usr/X11R7/lib/liblbxutil.a 1532 LIBLBXUTIL?= ${DESTDIR}/usr/X11R7/lib/liblbxutil.a
1533 LIBXKBFILE?= ${DESTDIR}/usr/X11R7/lib/libxkbfile.a 1533 LIBXKBFILE?= ${DESTDIR}/usr/X11R7/lib/libxkbfile.a
1534 1534
1535SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared 1535SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared
1536 strings, using xstr(1). Note that this will not work with 1536 strings, using xstr(1). Note that this will not work with
1537 parallel makes. 1537 parallel makes.
1538 1538
1539STRIPFLAG The flag passed to the install program to cause the binary 1539STRIPFLAG The flag passed to the install program to cause the binary
1540 to be stripped. 1540 to be stripped.
1541 1541
1542SUBDIR A list of subdirectories that should be built as well. 1542SUBDIR A list of subdirectories that should be built as well.
1543 Each of the targets will execute the same target in the 1543 Each of the targets will execute the same target in the
1544 subdirectories. 1544 subdirectories.
1545 1545
1546SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}]. 1546SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1547 These are installed exactly like programs. 1547 These are installed exactly like programs.
1548 1548
1549SCRIPTSDIR The location to install the scripts. Each script can be 1549SCRIPTSDIR The location to install the scripts. Each script can be
1550 installed to a separate path by setting SCRIPTSDIR_<script>. 1550 installed to a separate path by setting SCRIPTSDIR_<script>.
1551 1551
1552SCRIPTSNAME The name that the above program will be installed as, if 1552SCRIPTSNAME The name that the above program will be installed as, if
1553 different from ${SCRIPTS}. These can be further specialized 1553 different from ${SCRIPTS}. These can be further specialized
1554 by setting SCRIPTSNAME_<script>. 1554 by setting SCRIPTSNAME_<script>.
1555 1555
1556FILES See description of <bsd.files.mk>. 1556FILES See description of <bsd.files.mk>.
1557 1557
1558SHLINKDIR Target directory for shared linker. See description of 1558SHLINKDIR Target directory for shared linker. See description of
1559 <bsd.own.mk> for additional information about this variable. 1559 <bsd.own.mk> for additional information about this variable.
1560 1560
1561The include file <bsd.prog.mk> includes the file named "../Makefile.inc" 1561The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1562if it exists, as well as the include file <bsd.man.mk>. 1562if it exists, as well as the include file <bsd.man.mk>.
1563 1563
1564Some simple examples: 1564Some simple examples:
1565 1565
1566To build foo from foo.c with a manual page foo.1, use: 1566To build foo from foo.c with a manual page foo.1, use:
1567 1567
1568 PROG= foo 1568 PROG= foo
1569 1569
1570 .include <bsd.prog.mk> 1570 .include <bsd.prog.mk>
1571 1571
1572To build foo from foo.c with a manual page foo.2, add the line: 1572To build foo from foo.c with a manual page foo.2, add the line:
1573 1573
1574 MAN= foo.2 1574 MAN= foo.2
1575 1575
1576If foo does not have a manual page at all, add the line: 1576If foo does not have a manual page at all, add the line:
1577 1577
1578 MKMAN= no 1578 MKMAN= no
1579 1579
1580If foo has multiple source files, add the line: 1580If foo has multiple source files, add the line:
1581 1581
1582 SRCS= a.c b.c c.c d.c 1582 SRCS= a.c b.c c.c d.c
1583 1583
1584 1584
1585=-=-=-=-= bsd.rpc.mk =-=-=-=-= 1585=-=-=-=-= bsd.rpc.mk =-=-=-=-=
1586 1586
1587The include file <bsd.rpc.mk> contains a makefile fragment used to 1587The include file <bsd.rpc.mk> contains a makefile fragment used to
1588construct source files built by rpcgen. 1588construct source files built by rpcgen.
1589 1589
1590The following macros may be defined in makefiles which include 1590The following macros may be defined in makefiles which include
1591<bsd.rpc.mk> in order to control which files get built and how they 1591<bsd.rpc.mk> in order to control which files get built and how they
1592are to be built: 1592are to be built:
1593 1593
1594RPC_INCS: construct .h file from .x file 1594RPC_INCS: construct .h file from .x file
1595RPC_XDRFILES: construct _xdr.c from .x file 1595RPC_XDRFILES: construct _xdr.c from .x file
1596 (for marshalling/unmarshalling data types) 1596 (for marshalling/unmarshalling data types)
1597RPC_SVCFILES: construct _svc.c from .x file 1597RPC_SVCFILES: construct _svc.c from .x file
1598 (server-side stubs) 1598 (server-side stubs)
1599RPC_SVCFLAGS: Additional flags passed to builds of RPC_SVCFILES. 1599RPC_SVCFLAGS: Additional flags passed to builds of RPC_SVCFILES.
1600 1600
1601RPC_XDIR: Directory containing .x/.h files 1601RPC_XDIR: Directory containing .x/.h files
1602 1602
1603 1603
1604=-=-=-=-= bsd.shlib.mk =-=-=-=-= 1604=-=-=-=-= bsd.shlib.mk =-=-=-=-=
1605 1605
1606The include file <bsd.shlib.mk> computes parameters for shared library 1606The include file <bsd.shlib.mk> computes parameters for shared library
1607installation and use. It defines no targets. <bsd.own.mk> MUST be 1607installation and use. It defines no targets. <bsd.own.mk> MUST be
1608included before <bsd.shlib.mk>. 1608included before <bsd.shlib.mk>.
1609 1609
1610<bsd.own.mk> sets the following variables, if they are not already defined 1610<bsd.own.mk> sets the following variables, if they are not already defined
1611(defaults are in brackets): 1611(defaults are in brackets):
1612 1612
1613SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR} 1613SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1614 instead of ${LIBDIR} as the base path for shared library 1614 instead of ${LIBDIR} as the base path for shared library
1615 installation. [/lib] 1615 installation. [/lib]
1616 1616
1617SHLIBDIR The path to USE_SHLIBDIR shared libraries to use when building 1617SHLIBDIR The path to USE_SHLIBDIR shared libraries to use when building
1618 a program. [/lib for programs in /bin and /sbin, /usr/lib 1618 a program. [/lib for programs in /bin and /sbin, /usr/lib
1619 for all others.] 1619 for all others.]
1620 1620
1621_LIBSODIR Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no", 1621_LIBSODIR Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1622 otherwise set to ${LIBDIR} 1622 otherwise set to ${LIBDIR}
1623 1623
1624SHLINKINSTALLDIR Base path for shared linker. [/libexec] 1624SHLINKINSTALLDIR Base path for shared linker. [/libexec]
1625 1625
1626SHLINKDIR Path to use for shared linker when building a program. 1626SHLINKDIR Path to use for shared linker when building a program.
1627 [/libexec for programs in /bin and /sbin, /usr/libexec for 1627 [/libexec for programs in /bin and /sbin, /usr/libexec for
1628 all others.] 1628 all others.]
1629 1629
1630 1630
1631=-=-=-=-= bsd.subdir.mk =-=-=-=-= 1631=-=-=-=-= bsd.subdir.mk =-=-=-=-=
1632 1632
1633The include file <bsd.subdir.mk> contains the default targets for building 1633The include file <bsd.subdir.mk> contains the default targets for building
1634subdirectories. It has the same eight targets as <bsd.prog.mk>: all, 1634subdirectories. It has the same eight targets as <bsd.prog.mk>: all,
1635clean, cleandir, depend, includes, install, lint, and tags. It uses the 1635clean, cleandir, depend, includes, install, lint, and tags. It uses the
1636following variables: 1636following variables:
1637 1637
1638NOSUBDIR If this variable is defined, then the SUBDIR variable 1638NOSUBDIR If this variable is defined, then the SUBDIR variable
1639 will be ignored and subdirectories will not be processed. 1639 will be ignored and subdirectories will not be processed.
1640 1640
1641SUBDIR For all of the directories listed in ${SUBDIR}, the 1641SUBDIR For all of the directories listed in ${SUBDIR}, the
1642 specified directory will be visited and the target made. 1642 specified directory will be visited and the target made.
1643 1643
1644 As a special case, the use of a token .WAIT as an 1644 As a special case, the use of a token .WAIT as an
1645 entry in SUBDIR acts as a synchronization barrier 1645 entry in SUBDIR acts as a synchronization barrier
1646 when multiple make jobs are run; subdirs before the 1646 when multiple make jobs are run; subdirs before the
1647 .WAIT must complete before any subdirs after .WAIT are 1647 .WAIT must complete before any subdirs after .WAIT are
1648 started. See make(1) for some caveats on use of .WAIT 1648 started. See make(1) for some caveats on use of .WAIT
1649 and other special sources. 1649 and other special sources.
1650 1650
1651 1651
1652=-=-=-=-= bsd.sys.mk =-=-=-=-= 1652=-=-=-=-= bsd.sys.mk =-=-=-=-=
1653 1653
1654The include file <bsd.sys.mk> is used by <bsd.prog.mk> and 1654The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1655<bsd.lib.mk>. It contains overrides that are used when building 1655<bsd.lib.mk>. It contains overrides that are used when building
1656the NetBSD source tree. 1656the NetBSD source tree.
1657 1657
1658The following variables control how various files are compiled/built. 1658The following variables control how various files are compiled/built.
1659(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"): 1659(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1660 1660
1661AR Create, modify, and extract from archives. [ar] 1661AR Create, modify, and extract from archives. [ar]
1662 1662
1663ARFLAGS Options to ${AR}. [rl] 1663ARFLAGS Options to ${AR}. [rl]
1664 1664
1665AS Assembler. [as] 1665AS Assembler. [as]
1666 1666
1667AFLAGS Options to ${CC} when compiling or linking .s or .S 1667AFLAGS Options to ${CC} when compiling or linking .s or .S
1668 assembly source files. [] 1668 assembly source files. []
1669 1669
1670BUILDSEED GCC uses random numbers when compiling C++ code. 1670BUILDSEED GCC uses random numbers when compiling C++ code.
1671 If this option is present, seed the random number 1671 If this option is present, seed the random number
1672 generator based on the value, source file names and 1672 generator based on the value, source file names and
1673 the output file name to make builds more deterministic. 1673 the output file name to make builds more deterministic.
1674 Additional information is available in the GCC 1674 Additional information is available in the GCC
1675 documentation of -frandom-seed. 1675 documentation of -frandom-seed.
1676 1676
1677CC C compiler. [cc] 1677CC C compiler. [cc]
1678 1678
1679CFLAGS Options to ${CC}. [Usually -O or -O2] 1679CFLAGS Options to ${CC}. [Usually -O or -O2]
1680 1680
1681CPP C Pre-Processor. [cpp] 1681CPP C Pre-Processor. [cpp]
1682 1682
1683CPPFLAGS Options to ${CPP}. [] 1683CPPFLAGS Options to ${CPP}. []
1684 1684
1685CPUFLAGS Optimization flags for ${CC}. [] 1685CPUFLAGS Optimization flags for ${CC}. []
1686 1686
1687CXX C++ compiler. [c++] 1687CXX C++ compiler. [c++]
1688 1688
1689CXXFLAGS Options to ${CXX}. [${CFLAGS}] 1689CXXFLAGS Options to ${CXX}. [${CFLAGS}]
1690 1690
1691ELF2ECOFF Convert ELF-format executable to ECOFF. [elf2ecoff] 1691ELF2ECOFF Convert ELF-format executable to ECOFF. [elf2ecoff]
1692 1692
1693FC Fortran compiler. [f77] 1693FC Fortran compiler. [f77]
1694 1694
1695FFLAGS Options to {$FC}. [-O] 1695FFLAGS Options to {$FC}. [-O]
1696 1696
1697HOST_SH Shell. This must be an absolute path, because it may be 1697HOST_SH Shell. This must be an absolute path, because it may be
1698 substituted into "#!" lines in scripts. [/bin/sh] 1698 substituted into "#!" lines in scripts. [/bin/sh]
1699 1699
1700INSTALL install(1) command. [install] 1700INSTALL install(1) command. [install]
1701 1701
1702LEX Lexical analyzer. [lex] 1702LEX Lexical analyzer. [lex]
1703 1703
1704LFLAGS Options to ${LEX}. [] 1704LFLAGS Options to ${LEX}. []
1705 1705
1706LPREFIX Symbol prefix for ${LEX} (see -P option in lex(1)) [yy] 1706LPREFIX Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1707 1707
1708LD Linker. [ld] 1708LD Linker. [ld]
1709 1709
1710LDFLAGS Options to ${CC} during the link process. [] 1710LDFLAGS Options to ${CC} during the link process. []
1711 1711
1712LINT C program verifier. [lint] 1712LINT C program verifier. [lint]
1713 1713
1714LINTFLAGS Options to ${LINT}. [-chapbxzFS] 1714LINTFLAGS Options to ${LINT}. [-chapbxzFS]
1715 1715
1716LORDER List dependencies for object files. [lorder] 1716LORDER List dependencies for object files. [lorder]
1717 1717
1718MAKE make(1). [make] 1718MAKE make(1). [make]
1719 1719
1720MKDEP Construct Makefile dependency list. [mkdep] 1720MKDEP Construct Makefile dependency list. [mkdep]
1721 1721
1722NM List symbols from object files. [nm] 1722NM List symbols from object files. [nm]
1723 1723
1724PC Pascal compiler. [pc] (Not present) 1724PC Pascal compiler. [pc] (Not present)
1725 1725
1726PFLAGS Options to ${PC}. [] 1726PFLAGS Options to ${PC}. []
1727 1727
1728OBJC Objective C compiler. [${CC}] 1728OBJC Objective C compiler. [${CC}]
1729 1729
1730OBJCFLAGS Options to ${OBJC}. [${CFLAGS}] 1730OBJCFLAGS Options to ${OBJC}. [${CFLAGS}]
1731 1731
1732OBJCOPY Copy and translate object files. [objcopy] 1732OBJCOPY Copy and translate object files. [objcopy]
1733 1733
 1734OBJCOPYLIBFLAGS Flags to pass to objcopy when library objects are
 1735 being built. [${.TARGET} =~ "*.po" ? -X : -x]
 1736
1734OBJDUMP Display information from object files. [objdump] 1737OBJDUMP Display information from object files. [objdump]
1735 1738
1736RANLIB Generate index to archive. [ranlib] 1739RANLIB Generate index to archive. [ranlib]
1737 1740
1738SIZE List section sizes and total size. [size] 1741SIZE List section sizes and total size. [size]
1739 1742
1740STRIP Discard symbols from object files. [strip] 1743STRIP Discard symbols from object files. [strip]
1741 1744
1742TSORT Topological sort of a directed graph. [tsort -q] 1745TSORT Topological sort of a directed graph. [tsort -q]
1743 1746
1744YACC LALR(1) parser generator. [yacc] 1747YACC LALR(1) parser generator. [yacc]
1745 1748
1746YFLAGS Options to ${YACC}. [] 1749YFLAGS Options to ${YACC}. []
1747 1750
1748YHEADER If defined, add "-d" to YFLAGS, and add dependencies 1751YHEADER If defined, add "-d" to YFLAGS, and add dependencies
1749 from <file>.y to <file>.h and <file>.c, and add 1752 from <file>.y to <file>.h and <file>.c, and add
1750 <foo>.h to CLEANFILES. 1753 <foo>.h to CLEANFILES.
1751 1754
1752YPREFIX If defined, add "-p ${YPREFIX}" to YFLAGS. 1755YPREFIX If defined, add "-p ${YPREFIX}" to YFLAGS.
1753 1756
1754 1757
1755Other variables of note (incomplete list): 1758Other variables of note (incomplete list):
1756 1759
1757NOGCCERROR If defined, prevents passing certain ${CFLAGS} to GCC 1760NOGCCERROR If defined, prevents passing certain ${CFLAGS} to GCC
1758 that cause warnings to be fatal, such as: 1761 that cause warnings to be fatal, such as:
1759 -Werror -Wa,--fatal-warnings 1762 -Werror -Wa,--fatal-warnings
1760 (The latter being for as(1).) 1763 (The latter being for as(1).)
1761 1764
1762NOCLANGERROR If defined and clang is used as C compiler, -Werror is not 1765NOCLANGERROR If defined and clang is used as C compiler, -Werror is not
1763 passed to it. 1766 passed to it.
1764 1767
1765WARNS Crank up GCC warning options; the distinct levels are: 1768WARNS Crank up GCC warning options; the distinct levels are:
1766 WARNS=1 1769 WARNS=1
1767 WARNS=2 1770 WARNS=2
1768 WARNS=3 1771 WARNS=3
1769 WARNS=4 1772 WARNS=4
1770 1773
1771=-=-=-=-= bsd.x11.mk =-=-=-=-= 1774=-=-=-=-= bsd.x11.mk =-=-=-=-=
1772 1775
1773The include file <bsd.x11.mk> contains parameters and targets for 1776The include file <bsd.x11.mk> contains parameters and targets for
1774cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}. 1777cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
1775It should be included after the general Makefile contents but before 1778It should be included after the general Makefile contents but before
1776the include files such as <bsd.prog.mk> and <bsd.lib.mk>. 1779the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
1777 1780
1778It provides the following targets: 1781It provides the following targets:
1779 .man.1 .man.3 .man.4 .man.5 .man.7: 1782 .man.1 .man.3 .man.4 .man.5 .man.7:
1780 If ${MAN} or ${PROG} is set and ${MKMAN} != "no", 1783 If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1781 these rules convert from X11's manual page source 1784 these rules convert from X11's manual page source
1782 into an mdoc.old source file. 1785 into an mdoc.old source file.
1783 1786
1784It sets the following variables: 1787It sets the following variables:
1785 1788
1786BINDIR Set to ${X11BINDIR}. 1789BINDIR Set to ${X11BINDIR}.
1787 To override, define after including <bsd.x11.mk> 1790 To override, define after including <bsd.x11.mk>
1788 1791
1789LIBDIR Set to ${X11USRLIBDIR}. 1792LIBDIR Set to ${X11USRLIBDIR}.
1790 To override, define after including <bsd.x11.mk> 1793 To override, define after including <bsd.x11.mk>
1791 1794
1792MANDIR Set to ${X11MANDIR}. 1795MANDIR Set to ${X11MANDIR}.
1793 To override, define after including <bsd.x11.mk> 1796 To override, define after including <bsd.x11.mk>
1794 1797
1795CPPFLAGS Appended with definitions to include from 1798CPPFLAGS Appended with definitions to include from
1796 ${DESTDIR}${X11INCDIR} 1799 ${DESTDIR}${X11INCDIR}
1797 1800
1798LDFLAGS Appended with definitions to link from 1801LDFLAGS Appended with definitions to link from
1799 ${DESTDIR}${X11USRLIBDIR} 1802 ${DESTDIR}${X11USRLIBDIR}
1800 1803
1801X11FLAGS.CONNECTION Equivalent to X11's CONNECTION_FLAGS. 1804X11FLAGS.CONNECTION Equivalent to X11's CONNECTION_FLAGS.
1802 1805
1803X11FLAGS.EXTENSION Equivalent to X11's EXT_DEFINES. 1806X11FLAGS.EXTENSION Equivalent to X11's EXT_DEFINES.
1804 1807
1805X11FLAGS.LOADABLE Equivalent to X11's LOADABLE. 1808X11FLAGS.LOADABLE Equivalent to X11's LOADABLE.
1806 1809
1807X11FLAGS.OS_DEFINES Equivalent to X11's OS_DEFINES. 1810X11FLAGS.OS_DEFINES Equivalent to X11's OS_DEFINES.
1808 1811
1809X11FLAGS.SERVER Equivalent to X11's ServerDefines. 1812X11FLAGS.SERVER Equivalent to X11's ServerDefines.
1810 1813
1811X11FLAGS.THREADLIB Equivalent to X11's THREADS_DEFINES for libraries. 1814X11FLAGS.THREADLIB Equivalent to X11's THREADS_DEFINES for libraries.
1812 1815
1813X11FLAGS.THREADS Equivalent to X11's THREADS_DEFINES. 1816X11FLAGS.THREADS Equivalent to X11's THREADS_DEFINES.
1814 1817
1815X11FLAGS.VERSION cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION. 1818X11FLAGS.VERSION cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1816 1819
1817X11FLAGS.DIX Equivalent to X11's DIX_DEFINES. 1820X11FLAGS.DIX Equivalent to X11's DIX_DEFINES.
1818 1821
1819X11TOOL_UNXCOMM Commandline to convert `XCOMM' comments to `#' 1822X11TOOL_UNXCOMM Commandline to convert `XCOMM' comments to `#'
1820 1823
1821It uses the following variables: 1824It uses the following variables:
1822 1825
1823APPDEFS List of app-default files to install. 1826APPDEFS List of app-default files to install.
1824 1827
1825CPPSCRIPTS List of files/scripts to run through cpp(1) 1828CPPSCRIPTS List of files/scripts to run through cpp(1)
1826 and then ${X11TOOL_UNXCOMM}. The source files 1829 and then ${X11TOOL_UNXCOMM}. The source files
1827 have a `.cpp' suffix, the generated files do not. 1830 have a `.cpp' suffix, the generated files do not.
1828 1831
1829CPPSCRIPTFLAGS Additional flags to cpp(1) when building CPPSCRIPTS. 1832CPPSCRIPTFLAGS Additional flags to cpp(1) when building CPPSCRIPTS.
1830 1833
1831CPPSCRIPTFLAGS_<fn> Additional flags to cpp(1) when building CPPSCRIPT <fn>. 1834CPPSCRIPTFLAGS_<fn> Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1832 1835
1833 1836
1834=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1837=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

cvs diff -r1.318 -r1.319 src/share/mk/bsd.lib.mk (switch to unified diff)

--- src/share/mk/bsd.lib.mk 2011/10/07 09:15:22 1.318
+++ src/share/mk/bsd.lib.mk 2012/01/28 21:32:14 1.319
@@ -1,793 +1,793 @@ @@ -1,793 +1,793 @@
1# $NetBSD: bsd.lib.mk,v 1.318 2011/10/07 09:15:22 mrg Exp $ 1# $NetBSD: bsd.lib.mk,v 1.319 2012/01/28 21:32:14 christos Exp $
2# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 2# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
3 3
4.include <bsd.init.mk> 4.include <bsd.init.mk>
5.include <bsd.shlib.mk> 5.include <bsd.shlib.mk>
6.include <bsd.gcc.mk> 6.include <bsd.gcc.mk>
7# Pull in <bsd.sys.mk> here so we can override its .c.o rule 7# Pull in <bsd.sys.mk> here so we can override its .c.o rule
8.include <bsd.sys.mk> 8.include <bsd.sys.mk>
9 9
10LIBISMODULE?= no 10LIBISMODULE?= no
11LIBISPRIVATE?= no 11LIBISPRIVATE?= no
12LIBISCXX?= no 12LIBISCXX?= no
13 13
14_LIB_PREFIX= lib 14_LIB_PREFIX= lib
15 15
16.if ${LIBISMODULE} != "no" 16.if ${LIBISMODULE} != "no"
17_LIB_PREFIX= # empty 17_LIB_PREFIX= # empty
18MKDEBUGLIB:= no 18MKDEBUGLIB:= no
19MKLINT:= no 19MKLINT:= no
20MKPICINSTALL:= no 20MKPICINSTALL:= no
21MKPROFILE:= no 21MKPROFILE:= no
22MKSTATICLIB:= no 22MKSTATICLIB:= no
23.endif 23.endif
24 24
25.if ${LIBISPRIVATE} != "no" 25.if ${LIBISPRIVATE} != "no"
26MKDEBUGLIB:= no 26MKDEBUGLIB:= no
27MKLINT:= no 27MKLINT:= no
28MKPICINSTALL:= no 28MKPICINSTALL:= no
29. if defined(NOSTATICLIB) && ${MKPICLIB} != "no" 29. if defined(NOSTATICLIB) && ${MKPICLIB} != "no"
30MKSTATICLIB:= no 30MKSTATICLIB:= no
31. else 31. else
32MKPIC:= no 32MKPIC:= no
33. endif 33. endif
34MKPROFILE:= no 34MKPROFILE:= no
35.endif 35.endif
36 36
37##### Basic targets 37##### Basic targets
38.PHONY: checkver libinstall 38.PHONY: checkver libinstall
39realinstall: checkver libinstall 39realinstall: checkver libinstall
40 40
41##### LIB specific flags. 41##### LIB specific flags.
42# XXX: This is needed for programs that link with .a libraries 42# XXX: This is needed for programs that link with .a libraries
43# Perhaps a more correct solution is to always generate _pic.a 43# Perhaps a more correct solution is to always generate _pic.a
44# files or always have a shared library. 44# files or always have a shared library.
45.if defined(MKPIE) && (${MKPIE} != "no") 45.if defined(MKPIE) && (${MKPIE} != "no")
46CFLAGS+= ${PIE_CFLAGS} 46CFLAGS+= ${PIE_CFLAGS}
47AFLAGS+= ${PIE_AFLAGS} 47AFLAGS+= ${PIE_AFLAGS}
48.endif 48.endif
49 49
50##### Libraries that this may depend upon. 50##### Libraries that this may depend upon.
51.if defined(LIBDPLIBS) && ${MKPIC} != "no" # { 51.if defined(LIBDPLIBS) && ${MKPIC} != "no" # {
52.for _lib _dir in ${LIBDPLIBS} 52.for _lib _dir in ${LIBDPLIBS}
53.if !defined(LIBDO.${_lib}) 53.if !defined(LIBDO.${_lib})
54LIBDO.${_lib}!= cd "${_dir}" && ${PRINTOBJDIR} 54LIBDO.${_lib}!= cd "${_dir}" && ${PRINTOBJDIR}
55.MAKEOVERRIDES+=LIBDO.${_lib} 55.MAKEOVERRIDES+=LIBDO.${_lib}
56.endif 56.endif
57LDADD+= -L${LIBDO.${_lib}} -l${_lib} 57LDADD+= -L${LIBDO.${_lib}} -l${_lib}
58DPADD+= ${LIBDO.${_lib}}/lib${_lib}.so 58DPADD+= ${LIBDO.${_lib}}/lib${_lib}.so
59.endfor 59.endfor
60.endif # } 60.endif # }
61 61
62##### Build and install rules 62##### Build and install rules
63MKDEP_SUFFIXES?= .o .po .pico .go .ln 63MKDEP_SUFFIXES?= .o .po .pico .go .ln
64 64
65.if !defined(SHLIB_MAJOR) && exists(${SHLIB_VERSION_FILE}) # { 65.if !defined(SHLIB_MAJOR) && exists(${SHLIB_VERSION_FILE}) # {
66SHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major 66SHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major
67SHLIB_MINOR != . ${SHLIB_VERSION_FILE} ; echo $$minor 67SHLIB_MINOR != . ${SHLIB_VERSION_FILE} ; echo $$minor
68SHLIB_TEENY != . ${SHLIB_VERSION_FILE} ; echo $$teeny 68SHLIB_TEENY != . ${SHLIB_VERSION_FILE} ; echo $$teeny
69 69
70DPADD+= ${SHLIB_VERSION_FILE} 70DPADD+= ${SHLIB_VERSION_FILE}
71 71
72# Check for higher installed library versions. 72# Check for higher installed library versions.
73.if !defined(NOCHECKVER) && !defined(NOCHECKVER_${LIB}) && \ 73.if !defined(NOCHECKVER) && !defined(NOCHECKVER_${LIB}) && \
74 exists(${NETBSDSRCDIR}/lib/checkver) 74 exists(${NETBSDSRCDIR}/lib/checkver)
75checkver: 75checkver:
76 @(cd "${.CURDIR}" && \ 76 @(cd "${.CURDIR}" && \
77 HOST_SH=${HOST_SH:Q} AWK=${TOOL_AWK:Q} \ 77 HOST_SH=${HOST_SH:Q} AWK=${TOOL_AWK:Q} \
78 ${HOST_SH} ${NETBSDSRCDIR}/lib/checkver -v ${SHLIB_VERSION_FILE} \ 78 ${HOST_SH} ${NETBSDSRCDIR}/lib/checkver -v ${SHLIB_VERSION_FILE} \
79 -d ${DESTDIR}${_LIBSODIR} ${LIB}) 79 -d ${DESTDIR}${_LIBSODIR} ${LIB})
80.endif 80.endif
81.endif # } 81.endif # }
82 82
83.if !target(checkver) 83.if !target(checkver)
84checkver: 84checkver:
85.endif 85.endif
86 86
87print-shlib-major: 87print-shlib-major:
88.if defined(SHLIB_MAJOR) && ${MKPIC} != "no" 88.if defined(SHLIB_MAJOR) && ${MKPIC} != "no"
89 @echo ${SHLIB_MAJOR} 89 @echo ${SHLIB_MAJOR}
90.else 90.else
91 @false 91 @false
92.endif 92.endif
93 93
94print-shlib-minor: 94print-shlib-minor:
95.if defined(SHLIB_MINOR) && ${MKPIC} != "no" 95.if defined(SHLIB_MINOR) && ${MKPIC} != "no"
96 @echo ${SHLIB_MINOR} 96 @echo ${SHLIB_MINOR}
97.else 97.else
98 @false 98 @false
99.endif 99.endif
100 100
101print-shlib-teeny: 101print-shlib-teeny:
102.if defined(SHLIB_TEENY) && ${MKPIC} != "no" 102.if defined(SHLIB_TEENY) && ${MKPIC} != "no"
103 @echo ${SHLIB_TEENY} 103 @echo ${SHLIB_TEENY}
104.else 104.else
105 @false 105 @false
106.endif 106.endif
107 107
108.if defined(SHLIB_MAJOR) && !empty(SHLIB_MAJOR) # { 108.if defined(SHLIB_MAJOR) && !empty(SHLIB_MAJOR) # {
109.if defined(SHLIB_MINOR) && !empty(SHLIB_MINOR) 109.if defined(SHLIB_MINOR) && !empty(SHLIB_MINOR)
110.if defined(SHLIB_TEENY) && !empty(SHLIB_TEENY) 110.if defined(SHLIB_TEENY) && !empty(SHLIB_TEENY)
111SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}.${SHLIB_TEENY} 111SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}.${SHLIB_TEENY}
112.else 112.else
113SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} 113SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}
114.endif 114.endif
115.else 115.else
116SHLIB_FULLVERSION=${SHLIB_MAJOR} 116SHLIB_FULLVERSION=${SHLIB_MAJOR}
117.endif 117.endif
118.endif # } 118.endif # }
119 119
120# add additional suffixes not exported. 120# add additional suffixes not exported.
121# .po is used for profiling object files. 121# .po is used for profiling object files.
122# .pico is used for PIC object files. 122# .pico is used for PIC object files.
123.SUFFIXES: .out .a .ln .pico .po .go .o .s .S .c .cc .cpp .cxx .C .m .F .f .r .y .l .cl .p .h 123.SUFFIXES: .out .a .ln .pico .po .go .o .s .S .c .cc .cpp .cxx .C .m .F .f .r .y .l .cl .p .h
124.SUFFIXES: .sh .m4 .m 124.SUFFIXES: .sh .m4 .m
125 125
126 126
127# Set PICFLAGS to cc flags for producing position-independent code, 127# Set PICFLAGS to cc flags for producing position-independent code,
128# if not already set. Includes -DPIC, if required. 128# if not already set. Includes -DPIC, if required.
129 129
130# Data-driven table using make variables to control how shared libraries 130# Data-driven table using make variables to control how shared libraries
131# are built for different platforms and object formats. 131# are built for different platforms and object formats.
132# SHLIB_MAJOR, SHLIB_MINOR, SHLIB_TEENY: Major, minor, and teeny version 132# SHLIB_MAJOR, SHLIB_MINOR, SHLIB_TEENY: Major, minor, and teeny version
133# numbers of shared library 133# numbers of shared library
134# SHLIB_SOVERSION: version number to be compiled into a shared library 134# SHLIB_SOVERSION: version number to be compiled into a shared library
135# via -soname. Usualy ${SHLIB_MAJOR} on ELF. 135# via -soname. Usualy ${SHLIB_MAJOR} on ELF.
136# NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR} 136# NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR}
137# [.${SHLIB_TEENY}]] 137# [.${SHLIB_TEENY}]]
138# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library. 138# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library.
139# with ELF, also set shared-lib version for ld.so. 139# with ELF, also set shared-lib version for ld.so.
140# SHLIB_LDSTARTFILE: support .o file, call C++ file-level constructors 140# SHLIB_LDSTARTFILE: support .o file, call C++ file-level constructors
141# SHLIB_LDENDFILE: support .o file, call C++ file-level destructors 141# SHLIB_LDENDFILE: support .o file, call C++ file-level destructors
142# FPICFLAGS: flags for ${FC} to compile .[fF] files to .pico objects. 142# FPICFLAGS: flags for ${FC} to compile .[fF] files to .pico objects.
143# CPPPICFLAGS: flags for ${CPP} to preprocess .[sS] files for ${AS} 143# CPPPICFLAGS: flags for ${CPP} to preprocess .[sS] files for ${AS}
144# CPICFLAGS: flags for ${CC} to compile .[cC] files to pic objects. 144# CPICFLAGS: flags for ${CC} to compile .[cC] files to pic objects.
145# CSHLIBFLAGS: flags for ${CC} to compile .[cC] files to .pico objects. 145# CSHLIBFLAGS: flags for ${CC} to compile .[cC] files to .pico objects.
146# (usually includes ${CPICFLAGS}) 146# (usually includes ${CPICFLAGS})
147# CAPICFLAGS: flags for ${CC} to compiling .[Ss] files 147# CAPICFLAGS: flags for ${CC} to compiling .[Ss] files
148# (usually just ${CPPPICFLAGS} ${CPICFLAGS}) 148# (usually just ${CPPPICFLAGS} ${CPICFLAGS})
149# APICFLAGS: flags for ${AS} to assemble .[sS] to .pico objects. 149# APICFLAGS: flags for ${AS} to assemble .[sS] to .pico objects.
150 150
151.if ${MACHINE_ARCH} == "alpha" # { 151.if ${MACHINE_ARCH} == "alpha" # {
152 152
153FPICFLAGS ?= -fPIC 153FPICFLAGS ?= -fPIC
154CPICFLAGS ?= -fPIC -DPIC 154CPICFLAGS ?= -fPIC -DPIC
155CPPPICFLAGS?= -DPIC 155CPPPICFLAGS?= -DPIC
156CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS} 156CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
157APICFLAGS ?= 157APICFLAGS ?=
158 158
159.elif (${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64") # } { 159.elif (${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64") # } {
160 160
161# If you use -fPIC you need to define BIGPIC to turn on 32-bit 161# If you use -fPIC you need to define BIGPIC to turn on 32-bit
162# relocations in asm code 162# relocations in asm code
163FPICFLAGS ?= -fPIC 163FPICFLAGS ?= -fPIC
164CPICFLAGS ?= -fPIC -DPIC 164CPICFLAGS ?= -fPIC -DPIC
165CPPPICFLAGS?= -DPIC -DBIGPIC 165CPPPICFLAGS?= -DPIC -DBIGPIC
166CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS} 166CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
167APICFLAGS ?= -KPIC 167APICFLAGS ?= -KPIC
168 168
169.else # } { 169.else # } {
170 170
171# Platform-independent flags for NetBSD shared libraries 171# Platform-independent flags for NetBSD shared libraries
172SHLIB_SOVERSION=${SHLIB_FULLVERSION} 172SHLIB_SOVERSION=${SHLIB_FULLVERSION}
173SHLIB_SHFLAGS= 173SHLIB_SHFLAGS=
174FPICFLAGS ?= -fPIC 174FPICFLAGS ?= -fPIC
175CPICFLAGS?= -fPIC -DPIC 175CPICFLAGS?= -fPIC -DPIC
176CPPPICFLAGS?= -DPIC 176CPPPICFLAGS?= -DPIC
177CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS} 177CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
178APICFLAGS?= -k 178APICFLAGS?= -k
179 179
180.endif # } 180.endif # }
181 181
182.if ${MKPICLIB} != "no" 182.if ${MKPICLIB} != "no"
183CSHLIBFLAGS+= ${CPICFLAGS} 183CSHLIBFLAGS+= ${CPICFLAGS}
184.endif 184.endif
185 185
186.if defined(CSHLIBFLAGS) && !empty(CSHLIBFLAGS) 186.if defined(CSHLIBFLAGS) && !empty(CSHLIBFLAGS)
187MKSHLIBOBJS= yes 187MKSHLIBOBJS= yes
188.else 188.else
189MKSHLIBOBJS= no 189MKSHLIBOBJS= no
190.endif 190.endif
191 191
192# Platform-independent linker flags for ELF shared libraries 192# Platform-independent linker flags for ELF shared libraries
193SHLIB_SOVERSION= ${SHLIB_MAJOR} 193SHLIB_SOVERSION= ${SHLIB_MAJOR}
194SHLIB_SHFLAGS= -Wl,-soname,${_LIB_PREFIX}${LIB}.so.${SHLIB_SOVERSION} 194SHLIB_SHFLAGS= -Wl,-soname,${_LIB_PREFIX}${LIB}.so.${SHLIB_SOVERSION}
195SHLIB_SHFLAGS+= -Wl,--warn-shared-textrel 195SHLIB_SHFLAGS+= -Wl,--warn-shared-textrel
196SHLIB_LDSTARTFILE?= ${_GCC_CRTDIR}/crti.o ${_GCC_CRTBEGINS} 196SHLIB_LDSTARTFILE?= ${_GCC_CRTDIR}/crti.o ${_GCC_CRTBEGINS}
197SHLIB_LDENDFILE?= ${_GCC_CRTENDS} ${_GCC_CRTDIR}/crtn.o 197SHLIB_LDENDFILE?= ${_GCC_CRTENDS} ${_GCC_CRTDIR}/crtn.o
198 198
199CFLAGS+= ${COPTS} 199CFLAGS+= ${COPTS}
200OBJCFLAGS+= ${OBJCOPTS} 200OBJCFLAGS+= ${OBJCOPTS}
201AFLAGS+= ${COPTS} 201AFLAGS+= ${COPTS}
202FFLAGS+= ${FOPTS} 202FFLAGS+= ${FOPTS}
203 203
204.if defined(CTFCONVERT) 204.if defined(CTFCONVERT)
205.if defined(CFLAGS) && !empty(CFLAGS:M*-g*) 205.if defined(CFLAGS) && !empty(CFLAGS:M*-g*)
206CTFFLAGS+= -g 206CTFFLAGS+= -g
207.endif 207.endif
208.endif 208.endif
209 209
210.c.o: 210.c.o:
211 ${_MKTARGET_COMPILE} 211 ${_MKTARGET_COMPILE}
212 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 212 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
213.if defined(CTFCONVERT) 213.if defined(CTFCONVERT)
214 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 214 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
215.endif 215.endif
216.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 216.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
217 ${OBJCOPY} -x ${.TARGET} 217 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
218.endif 218.endif
219 219
220.c.po: 220.c.po:
221 ${_MKTARGET_COMPILE} 221 ${_MKTARGET_COMPILE}
222 ${COMPILE.c} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET} 222 ${COMPILE.c} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET}
223.if defined(CTFCONVERT) 223.if defined(CTFCONVERT)
224 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 224 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
225.endif 225.endif
226.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 226.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
227 ${OBJCOPY} -X ${.TARGET} 227 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
228.endif 228.endif
229 229
230.c.go: 230.c.go:
231 ${_MKTARGET_COMPILE} 231 ${_MKTARGET_COMPILE}
232 ${COMPILE.c} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET} 232 ${COMPILE.c} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET}
233 233
234.c.pico: 234.c.pico:
235 ${_MKTARGET_COMPILE} 235 ${_MKTARGET_COMPILE}
236 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${CSHLIBFLAGS} ${.IMPSRC} -o ${.TARGET} 236 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${CSHLIBFLAGS} ${.IMPSRC} -o ${.TARGET}
237.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 237.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
238 ${OBJCOPY} -x ${.TARGET} 238 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
239.endif 239.endif
240 240
241.cc.o .cpp.o .cxx.o .C.o: 241.cc.o .cpp.o .cxx.o .C.o:
242 ${_MKTARGET_COMPILE} 242 ${_MKTARGET_COMPILE}
243 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 243 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
244.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 244.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
245 ${OBJCOPY} -x ${.TARGET} 245 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
246.endif 246.endif
247 247
248.cc.po .cpp.po .cxx.po .C.po: 248.cc.po .cpp.po .cxx.po .C.po:
249 ${_MKTARGET_COMPILE} 249 ${_MKTARGET_COMPILE}
250 ${COMPILE.cc} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET} 250 ${COMPILE.cc} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -pg ${.IMPSRC} -o ${.TARGET}
251.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 251.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
252 ${OBJCOPY} -X ${.TARGET} 252 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
253.endif 253.endif
254 254
255.cc.go .cpp.go .cxx.go .C.go: 255.cc.go .cpp.go .cxx.go .C.go:
256 ${_MKTARGET_COMPILE} 256 ${_MKTARGET_COMPILE}
257 ${COMPILE.cc} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET} 257 ${COMPILE.cc} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET}
258 258
259.cc.pico .cpp.pico .cxx.pico .C.pico: 259.cc.pico .cpp.pico .cxx.pico .C.pico:
260 ${_MKTARGET_COMPILE} 260 ${_MKTARGET_COMPILE}
261 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${CSHLIBFLAGS} ${.IMPSRC} -o ${.TARGET} 261 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${CSHLIBFLAGS} ${.IMPSRC} -o ${.TARGET}
262.if !defined(CFLAGS) || empty(CFLAGS:M*-g*) 262.if !defined(CFLAGS) || empty(CFLAGS:M*-g*)
263 ${OBJCOPY} -x ${.TARGET} 263 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
264.endif 264.endif
265 265
266.f.o: 266.f.o:
267 ${_MKTARGET_COMPILE} 267 ${_MKTARGET_COMPILE}
268 ${COMPILE.f} ${.IMPSRC} -o ${.TARGET} 268 ${COMPILE.f} ${.IMPSRC} -o ${.TARGET}
269.if defined(CTFCONVERT) 269.if defined(CTFCONVERT)
270 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 270 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
271.endif 271.endif
272.if !defined(FOPTS) || empty(FOPTS:M*-g*) 272.if !defined(FOPTS) || empty(FOPTS:M*-g*)
273 ${OBJCOPY} -x ${.TARGET} 273 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
274.endif 274.endif
275 275
276.f.po: 276.f.po:
277 ${_MKTARGET_COMPILE} 277 ${_MKTARGET_COMPILE}
278 ${COMPILE.f} ${PROFFLAGS} -pg ${.IMPSRC} -o ${.TARGET} 278 ${COMPILE.f} ${PROFFLAGS} -pg ${.IMPSRC} -o ${.TARGET}
279.if defined(CTFCONVERT) 279.if defined(CTFCONVERT)
280 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 280 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
281.endif 281.endif
282.if !defined(FOPTS) || empty(FOPTS:M*-g*) 282.if !defined(FOPTS) || empty(FOPTS:M*-g*)
283 ${OBJCOPY} -X ${.TARGET} 283 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
284.endif 284.endif
285 285
286.f.go: 286.f.go:
287 ${_MKTARGET_COMPILE} 287 ${_MKTARGET_COMPILE}
288 ${COMPILE.f} ${DEBUGFLAGS} -g ${.IMPSRC} -o ${.TARGET} 288 ${COMPILE.f} ${DEBUGFLAGS} -g ${.IMPSRC} -o ${.TARGET}
289 289
290.f.pico: 290.f.pico:
291 ${_MKTARGET_COMPILE} 291 ${_MKTARGET_COMPILE}
292 ${COMPILE.f} ${FPICFLAGS} ${.IMPSRC} -o ${.TARGET} 292 ${COMPILE.f} ${FPICFLAGS} ${.IMPSRC} -o ${.TARGET}
293.if !defined(FOPTS) || empty(FOPTS:M*-g*) 293.if !defined(FOPTS) || empty(FOPTS:M*-g*)
294 ${OBJCOPY} -x ${.TARGET} 294 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
295.endif 295.endif
296 296
297.f.ln: 297.f.ln:
298 ${_MKTARGET_COMPILE} 298 ${_MKTARGET_COMPILE}
299 @echo Skipping lint for Fortran libraries. 299 @echo Skipping lint for Fortran libraries.
300 300
301.m.o: 301.m.o:
302 ${_MKTARGET_COMPILE} 302 ${_MKTARGET_COMPILE}
303 ${COMPILE.m} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 303 ${COMPILE.m} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
304.if defined(CTFCONVERT) 304.if defined(CTFCONVERT)
305 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 305 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
306.endif 306.endif
307.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*) 307.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*)
308 ${OBJCOPY} -x ${.TARGET} 308 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
309.endif 309.endif
310 310
311.m.po: 311.m.po:
312 ${_MKTARGET_COMPILE} 312 ${_MKTARGET_COMPILE}
313 ${COMPILE.m} ${PROFFLAGS} -pg ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 313 ${COMPILE.m} ${PROFFLAGS} -pg ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
314.if defined(CTFCONVERT) 314.if defined(CTFCONVERT)
315 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 315 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
316.endif 316.endif
317.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*) 317.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*)
318 ${OBJCOPY} -X ${.TARGET} 318 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
319.endif 319.endif
320 320
321.m.go: 321.m.go:
322 ${_MKTARGET_COMPILE} 322 ${_MKTARGET_COMPILE}
323 ${COMPILE.m} ${DEBUGFLAGS} -g ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 323 ${COMPILE.m} ${DEBUGFLAGS} -g ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
324.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*) 324.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*)
325 ${OBJCOPY} -X ${.TARGET} 325 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
326.endif 326.endif
327 327
328.m.pico: 328.m.pico:
329 ${_MKTARGET_COMPILE} 329 ${_MKTARGET_COMPILE}
330 ${COMPILE.m} ${CSHLIBFLAGS} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 330 ${COMPILE.m} ${CSHLIBFLAGS} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
331.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*) 331.if !defined(OBJCFLAGS) || empty(OBJCFLAGS:M*-g*)
332 ${OBJCOPY} -x ${.TARGET} 332 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
333.endif 333.endif
334 334
335.s.o: 335.s.o:
336 ${_MKTARGET_COMPILE} 336 ${_MKTARGET_COMPILE}
337 ${COMPILE.s} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 337 ${COMPILE.s} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
338.if defined(CTFCONVERT) 338.if defined(CTFCONVERT)
339 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 339 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
340.endif 340.endif
341 ${OBJCOPY} -x ${.TARGET} 341 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
342 342
343.S.o: 343.S.o:
344 ${_MKTARGET_COMPILE} 344 ${_MKTARGET_COMPILE}
345 ${COMPILE.S} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 345 ${COMPILE.S} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
346.if defined(CTFCONVERT) 346.if defined(CTFCONVERT)
347 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 347 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
348.endif 348.endif
349 ${OBJCOPY} -x ${.TARGET} 349 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
350 350
351.s.po: 351.s.po:
352 ${_MKTARGET_COMPILE} 352 ${_MKTARGET_COMPILE}
353 ${COMPILE.s} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 353 ${COMPILE.s} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
354.if defined(CTFCONVERT) 354.if defined(CTFCONVERT)
355 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 355 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
356.endif 356.endif
357 ${OBJCOPY} -X ${.TARGET} 357 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
358 358
359.S.po: 359.S.po:
360 ${_MKTARGET_COMPILE} 360 ${_MKTARGET_COMPILE}
361 ${COMPILE.S} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 361 ${COMPILE.S} ${PROFFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
362.if defined(CTFCONVERT) 362.if defined(CTFCONVERT)
363 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 363 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
364.endif 364.endif
365 ${OBJCOPY} -X ${.TARGET} 365 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
366 366
367.s.go: 367.s.go:
368 ${_MKTARGET_COMPILE} 368 ${_MKTARGET_COMPILE}
369 ${COMPILE.s} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 369 ${COMPILE.s} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
370 370
371.S.go: 371.S.go:
372 ${_MKTARGET_COMPILE} 372 ${_MKTARGET_COMPILE}
373 ${COMPILE.S} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 373 ${COMPILE.S} ${DEBUGFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
374 374
375.s.pico: 375.s.pico:
376 ${_MKTARGET_COMPILE} 376 ${_MKTARGET_COMPILE}
377 ${COMPILE.s} ${CAPICFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 377 ${COMPILE.s} ${CAPICFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
378 ${OBJCOPY} -x ${.TARGET} 378 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
379 379
380.S.pico: 380.S.pico:
381 ${_MKTARGET_COMPILE} 381 ${_MKTARGET_COMPILE}
382 ${COMPILE.S} ${CAPICFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET} 382 ${COMPILE.S} ${CAPICFLAGS} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}
383 ${OBJCOPY} -x ${.TARGET} 383 ${OBJCOPY} ${OBJCOPYFLAGS} ${.TARGET}
384 384
385.if defined(LIB) # { 385.if defined(LIB) # {
386.if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \ 386.if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \
387 || ${MKLINKLIB} != "no") && ${MKSTATICLIB} != "no" 387 || ${MKLINKLIB} != "no") && ${MKSTATICLIB} != "no"
388_LIBS=lib${LIB}.a 388_LIBS=lib${LIB}.a
389.else 389.else
390_LIBS= 390_LIBS=
391.endif 391.endif
392 392
393OBJS+=${SRCS:N*.h:N*.sh:R:S/$/.o/g} 393OBJS+=${SRCS:N*.h:N*.sh:R:S/$/.o/g}
394 394
395STOBJS+=${OBJS} 395STOBJS+=${OBJS}
396 396
397LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} 397LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
398 398
399.if ${LIBISPRIVATE} != "no" 399.if ${LIBISPRIVATE} != "no"
400# No installation is required 400# No installation is required
401libinstall:: 401libinstall::
402.endif 402.endif
403 403
404.if ${MKDEBUGLIB} != "no" 404.if ${MKDEBUGLIB} != "no"
405_LIBS+=lib${LIB}_g.a 405_LIBS+=lib${LIB}_g.a
406GOBJS+=${OBJS:.o=.go} 406GOBJS+=${OBJS:.o=.go}
407DEBUGFLAGS?=-DDEBUG 407DEBUGFLAGS?=-DDEBUG
408.endif 408.endif
409 409
410.if ${MKPROFILE} != "no" 410.if ${MKPROFILE} != "no"
411_LIBS+=lib${LIB}_p.a 411_LIBS+=lib${LIB}_p.a
412POBJS+=${OBJS:.o=.po} 412POBJS+=${OBJS:.o=.po}
413PROFFLAGS?=-DGPROF -DPROF 413PROFFLAGS?=-DGPROF -DPROF
414.endif 414.endif
415 415
416.if ${MKPIC} != "no" # { 416.if ${MKPIC} != "no" # {
417.if ${MKPICLIB} == "no" 417.if ${MKPICLIB} == "no"
418.if ${MKSHLIBOBJS} != "no" 418.if ${MKSHLIBOBJS} != "no"
419# make _pic.a, which isn't really pic, 419# make _pic.a, which isn't really pic,
420# since it's needed for making shared lib. 420# since it's needed for making shared lib.
421# but don't install it. 421# but don't install it.
422SOLIB=lib${LIB}_pic.a 422SOLIB=lib${LIB}_pic.a
423SOBJS+=${OBJS:.o=.pico} 423SOBJS+=${OBJS:.o=.pico}
424.else 424.else
425SOLIB=lib${LIB}.a 425SOLIB=lib${LIB}.a
426.endif 426.endif
427.else 427.else
428SOLIB=lib${LIB}_pic.a 428SOLIB=lib${LIB}_pic.a
429_LIBS+=${SOLIB} 429_LIBS+=${SOLIB}
430SOBJS+=${OBJS:.o=.pico} 430SOBJS+=${OBJS:.o=.pico}
431.endif 431.endif
432.if defined(SHLIB_FULLVERSION) 432.if defined(SHLIB_FULLVERSION)
433_LIB.so:=lib${LIB}.so.${SHLIB_FULLVERSION} 433_LIB.so:=lib${LIB}.so.${SHLIB_FULLVERSION}
434.if ${MKDEBUG} != "no" 434.if ${MKDEBUG} != "no"
435_LIB.debug:=${_LIB.so}.debug 435_LIB.debug:=${_LIB.so}.debug
436.endif 436.endif
437_LIBS+=lib${LIB}.so.${SHLIB_FULLVERSION} 437_LIBS+=lib${LIB}.so.${SHLIB_FULLVERSION}
438.endif 438.endif
439.endif # } 439.endif # }
440 440
441.if ${MKLINT} != "no" && !empty(LOBJS) 441.if ${MKLINT} != "no" && !empty(LOBJS)
442_LIBS+=llib-l${LIB}.ln 442_LIBS+=llib-l${LIB}.ln
443.endif 443.endif
444 444
445ALLOBJS= 445ALLOBJS=
446.if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \ 446.if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \
447 || ${MKLINKLIB} != "no") && ${MKSTATICLIB} != "no" 447 || ${MKLINKLIB} != "no") && ${MKSTATICLIB} != "no"
448ALLOBJS+=${STOBJS} 448ALLOBJS+=${STOBJS}
449.endif 449.endif
450ALLOBJS+=${POBJS} ${SOBJS} 450ALLOBJS+=${POBJS} ${SOBJS}
451.if ${MKLINT} != "no" && !empty(LOBJS) 451.if ${MKLINT} != "no" && !empty(LOBJS)
452ALLOBJS+=${LOBJS} 452ALLOBJS+=${LOBJS}
453.endif 453.endif
454.else # !defined(LIB) # } { 454.else # !defined(LIB) # } {
455LOBJS= 455LOBJS=
456SOBJS= 456SOBJS=
457.endif # !defined(LIB) # } 457.endif # !defined(LIB) # }
458 458
459_YLSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS:M*.y:.y=.h}} 459_YLSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS:M*.y:.y=.h}}
460 460
461.NOPATH: ${ALLOBJS} ${_LIBS} ${_YLSRCS} 461.NOPATH: ${ALLOBJS} ${_LIBS} ${_YLSRCS}
462 462
463realall: ${SRCS} ${ALLOBJS:O} ${_LIBS} ${_LIB.debug} 463realall: ${SRCS} ${ALLOBJS:O} ${_LIBS} ${_LIB.debug}
464 464
465MKARZERO?=no 465MKARZERO?=no
466 466
467.if ${MKARZERO} == "yes" 467.if ${MKARZERO} == "yes"
468_ARFL=crsD 468_ARFL=crsD
469_ARRANFL=sD 469_ARRANFL=sD
470_INSTRANLIB= 470_INSTRANLIB=
471.else 471.else
472_ARFL=crs 472_ARFL=crs
473_ARRANFL=s 473_ARRANFL=s
474_INSTRANLIB=${empty(PRESERVE):?-a "${RANLIB} -t":} 474_INSTRANLIB=${empty(PRESERVE):?-a "${RANLIB} -t":}
475.endif 475.endif
476 476
477# If you change this, please consider reflecting the change in 477# If you change this, please consider reflecting the change in
478# the override in sys/rump/Makefile.rump. 478# the override in sys/rump/Makefile.rump.
479.if !target(__archivebuild) 479.if !target(__archivebuild)
480__archivebuild: .USE 480__archivebuild: .USE
481 ${_MKTARGET_BUILD} 481 ${_MKTARGET_BUILD}
482 rm -f ${.TARGET} 482 rm -f ${.TARGET}
483 ${AR} ${_ARFL} ${.TARGET} `NM=${NM} ${LORDER} ${.ALLSRC:M*o} | ${TSORT}` 483 ${AR} ${_ARFL} ${.TARGET} `NM=${NM} ${LORDER} ${.ALLSRC:M*o} | ${TSORT}`
484.endif 484.endif
485 485
486.if !target(__archiveinstall) 486.if !target(__archiveinstall)
487__archiveinstall: .USE 487__archiveinstall: .USE
488 ${_MKTARGET_INSTALL} 488 ${_MKTARGET_INSTALL}
489 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 489 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
490 ${_INSTRANLIB} ${.ALLSRC} ${.TARGET} 490 ${_INSTRANLIB} ${.ALLSRC} ${.TARGET}
491.endif 491.endif
492 492
493__archivesymlinkpic: .USE 493__archivesymlinkpic: .USE
494 ${_MKTARGET_INSTALL} 494 ${_MKTARGET_INSTALL}
495 ${INSTALL_SYMLINK} ${.ALLSRC} ${.TARGET} 495 ${INSTALL_SYMLINK} ${.ALLSRC} ${.TARGET}
496 496
497DPSRCS+= ${_YLSRCS} 497DPSRCS+= ${_YLSRCS}
498CLEANFILES+= ${_YLSRCS} 498CLEANFILES+= ${_YLSRCS}
499 499
500${STOBJS} ${POBJS} ${GOBJS} ${SOBJS} ${LOBJS}: ${DPSRCS} 500${STOBJS} ${POBJS} ${GOBJS} ${SOBJS} ${LOBJS}: ${DPSRCS}
501 501
502lib${LIB}.a:: ${STOBJS} __archivebuild 502lib${LIB}.a:: ${STOBJS} __archivebuild
503 503
504lib${LIB}_p.a:: ${POBJS} __archivebuild 504lib${LIB}_p.a:: ${POBJS} __archivebuild
505 505
506lib${LIB}_pic.a:: ${SOBJS} __archivebuild 506lib${LIB}_pic.a:: ${SOBJS} __archivebuild
507 507
508lib${LIB}_g.a:: ${GOBJS} __archivebuild 508lib${LIB}_g.a:: ${GOBJS} __archivebuild
509 509
510 510
511_LIBLDOPTS= 511_LIBLDOPTS=
512.if ${SHLIBDIR} != "/usr/lib" 512.if ${SHLIBDIR} != "/usr/lib"
513_LIBLDOPTS+= -Wl,-rpath,${SHLIBDIR} \ 513_LIBLDOPTS+= -Wl,-rpath,${SHLIBDIR} \
514 -L=${SHLIBDIR} 514 -L=${SHLIBDIR}
515.elif ${SHLIBINSTALLDIR} != "/usr/lib" 515.elif ${SHLIBINSTALLDIR} != "/usr/lib"
516_LIBLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \ 516_LIBLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \
517 -L=${SHLIBINSTALLDIR} 517 -L=${SHLIBINSTALLDIR}
518.endif 518.endif
519 519
520# gcc -shared now adds -lc automatically. For libraries other than libc and 520# gcc -shared now adds -lc automatically. For libraries other than libc and
521# libgcc* we add as a dependency the installed shared libc. For libc and 521# libgcc* we add as a dependency the installed shared libc. For libc and
522# libgcc* we avoid adding libc as a dependency by using -nostdlib. Note that 522# libgcc* we avoid adding libc as a dependency by using -nostdlib. Note that
523# -Xl,-nostdlib is not enough because we want to tell the compiler-driver not 523# -Xl,-nostdlib is not enough because we want to tell the compiler-driver not
524# to add standard libraries, not the linker. 524# to add standard libraries, not the linker.
525.if !defined(LIB) 525.if !defined(LIB)
526.if !empty(LIBC_SO) 526.if !empty(LIBC_SO)
527DPLIBC ?= ${DESTDIR}${LIBC_SO} 527DPLIBC ?= ${DESTDIR}${LIBC_SO}
528.endif 528.endif
529.else 529.else
530.if ${LIB} != "c" && ${LIB:Mgcc*} == "" 530.if ${LIB} != "c" && ${LIB:Mgcc*} == ""
531.if !empty(LIBC_SO) 531.if !empty(LIBC_SO)
532DPLIBC ?= ${DESTDIR}${LIBC_SO} 532DPLIBC ?= ${DESTDIR}${LIBC_SO}
533.endif 533.endif
534.else 534.else
535LDLIBC ?= -nodefaultlibs 535LDLIBC ?= -nodefaultlibs
536.if ${LIB} == "c" 536.if ${LIB} == "c"
537LDADD+= -lgcc 537LDADD+= -lgcc
538.endif 538.endif
539.endif 539.endif
540.endif 540.endif
541 541
542.if ${LIBISCXX} != "no" 542.if ${LIBISCXX} != "no"
543LIBCC:= ${CXX} 543LIBCC:= ${CXX}
544.else 544.else
545LIBCC:= ${CC} 545LIBCC:= ${CC}
546.endif 546.endif
547 547
548_LDADD.lib${LIB}= ${LDADD} ${LDADD.lib${LIB}} 548_LDADD.lib${LIB}= ${LDADD} ${LDADD.lib${LIB}}
549_LDFLAGS.lib${LIB}= ${LDFLAGS} ${LDFLAGS.lib${LIB}} 549_LDFLAGS.lib${LIB}= ${LDFLAGS} ${LDFLAGS.lib${LIB}}
550 550
551lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOLIB} ${DPADD} ${DPLIBC} \ 551lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOLIB} ${DPADD} ${DPLIBC} \
552 ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE} 552 ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE}
553 ${_MKTARGET_BUILD} 553 ${_MKTARGET_BUILD}
554 rm -f lib${LIB}.so.${SHLIB_FULLVERSION} 554 rm -f lib${LIB}.so.${SHLIB_FULLVERSION}
555 ${LIBCC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${_LDFLAGS.lib${LIB}} \ 555 ${LIBCC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${_LDFLAGS.lib${LIB}} \
556 -o ${.TARGET} ${_LIBLDOPTS} \ 556 -o ${.TARGET} ${_LIBLDOPTS} \
557 -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${_LDADD.lib${LIB}} 557 -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${_LDADD.lib${LIB}}
558# We don't use INSTALL_SYMLINK here because this is just 558# We don't use INSTALL_SYMLINK here because this is just
559# happening inside the build directory/objdir. XXX Why does 559# happening inside the build directory/objdir. XXX Why does
560# this spend so much effort on libraries that aren't live??? XXX 560# this spend so much effort on libraries that aren't live??? XXX
561.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ 561.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \
562 "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" 562 "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}"
563 ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.${SHLIB_MAJOR}.tmp 563 ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.${SHLIB_MAJOR}.tmp
564 mv -f lib${LIB}.so.${SHLIB_MAJOR}.tmp lib${LIB}.so.${SHLIB_MAJOR} 564 mv -f lib${LIB}.so.${SHLIB_MAJOR}.tmp lib${LIB}.so.${SHLIB_MAJOR}
565.endif 565.endif
566 ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.tmp 566 ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.tmp
567 mv -f lib${LIB}.so.tmp lib${LIB}.so 567 mv -f lib${LIB}.so.tmp lib${LIB}.so
568.if ${MKSTRIPIDENT} != "no" 568.if ${MKSTRIPIDENT} != "no"
569 ${OBJCOPY} -R .ident ${.TARGET} 569 ${OBJCOPY} -R .ident ${.TARGET}
570.endif 570.endif
571 571
572.if defined(_LIB.debug) 572.if defined(_LIB.debug)
573${_LIB.debug}: ${_LIB.so} 573${_LIB.debug}: ${_LIB.so}
574 ${_MKTARGET_CREATE} 574 ${_MKTARGET_CREATE}
575 ( ${OBJCOPY} --only-keep-debug ${_LIB.so} ${_LIB.debug} \ 575 ( ${OBJCOPY} --only-keep-debug ${_LIB.so} ${_LIB.debug} \
576 && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \ 576 && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \
577 --add-gnu-debuglink=${_LIB.debug} ${_LIB.so} \ 577 --add-gnu-debuglink=${_LIB.debug} ${_LIB.so} \
578 ) || (rm -f ${_LIB.debug}; false) 578 ) || (rm -f ${_LIB.debug}; false)
579.endif 579.endif
580 580
581.if !empty(LOBJS) # { 581.if !empty(LOBJS) # {
582LLIBS?= -lc 582LLIBS?= -lc
583llib-l${LIB}.ln: ${LOBJS} 583llib-l${LIB}.ln: ${LOBJS}
584 ${_MKTARGET_COMPILE} 584 ${_MKTARGET_COMPILE}
585 rm -f llib-l${LIB}.ln 585 rm -f llib-l${LIB}.ln
586.if defined(DESTDIR) 586.if defined(DESTDIR)
587 ${LINT} -C${LIB} ${.ALLSRC} -L${DESTDIR}/usr/libdata ${LLIBS} 587 ${LINT} -C${LIB} ${.ALLSRC} -L${DESTDIR}/usr/libdata ${LLIBS}
588.else 588.else
589 ${LINT} -C${LIB} ${.ALLSRC} ${LLIBS} 589 ${LINT} -C${LIB} ${.ALLSRC} ${LLIBS}
590.endif 590.endif
591.endif # } 591.endif # }
592 592
593lint: ${LOBJS} 593lint: ${LOBJS}
594.if defined(LOBJS) && !empty(LOBJS) 594.if defined(LOBJS) && !empty(LOBJS)
595 ${LINT} ${LINTFLAGS} ${LOBJS} 595 ${LINT} ${LINTFLAGS} ${LOBJS}
596.endif 596.endif
597 597
598# If the number of entries in CLEANFILES is too large, then the 598# If the number of entries in CLEANFILES is too large, then the
599# commands in bsd.clean.mk encounter errors like "exec(/bin/sh) 599# commands in bsd.clean.mk encounter errors like "exec(/bin/sh)
600# failed (Argument list too long)". Avoid that by splitting the 600# failed (Argument list too long)". Avoid that by splitting the
601# files to clean into several lists using different variable names. 601# files to clean into several lists using different variable names.
602# __cleanuse is an internal target in bsd.clean.mk; the way we 602# __cleanuse is an internal target in bsd.clean.mk; the way we
603# use it here mimics the way it's used by the clean target in 603# use it here mimics the way it's used by the clean target in
604# bsd.clean.mk. 604# bsd.clean.mk.
605# 605#
606clean: libclean1 libclean2 libclean3 libclean4 libclean5 606clean: libclean1 libclean2 libclean3 libclean4 libclean5
607libclean1: .PHONY .MADE __cleanuse LIBCLEANFILES1 607libclean1: .PHONY .MADE __cleanuse LIBCLEANFILES1
608libclean2: .PHONY .MADE __cleanuse LIBCLEANFILES2 608libclean2: .PHONY .MADE __cleanuse LIBCLEANFILES2
609libclean3: .PHONY .MADE __cleanuse LIBCLEANFILES3 609libclean3: .PHONY .MADE __cleanuse LIBCLEANFILES3
610libclean4: .PHONY .MADE __cleanuse LIBCLEANFILES4 610libclean4: .PHONY .MADE __cleanuse LIBCLEANFILES4
611libclean5: .PHONY .MADE __cleanuse LIBCLEANFILES5 611libclean5: .PHONY .MADE __cleanuse LIBCLEANFILES5
612CLEANFILES+= a.out [Ee]rrs mklog core *.core 612CLEANFILES+= a.out [Ee]rrs mklog core *.core
613LIBCLEANFILES1+= lib${LIB}.a ${STOBJS} ${STOBJS:=.tmp} 613LIBCLEANFILES1+= lib${LIB}.a ${STOBJS} ${STOBJS:=.tmp}
614LIBCLEANFILES2+= lib${LIB}_p.a ${POBJS} ${POBJS:=.tmp} 614LIBCLEANFILES2+= lib${LIB}_p.a ${POBJS} ${POBJS:=.tmp}
615LIBCLEANFILES3+= lib${LIB}_g.a ${GOBJS} ${GOBJS:=.tmp} 615LIBCLEANFILES3+= lib${LIB}_g.a ${GOBJS} ${GOBJS:=.tmp}
616LIBCLEANFILES4+= lib${LIB}_pic.a lib${LIB}.so.* lib${LIB}.so ${_LIB.debug} 616LIBCLEANFILES4+= lib${LIB}_pic.a lib${LIB}.so.* lib${LIB}.so ${_LIB.debug}
617LIBCLEANFILES4+= ${SOBJS} ${SOBJS:=.tmp} 617LIBCLEANFILES4+= ${SOBJS} ${SOBJS:=.tmp}
618LIBCLEANFILES5+= llib-l${LIB}.ln ${LOBJS} 618LIBCLEANFILES5+= llib-l${LIB}.ln ${LOBJS}
619 619
620.if !target(libinstall) # { 620.if !target(libinstall) # {
621# Make sure it gets defined, in case MKPIC==no && MKLINKLIB==no 621# Make sure it gets defined, in case MKPIC==no && MKLINKLIB==no
622libinstall:: 622libinstall::
623 623
624.if ${MKLINKLIB} != "no" && ${MKSTATICLIB} != "no" 624.if ${MKLINKLIB} != "no" && ${MKSTATICLIB} != "no"
625libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}.a 625libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}.a
626.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}.a 626.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}.a
627 627
628.if ${MKUPDATE} == "no" 628.if ${MKUPDATE} == "no"
629.if !defined(BUILD) && !make(all) && !make(lib${LIB}.a) 629.if !defined(BUILD) && !make(all) && !make(lib${LIB}.a)
630${DESTDIR}${LIBDIR}/lib${LIB}.a! .MADE 630${DESTDIR}${LIBDIR}/lib${LIB}.a! .MADE
631.endif 631.endif
632${DESTDIR}${LIBDIR}/lib${LIB}.a! lib${LIB}.a __archiveinstall 632${DESTDIR}${LIBDIR}/lib${LIB}.a! lib${LIB}.a __archiveinstall
633.else 633.else
634.if !defined(BUILD) && !make(all) && !make(lib${LIB}.a) 634.if !defined(BUILD) && !make(all) && !make(lib${LIB}.a)
635${DESTDIR}${LIBDIR}/lib${LIB}.a: .MADE 635${DESTDIR}${LIBDIR}/lib${LIB}.a: .MADE
636.endif 636.endif
637${DESTDIR}${LIBDIR}/lib${LIB}.a: lib${LIB}.a __archiveinstall 637${DESTDIR}${LIBDIR}/lib${LIB}.a: lib${LIB}.a __archiveinstall
638.endif 638.endif
639.endif 639.endif
640 640
641.if ${MKPROFILE} != "no" 641.if ${MKPROFILE} != "no"
642libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 642libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
643.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 643.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
644 644
645.if ${MKUPDATE} == "no" 645.if ${MKUPDATE} == "no"
646.if !defined(BUILD) && !make(all) && !make(lib${LIB}_p.a) 646.if !defined(BUILD) && !make(all) && !make(lib${LIB}_p.a)
647${DESTDIR}${LIBDIR}/lib${LIB}_p.a! .MADE 647${DESTDIR}${LIBDIR}/lib${LIB}_p.a! .MADE
648.endif 648.endif
649${DESTDIR}${LIBDIR}/lib${LIB}_p.a! lib${LIB}_p.a __archiveinstall 649${DESTDIR}${LIBDIR}/lib${LIB}_p.a! lib${LIB}_p.a __archiveinstall
650.else 650.else
651.if !defined(BUILD) && !make(all) && !make(lib${LIB}_p.a) 651.if !defined(BUILD) && !make(all) && !make(lib${LIB}_p.a)
652${DESTDIR}${LIBDIR}/lib${LIB}_p.a: .MADE 652${DESTDIR}${LIBDIR}/lib${LIB}_p.a: .MADE
653.endif 653.endif
654${DESTDIR}${LIBDIR}/lib${LIB}_p.a: lib${LIB}_p.a __archiveinstall 654${DESTDIR}${LIBDIR}/lib${LIB}_p.a: lib${LIB}_p.a __archiveinstall
655.endif 655.endif
656.endif 656.endif
657 657
658.if ${MKDEBUGLIB} != "no" 658.if ${MKDEBUGLIB} != "no"
659libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_g.a 659libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_g.a
660.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_g.a 660.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_g.a
661 661
662.if ${MKUPDATE} == "no" 662.if ${MKUPDATE} == "no"
663.if !defined(BUILD) && !make(all) && !make(lib${LIB}_g.a) 663.if !defined(BUILD) && !make(all) && !make(lib${LIB}_g.a)
664${DESTDIR}${LIBDIR}/lib${LIB}_g.a! .MADE 664${DESTDIR}${LIBDIR}/lib${LIB}_g.a! .MADE
665.endif 665.endif
666${DESTDIR}${LIBDIR}/lib${LIB}_g.a! lib${LIB}_g.a __archiveinstall 666${DESTDIR}${LIBDIR}/lib${LIB}_g.a! lib${LIB}_g.a __archiveinstall
667.else 667.else
668.if !defined(BUILD) && !make(all) && !make(lib${LIB}_g.a) 668.if !defined(BUILD) && !make(all) && !make(lib${LIB}_g.a)
669${DESTDIR}${LIBDIR}/lib${LIB}_g.a: .MADE 669${DESTDIR}${LIBDIR}/lib${LIB}_g.a: .MADE
670.endif 670.endif
671${DESTDIR}${LIBDIR}/lib${LIB}_g.a: lib${LIB}_g.a __archiveinstall 671${DESTDIR}${LIBDIR}/lib${LIB}_g.a: lib${LIB}_g.a __archiveinstall
672.endif 672.endif
673.endif 673.endif
674 674
675.if ${MKPIC} != "no" && ${MKPICINSTALL} != "no" 675.if ${MKPIC} != "no" && ${MKPICINSTALL} != "no"
676libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 676libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
677.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 677.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
678 678
679.if ${MKUPDATE} == "no" 679.if ${MKUPDATE} == "no"
680.if !defined(BUILD) && !make(all) && !make(lib${LIB}_pic.a) 680.if !defined(BUILD) && !make(all) && !make(lib${LIB}_pic.a)
681${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! .MADE 681${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! .MADE
682.endif 682.endif
683.if ${MKPICLIB} == "no" 683.if ${MKPICLIB} == "no"
684${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! lib${LIB}.a __archivesymlinkpic 684${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! lib${LIB}.a __archivesymlinkpic
685.else 685.else
686${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! lib${LIB}_pic.a __archiveinstall 686${DESTDIR}${LIBDIR}/lib${LIB}_pic.a! lib${LIB}_pic.a __archiveinstall
687.endif 687.endif
688.else 688.else
689.if !defined(BUILD) && !make(all) && !make(lib${LIB}_pic.a) 689.if !defined(BUILD) && !make(all) && !make(lib${LIB}_pic.a)
690${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: .MADE 690${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: .MADE
691.endif 691.endif
692.if ${MKPICLIB} == "no" 692.if ${MKPICLIB} == "no"
693${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib${LIB}.a __archivesymlinkpic 693${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib${LIB}.a __archivesymlinkpic
694.else 694.else
695${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib${LIB}_pic.a __archiveinstall 695${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib${LIB}_pic.a __archiveinstall
696.endif 696.endif
697.endif 697.endif
698.endif 698.endif
699 699
700.if ${MKPIC} != "no" && defined(SHLIB_FULLVERSION) 700.if ${MKPIC} != "no" && defined(SHLIB_FULLVERSION)
701_LIB_SO_TGT= ${DESTDIR}${_LIBSODIR}/${_LIB_PREFIX}${LIB}.so 701_LIB_SO_TGT= ${DESTDIR}${_LIBSODIR}/${_LIB_PREFIX}${LIB}.so
702_LIB_SO_TGTLIBDIR= ${DESTDIR}${LIBDIR}/${_LIB_PREFIX}${LIB}.so 702_LIB_SO_TGTLIBDIR= ${DESTDIR}${LIBDIR}/${_LIB_PREFIX}${LIB}.so
703 703
704libinstall:: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} 704libinstall:: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION}
705.PRECIOUS: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} 705.PRECIOUS: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION}
706 706
707.if ${MKUPDATE} == "no" 707.if ${MKUPDATE} == "no"
708.if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION}) 708.if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION})
709${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! .MADE 709${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! .MADE
710.endif 710.endif
711${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! lib${LIB}.so.${SHLIB_FULLVERSION} 711${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! lib${LIB}.so.${SHLIB_FULLVERSION}
712.else 712.else
713.if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION}) 713.if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION})
714${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: .MADE 714${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: .MADE
715.endif 715.endif
716${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: lib${LIB}.so.${SHLIB_FULLVERSION} 716${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: lib${LIB}.so.${SHLIB_FULLVERSION}
717.endif 717.endif
718 ${_MKTARGET_INSTALL} 718 ${_MKTARGET_INSTALL}
719 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 719 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
720 ${.ALLSRC} ${.TARGET} 720 ${.ALLSRC} ${.TARGET}
721.if ${_LIBSODIR} != ${LIBDIR} 721.if ${_LIBSODIR} != ${LIBDIR}
722 ${INSTALL_SYMLINK} -l r \ 722 ${INSTALL_SYMLINK} -l r \
723 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ 723 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \
724 ${_LIB_SO_TGTLIBDIR}.${SHLIB_FULLVERSION} 724 ${_LIB_SO_TGTLIBDIR}.${SHLIB_FULLVERSION}
725.endif 725.endif
726.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ 726.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \
727 "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" 727 "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}"
728 ${INSTALL_SYMLINK} \ 728 ${INSTALL_SYMLINK} \
729 ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \ 729 ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \
730 ${_LIB_SO_TGT}.${SHLIB_MAJOR} 730 ${_LIB_SO_TGT}.${SHLIB_MAJOR}
731.if ${_LIBSODIR} != ${LIBDIR} 731.if ${_LIBSODIR} != ${LIBDIR}
732 ${INSTALL_SYMLINK} -l r \ 732 ${INSTALL_SYMLINK} -l r \
733 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ 733 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \
734 ${_LIB_SO_TGTLIBDIR}.${SHLIB_MAJOR} 734 ${_LIB_SO_TGTLIBDIR}.${SHLIB_MAJOR}
735.endif 735.endif
736.endif 736.endif
737.if ${MKLINKLIB} != "no" 737.if ${MKLINKLIB} != "no"
738 ${INSTALL_SYMLINK} \ 738 ${INSTALL_SYMLINK} \
739 ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \ 739 ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \
740 ${_LIB_SO_TGT} 740 ${_LIB_SO_TGT}
741.if ${_LIBSODIR} != ${LIBDIR} 741.if ${_LIBSODIR} != ${LIBDIR}
742 ${INSTALL_SYMLINK} -l r \ 742 ${INSTALL_SYMLINK} -l r \
743 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ 743 ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \
744 ${_LIB_SO_TGTLIBDIR} 744 ${_LIB_SO_TGTLIBDIR}
745.endif 745.endif
746.endif 746.endif
747.endif 747.endif
748 748
749.if defined(_LIB.debug) 749.if defined(_LIB.debug)
750libinstall:: ${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug} 750libinstall:: ${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug}
751.PRECIOUS: ${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug} 751.PRECIOUS: ${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug}
752 752
753${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug}: ${_LIB.debug} 753${DESTDIR}${DEBUGDIR}${LIBDIR}/${_LIB.debug}: ${_LIB.debug}
754 ${_MKTARGET_INSTALL} 754 ${_MKTARGET_INSTALL}
755 ${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \ 755 ${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \
756 ${.ALLSRC} ${.TARGET} 756 ${.ALLSRC} ${.TARGET}
757.endif 757.endif
758 758
759.if ${MKLINT} != "no" && !empty(LOBJS) 759.if ${MKLINT} != "no" && !empty(LOBJS)
760libinstall:: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln 760libinstall:: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln
761.PRECIOUS: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln 761.PRECIOUS: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln
762 762
763.if ${MKUPDATE} == "no" 763.if ${MKUPDATE} == "no"
764.if !defined(BUILD) && !make(all) && !make(llib-l${LIB}.ln) 764.if !defined(BUILD) && !make(all) && !make(llib-l${LIB}.ln)
765${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln! .MADE 765${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln! .MADE
766.endif 766.endif
767${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln! llib-l${LIB}.ln 767${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln! llib-l${LIB}.ln
768.else 768.else
769.if !defined(BUILD) && !make(all) && !make(llib-l${LIB}.ln) 769.if !defined(BUILD) && !make(all) && !make(llib-l${LIB}.ln)
770${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: .MADE 770${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: .MADE
771.endif 771.endif
772${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: llib-l${LIB}.ln 772${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: llib-l${LIB}.ln
773.endif 773.endif
774 ${_MKTARGET_INSTALL} 774 ${_MKTARGET_INSTALL}
775 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 775 ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
776 ${.ALLSRC} ${DESTDIR}${LINTLIBDIR} 776 ${.ALLSRC} ${DESTDIR}${LINTLIBDIR}
777.endif 777.endif
778.endif # !target(libinstall) # } 778.endif # !target(libinstall) # }
779 779
780##### Pull in related .mk logic 780##### Pull in related .mk logic
781LINKSOWN?= ${LIBOWN} 781LINKSOWN?= ${LIBOWN}
782LINKSGRP?= ${LIBGRP} 782LINKSGRP?= ${LIBGRP}
783LINKSMODE?= ${LIBMODE} 783LINKSMODE?= ${LIBMODE}
784.include <bsd.man.mk> 784.include <bsd.man.mk>
785.include <bsd.nls.mk> 785.include <bsd.nls.mk>
786.include <bsd.files.mk> 786.include <bsd.files.mk>
787.include <bsd.inc.mk> 787.include <bsd.inc.mk>
788.include <bsd.links.mk> 788.include <bsd.links.mk>
789.include <bsd.dep.mk> 789.include <bsd.dep.mk>
790.include <bsd.clang-analyze.mk> 790.include <bsd.clang-analyze.mk>
791.include <bsd.clean.mk> 791.include <bsd.clean.mk>
792 792
793${TARGETS}: # ensure existence 793${TARGETS}: # ensure existence

cvs diff -r1.210 -r1.211 src/share/mk/bsd.sys.mk (switch to unified diff)

--- src/share/mk/bsd.sys.mk 2011/10/31 14:20:12 1.210
+++ src/share/mk/bsd.sys.mk 2012/01/28 21:32:14 1.211
@@ -1,271 +1,274 @@ @@ -1,271 +1,274 @@
1# $NetBSD: bsd.sys.mk,v 1.210 2011/10/31 14:20:12 chs Exp $ 1# $NetBSD: bsd.sys.mk,v 1.211 2012/01/28 21:32:14 christos Exp $
2# 2#
3# Build definitions used for NetBSD source tree builds. 3# Build definitions used for NetBSD source tree builds.
4 4
5.if !defined(_BSD_SYS_MK_) 5.if !defined(_BSD_SYS_MK_)
6_BSD_SYS_MK_=1 6_BSD_SYS_MK_=1
7 7
8.if ${MKREPRO:Uno} == "yes" 8.if ${MKREPRO:Uno} == "yes"
9CPPFLAGS+= -Wp,-iremap,${NETBSDSRCDIR}:/usr/src 9CPPFLAGS+= -Wp,-iremap,${NETBSDSRCDIR}:/usr/src
10CPPFLAGS+= -Wp,-iremap,${DESTDIR}/:/ 10CPPFLAGS+= -Wp,-iremap,${DESTDIR}/:/
11.endif 11.endif
12 12
13# Enable c99 mode by default. 13# Enable c99 mode by default.
14# This has the side effect of complaining for missing prototypes 14# This has the side effect of complaining for missing prototypes
15# implicit type declarations and missing return statements. 15# implicit type declarations and missing return statements.
16.if defined(HAVE_GCC) 16.if defined(HAVE_GCC)
17CFLAGS+= -std=gnu99 17CFLAGS+= -std=gnu99
18.endif 18.endif
19 19
20.if defined(WARNS) 20.if defined(WARNS)
21CFLAGS+= ${${ACTIVE_CC} == "clang":? -Wno-sign-compare -Wno-pointer-sign :} 21CFLAGS+= ${${ACTIVE_CC} == "clang":? -Wno-sign-compare -Wno-pointer-sign :}
22.if ${WARNS} > 0 22.if ${WARNS} > 0
23CFLAGS+= -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith 23CFLAGS+= -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith
24#CFLAGS+= -Wmissing-declarations -Wredundant-decls -Wnested-externs 24#CFLAGS+= -Wmissing-declarations -Wredundant-decls -Wnested-externs
25# Add -Wno-sign-compare. -Wsign-compare is included in -Wall as of GCC 3.3, 25# Add -Wno-sign-compare. -Wsign-compare is included in -Wall as of GCC 3.3,
26# but our sources aren't up for it yet. Also, add -Wno-traditional because 26# but our sources aren't up for it yet. Also, add -Wno-traditional because
27# gcc includes #elif in the warnings, which is 'this code will not compile 27# gcc includes #elif in the warnings, which is 'this code will not compile
28# in a traditional environment' warning, as opposed to 'this code behaves 28# in a traditional environment' warning, as opposed to 'this code behaves
29# differently in traditional and ansi environments' which is the warning 29# differently in traditional and ansi environments' which is the warning
30# we wanted, and now we don't get anymore. 30# we wanted, and now we don't get anymore.
31CFLAGS+= -Wno-sign-compare 31CFLAGS+= -Wno-sign-compare
32CFLAGS+= ${${ACTIVE_CC} != "clang":? -Wno-traditional :} 32CFLAGS+= ${${ACTIVE_CC} != "clang":? -Wno-traditional :}
33.if !defined(NOGCCERROR) 33.if !defined(NOGCCERROR)
34# Set assembler warnings to be fatal 34# Set assembler warnings to be fatal
35CFLAGS+= -Wa,--fatal-warnings 35CFLAGS+= -Wa,--fatal-warnings
36.endif 36.endif
37# Set linker warnings to be fatal 37# Set linker warnings to be fatal
38# XXX no proper way to avoid "FOO is a patented algorithm" warnings 38# XXX no proper way to avoid "FOO is a patented algorithm" warnings
39# XXX on linking static libs 39# XXX on linking static libs
40.if (!defined(MKPIC) || ${MKPIC} != "no") && \ 40.if (!defined(MKPIC) || ${MKPIC} != "no") && \
41 (!defined(LDSTATIC) || ${LDSTATIC} != "-static") 41 (!defined(LDSTATIC) || ${LDSTATIC} != "-static")
42# XXX there are some strange problems not yet resolved 42# XXX there are some strange problems not yet resolved
43. if !defined(HAVE_GCC) || ${HAVE_GCC} != 45 43. if !defined(HAVE_GCC) || ${HAVE_GCC} != 45
44LDFLAGS+= -Wl,--fatal-warnings 44LDFLAGS+= -Wl,--fatal-warnings
45. endif 45. endif
46.endif 46.endif
47.endif 47.endif
48.if ${WARNS} > 1 48.if ${WARNS} > 1
49CFLAGS+= -Wreturn-type -Wswitch -Wshadow 49CFLAGS+= -Wreturn-type -Wswitch -Wshadow
50.endif 50.endif
51.if ${WARNS} > 2 51.if ${WARNS} > 2
52CFLAGS+= -Wcast-qual -Wwrite-strings 52CFLAGS+= -Wcast-qual -Wwrite-strings
53CFLAGS+= -Wextra -Wno-unused-parameter 53CFLAGS+= -Wextra -Wno-unused-parameter
54# Readd -Wno-sign-compare to override -Wextra with clang 54# Readd -Wno-sign-compare to override -Wextra with clang
55CFLAGS+= -Wno-sign-compare 55CFLAGS+= -Wno-sign-compare
56CXXFLAGS+= -Wabi 56CXXFLAGS+= -Wabi
57CXXFLAGS+= -Wold-style-cast 57CXXFLAGS+= -Wold-style-cast
58CXXFLAGS+= -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder \ 58CXXFLAGS+= -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder \
59 -Wno-deprecated -Woverloaded-virtual -Wsign-promo -Wsynth 59 -Wno-deprecated -Woverloaded-virtual -Wsign-promo -Wsynth
60CXXFLAGS+= ${${ACTIVE_CXX} == "gcc":? -Wno-non-template-friend -Wno-pmf-conversions :} 60CXXFLAGS+= ${${ACTIVE_CXX} == "gcc":? -Wno-non-template-friend -Wno-pmf-conversions :}
61.endif 61.endif
62.if ${WARNS} > 3 && defined(HAVE_GCC) 62.if ${WARNS} > 3 && defined(HAVE_GCC)
63CFLAGS+= -Wsign-compare -Wformat=2 63CFLAGS+= -Wsign-compare -Wformat=2
64.endif 64.endif
65.if ${WARNS} > 3 && defined(HAVE_LLVM) 65.if ${WARNS} > 3 && defined(HAVE_LLVM)
66CFLAGS+= ${${ACTIVE_CC} == "clang":? -Wpointer-sign -Wmissing-noreturn :} 66CFLAGS+= ${${ACTIVE_CC} == "clang":? -Wpointer-sign -Wmissing-noreturn :}
67.endif 67.endif
68.if (defined(HAVE_GCC) && ${HAVE_GCC} == 45 \ 68.if (defined(HAVE_GCC) && ${HAVE_GCC} == 45 \
69 && (${MACHINE_ARCH} == "sh3eb" || \ 69 && (${MACHINE_ARCH} == "sh3eb" || \
70 ${MACHINE_ARCH} == "sh3el" || \ 70 ${MACHINE_ARCH} == "sh3el" || \
71 ${MACHINE_ARCH} == "m68k" || \ 71 ${MACHINE_ARCH} == "m68k" || \
72 ${MACHINE_ARCH} == "m68000")) 72 ${MACHINE_ARCH} == "m68000"))
73# XXX GCC 4.5 for sh3 and m68k (which we compile with -Os) is extra noisy for 73# XXX GCC 4.5 for sh3 and m68k (which we compile with -Os) is extra noisy for
74# cases it should be better with 74# cases it should be better with
75CFLAGS+= -Wno-uninitialized 75CFLAGS+= -Wno-uninitialized
76.endif 76.endif
77.endif 77.endif
78 78
79CWARNFLAGS+= ${CWARNFLAGS.${ACTIVE_CC}} 79CWARNFLAGS+= ${CWARNFLAGS.${ACTIVE_CC}}
80 80
81CPPFLAGS+= ${AUDIT:D-D__AUDIT__} 81CPPFLAGS+= ${AUDIT:D-D__AUDIT__}
82_NOWERROR= ${defined(NOGCCERROR) || (${ACTIVE_CC} == "clang" && defined(NOCLANGERROR)):?yes:no} 82_NOWERROR= ${defined(NOGCCERROR) || (${ACTIVE_CC} == "clang" && defined(NOCLANGERROR)):?yes:no}
83CFLAGS+= ${${_NOWERROR} == "no" :?-Werror:} ${CWARNFLAGS} 83CFLAGS+= ${${_NOWERROR} == "no" :?-Werror:} ${CWARNFLAGS}
84LINTFLAGS+= ${DESTDIR:D-d ${DESTDIR}/usr/include} 84LINTFLAGS+= ${DESTDIR:D-d ${DESTDIR}/usr/include}
85 85
86.if (${MACHINE_ARCH} == "alpha") || \ 86.if (${MACHINE_ARCH} == "alpha") || \
87 (${MACHINE_ARCH} == "hppa") || \ 87 (${MACHINE_ARCH} == "hppa") || \
88 (${MACHINE_ARCH} == "ia64") || \ 88 (${MACHINE_ARCH} == "ia64") || \
89 (${MACHINE_ARCH} == "mipsel") || (${MACHINE_ARCH} == "mipseb") || \ 89 (${MACHINE_ARCH} == "mipsel") || (${MACHINE_ARCH} == "mipseb") || \
90 (${MACHINE_ARCH} == "mips64el") || (${MACHINE_ARCH} == "mips64eb") 90 (${MACHINE_ARCH} == "mips64el") || (${MACHINE_ARCH} == "mips64eb")
91HAS_SSP= no 91HAS_SSP= no
92.else 92.else
93HAS_SSP= yes 93HAS_SSP= yes
94.endif 94.endif
95 95
96.if ${USE_FORT:Uno} != "no" 96.if ${USE_FORT:Uno} != "no"
97USE_SSP?= yes 97USE_SSP?= yes
98.if !defined(KERNSRCDIR) && !defined(KERN) # not for kernels nor kern modules 98.if !defined(KERNSRCDIR) && !defined(KERN) # not for kernels nor kern modules
99CPPFLAGS+= -D_FORTIFY_SOURCE=2 99CPPFLAGS+= -D_FORTIFY_SOURCE=2
100.endif 100.endif
101.endif 101.endif
102 102
103.if (${USE_SSP:Uno} != "no") && (${BINDIR:Ux} != "/usr/mdec") 103.if (${USE_SSP:Uno} != "no") && (${BINDIR:Ux} != "/usr/mdec")
104.if ${HAS_SSP} == "yes" 104.if ${HAS_SSP} == "yes"
105COPTS+= -fstack-protector -Wstack-protector  105COPTS+= -fstack-protector -Wstack-protector
106COPTS+= ${${ACTIVE_CC} == "clang":? -mllvm -stack-protector-buffer-size=1 :} 106COPTS+= ${${ACTIVE_CC} == "clang":? -mllvm -stack-protector-buffer-size=1 :}
107COPTS+= ${${ACTIVE_CC} == "gcc":? --param ssp-buffer-size=1 :} 107COPTS+= ${${ACTIVE_CC} == "gcc":? --param ssp-buffer-size=1 :}
108.endif 108.endif
109.endif 109.endif
110 110
111.if ${MKSOFTFLOAT:Uno} != "no" 111.if ${MKSOFTFLOAT:Uno} != "no"
112COPTS+= -msoft-float 112COPTS+= -msoft-float
113FOPTS+= -msoft-float 113FOPTS+= -msoft-float
114.endif 114.endif
115 115
116.if ${MKIEEEFP:Uno} != "no" 116.if ${MKIEEEFP:Uno} != "no"
117.if ${MACHINE_ARCH} == "alpha" 117.if ${MACHINE_ARCH} == "alpha"
118CFLAGS+= -mieee 118CFLAGS+= -mieee
119FFLAGS+= -mieee 119FFLAGS+= -mieee
120.endif 120.endif
121.endif 121.endif
122 122
123.if ${MACHINE} == "sparc64" && ${MACHINE_ARCH} == "sparc" 123.if ${MACHINE} == "sparc64" && ${MACHINE_ARCH} == "sparc"
124CFLAGS+= -Wa,-Av8plus 124CFLAGS+= -Wa,-Av8plus
125.endif 125.endif
126 126
127.if !defined(NOGCCERROR) 127.if !defined(NOGCCERROR)
128.if (${MACHINE_ARCH} == "mips64el") || (${MACHINE_ARCH} == "mips64eb") 128.if (${MACHINE_ARCH} == "mips64el") || (${MACHINE_ARCH} == "mips64eb")
129CPUFLAGS+= -Wa,--fatal-warnings 129CPUFLAGS+= -Wa,--fatal-warnings
130.endif 130.endif
131.endif 131.endif
132 132
133#.if ${MACHINE} == "sbmips" 133#.if ${MACHINE} == "sbmips"
134#CFLAGS+= -mips64 -mtune=sb1 134#CFLAGS+= -mips64 -mtune=sb1
135#.endif 135#.endif
136 136
137#.if (${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb") && \ 137#.if (${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb") && \
138# (defined(MKPIC) && ${MKPIC} == "no") 138# (defined(MKPIC) && ${MKPIC} == "no")
139#CPUFLAGS+= -mno-abicalls -fno-PIC 139#CPUFLAGS+= -mno-abicalls -fno-PIC
140#.endif 140#.endif
141CFLAGS+= ${CPUFLAGS} 141CFLAGS+= ${CPUFLAGS}
142AFLAGS+= ${CPUFLAGS} 142AFLAGS+= ${CPUFLAGS}
143 143
144.if !defined(LDSTATIC) || ${LDSTATIC} != "-static" 144.if !defined(LDSTATIC) || ${LDSTATIC} != "-static"
145# Position Independent Executable flags 145# Position Independent Executable flags
146PIE_CFLAGS?= -fPIC -DPIC 146PIE_CFLAGS?= -fPIC -DPIC
147PIE_LDFLAGS?= -Wl,-pie -shared-libgcc 147PIE_LDFLAGS?= -Wl,-pie -shared-libgcc
148PIE_AFLAGS?= -fPIC -DPIC 148PIE_AFLAGS?= -fPIC -DPIC
149.endif 149.endif
150 150
151# Helpers for cross-compiling 151# Helpers for cross-compiling
152HOST_CC?= cc 152HOST_CC?= cc
153HOST_CFLAGS?= -O 153HOST_CFLAGS?= -O
154HOST_COMPILE.c?=${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} -c 154HOST_COMPILE.c?=${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} -c
155HOST_COMPILE.cc?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_CPPFLAGS} -c 155HOST_COMPILE.cc?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_CPPFLAGS} -c
156.if defined(HOSTPROG_CXX)  156.if defined(HOSTPROG_CXX)
157HOST_LINK.c?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS} 157HOST_LINK.c?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
158.else 158.else
159HOST_LINK.c?= ${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS} 159HOST_LINK.c?= ${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
160.endif 160.endif
161 161
162HOST_CXX?= c++ 162HOST_CXX?= c++
163HOST_CXXFLAGS?= -O 163HOST_CXXFLAGS?= -O
164 164
165HOST_CPP?= cpp 165HOST_CPP?= cpp
166HOST_CPPFLAGS?= 166HOST_CPPFLAGS?=
167 167
168HOST_LD?= ld 168HOST_LD?= ld
169HOST_LDFLAGS?= 169HOST_LDFLAGS?=
170 170
171HOST_AR?= ar 171HOST_AR?= ar
172HOST_RANLIB?= ranlib 172HOST_RANLIB?= ranlib
173 173
174HOST_LN?= ln 174HOST_LN?= ln
175 175
176# HOST_SH must be an absolute path 176# HOST_SH must be an absolute path
177HOST_SH?= /bin/sh 177HOST_SH?= /bin/sh
178 178
179ELF2ECOFF?= elf2ecoff 179ELF2ECOFF?= elf2ecoff
180MKDEP?= mkdep 180MKDEP?= mkdep
181OBJCOPY?= objcopy 181OBJCOPY?= objcopy
182OBJDUMP?= objdump 182OBJDUMP?= objdump
183PAXCTL?= paxctl 183PAXCTL?= paxctl
184STRIP?= strip 184STRIP?= strip
185 185
186# TOOL_* variables are defined in bsd.own.mk 186# TOOL_* variables are defined in bsd.own.mk
187 187
188.SUFFIXES: .o .ln .lo .c .cc .cpp .cxx .C .m ${YHEADER:D.h} 188.SUFFIXES: .o .ln .lo .c .cc .cpp .cxx .C .m ${YHEADER:D.h}
189 189
190# C 190# C
191.c.o: 191.c.o:
192 ${_MKTARGET_COMPILE} 192 ${_MKTARGET_COMPILE}
193 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 193 ${COMPILE.c} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
194.if defined(CTFCONVERT) 194.if defined(CTFCONVERT)
195 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 195 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
196.endif 196.endif
197 197
198.c.ln: 198.c.ln:
199 ${_MKTARGET_COMPILE} 199 ${_MKTARGET_COMPILE}
200 ${LINT} ${LINTFLAGS} \ 200 ${LINT} ${LINTFLAGS} \
201 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 201 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
202 ${CPPFLAGS.${.IMPSRC:T}:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 202 ${CPPFLAGS.${.IMPSRC:T}:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
203 -i ${.IMPSRC} 203 -i ${.IMPSRC}
204 204
205# C++ 205# C++
206.cc.o .cpp.o .cxx.o .C.o: 206.cc.o .cpp.o .cxx.o .C.o:
207 ${_MKTARGET_COMPILE} 207 ${_MKTARGET_COMPILE}
208 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 208 ${COMPILE.cc} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
209 209
210# Objective C 210# Objective C
211# (Defined here rather than in <sys.mk> because `.m' is not just 211# (Defined here rather than in <sys.mk> because `.m' is not just
212# used for Objective C source) 212# used for Objective C source)
213.m.o: 213.m.o:
214 ${_MKTARGET_COMPILE} 214 ${_MKTARGET_COMPILE}
215 ${COMPILE.m} ${OBJCOPTS} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC} 215 ${COMPILE.m} ${OBJCOPTS} ${OBJCOPTS.${.IMPSRC:T}} ${.IMPSRC}
216.if defined(CTFCONVERT) 216.if defined(CTFCONVERT)
217 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 217 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
218.endif 218.endif
219 219
220# Host-compiled C objects 220# Host-compiled C objects
221# The intermediate step is necessary for Sun CC, which objects to calling 221# The intermediate step is necessary for Sun CC, which objects to calling
222# object files anything but *.o 222# object files anything but *.o
223.c.lo: 223.c.lo:
224 ${_MKTARGET_COMPILE} 224 ${_MKTARGET_COMPILE}
225 ${HOST_COMPILE.c} -o ${.TARGET}.o ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 225 ${HOST_COMPILE.c} -o ${.TARGET}.o ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
226 mv ${.TARGET}.o ${.TARGET} 226 mv ${.TARGET}.o ${.TARGET}
227 227
228# C++ 228# C++
229.cc.lo .cpp.lo .cxx.lo .C.lo: 229.cc.lo .cpp.lo .cxx.lo .C.lo:
230 ${_MKTARGET_COMPILE} 230 ${_MKTARGET_COMPILE}
231 ${HOST_COMPILE.cc} -o ${.TARGET}.o ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 231 ${HOST_COMPILE.cc} -o ${.TARGET}.o ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
232 mv ${.TARGET}.o ${.TARGET} 232 mv ${.TARGET}.o ${.TARGET}
233 233
234# Assembly 234# Assembly
235.s.o: 235.s.o:
236 ${_MKTARGET_COMPILE} 236 ${_MKTARGET_COMPILE}
237 ${COMPILE.s} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 237 ${COMPILE.s} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
238.if defined(CTFCONVERT) 238.if defined(CTFCONVERT)
239 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 239 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
240.endif 240.endif
241 241
242.S.o: 242.S.o:
243 ${_MKTARGET_COMPILE} 243 ${_MKTARGET_COMPILE}
244 ${COMPILE.S} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} 244 ${COMPILE.S} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
245.if defined(CTFCONVERT) 245.if defined(CTFCONVERT)
246 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 246 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
247.endif 247.endif
248 248
249# Lex 249# Lex
250LFLAGS+= ${LPREFIX.${.IMPSRC:T}:D-P${LPREFIX.${.IMPSRC:T}}} 250LFLAGS+= ${LPREFIX.${.IMPSRC:T}:D-P${LPREFIX.${.IMPSRC:T}}}
251LFLAGS+= ${LPREFIX:D-P${LPREFIX}} 251LFLAGS+= ${LPREFIX:D-P${LPREFIX}}
252 252
253.l.c: 253.l.c:
254 ${_MKTARGET_LEX} 254 ${_MKTARGET_LEX}
255 ${LEX.l} -o${.TARGET} ${.IMPSRC} 255 ${LEX.l} -o${.TARGET} ${.IMPSRC}
256 256
257# Yacc 257# Yacc
258YFLAGS+= ${YPREFIX.${.IMPSRC:T}:D-p${YPREFIX.${.IMPSRC:T}}} ${YHEADER.${.IMPSRC:T}:D-d} 258YFLAGS+= ${YPREFIX.${.IMPSRC:T}:D-p${YPREFIX.${.IMPSRC:T}}} ${YHEADER.${.IMPSRC:T}:D-d}
259YFLAGS+= ${YPREFIX:D-p${YPREFIX}} ${YHEADER:D-d} 259YFLAGS+= ${YPREFIX:D-p${YPREFIX}} ${YHEADER:D-d}
260 260
261.y.c: 261.y.c:
262 ${_MKTARGET_YACC} 262 ${_MKTARGET_YACC}
263 ${YACC.y} -o ${.TARGET} ${.IMPSRC} 263 ${YACC.y} -o ${.TARGET} ${.IMPSRC}
264 264
265.ifdef YHEADER 265.ifdef YHEADER
266.if empty(.MAKEFLAGS:M-n) 266.if empty(.MAKEFLAGS:M-n)
267.y.h: ${.TARGET:.h=.c} 267.y.h: ${.TARGET:.h=.c}
268.endif 268.endif
269.endif 269.endif
270 270
 271# Objcopy
 272OBJCOPYLIBFLAGS?=${"${.TARGET:M*.po}" != "":?-X:-x}
 273
271.endif # !defined(_BSD_SYS_MK_) 274.endif # !defined(_BSD_SYS_MK_)