Print this page
9852 enable ld(1) guidance and deflib assertions for the illumos build
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/Makefile.master
+++ new/usr/src/Makefile.master
1 1 #
2 2 # CDDL HEADER START
3 3 #
4 4 # The contents of this file are subject to the terms of the
5 5 # Common Development and Distribution License (the "License").
6 6 # You may not use this file except in compliance with the License.
7 7 #
8 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 # or http://www.opensolaris.org/os/licensing.
10 10 # See the License for the specific language governing permissions
11 11 # and limitations under the License.
12 12 #
13 13 # When distributing Covered Code, include this CDDL HEADER in each
14 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 # If applicable, add the following below this CDDL HEADER, with the
16 16 # fields enclosed by brackets "[]" replaced with your own identifying
17 17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 18 #
19 19 # CDDL HEADER END
20 20 #
21 21
22 22 #
23 23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 24 # Copyright (c) 2012 by Delphix. All rights reserved.
25 25 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
26 26 # Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
27 27 # Copyright 2015 Gary Mills
28 28 # Copyright 2015 Igor Kozhukhov <ikozhukhov@gmail.com>
29 29 # Copyright 2016 Toomas Soome <tsoome@me.com>
30 30 # Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
31 31 #
32 32
↓ open down ↓ |
32 lines elided |
↑ open up ↑ |
33 33 #
34 34 # Makefile.master, global definitions for system source
35 35 #
36 36 ROOT= /proto
37 37
38 38 #
39 39 # Adjunct root, containing an additional proto area to be used for headers
40 40 # and libraries.
41 41 #
42 42 ADJUNCT_PROTO=
43 +# HAVE_ADJUNCT_PROTO - ADJUNCT_PROTO is set to a non-default value
44 +# NO_ADJUNCT_PROTO - ADJUNCT_PROTO is unset
45 +#
46 +# This works by replacing any value in ADJUNCT_PROTO with POUND_SIGN, which
47 +# only happens if it has some value, and then setting HAVE_ADJUNCT_PROTO
48 +# oppositely.
49 +NO_ADJUNCT_PROTO=$(ADJUNCT_PROTO:%=$(POUND_SIGN))
50 +$(NO_ADJUNCT_PROTO)HAVE_ADJUNCT_PROTO=$(POUND_SIGN)
43 51
44 52 #
45 53 # Adjunct for building things that run on the build machine.
46 54 #
47 55 NATIVE_ADJUNCT= /usr
48 56
49 57 #
50 58 # RELEASE_BUILD should be cleared for final release builds.
51 59 # NOT_RELEASE_BUILD is exactly what the name implies.
52 60 #
53 61 # __GNUC toggles the building of ON components using gcc and related tools.
54 62 # Normally set to `#', set it to `' to do gcc build.
55 63 #
56 64 # The declaration POUND_SIGN is always '#'. This is needed to get around the
57 65 # make feature that '#' is always a comment delimiter, even when escaped or
58 66 # quoted. We use this macro expansion method to get POUND_SIGN rather than
59 67 # always breaking out a shell because the general case can cause a noticable
60 68 # slowdown in build times when so many Makefiles include Makefile.master.
61 69 #
62 70 # While the majority of users are expected to override the setting below
63 71 # with an env file (via nightly or bldenv), if you aren't building that way
64 72 # (ie, you're using "ws" or some other bootstrapping method) then you need
65 73 # this definition in order to avoid the subshell invocation mentioned above.
66 74 #
67 75
68 76 PRE_POUND= pre\#
69 77 POUND_SIGN= $(PRE_POUND:pre\%=%)
70 78
71 79 NOT_RELEASE_BUILD=
72 80 RELEASE_BUILD= $(POUND_SIGN)
73 81 $(RELEASE_BUILD)NOT_RELEASE_BUILD= $(POUND_SIGN)
74 82 PATCH_BUILD= $(POUND_SIGN)
75 83
76 84 # SPARC_BLD is '#' for an Intel build.
77 85 # INTEL_BLD is '#' for a Sparc build.
78 86 SPARC_BLD_1= $(MACH:i386=$(POUND_SIGN))
79 87 SPARC_BLD= $(SPARC_BLD_1:sparc=)
80 88 INTEL_BLD_1= $(MACH:sparc=$(POUND_SIGN))
81 89 INTEL_BLD= $(INTEL_BLD_1:i386=)
82 90
83 91 # The variables below control the compilers used during the build.
84 92 # There are a number of permutations.
85 93 #
86 94 # __GNUC and __SUNC control (and indicate) the primary compiler. Whichever
87 95 # one is not POUND_SIGN is the primary, with the other as the shadow. They
88 96 # may also be used to control entirely compiler-specific Makefile assignments.
89 97 # __GNUC and GCC are the default.
90 98 #
91 99 # __GNUC64 indicates that the 64bit build should use the GNU C compiler.
92 100 # There is no Sun C analogue.
93 101 #
94 102 # The following version-specific options are operative regardless of which
95 103 # compiler is primary, and control the versions of the given compilers to be
96 104 # used. They also allow compiler-version specific Makefile fragments.
97 105 #
98 106
99 107 __SUNC= $(POUND_SIGN)
100 108 $(__SUNC)__GNUC= $(POUND_SIGN)
101 109 __GNUC64= $(__GNUC)
102 110
103 111 # Allow build-time "configuration" to enable or disable some things.
104 112 # The default is POUND_SIGN, meaning "not enabled". If the environment
105 113 # passes in an override like ENABLE_SMB_PRINTING= (empty) that will
106 114 # uncomment things in the lower Makefiles to enable the feature.
107 115 ENABLE_SMB_PRINTING= $(POUND_SIGN)
108 116
109 117 # CLOSED is the root of the tree that contains source which isn't released
110 118 # as open source
111 119 CLOSED= $(SRC)/../closed
112 120
113 121 # BUILD_TOOLS is the root of all tools including compilers.
114 122 # ONBLD_TOOLS is the root of all the tools that are part of SUNWonbld.
115 123
116 124 BUILD_TOOLS= /ws/onnv-tools
117 125 ONBLD_TOOLS= $(BUILD_TOOLS)/onbld
118 126
119 127 # define runtime JAVA_HOME, primarily for cmd/pools/poold
120 128 JAVA_HOME= /usr/java
121 129 # define buildtime JAVA_ROOT
122 130 JAVA_ROOT= /usr/java
123 131 # Build uses java7 by default. Pass one the variables below set to empty
124 132 # string in the environment to override.
125 133 BLD_JAVA_6= $(POUND_SIGN)
126 134 BLD_JAVA_8= $(POUND_SIGN)
127 135
128 136 GNUC_ROOT= /opt/gcc/4.4.4
129 137 GCCLIBDIR= $(GNUC_ROOT)/lib
130 138 GCCLIBDIR64= $(GNUC_ROOT)/lib/$(MACH64)
131 139
132 140 DOCBOOK_XSL_ROOT= /usr/share/sgml/docbook/xsl-stylesheets
133 141
134 142 RPCGEN= /usr/bin/rpcgen
135 143 STABS= $(ONBLD_TOOLS)/bin/$(MACH)/stabs
136 144 ELFEXTRACT= $(ONBLD_TOOLS)/bin/$(MACH)/elfextract
137 145 MBH_PATCH= $(ONBLD_TOOLS)/bin/$(MACH)/mbh_patch
138 146 BTXLD= $(ONBLD_TOOLS)/bin/$(MACH)/btxld
139 147 VTFONTCVT= $(ONBLD_TOOLS)/bin/$(MACH)/vtfontcvt
140 148 # echo(1) and true(1) are specified without absolute paths, so that the shell
141 149 # spawned by make(1) may use the built-in versions. This is minimally
142 150 # problematic, as the shell spawned by make(1) is known and under control, the
143 151 # only risk being if the shell falls back to $PATH.
144 152 #
145 153 # We specifically want an echo(1) that does interpolation of escape sequences,
146 154 # which ksh93, /bin/sh, and bash will all provide.
147 155 ECHO= echo
148 156 TRUE= true
149 157 INS= $(ONBLD_TOOLS)/bin/$(MACH)/install
150 158 SYMLINK= /usr/bin/ln -s
151 159 LN= /usr/bin/ln
152 160 MKDIR= /usr/bin/mkdir
153 161 CHMOD= /usr/bin/chmod
154 162 MV= /usr/bin/mv -f
155 163 RM= /usr/bin/rm -f
156 164 CUT= /usr/bin/cut
157 165 NM= /usr/ccs/bin/nm
158 166 DIFF= /usr/bin/diff
159 167 GREP= /usr/bin/grep
160 168 EGREP= /usr/bin/egrep
161 169 ELFWRAP= /usr/bin/elfwrap
162 170 KSH93= /usr/bin/ksh93
163 171 SED= /usr/bin/sed
164 172 AWK= /usr/bin/nawk
165 173 CP= /usr/bin/cp -f
166 174 MCS= /usr/ccs/bin/mcs
167 175 CAT= /usr/bin/cat
168 176 ELFDUMP= /usr/ccs/bin/elfdump
169 177 M4= /usr/bin/m4
170 178 STRIP= /usr/ccs/bin/strip
171 179 LEX= /usr/ccs/bin/lex
172 180 FLEX= /usr/bin/flex
173 181 YACC= /usr/ccs/bin/yacc
174 182 CPP= /usr/lib/cpp
175 183 ANSI_CPP= $(GNUC_ROOT)/bin/cpp
176 184 JAVAC= $(JAVA_ROOT)/bin/javac
177 185 JAVAH= $(JAVA_ROOT)/bin/javah
178 186 JAVADOC= $(JAVA_ROOT)/bin/javadoc
179 187 RMIC= $(JAVA_ROOT)/bin/rmic
180 188 JAR= $(JAVA_ROOT)/bin/jar
181 189 CTFCONVERT= $(ONBLD_TOOLS)/bin/$(MACH)/ctfconvert
182 190 CTFMERGE= $(ONBLD_TOOLS)/bin/$(MACH)/ctfmerge
183 191 CTFSTABS= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstabs
184 192 CTFSTRIP= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstrip
185 193 NDRGEN= $(ONBLD_TOOLS)/bin/$(MACH)/ndrgen
186 194 GENOFFSETS= $(ONBLD_TOOLS)/bin/genoffsets
187 195 XREF= $(ONBLD_TOOLS)/bin/xref
188 196 FIND= /usr/bin/find
189 197 PERL= /usr/bin/perl
190 198 PERL_VERSION= 5.10.0
191 199 PERL_PKGVERS= -510
192 200 PERL_ARCH = i86pc-solaris-64int
193 201 $(SPARC_BLD)PERL_ARCH = sun4-solaris-64int
194 202 PYTHON_VERSION= 2.7
195 203 PYTHON_PKGVERS= -27
196 204 PYTHON= /usr/bin/python$(PYTHON_VERSION)
197 205 SORT= /usr/bin/sort
198 206 TOUCH= /usr/bin/touch
199 207 WC= /usr/bin/wc
200 208 XARGS= /usr/bin/xargs
201 209 ELFEDIT= /usr/bin/elfedit
202 210 DTRACE= /usr/sbin/dtrace -xnolibs
203 211 UNIQ= /usr/bin/uniq
204 212 TAR= /usr/bin/tar
205 213 ASTBINDIR= /usr/ast/bin
206 214 MSGCC= $(ASTBINDIR)/msgcc
207 215 MSGFMT= /usr/bin/msgfmt -s
208 216 LCDEF= $(ONBLD_TOOLS)/bin/$(MACH)/localedef
209 217 TIC= $(ONBLD_TOOLS)/bin/$(MACH)/tic
210 218 ZIC= $(ONBLD_TOOLS)/bin/$(MACH)/zic
211 219 OPENSSL= /usr/bin/openssl
212 220
213 221 FILEMODE= 644
214 222 DIRMODE= 755
215 223
216 224 # Declare that nothing should be built in parallel.
217 225 # Individual Makefiles can use the .PARALLEL target to declare otherwise.
218 226 .NO_PARALLEL:
219 227
220 228 # For stylistic checks
221 229 #
222 230 # Note that the X and C checks are not used at this time and may need
223 231 # modification when they are actually used.
224 232 #
225 233 CSTYLE= $(ONBLD_TOOLS)/bin/cstyle
226 234 CSTYLE_TAIL=
227 235 HDRCHK= $(ONBLD_TOOLS)/bin/hdrchk
228 236 HDRCHK_TAIL=
229 237 JSTYLE= $(ONBLD_TOOLS)/bin/jstyle
230 238
231 239 DOT_H_CHECK= \
232 240 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL); \
233 241 $(HDRCHK) $< $(HDRCHK_TAIL)
234 242
235 243 DOT_X_CHECK= \
236 244 @$(ECHO) "checking $<"; $(RPCGEN) -C -h $< | $(CSTYLE) $(CSTYLE_TAIL); \
237 245 $(RPCGEN) -C -h $< | $(HDRCHK) $< $(HDRCHK_TAIL)
238 246
239 247 DOT_C_CHECK= \
240 248 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL)
241 249
242 250 MANIFEST_CHECK= \
243 251 @$(ECHO) "checking $<"; \
244 252 SVCCFG_DTD=$(SRC)/cmd/svc/dtd/service_bundle.dtd.1 \
245 253 SVCCFG_REPOSITORY=$(SRC)/cmd/svc/seed/global.db \
246 254 SVCCFG_CONFIGD_PATH=$(SRC)/cmd/svc/configd/svc.configd-native \
247 255 $(SRC)/cmd/svc/svccfg/svccfg-native validate $<
248 256
249 257 INS.file= $(RM) $@; $(INS) -s -m $(FILEMODE) -f $(@D) $<
250 258 INS.dir= $(INS) -s -d -m $(DIRMODE) $@
251 259 # installs and renames at once
252 260 #
253 261 INS.rename= $(INS.file); $(MV) $(@D)/$(<F) $@
254 262
255 263 # install a link
256 264 INSLINKTARGET= $<
257 265 INS.link= $(RM) $@; $(LN) $(INSLINKTARGET) $@
258 266 INS.symlink= $(RM) $@; $(SYMLINK) $(INSLINKTARGET) $@
259 267
260 268 #
261 269 # Python bakes the mtime of the .py file into the compiled .pyc and
262 270 # rebuilds if the baked-in mtime != the mtime of the source file
263 271 # (rather than only if it's less than), thus when installing python
264 272 # files we must make certain to not adjust the mtime of the source
265 273 # (.py) file.
266 274 #
267 275 INS.pyfile= $(RM) $@; $(SED) -e "1s:^\#!@PYTHON@:\#!$(PYTHON):" < $< > $@; $(CHMOD) $(FILEMODE) $@; $(TOUCH) -r $< $@
268 276
269 277 # MACH must be set in the shell environment per uname -p on the build host
270 278 # More specific architecture variables should be set in lower makefiles.
271 279 #
272 280 # MACH64 is derived from MACH, and BUILD64 is set to `#' for
273 281 # architectures on which we do not build 64-bit versions.
274 282 # (There are no such architectures at the moment.)
275 283 #
276 284 # Set BUILD64=# in the environment to disable 64-bit amd64
277 285 # builds on i386 machines.
278 286
279 287 MACH64_1= $(MACH:sparc=sparcv9)
280 288 MACH64= $(MACH64_1:i386=amd64)
281 289
282 290 MACH32_1= $(MACH:sparc=sparcv7)
283 291 MACH32= $(MACH32_1:i386=i86)
284 292
285 293 sparc_BUILD64=
286 294 i386_BUILD64=
287 295 BUILD64= $($(MACH)_BUILD64)
288 296
289 297 #
290 298 # C compiler mode. Future compilers may change the default on us,
291 299 # so force extended ANSI mode globally. Lower level makefiles can
292 300 # override this by setting CCMODE.
293 301 #
294 302 CCMODE= -Xa
295 303 CCMODE64= -Xa
296 304
297 305 #
298 306 # C compiler verbose mode. This is so we can enable it globally,
299 307 # but turn it off in the lower level makefiles of things we cannot
300 308 # (or aren't going to) fix.
301 309 #
302 310 CCVERBOSE= -v
303 311
304 312 # set this to the secret flag "-Wc,-Qiselect-v9abiwarn=1" to get warnings
305 313 # from the compiler about places the -xarch=v9 may differ from -xarch=v9c.
306 314 V9ABIWARN=
307 315
308 316 # set this to the secret flag "-Wc,-Qiselect-regsym=0" to disable register
309 317 # symbols (used to detect conflicts between objects that use global registers)
310 318 # we disable this now for safety, and because genunix doesn't link with
311 319 # this feature (the v9 default) enabled.
312 320 #
313 321 # REGSYM is separate since the C++ driver syntax is different.
314 322 CCREGSYM= -Wc,-Qiselect-regsym=0
315 323 CCCREGSYM= -Qoption cg -Qiselect-regsym=0
316 324
317 325 # Prevent the removal of static symbols by the SPARC code generator (cg).
318 326 # The x86 code generator (ube) does not remove such symbols and as such
319 327 # using this workaround is not applicable for x86.
320 328 #
321 329 CCSTATICSYM= -Wc,-Qassembler-ounrefsym=0
322 330 #
323 331 # generate 32-bit addresses in the v9 kernel. Saves memory.
324 332 CCABS32= -Wc,-xcode=abs32
325 333 #
326 334 # generate v9 code which tolerates callers using the v7 ABI, for the sake of
327 335 # system calls.
328 336 CC32BITCALLERS= -_gcc=-massume-32bit-callers
329 337
330 338 # GCC, especially, is increasingly beginning to auto-inline functions and
331 339 # sadly does so separately not under the general -fno-inline-functions
332 340 # Additionally, we wish to prevent optimisations which cause GCC to clone
333 341 # functions -- in particular, these may cause unhelpful symbols to be
334 342 # emitted instead of function names
335 343 CCNOAUTOINLINE= -_gcc=-fno-inline-small-functions \
336 344 -_gcc=-fno-inline-functions-called-once \
337 345 -_gcc=-fno-ipa-cp
338 346
339 347 # One optimization the compiler might perform is to turn this:
340 348 # #pragma weak foo
341 349 # extern int foo;
342 350 # if (&foo)
343 351 # foo = 5;
344 352 # into
345 353 # foo = 5;
346 354 # Since we do some of this (foo might be referenced in common kernel code
347 355 # but provided only for some cpu modules or platforms), we disable this
348 356 # optimization.
349 357 #
350 358 sparc_CCUNBOUND = -Wd,-xsafe=unboundsym
351 359 i386_CCUNBOUND =
352 360 CCUNBOUND = $($(MACH)_CCUNBOUND)
353 361
354 362 #
355 363 # compiler '-xarch' flag. This is here to centralize it and make it
356 364 # overridable for testing.
357 365 sparc_XARCH= -m32
358 366 sparcv9_XARCH= -m64
359 367 i386_XARCH= -m32
360 368 amd64_XARCH= -m64 -Ui386 -U__i386
361 369
362 370 # assembler '-xarch' flag. Different from compiler '-xarch' flag.
363 371 sparc_AS_XARCH= -xarch=v8plus
364 372 sparcv9_AS_XARCH= -xarch=v9
365 373 i386_AS_XARCH=
366 374 amd64_AS_XARCH= -xarch=amd64 -P -Ui386 -U__i386
367 375
368 376 #
369 377 # These flags define what we need to be 'standalone' i.e. -not- part
370 378 # of the rather more cosy userland environment. This basically means
371 379 # the kernel.
372 380 #
373 381 # XX64 future versions of gcc will make -mcmodel=kernel imply -mno-red-zone
374 382 #
375 383 sparc_STAND_FLAGS= -_gcc=-ffreestanding
376 384 sparcv9_STAND_FLAGS= -_gcc=-ffreestanding
377 385 # Disabling MMX also disables 3DNow, disabling SSE also disables all later
378 386 # additions to SSE (SSE2, AVX ,etc.)
379 387 NO_SIMD= -_gcc=-mno-mmx -_gcc=-mno-sse
380 388 i386_STAND_FLAGS= -_gcc=-ffreestanding $(NO_SIMD)
381 389 amd64_STAND_FLAGS= -xmodel=kernel $(NO_SIMD)
382 390
383 391 SAVEARGS= -Wu,-save_args
384 392 amd64_STAND_FLAGS += $(SAVEARGS)
385 393
386 394 STAND_FLAGS_32 = $($(MACH)_STAND_FLAGS)
387 395 STAND_FLAGS_64 = $($(MACH64)_STAND_FLAGS)
388 396
389 397 #
390 398 # disable the incremental linker
391 399 ILDOFF= -xildoff
392 400 #
393 401 XDEPEND= -xdepend
394 402 XFFLAG= -xF=%all
395 403 XESS= -xs
396 404 XSTRCONST= -xstrconst
397 405
398 406 #
399 407 # turn warnings into errors (C)
400 408 CERRWARN = -errtags=yes -errwarn=%all
401 409 CERRWARN += -erroff=E_EMPTY_TRANSLATION_UNIT
402 410 CERRWARN += -erroff=E_STATEMENT_NOT_REACHED
403 411
404 412 CERRWARN += -_gcc=-Wno-missing-braces
405 413 CERRWARN += -_gcc=-Wno-sign-compare
406 414 CERRWARN += -_gcc=-Wno-unknown-pragmas
407 415 CERRWARN += -_gcc=-Wno-unused-parameter
408 416 CERRWARN += -_gcc=-Wno-missing-field-initializers
409 417
410 418 # Unfortunately, this option can misfire very easily and unfixably.
411 419 CERRWARN += -_gcc=-Wno-array-bounds
412 420
413 421 # DEBUG v. -nd make for frequent unused variables, empty conditions, etc. in
414 422 # -nd builds
415 423 $(RELEASE_BUILD)CERRWARN += -_gcc=-Wno-unused
416 424 $(RELEASE_BUILD)CERRWARN += -_gcc=-Wno-empty-body
417 425
418 426 #
419 427 # turn warnings into errors (C++)
420 428 CCERRWARN= -xwe
421 429
422 430 # C standard. Keep Studio flags until we get rid of lint.
423 431 CSTD_GNU89= -xc99=%none
424 432 CSTD_GNU99= -xc99=%all
425 433 CSTD= $(CSTD_GNU89)
426 434 C99LMODE= $(CSTD:-xc99%=-Xc99%)
427 435
428 436 # In most places, assignments to these macros should be appended with +=
429 437 # (CPPFLAGS.first allows values to be prepended to CPPFLAGS).
430 438 sparc_CFLAGS= $(sparc_XARCH) $(CCSTATICSYM)
431 439 sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(V9ABIWARN) $(CCREGSYM) \
432 440 $(CCSTATICSYM)
433 441 i386_CFLAGS= $(i386_XARCH)
434 442 amd64_CFLAGS= $(amd64_XARCH)
435 443
436 444 sparc_ASFLAGS= $(sparc_AS_XARCH)
437 445 sparcv9_ASFLAGS=$(sparcv9_AS_XARCH)
438 446 i386_ASFLAGS= $(i386_AS_XARCH)
439 447 amd64_ASFLAGS= $(amd64_AS_XARCH)
440 448
441 449 #
442 450 sparc_COPTFLAG= -xO3
443 451 sparcv9_COPTFLAG= -xO3
444 452 i386_COPTFLAG= -O
445 453 amd64_COPTFLAG= -xO3
446 454
447 455 COPTFLAG= $($(MACH)_COPTFLAG)
448 456 COPTFLAG64= $($(MACH64)_COPTFLAG)
449 457
450 458 # When -g is used, the compiler globalizes static objects
451 459 # (gives them a unique prefix). Disable that.
452 460 CNOGLOBAL= -W0,-noglobal
453 461
454 462 # Direct the Sun Studio compiler to use a static globalization prefix based on the
455 463 # name of the module rather than something unique. Otherwise, objects
456 464 # will not build deterministically, as subsequent compilations of identical
457 465 # source will yeild objects that always look different.
458 466 #
459 467 # In the same spirit, this will also remove the date from the N_OPT stab.
460 468 CGLOBALSTATIC= -W0,-xglobalstatic
461 469
462 470 # Sometimes we want all symbols and types in debugging information even
463 471 # if they aren't used.
464 472 CALLSYMS= -W0,-xdbggen=no%usedonly
465 473
466 474 #
467 475 # Default debug format for Sun Studio 11 is dwarf, so force it to
468 476 # generate stabs.
469 477 #
470 478 DEBUGFORMAT= -xdebugformat=stabs
471 479
472 480 #
473 481 # Flags used to build in debug mode for ctf generation. Bugs in the Devpro
474 482 # compilers currently prevent us from building with cc-emitted DWARF.
475 483 #
476 484 CTF_FLAGS_sparc = -g -Wc,-Qiselect-T1 $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
477 485 CTF_FLAGS_i386 = -g $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
478 486
479 487 CTF_FLAGS_sparcv9 = $(CTF_FLAGS_sparc)
480 488 CTF_FLAGS_amd64 = $(CTF_FLAGS_i386)
481 489
482 490 # Sun Studio produces broken userland code when saving arguments.
483 491 $(__GNUC)CTF_FLAGS_amd64 += $(SAVEARGS)
484 492
485 493 CTF_FLAGS_32 = $(CTF_FLAGS_$(MACH)) $(DEBUGFORMAT)
486 494 CTF_FLAGS_64 = $(CTF_FLAGS_$(MACH64)) $(DEBUGFORMAT)
487 495 CTF_FLAGS = $(CTF_FLAGS_32)
488 496
489 497 #
490 498 # Flags used with genoffsets
491 499 #
492 500 GOFLAGS = -_noecho \
493 501 $(CALLSYMS) \
494 502 $(CDWARFSTR)
495 503
496 504 OFFSETS_CREATE = $(GENOFFSETS) -s $(CTFSTABS) -r $(CTFCONVERT) \
497 505 $(CC) $(GOFLAGS) $(CFLAGS) $(CPPFLAGS)
498 506
499 507 OFFSETS_CREATE64 = $(GENOFFSETS) -s $(CTFSTABS) -r $(CTFCONVERT) \
500 508 $(CC) $(GOFLAGS) $(CFLAGS64) $(CPPFLAGS)
501 509
502 510 #
503 511 # tradeoff time for space (smaller is better)
504 512 #
505 513 sparc_SPACEFLAG = -xspace -W0,-Lt
506 514 sparcv9_SPACEFLAG = -xspace -W0,-Lt
507 515 i386_SPACEFLAG = -xspace
508 516 amd64_SPACEFLAG =
509 517
510 518 SPACEFLAG = $($(MACH)_SPACEFLAG)
511 519 SPACEFLAG64 = $($(MACH64)_SPACEFLAG)
512 520
513 521 #
514 522 # The Sun Studio 11 compiler has changed the behaviour of integer
515 523 # wrap arounds and so a flag is needed to use the legacy behaviour
516 524 # (without this flag panics/hangs could be exposed within the source).
517 525 #
518 526 sparc_IROPTFLAG = -W2,-xwrap_int
519 527 sparcv9_IROPTFLAG = -W2,-xwrap_int
520 528 i386_IROPTFLAG =
521 529 amd64_IROPTFLAG =
522 530
523 531 IROPTFLAG = $($(MACH)_IROPTFLAG)
524 532 IROPTFLAG64 = $($(MACH64)_IROPTFLAG)
525 533
526 534 sparc_XREGSFLAG = -xregs=no%appl
527 535 sparcv9_XREGSFLAG = -xregs=no%appl
528 536 i386_XREGSFLAG =
529 537 amd64_XREGSFLAG =
530 538
531 539 XREGSFLAG = $($(MACH)_XREGSFLAG)
532 540 XREGSFLAG64 = $($(MACH64)_XREGSFLAG)
533 541
534 542 # dmake SOURCEDEBUG=yes ... enables source-level debugging information, and
535 543 # avoids stripping it.
536 544 SOURCEDEBUG = $(POUND_SIGN)
537 545 SRCDBGBLD = $(SOURCEDEBUG:yes=)
538 546
539 547 #
540 548 # These variables are intended ONLY for use by developers to safely pass extra
541 549 # flags to the compilers without unintentionally overriding Makefile-set
542 550 # flags. They should NEVER be set to any value in a Makefile.
543 551 #
544 552 # They come last in the associated FLAGS variable such that they can
545 553 # explicitly override things if necessary, there are gaps in this, but it's
546 554 # the best we can manage.
547 555 #
548 556 CUSERFLAGS =
549 557 CUSERFLAGS64 = $(CUSERFLAGS)
550 558 CCUSERFLAGS =
551 559 CCUSERFLAGS64 = $(CCUSERFLAGS)
552 560
553 561 CSOURCEDEBUGFLAGS =
554 562 CCSOURCEDEBUGFLAGS =
555 563 $(SRCDBGBLD)CSOURCEDEBUGFLAGS = -g -xs
556 564 $(SRCDBGBLD)CCSOURCEDEBUGFLAGS = -g -xs
557 565
558 566 CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \
559 567 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG) \
560 568 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
561 569 $(CUSERFLAGS)
562 570 CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \
563 571 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG64) \
564 572 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
565 573 $(CUSERFLAGS64)
566 574 #
567 575 # Flags that are used to build parts of the code that are subsequently
568 576 # run on the build machine (also known as the NATIVE_BUILD).
569 577 #
570 578 NATIVE_CFLAGS= $(COPTFLAG) $($(NATIVE_MACH)_CFLAGS) $(CCMODE) \
571 579 $(ILDOFF) $(CERRWARN) $(CSTD) $($(NATIVE_MACH)_CCUNBOUND) \
572 580 $(IROPTFLAG) $(CGLOBALSTATIC) $(CCNOAUTOINLINE) \
573 581 $(CSOURCEDEBUGFLAGS) $(CUSERFLAGS)
574 582
575 583 DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging.
576 584 DTS_ERRNO=-D_TS_ERRNO
577 585 CPPFLAGS.first= # Please keep empty. Only lower makefiles should set this.
578 586 CPPFLAGS.master=$(DTEXTDOM) $(DTS_ERRNO) \
579 587 $(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4) \
580 588 $(ADJUNCT_PROTO:%=-I%/usr/include)
581 589 CPPFLAGS.native=$(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) \
582 590 $(ENVCPPFLAGS4) -I$(NATIVE_ADJUNCT)/include
583 591 CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
584 592 AS_CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
585 593 JAVAFLAGS= -source 1.6 -target 1.6 -Xlint:deprecation,-options
586 594
587 595 #
588 596 # For source message catalogue
589 597 #
590 598 .SUFFIXES: $(SUFFIXES) .i .po
591 599 MSGROOT= $(ROOT)/catalog
592 600 MSGDOMAIN= $(MSGROOT)/$(TEXT_DOMAIN)
593 601 MSGDOMAINPOFILE = $(MSGDOMAIN)/$(POFILE)
594 602 DCMSGDOMAIN= $(MSGROOT)/LC_TIME/$(TEXT_DOMAIN)
595 603 DCMSGDOMAINPOFILE = $(DCMSGDOMAIN)/$(DCFILE:.dc=.po)
596 604
597 605 CLOBBERFILES += $(POFILE) $(POFILES)
598 606 COMPILE.cpp= $(CC) -E -C $(CFLAGS) $(CPPFLAGS)
599 607 XGETTEXT= /usr/bin/xgettext
600 608 XGETFLAGS= -c TRANSLATION_NOTE
601 609 GNUXGETTEXT= /usr/gnu/bin/xgettext
602 610 GNUXGETFLAGS= --add-comments=TRANSLATION_NOTE --keyword=_ \
603 611 --strict --no-location --omit-header
604 612 BUILD.po= $(XGETTEXT) $(XGETFLAGS) -d $(<F) $<.i ;\
605 613 $(RM) $@ ;\
606 614 $(SED) "/^domain/d" < $(<F).po > $@ ;\
607 615 $(RM) $(<F).po $<.i
608 616
609 617 #
610 618 # This is overwritten by local Makefile when PROG is a list.
611 619 #
612 620 POFILE= $(PROG).po
613 621
614 622 sparc_CCFLAGS= -cg92 -compat=4 \
615 623 -Qoption ccfe -messages=no%anachronism \
616 624 $(CCERRWARN)
617 625 sparcv9_CCFLAGS= $(sparcv9_XARCH) -dalign -compat=5 \
618 626 -Qoption ccfe -messages=no%anachronism \
619 627 -Qoption ccfe -features=no%conststrings \
620 628 $(CCCREGSYM) \
621 629 $(CCERRWARN)
622 630 i386_CCFLAGS= -compat=4 \
623 631 -Qoption ccfe -messages=no%anachronism \
624 632 -Qoption ccfe -features=no%conststrings \
625 633 $(CCERRWARN)
626 634 amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \
627 635 -Qoption ccfe -messages=no%anachronism \
628 636 -Qoption ccfe -features=no%conststrings \
629 637 $(CCERRWARN)
630 638
631 639 sparc_CCOPTFLAG= -O
632 640 sparcv9_CCOPTFLAG= -O
633 641 i386_CCOPTFLAG= -O
634 642 amd64_CCOPTFLAG= -O
635 643
636 644 CCOPTFLAG= $($(MACH)_CCOPTFLAG)
637 645 CCOPTFLAG64= $($(MACH64)_CCOPTFLAG)
638 646 CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
639 647 $(CCUSERFLAGS)
640 648 CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
641 649 $(CCUSERFLAGS64)
642 650
643 651 #
644 652 #
645 653 #
646 654 ELFWRAP_FLAGS =
647 655 ELFWRAP_FLAGS64 = -64
648 656
649 657 #
650 658 # Various mapfiles that are used throughout the build, and delivered to
651 659 # /usr/lib/ld.
652 660 #
653 661 MAPFILE.NED_i386 = $(SRC)/common/mapfiles/common/map.noexdata
654 662 MAPFILE.NED_sparc =
655 663 MAPFILE.NED = $(MAPFILE.NED_$(MACH))
656 664 MAPFILE.PGA = $(SRC)/common/mapfiles/common/map.pagealign
657 665 MAPFILE.NES = $(SRC)/common/mapfiles/common/map.noexstk
658 666 MAPFILE.FLT = $(SRC)/common/mapfiles/common/map.filter
659 667 MAPFILE.LEX = $(SRC)/common/mapfiles/common/map.lex.yy
660 668
661 669 #
662 670 # Generated mapfiles that are compiler specific, and used throughout the
663 671 # build. These mapfiles are not delivered in /usr/lib/ld.
664 672 #
665 673 MAPFILE.NGB_sparc= $(SRC)/common/mapfiles/gen/sparc_cc_map.noexeglobs
666 674 $(__GNUC64)MAPFILE.NGB_sparc= \
667 675 $(SRC)/common/mapfiles/gen/sparc_gcc_map.noexeglobs
668 676 MAPFILE.NGB_sparcv9= $(SRC)/common/mapfiles/gen/sparcv9_cc_map.noexeglobs
669 677 $(__GNUC64)MAPFILE.NGB_sparcv9= \
670 678 $(SRC)/common/mapfiles/gen/sparcv9_gcc_map.noexeglobs
671 679 MAPFILE.NGB_i386= $(SRC)/common/mapfiles/gen/i386_cc_map.noexeglobs
672 680 $(__GNUC64)MAPFILE.NGB_i386= \
673 681 $(SRC)/common/mapfiles/gen/i386_gcc_map.noexeglobs
674 682 MAPFILE.NGB_amd64= $(SRC)/common/mapfiles/gen/amd64_cc_map.noexeglobs
675 683 $(__GNUC64)MAPFILE.NGB_amd64= \
676 684 $(SRC)/common/mapfiles/gen/amd64_gcc_map.noexeglobs
677 685 MAPFILE.NGB = $(MAPFILE.NGB_$(MACH))
678 686
679 687 #
680 688 # A generic interface mapfile name, used by various dynamic objects to define
681 689 # the interfaces and interposers the object must export.
682 690 #
683 691 MAPFILE.INT = mapfile-intf
684 692
685 693 #
↓ open down ↓ |
633 lines elided |
↑ open up ↑ |
686 694 # LDLIBS32 and LDLIBS64 can be set in the environment to override the following
687 695 # assignments.
688 696 #
689 697 # These environment settings make sure that no libraries are searched outside
690 698 # of the local workspace proto area:
691 699 # LDLIBS32=-YP,$ROOT/lib:$ROOT/usr/lib
692 700 # LDLIBS64=-YP,$ROOT/lib/$MACH64:$ROOT/usr/lib/$MACH64
693 701 #
694 702 LDLIBS32 = $(ENVLDLIBS1) $(ENVLDLIBS2) $(ENVLDLIBS3)
695 703 LDLIBS32 += $(ADJUNCT_PROTO:%=-L%/usr/lib -L%/lib)
696 -LDLIBS.cmd = $(LDLIBS32)
704 +LDLIBS.cmd = $(LDLIBS32)
697 705 LDLIBS.lib = $(LDLIBS32)
698 706
699 707 LDLIBS64 = $(ENVLDLIBS1:%=%/$(MACH64)) \
700 708 $(ENVLDLIBS2:%=%/$(MACH64)) \
701 709 $(ENVLDLIBS3:%=%/$(MACH64))
702 710 LDLIBS64 += $(ADJUNCT_PROTO:%=-L%/usr/lib/$(MACH64) -L%/lib/$(MACH64))
703 711
704 712 #
705 713 # Define compilation macros.
706 714 #
707 715 COMPILE.c= $(CC) $(CFLAGS) $(CPPFLAGS) -c
708 716 COMPILE64.c= $(CC) $(CFLAGS64) $(CPPFLAGS) -c
709 717 COMPILE.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) -c
710 718 COMPILE64.cc= $(CCC) $(CCFLAGS64) $(CPPFLAGS) -c
711 719 COMPILE.s= $(AS) $(ASFLAGS) $(AS_CPPFLAGS)
712 720 COMPILE64.s= $(AS) $(ASFLAGS) $($(MACH64)_AS_XARCH) $(AS_CPPFLAGS)
713 721 COMPILE.d= $(DTRACE) -G -32
714 722 COMPILE64.d= $(DTRACE) -G -64
715 723 COMPILE.b= $(ELFWRAP) $(ELFWRAP_FLAGS$(CLASS))
716 724 COMPILE64.b= $(ELFWRAP) $(ELFWRAP_FLAGS$(CLASS))
717 725
718 726 CLASSPATH= .
↓ open down ↓ |
12 lines elided |
↑ open up ↑ |
719 727 COMPILE.java= $(JAVAC) $(JAVAFLAGS) -classpath $(CLASSPATH)
720 728
721 729 #
722 730 # Link time macros
723 731 #
724 732 CCNEEDED = -lC
725 733 CCEXTNEEDED = -lCrun -lCstd
726 734 $(__GNUC)CCNEEDED = -L$(GCCLIBDIR) -lstdc++ -lgcc_s
727 735 $(__GNUC)CCEXTNEEDED = $(CCNEEDED)
728 736
729 -LINK.c= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
730 -LINK64.c= $(CC) $(CFLAGS64) $(CPPFLAGS) $(LDFLAGS)
737 +# Libraries we expect to find in ADJUNCT_PROTO
738 +ADJUNCT_LIBS=
739 +# Libraries we expect to use natively on the build machine
740 +NATIVE_LIBS=
741 +
742 +LDCHECKS = $(ZASSERTDEFLIB) $(ZGUIDANCE) $(ZFATALWARNINGS)
743 +LDCHECKS += $(NATIVE_LIBS:%=$(ZASSERTDEFLIB)=%)
744 +$(NO_ADJUNCT_PROTO)LDCHECKS += $(ADJUNCT_LIBS:%=$(ZASSERTDEFLIB)=%)
745 +
746 +LINK.c= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(LDCHECKS)
747 +LINK64.c= $(CC) $(CFLAGS64) $(CPPFLAGS) $(LDFLAGS) $(LDCHECKS)
731 748 NORUNPATH= -norunpath -nolib
732 749 LINK.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) $(NORUNPATH) \
733 - $(LDFLAGS) $(CCNEEDED)
750 + $(LDFLAGS) $(CCNEEDED) $(LDCHECKS)
734 751 LINK64.cc= $(CCC) $(CCFLAGS64) $(CPPFLAGS) $(NORUNPATH) \
735 - $(LDFLAGS) $(CCNEEDED)
752 + $(LDFLAGS) $(CCNEEDED) $(LDCHECKS)
736 753
737 754 #
738 755 # lint macros
739 756 #
740 757 # Note that the undefine of __PRAGMA_REDEFINE_EXTNAME can be removed once
741 758 # ON is built with a version of lint that has the fix for 4484186.
742 759 #
743 760 ALWAYS_LINT_DEFS = -errtags=yes -s
744 761 ALWAYS_LINT_DEFS += -erroff=E_PTRDIFF_OVERFLOW
745 762 ALWAYS_LINT_DEFS += -erroff=E_ASSIGN_NARROW_CONV
746 763 ALWAYS_LINT_DEFS += -U__PRAGMA_REDEFINE_EXTNAME
747 764 ALWAYS_LINT_DEFS += $(C99LMODE)
748 765 ALWAYS_LINT_DEFS += -errsecurity=$(SECLEVEL)
749 766 ALWAYS_LINT_DEFS += -erroff=E_SEC_CREAT_WITHOUT_EXCL
750 767 ALWAYS_LINT_DEFS += -erroff=E_SEC_FORBIDDEN_WARN_CREAT
751 768 # XX64 -- really only needed for amd64 lint
752 769 ALWAYS_LINT_DEFS += -erroff=E_ASSIGN_INT_TO_SMALL_INT
753 770 ALWAYS_LINT_DEFS += -erroff=E_CAST_INT_CONST_TO_SMALL_INT
754 771 ALWAYS_LINT_DEFS += -erroff=E_CAST_INT_TO_SMALL_INT
755 772 ALWAYS_LINT_DEFS += -erroff=E_CAST_TO_PTR_FROM_INT
756 773 ALWAYS_LINT_DEFS += -erroff=E_COMP_INT_WITH_LARGE_INT
757 774 ALWAYS_LINT_DEFS += -erroff=E_INTEGRAL_CONST_EXP_EXPECTED
758 775 ALWAYS_LINT_DEFS += -erroff=E_PASS_INT_TO_SMALL_INT
759 776 ALWAYS_LINT_DEFS += -erroff=E_PTR_CONV_LOSES_BITS
760 777
761 778 # This forces lint to pick up note.h and sys/note.h from Devpro rather than
762 779 # from the proto area. The note.h that ON delivers would disable NOTE().
763 780 ONLY_LINT_DEFS = -I$(SPRO_VROOT)/prod/include/lint
764 781
765 782 SECLEVEL= core
766 783 LINT.c= $(LINT) $(ONLY_LINT_DEFS) $(LINTFLAGS) $(CPPFLAGS) \
767 784 $(ALWAYS_LINT_DEFS)
768 785 LINT64.c= $(LINT) $(ONLY_LINT_DEFS) $(LINTFLAGS64) $(CPPFLAGS) \
769 786 $(ALWAYS_LINT_DEFS)
770 787 LINT.s= $(LINT.c)
771 788
772 789 # For some future builds, NATIVE_MACH and MACH might be different.
773 790 # Therefore, NATIVE_MACH needs to be redefined in the
774 791 # environment as `uname -p` to override this macro.
775 792 #
776 793 # For now at least, we cross-compile amd64 on i386 machines.
777 794 NATIVE_MACH= $(MACH:amd64=i386)
778 795
779 796 # Define native compilation macros
780 797 #
781 798
782 799 # Base directory where compilers are loaded.
783 800 # Defined here so it can be overridden by developer.
784 801 #
785 802 SPRO_ROOT= $(BUILD_TOOLS)/SUNWspro
786 803 SPRO_VROOT= $(SPRO_ROOT)/SS12
787 804 GNU_ROOT= /usr
788 805
789 806 # Till SS12u1 formally becomes the NV CBE, LINT is hard
790 807 # coded to be picked up from the $SPRO_ROOT/sunstudio12.1/
791 808 # location. Impacted variables are sparc_LINT, sparcv9_LINT,
792 809 # i386_LINT, amd64_LINT.
793 810 # Reset them when SS12u1 is rolled out.
794 811 #
795 812
796 813 # Specify platform compiler versions for languages
797 814 # that we use (currently only c and c++).
798 815 #
799 816 sparc_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_cc
800 817 $(__GNUC)sparc_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_gcc
801 818 sparc_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_CC
802 819 $(__GNUC)sparc_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_g++
803 820 sparc_CPP= /usr/ccs/lib/cpp
804 821 sparc_AS= /usr/ccs/bin/as -xregsym=no
805 822 sparc_LD= /usr/ccs/bin/ld
806 823 sparc_LINT= $(SPRO_ROOT)/sunstudio12.1/bin/lint
807 824
808 825 sparcv9_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_cc
809 826 $(__GNUC64)sparcv9_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_gcc
810 827 sparcv9_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_CC
811 828 $(__GNUC64)sparcv9_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_g++
812 829 sparcv9_CPP= /usr/ccs/lib/cpp
813 830 sparcv9_AS= /usr/ccs/bin/as -xregsym=no
814 831 sparcv9_LD= /usr/ccs/bin/ld
815 832 sparcv9_LINT= $(SPRO_ROOT)/sunstudio12.1/bin/lint
816 833
817 834 i386_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_cc
818 835 $(__GNUC)i386_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_gcc
819 836 i386_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_CC
820 837 $(__GNUC)i386_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_g++
821 838 i386_CPP= /usr/ccs/lib/cpp
822 839 i386_AS= /usr/ccs/bin/as
823 840 $(__GNUC)i386_AS= $(ONBLD_TOOLS)/bin/$(MACH)/aw
824 841 i386_LD= /usr/ccs/bin/ld
825 842 i386_LINT= $(SPRO_ROOT)/sunstudio12.1/bin/lint
826 843
827 844 amd64_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_cc
828 845 $(__GNUC64)amd64_CC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_gcc
829 846 amd64_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_CC
830 847 $(__GNUC64)amd64_CCC= $(ONBLD_TOOLS)/bin/$(MACH)/cw -_g++
831 848 amd64_CPP= /usr/ccs/lib/cpp
832 849 amd64_AS= $(ONBLD_TOOLS)/bin/$(MACH)/aw
833 850 amd64_LD= /usr/ccs/bin/ld
834 851 amd64_LINT= $(SPRO_ROOT)/sunstudio12.1/bin/lint
835 852
836 853 NATIVECC= $($(NATIVE_MACH)_CC)
837 854 NATIVECCC= $($(NATIVE_MACH)_CCC)
838 855 NATIVECPP= $($(NATIVE_MACH)_CPP)
839 856 NATIVEAS= $($(NATIVE_MACH)_AS)
840 857 NATIVELD= $($(NATIVE_MACH)_LD)
841 858 NATIVELINT= $($(NATIVE_MACH)_LINT)
842 859
843 860 #
844 861 # Makefile.master.64 overrides these settings
845 862 #
846 863 CC= $(NATIVECC)
847 864 CCC= $(NATIVECCC)
848 865 CPP= $(NATIVECPP)
849 866 AS= $(NATIVEAS)
850 867 LD= $(NATIVELD)
851 868 LINT= $(NATIVELINT)
852 869
853 870 # The real compilers used for this build
854 871 CW_CC_CMD= $(CC) -_compiler
855 872 CW_CCC_CMD= $(CCC) -_compiler
856 873 REAL_CC= $(CW_CC_CMD:sh)
857 874 REAL_CCC= $(CW_CCC_CMD:sh)
858 875
859 876 # Pass -Y flag to cpp (method of which is release-dependent)
860 877 CCYFLAG= -Y I,
861 878
862 879 BDIRECT= -Bdirect
863 880 BDYNAMIC= -Bdynamic
864 881 BLOCAL= -Blocal
865 882 BNODIRECT= -Bnodirect
866 883 BREDUCE= -Breduce
867 884 BSTATIC= -Bstatic
868 885
869 886 ZDEFS= -zdefs
870 887 ZDIRECT= -zdirect
871 888 ZIGNORE= -zignore
872 889 ZINITFIRST= -zinitfirst
873 890 ZINTERPOSE= -zinterpose
874 891 ZLAZYLOAD= -zlazyload
875 892 ZLOADFLTR= -zloadfltr
876 893 ZMULDEFS= -zmuldefs
877 894 ZNODEFAULTLIB= -znodefaultlib
878 895 ZNODEFS= -znodefs
879 896 ZNODELETE= -znodelete
↓ open down ↓ |
134 lines elided |
↑ open up ↑ |
880 897 ZNODLOPEN= -znodlopen
881 898 ZNODUMP= -znodump
882 899 ZNOLAZYLOAD= -znolazyload
883 900 ZNOLDYNSYM= -znoldynsym
884 901 ZNORELOC= -znoreloc
885 902 ZNOVERSION= -znoversion
886 903 ZRECORD= -zrecord
887 904 ZREDLOCSYM= -zredlocsym
888 905 ZTEXT= -ztext
889 906 ZVERBOSE= -zverbose
907 +ZASSERTDEFLIB= -zassert-deflib
908 +ZGUIDANCE= -zguidance
909 +ZFATALWARNINGS= -zfatal-warnings
890 910
891 911 GSHARED= -G
892 912 CCMT= -mt
893 913
894 914 # Handle different PIC models on different ISAs
895 915 # (May be overridden by lower-level Makefiles)
896 916
897 917 sparc_C_PICFLAGS = -K pic
898 918 sparcv9_C_PICFLAGS = -K pic
899 919 i386_C_PICFLAGS = -K pic
900 920 amd64_C_PICFLAGS = -K pic
901 921 C_PICFLAGS = $($(MACH)_C_PICFLAGS)
902 922 C_PICFLAGS64 = $($(MACH64)_C_PICFLAGS)
903 923
↓ open down ↓ |
4 lines elided |
↑ open up ↑ |
904 924 sparc_C_BIGPICFLAGS = -K PIC
905 925 sparcv9_C_BIGPICFLAGS = -K PIC
906 926 i386_C_BIGPICFLAGS = -K PIC
907 927 amd64_C_BIGPICFLAGS = -K PIC
908 928 C_BIGPICFLAGS = $($(MACH)_C_BIGPICFLAGS)
909 929 C_BIGPICFLAGS64 = $($(MACH64)_C_BIGPICFLAGS)
910 930
911 931 # CC requires there to be no space between '-K' and 'pic' or 'PIC'.
912 932 sparc_CC_PICFLAGS = -Kpic
913 933 sparcv9_CC_PICFLAGS = -KPIC
914 -i386_CC_PICFLAGS = -Kpic
915 -amd64_CC_PICFLAGS = -Kpic
934 +i386_CC_PICFLAGS = -Kpic
935 +amd64_CC_PICFLAGS = -Kpic
916 936 CC_PICFLAGS = $($(MACH)_CC_PICFLAGS)
917 937 CC_PICFLAGS64 = $($(MACH64)_CC_PICFLAGS)
918 938
919 939 AS_PICFLAGS= $(C_PICFLAGS)
920 940 AS_BIGPICFLAGS= $(C_BIGPICFLAGS)
921 941
922 942 #
923 943 # Default label for CTF sections
924 944 #
925 945 CTFCVTFLAGS= -i -L VERSION
926 946
927 947 #
928 948 # Override to pass module-specific flags to ctfmerge. Currently used only by
929 949 # krtld to turn on fuzzy matching, and source-level debugging to inhibit
930 950 # stripping.
931 951 #
932 952 CTFMRGFLAGS=
933 953
934 954 CTFCONVERT_O = $(CTFCONVERT) $(CTFCVTFLAGS) $@
935 955
936 956 # Rules (normally from make.rules) and macros which are used for post
937 957 # processing files. Normally, these do stripping of the comment section
938 958 # automatically.
939 959 # RELEASE_CM: Should be editted to reflect the release.
940 960 # POST_PROCESS_O: Post-processing for `.o' files.
941 961 # POST_PROCESS_A: Post-processing for `.a' files (currently null).
942 962 # POST_PROCESS_SO: Post-processing for `.so' files.
943 963 # POST_PROCESS: Post-processing for executable files (no suffix).
944 964 # Note that these macros are not completely generalized as they are to be
945 965 # used with the file name to be processed following.
946 966 #
947 967 # It is left as an exercise to Release Engineering to embellish the generation
948 968 # of the release comment string.
949 969 #
950 970 # If this is a standard development build:
951 971 # compress the comment section (mcs -c)
952 972 # add the standard comment (mcs -a $(RELEASE_CM))
953 973 # add the development specific comment (mcs -a $(DEV_CM))
954 974 #
955 975 # If this is an installation build:
956 976 # delete the comment section (mcs -d)
↓ open down ↓ |
31 lines elided |
↑ open up ↑ |
957 977 # add the standard comment (mcs -a $(RELEASE_CM))
958 978 # add the development specific comment (mcs -a $(DEV_CM))
959 979 #
960 980 # If this is an release build:
961 981 # delete the comment section (mcs -d)
962 982 # add the standard comment (mcs -a $(RELEASE_CM))
963 983 #
964 984 # The following list of macros are used in the definition of RELEASE_CM
965 985 # which is used to label all binaries in the build:
966 986 #
967 -# RELEASE Specific release of the build, eg: 5.2
987 +# RELEASE Specific release of the build, eg: 5.2
968 988 # RELEASE_MAJOR Major version number part of $(RELEASE)
969 989 # RELEASE_MINOR Minor version number part of $(RELEASE)
970 990 # VERSION Version of the build (alpha, beta, Generic)
971 991 # PATCHID If this is a patch this value should contain
972 992 # the patchid value (eg: "Generic 100832-01"), otherwise
973 993 # it will be set to $(VERSION)
974 994 # RELEASE_DATE Date of the Release Build
975 995 # PATCH_DATE Date the patch was created, if this is blank it
976 996 # will default to the RELEASE_DATE
977 997 #
978 998 RELEASE_MAJOR= 5
979 999 RELEASE_MINOR= 11
980 1000 RELEASE= $(RELEASE_MAJOR).$(RELEASE_MINOR)
981 1001 VERSION= SunOS Development
982 1002 PATCHID= $(VERSION)
983 1003 RELEASE_DATE= release date not set
↓ open down ↓ |
6 lines elided |
↑ open up ↑ |
984 1004 PATCH_DATE= $(RELEASE_DATE)
985 1005 RELEASE_CM= "@($(POUND_SIGN))SunOS $(RELEASE) $(PATCHID) $(PATCH_DATE)"
986 1006 DEV_CM= "@($(POUND_SIGN))SunOS Internal Development: non-nightly build"
987 1007
988 1008 PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM) -a $(DEV_CM)
989 1009 $(RELEASE_BUILD)PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM)
990 1010
991 1011 STRIP_STABS= $(STRIP) -x $@
992 1012 $(SRCDBGBLD)STRIP_STABS= :
993 1013
994 -POST_PROCESS_O=
1014 +POST_PROCESS_O=
995 1015 POST_PROCESS_A=
996 1016 POST_PROCESS_SO= $(PROCESS_COMMENT) $@ ; $(STRIP_STABS) ; \
997 1017 $(ELFSIGN_OBJECT)
998 1018 POST_PROCESS= $(PROCESS_COMMENT) $@ ; $(STRIP_STABS) ; \
999 1019 $(ELFSIGN_OBJECT)
1000 1020
1001 1021 #
1002 1022 # chk4ubin is a tool that inspects a module for a symbol table
1003 1023 # ELF section size which can trigger an OBP bug on older platforms.
1004 1024 # This problem affects only specific sun4u bootable modules.
1005 1025 #
1006 1026 CHK4UBIN= $(ONBLD_TOOLS)/bin/$(MACH)/chk4ubin
1007 1027 CHK4UBINFLAGS=
1008 1028 CHK4UBINARY= $(CHK4UBIN) $(CHK4UBINFLAGS) $@
1009 1029
1010 1030 #
1011 1031 # PKGARCHIVE specifies the default location where packages should be
1012 1032 # placed if built.
1013 1033 #
1014 1034 $(RELEASE_BUILD)PKGARCHIVESUFFIX= -nd
1015 1035 PKGARCHIVE=$(SRC)/../../packages/$(MACH)/nightly$(PKGARCHIVESUFFIX)
1016 1036
1017 1037 #
1018 1038 # The repositories will be created with these publisher settings. To
1019 1039 # update an image to the resulting repositories, this must match the
1020 1040 # publisher name provided to "pkg set-publisher."
1021 1041 #
1022 1042 PKGPUBLISHER_REDIST= on-nightly
1023 1043 PKGPUBLISHER_NONREDIST= on-extra
1024 1044
1025 1045 # Default build rules which perform comment section post-processing.
1026 1046 #
1027 1047 .c:
1028 1048 $(LINK.c) -o $@ $< $(LDLIBS)
1029 1049 $(POST_PROCESS)
1030 1050 .c.o:
1031 1051 $(COMPILE.c) $(OUTPUT_OPTION) $< $(CTFCONVERT_HOOK)
1032 1052 $(POST_PROCESS_O)
1033 1053 .c.a:
1034 1054 $(COMPILE.c) -o $% $<
1035 1055 $(PROCESS_COMMENT) $%
1036 1056 $(AR) $(ARFLAGS) $@ $%
1037 1057 $(RM) $%
1038 1058 .s.o:
1039 1059 $(COMPILE.s) -o $@ $<
1040 1060 $(POST_PROCESS_O)
1041 1061 .s.a:
1042 1062 $(COMPILE.s) -o $% $<
1043 1063 $(PROCESS_COMMENT) $%
1044 1064 $(AR) $(ARFLAGS) $@ $%
1045 1065 $(RM) $%
1046 1066 .cc:
1047 1067 $(LINK.cc) -o $@ $< $(LDLIBS)
1048 1068 $(POST_PROCESS)
1049 1069 .cc.o:
1050 1070 $(COMPILE.cc) $(OUTPUT_OPTION) $<
1051 1071 $(POST_PROCESS_O)
1052 1072 .cc.a:
1053 1073 $(COMPILE.cc) -o $% $<
1054 1074 $(AR) $(ARFLAGS) $@ $%
1055 1075 $(PROCESS_COMMENT) $%
1056 1076 $(RM) $%
1057 1077 .y:
1058 1078 $(YACC.y) $<
1059 1079 $(LINK.c) -o $@ y.tab.c $(LDLIBS)
1060 1080 $(POST_PROCESS)
1061 1081 $(RM) y.tab.c
1062 1082 .y.o:
1063 1083 $(YACC.y) $<
1064 1084 $(COMPILE.c) -o $@ y.tab.c $(CTFCONVERT_HOOK)
1065 1085 $(POST_PROCESS_O)
1066 1086 $(RM) y.tab.c
1067 1087 .l:
1068 1088 $(RM) $*.c
1069 1089 $(LEX.l) $< > $*.c
1070 1090 $(LINK.c) -o $@ $*.c -ll $(LDLIBS)
1071 1091 $(POST_PROCESS)
1072 1092 $(RM) $*.c
1073 1093 .l.o:
1074 1094 $(RM) $*.c
1075 1095 $(LEX.l) $< > $*.c
1076 1096 $(COMPILE.c) -o $@ $*.c $(CTFCONVERT_HOOK)
1077 1097 $(POST_PROCESS_O)
1078 1098 $(RM) $*.c
1079 1099
1080 1100 .bin.o:
1081 1101 $(COMPILE.b) -o $@ $<
1082 1102 $(POST_PROCESS_O)
↓ open down ↓ |
78 lines elided |
↑ open up ↑ |
1083 1103
1084 1104 .java.class:
1085 1105 $(COMPILE.java) $<
1086 1106
1087 1107 # Bourne and Korn shell script message catalog build rules.
1088 1108 # We extract all gettext strings with sed(1) (being careful to permit
1089 1109 # multiple gettext strings on the same line), weed out the dups, and
1090 1110 # build the catalogue with awk(1).
1091 1111
1092 1112 .sh.po .ksh.po:
1093 - $(SED) -n -e ":a" \
1094 - -e "h" \
1113 + $(SED) -n -e ":a" \
1114 + -e "h" \
1095 1115 -e "s/.*gettext *\(\"[^\"]*\"\).*/\1/p" \
1096 1116 -e "x" \
1097 1117 -e "s/\(.*\)gettext *\"[^\"]*\"\(.*\)/\1\2/" \
1098 1118 -e "t a" \
1099 1119 $< | sort -u | $(AWK) '{ print "msgid\t" $$0 "\nmsgstr" }' > $@
1100 1120
1101 1121 #
1102 1122 # Python and Perl executable and message catalog build rules.
1103 1123 #
1104 1124 .SUFFIXES: .pl .pm .py .pyc
1105 1125
1106 1126 .pl:
1107 1127 $(RM) $@;
1108 1128 $(SED) -e "s@TEXT_DOMAIN@\"$(TEXT_DOMAIN)\"@" $< > $@;
1109 1129 $(CHMOD) +x $@
1110 1130
1111 1131 .py:
1112 1132 $(RM) $@; $(SED) -e "1s:^\#!@PYTHON@:\#!$(PYTHON):" < $< > $@; $(CHMOD) +x $@
1113 1133
1114 1134 .py.pyc:
1115 1135 $(RM) $@
1116 1136 $(PYTHON) -mpy_compile $<
1117 1137 @[ $(<)c = $@ ] || $(MV) $(<)c $@
1118 1138
1119 1139 .py.po:
1120 1140 $(GNUXGETTEXT) $(GNUXGETFLAGS) -d $(<F:%.py=%) $< ;
1121 1141
1122 1142 .pl.po .pm.po:
1123 1143 $(XGETTEXT) $(XGETFLAGS) -d $(<F) $< ;
1124 1144 $(RM) $@ ;
1125 1145 $(SED) "/^domain/d" < $(<F).po > $@ ;
1126 1146 $(RM) $(<F).po
1127 1147
1128 1148 #
1129 1149 # When using xgettext, we want messages to go to the default domain,
1130 1150 # rather than the specified one. This special version of the
1131 1151 # COMPILE.cpp macro effectively prevents expansion of TEXT_DOMAIN,
1132 1152 # causing xgettext to put all messages into the default domain.
1133 1153 #
1134 1154 CPPFORPO=$(COMPILE.cpp:\"$(TEXT_DOMAIN)\"=TEXT_DOMAIN)
1135 1155
1136 1156 .c.i:
1137 1157 $(CPPFORPO) $< > $@
1138 1158
1139 1159 .h.i:
1140 1160 $(CPPFORPO) $< > $@
1141 1161
1142 1162 .y.i:
1143 1163 $(YACC) -d $<
1144 1164 $(CPPFORPO) y.tab.c > $@
1145 1165 $(RM) y.tab.c
1146 1166
1147 1167 .l.i:
1148 1168 $(LEX) $<
1149 1169 $(CPPFORPO) lex.yy.c > $@
1150 1170 $(RM) lex.yy.c
1151 1171
1152 1172 .c.po:
1153 1173 $(CPPFORPO) $< > $<.i
1154 1174 $(BUILD.po)
1155 1175
1156 1176 .cc.po:
1157 1177 $(CPPFORPO) $< > $<.i
1158 1178 $(BUILD.po)
1159 1179
1160 1180 .y.po:
1161 1181 $(YACC) -d $<
1162 1182 $(CPPFORPO) y.tab.c > $<.i
1163 1183 $(BUILD.po)
1164 1184 $(RM) y.tab.c
1165 1185
1166 1186 .l.po:
1167 1187 $(LEX) $<
1168 1188 $(CPPFORPO) lex.yy.c > $<.i
1169 1189 $(BUILD.po)
1170 1190 $(RM) lex.yy.c
1171 1191
1172 1192 #
1173 1193 # Rules to perform stylistic checks
1174 1194 #
1175 1195 .SUFFIXES: .x .xml .check .xmlchk
1176 1196
1177 1197 .h.check:
1178 1198 $(DOT_H_CHECK)
1179 1199
1180 1200 .x.check:
1181 1201 $(DOT_X_CHECK)
1182 1202
1183 1203 .xml.xmlchk:
1184 1204 $(MANIFEST_CHECK)
1185 1205
1186 1206 #
1187 1207 # Include rules to render automated sccs get rules "safe".
1188 1208 #
1189 1209 include $(SRC)/Makefile.noget
↓ open down ↓ |
85 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX