1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21 # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
22 # Use is subject to license terms.
23 #
24 #ident "@(#)Makefile.master 1.42 09/07/17 SMI"
25 #
26 # Makefile.master, global definitions for system source
27 #
28 ROOT= /proto
29
30 # RELEASE_BUILD should be cleared for final release builds. This is completely
31 # independent of CH. NOT_RELEASE_BUILD is exactly what the name implies.
32 #
33 # INTERNAL_RELEASE_BUILD is a subset of RELEASE_BUILD. It mostly controls
34 # identification strings. Enabling RELEASE_BUILD automatically enables
35 # INTERNAL_RELEASE_BUILD.
36 #
37 # STRIP_COMMENTS toggles comment section striping. Generally the same setting
38 # as INTERNAL_RELEASE_BUILD.
39 #
40 # STRIPFLAG is similar. It is set to a unique value depending upon the
41 # value of CH. It is set here for use in lower level Makefiles to allow
42 # a single point change to effect the entire build.
43 #
44 POUND_SIGN:sh= echo \\043
45
46 NOT_RELEASE_BUILD=
47 INTERNAL_RELEASE_BUILD:sh= echo \\043
48 RELEASE_BUILD:sh= echo \\043
49 $(RELEASE_BUILD)NOT_RELEASE_BUILD:sh= echo \\043
50 $(RELEASE_BUILD)INTERNAL_RELEASE_BUILD=
51
52 # SPARC_BLD is '#' for an Intel build.
53 # INTEL_BLD is '#' for a Sparc build.
54 SPARC_BLD_1= $(MACH:i386=$(POUND_SIGN))
55 SPARC_BLD= $(SPARC_BLD_1:sparc=)
56 INTEL_BLD_1= $(MACH:sparc=$(POUND_SIGN))
57 INTEL_BLD= $(INTEL_BLD_1:i386=)
58
59 MACH_TYPE_i386 = pc
60 MACH_TYPE_sparc = sun
61 MACH_TYPE = $(MACH_TYPE_$(MACH))
62
63 STRIP_COMMENTS= $(INTERNAL_RELEASE_BUILD)
64
65 STRIPFLAG= -s
66
67 # BUILD_TOOLS is the root of all tools including compilers.
68 # ONBLD_TOOLS is the root of all the tools that are part of SUNWonbld.
69
70 BUILD_TOOLS= /ws/onnv-tools
71 ONBLD_TOOLS= $(BUILD_TOOLS)/onbld
72
73 # at least one thing still can't be built with 1.6,
74 # so make 1.6 the default but overridable. However,
75 # if you're having trouble compiling with java 1.6 and
76 # have found java 1.5 here and want to use it, think
77 # again - that's the last resort, first look at java
78 # options like -source.
79 JAVA5_ROOT= /usr/jdk/instances/jdk1.5.0
80 JAVA6_ROOT= /usr/jdk/instances/jdk1.6.0
81 JAVA_ROOT= $(JAVA6_ROOT)
82
83 MAKEFILE= -f Makefile.sfw
84
85 SFW_STAMP_UNPACKED= .unpacked
86 SFW_STAMP_PATCHED= .patched
87 SFW_STAMP_PATCHES= .patches
88
89 # this can help catch problems if sh is ksh93
90 SHELL=/usr/bin/ksh93
91 GPATCH= /usr/bin/gpatch
92 GPATCH_FLAGS= -p0
93 METAINFO= $(PERL) $(SRC)/tools/metainfo.pl
94 METACHECK= $(METAINFO) --validate
95 COMPONENT_NAME= $(METAINFO) --key NAME
96 COMPONENT_VERSION= $(METAINFO) --key VERSION
97 COMPONENT_PACKAGES= $(METAINFO) --key PACKAGE
98 COMPONENT_ARCHIVE= $(METAINFO) --archive-name SOURCE_DOWNLOAD
99 INSTALL_PROTO= $(SRC)/tools/install-proto -c
100 STRIPBINS= $(SRC)/tools/stripbins
101 INCREFIXUP= $(SRC)/tools/increfixup
102 UNPACKARCHIVE= $(SRC)/tools/unpack-archive
103 SFW_CHECK_DEPS= $(PERL) $(SRC)/tools/check-deps.pl \
104 -e $(SRC)/tools/exception_list.check-deps \
105 -d $(PKGARCHIVE) -p $(SFW_PKGDB)
106 SFW_RUN_CHECK_DEPS= $(POUND_SIGN)
107 RPCGEN= /usr/bin/rpcgen
108 AWK= /usr/bin/awk
109 ECHO= echo
110 INS= install
111 TRUE= true
112 SYMLINK= /usr/bin/ln -s
113 LN= /usr/bin/ln
114 SH= /usr/bin/sh
115 CHMOD= /usr/bin/chmod
116 CHOWN= $(TRUE)
117 CHGRP= $(TRUE)
118 MV= /usr/bin/mv -f
119 RMDIR= /usr/bin/rmdir
120 MKDIR= /usr/bin/mkdir
121 TOUCH= /usr/bin/touch
122 RM= /usr/bin/rm -f
123 GREP= /usr/bin/grep
124 SED= /usr/bin/sed
125 CP= /usr/bin/cp
126 LORDER= /usr/ccs/bin/lorder
127 MCS= /usr/ccs/bin/mcs
128 CAT= /usr/bin/cat
129 M4= /usr/ccs/bin/m4
130 STRIP= /usr/ccs/bin/strip
131 TSORT= /usr/ccs/bin/tsort
132 JAVAC= $(JAVA_ROOT)/bin/javac
133 JAVAH= $(JAVA_ROOT)/bin/javah
134 JAVADOC= $(JAVA_ROOT)/bin/javadoc
135 RMIC= $(JAVA_ROOT)/bin/rmic
136 JAR= $(JAVA_ROOT)/bin/jar
137 GMAKE= /usr/sfw/bin/gmake
138 CCSMAKE= /usr/ccs/bin/make
139 XREF= $(ONBLD_TOOLS)/bin/xref
140 PERL= /usr/perl5/bin/perl
141 FIND= /usr/bin/find
142 XARGS= /usr/bin/xargs
143 TAR= /usr/bin/tar
144 GTAR= /usr/sfw/bin/gtar
145 PYTHON= /usr/bin/python
146 PYTHON_64= /usr/bin/$(MACH64)/python
147 PYTHON26= /usr/bin/python2.6
148 PYTHON26_64= /usr/bin/$(MACH64)/python2.6
149 ELFEDIT= /usr/bin/elfedit
150 GINSTALL= /usr/bin/ginstall
151
152
153
154 FILEMODE= 644
155 DIRMODE= 755
156 OWNER= root
157 GROUP= bin
158
159 # Paths, relative to proto root.
160 #
161 # Suitable for passing to things like configure scripts which
162 # use the path for compiled in default file location information
163 CFGPREFIX= /usr
164 CFGBIN= $(CFGPREFIX)/bin
165 CFGLIB= $(CFGPREFIX)/lib
166 CFGSBIN= /sbin
167 CFGINC= $(CFGPREFIX)/include
168 CFGUSRSBIN= $(CFGPREFIX)/sbin
169 CFGLOCALE= $(CFGPREFIX)/share/locale
170 CFGINFO= $(CFGPREFIX)/share/info
171 CFGETC= /etc
172 CFGBIN32= $(CFGBIN)/$(MACH32)
173 CFGBIN64= $(CFGBIN)/$(MACH64)
174 CFGLIB64= $(CFGLIB)/$(MACH64)
175 CFGUSRSBIN32= $(CFGUSRSBIN)/$(MACH32)
176 CFGUSRSBIN64= $(CFGUSRSBIN)/$(MACH64)
177 CFGMAN= $(CFGPREFIX)/share/man
178 CFGMAN1= $(CFGMAN)/man1
179 CFGMAN3= $(CFGMAN)/man3
180 CFGMAN5= $(CFGMAN)/man5
181 CFGMAN6= $(CFGMAN)/man6
182 CFGDOC= $(CFGPREFIX)/share/doc
183 CFGUSRDEMO= $(CFGPREFIX)/demo
184
185 COMPONENT_TOP:sh = pwd
186 MANSCRIPT = $(COMPONENT_TOP)/sunman-stability
187
188 # Common configure options with common values
189 CONFIGURE_OPTIONS = --prefix=$(CFGPREFIX)
190 CONFIGURE_OPTIONS += --mandir=$(CFGMAN)
191
192 ROOTBIN= $(ROOT)$(CFGBIN)
193 ROOTLIB= $(ROOT)$(CFGLIB)
194 ROOTSBIN= $(ROOT)$(CFGSBIN)
195 ROOTUSRSBIN= $(ROOT)$(CFGUSRSBIN)
196 ROOTETC= $(ROOT)$(CFGETC)
197 ROOTBIN32= $(ROOT)$(CFGBIN32)
198 ROOTBIN64= $(ROOT)$(CFGBIN64)
199 ROOTLIB64= $(ROOT)$(CFGLIB64)
200 ROOTUSRSBIN32= $(ROOT)$(CFGUSRSBIN32)
201 ROOTUSRSBIN64= $(ROOT)$(CFGUSRSBIN64)
202 ROOTMAN1= $(ROOT)$(CFGMAN1)
203 ROOTMAN3= $(ROOT)$(CFGMAN3)
204 ROOTMAN5= $(ROOT)$(CFGMAN5)
205 ROOTMAN6= $(ROOT)$(CFGMAN6)
206 ROOTDOC= $(ROOT)$(CFGDOC)
207 ROOTUSRDEMO= $(ROOT)$(CFGUSRDEMO)
208 ROOTINCLUDE= $(ROOT)$(CFGINC)
209
210 #
211 # Begin /usr/sfw freeware rules for freeware that has "External"
212 # taxonomy stability level.
213 #
214 CFGSFW= /usr/sfw
215 CFGSFWBIN= /usr/sfw/bin
216 CFGSFWSBIN= /usr/sfw/sbin
217 CFGSFWSHARE= /usr/sfw/share
218 CFGSFWINFO= /usr/sfw/share/info
219 CFGSFWINCLUDE= /usr/sfw/include
220 CFGSFWLIB= /usr/sfw/lib
221 CFGLIBEXEC= /usr/sfw/libexec
222 CFGSFWMAN= /usr/sfw/share/man
223 CFGSFWMANN= /usr/sfw/share/mann
224 CFGSFWMAN1= /usr/sfw/share/man/man1
225 CFGSFWMAN1M= /usr/sfw/share/man/man1m
226 CFGSFWMAN3= /usr/sfw/share/man/man3
227 CFGSFWMAN4= /usr/sfw/share/man/man4
228 CFGSFWMAN5= /usr/sfw/share/man/man5
229 CFGSFWMAN7= /usr/sfw/share/man/man7
230
231 ROOTSFW= $(ROOT)$(CFGSFW)
232 ROOTSFWBIN= $(ROOT)$(CFGSFWBIN)
233 ROOTSFWSBIN= $(ROOT)$(CFGSFWSBIN)
234 ROOTSFWSHARE= $(ROOT)$(CFGSFWSHARE)
235 ROOTSFWINFO= $(ROOT)$(CFGSFWINFO)
236 ROOTSFWINCLUDE= $(ROOT)$(CFGSFWINCLUDE)
237 ROOTSFWLIB= $(ROOT)$(CFGSFWLIB)
238 ROOTLIBEXEC= $(ROOT)$(CFGLIBEXEC)
239 ROOTSFWMAN= $(ROOT)$(CFGSFWMAN)
240 ROOTSFWMANN= $(ROOT)$(CFGSFWMANN)
241 ROOTSFWMAN1= $(ROOT)$(CFGSFWMAN1)
242 ROOTSFWMAN1M= $(ROOT)$(CFGSFWMAN1M)
243 ROOTSFWMAN3= $(ROOT)$(CFGSFWMAN3)
244 ROOTSFWMAN4= $(ROOT)$(CFGSFWMAN4)
245 ROOTSFWMAN5= $(ROOT)$(CFGSFWMAN5)
246 ROOTSFWMAN7= $(ROOT)$(CFGSFWMAN7)
247
248 #
249 # End /usr/sfw freeware rules
250 #
251
252 #
253 # Begin /usr/gnu freeware rules.
254 #
255 CFGGNU= /usr/gnu
256 CFGGNUBIN= /usr/gnu/bin
257 CFGGNUSHARE= /usr/gnu/share
258 CFGGNUMAN= /usr/gnu/share/man
259 CFGGNUMAN1= /usr/gnu/share/man/man1
260
261 ROOTGNU= $(ROOT)$(CFGGNU)
262 ROOTGNUBIN= $(ROOT)$(CFGGNUBIN)
263 ROOTGNUSHARE= $(ROOT)$(CFGGNUSHARE)
264 ROOTGNUMAN= $(ROOT)$(CFGGNUMAN)
265 ROOTGNUMAN1= $(ROOT)$(CFGGNUMAN1)
266
267 #
268 # End /usr/gnu freeware rules
269 #
270
271 # Declare that nothing should be built in parallel.
272 # Individual Makefiles can use the .PARALLEL target to declare otherwise.
273 .NO_PARALLEL:
274
275 ROOTPROG= $(PROG:%=$(ROOTBIN)/%)
276 ROOTSHFILES= $(SHFILES:%=$(ROOTBIN)/%)
277 ROOTLIBPROG= $(PROG:%=$(ROOTLIB)/%)
278 ROOTLIBSHFILES= $(SHFILES:%=$(ROOTLIB)/%)
279 ROOTSBINPROG= $(PROG:%=$(ROOTSBIN)/%)
280 ROOTUSRSBINPROG=$(PROG:%=$(ROOTUSRSBIN)/%)
281 ROOTETCPROG= $(PROG:%=$(ROOTETC)/%)
282 ROOTPROG64= $(PROG:%=$(ROOTBIN64)/%)
283 ROOTPROG32= $(PROG:%=$(ROOTBIN32)/%)
284 ROOTUSRSBINPROG32= $(PROG:%=$(ROOTUSRSBIN32)/%)
285 ROOTUSRSBINPROG64= $(PROG:%=$(ROOTUSRSBIN64)/%)
286
287 ROOTMAN1FILES=$(MAN1FILES:%=$(ROOTMAN1)/%)
288 $(ROOTMAN1FILES) := FILEMODE = 444
289 $(ROOTMAN1FILES) := OWNER = root
290 $(ROOTMAN1FILES) := GROUP = bin
291
292 ROOTMAN3FILES=$(MAN3FILES:%=$(ROOTMAN3)/%)
293 $(ROOTMAN3FILES) := FILEMODE = 444
294 $(ROOTMAN3FILES) := OWNER = root
295 $(ROOTMAN3FILES) := GROUP = bin
296
297 ROOTMAN5FILES=$(MAN5FILES:%=$(ROOTMAN5)/%)
298 $(ROOTMAN5FILES) := FILEMODE = 444
299 $(ROOTMAN5FILES) := OWNER = root
300 $(ROOTMAN5FILES) := GROUP = bin
301
302 ROOTMAN6FILES=$(MAN6FILES:%=$(ROOTMAN6)/%)
303 $(ROOTMAN6FILES) := FILEMODE = 444
304 $(ROOTMAN6FILES) := OWNER = root
305 $(ROOTMAN6FILES) := GROUP = bin
306
307 #
308 # Begin /usr/sfw freeware rules for freeware that has "External"
309 # taxonomy stability level.
310 #
311 ROOTSFWINFOFILES=$(INFOFILES:%=$(ROOTSFWINFO)/%)
312 $(ROOTSFWINFOFILES) := FILEMODE = 444
313 $(ROOTSFWINFOFILES) := OWNER = root
314 $(ROOTSFWINFOFILES) := GROUP = bin
315
316 ROOTSFWMANNFILES=$(MANNFILES:%=$(ROOTSFWMANN)/%)
317 $(ROOTSFWMANNFILES) := FILEMODE = 444
318 $(ROOTSFWMANNFILES) := OWNER = root
319 $(ROOTSFWMANNFILES) := GROUP = bin
320
321 ROOTSFWMAN1FILES=$(MAN1FILES:%=$(ROOTSFWMAN1)/%)
322 $(ROOTSFWMAN1FILES) := FILEMODE = 444
323 $(ROOTSFWMAN1FILES) := OWNER = root
324 $(ROOTSFWMAN1FILES) := GROUP = bin
325
326 ROOTSFWMAN1MFILES=$(MAN1MFILES:%=$(ROOTSFWMAN1M)/%)
327 $(ROOTSFWMAN1MFILES) := FILEMODE = 444
328 $(ROOTSFWMAN1MFILES) := OWNER = root
329 $(ROOTSFWMAN1MFILES) := GROUP = bin
330
331 ROOTSFWMAN3FILES=$(MAN3FILES:%=$(ROOTSFWMAN3)/%)
332 $(ROOTSFWMAN3FILES) := FILEMODE = 444
333 $(ROOTSFWMAN3FILES) := OWNER = root
334 $(ROOTSFWMAN3FILES) := GROUP = bin
335
336 ROOTSFWMAN4FILES=$(MAN4FILES:%=$(ROOTSFWMAN4)/%)
337 $(ROOTSFWMAN4FILES) := FILEMODE = 444
338 $(ROOTSFWMAN4FILES) := OWNER = root
339 $(ROOTSFWMAN4FILES) := GROUP = bin
340
341 ROOTSFWMAN5FILES=$(MAN5FILES:%=$(ROOTSFWMAN5)/%)
342 $(ROOTSFWMAN5FILES) := FILEMODE = 444
343 $(ROOTSFWMAN5FILES) := OWNER = root
344 $(ROOTSFWMAN5FILES) := GROUP = bin
345
346 ROOTSFWMAN7FILES=$(MAN7FILES:%=$(ROOTSFWMAN7)/%)
347 $(ROOTSFWMAN7FILES) := FILEMODE = 444
348 $(ROOTSFWMAN7FILES) := OWNER = root
349 $(ROOTSFWMAN7FILES) := GROUP = bin
350
351 ROOTSFWBINPROG= $(PROG:%=$(ROOTSFWBIN)/%)
352 $(ROOTSFWBINPROG) := FILEMODE= 555
353 $(ROOTSFWBINPROG) := OWNER= root
354 $(ROOTSFWBINPROG) := GROUP= bin
355
356 ROOTSFWSBINPROG= $(PROG:%=$(ROOTSFWSBIN)/%)
357 $(ROOTSFWSBINPROG) := FILEMODE= 555
358 $(ROOTSFWSBINPROG) := OWNER= root
359 $(ROOTSFWSBINPROG) := GROUP= bin
360
361 #
362 # End /usr/sfw freeware rules
363 #
364
365
366 INS.file= $(RM) $@; $(INS) -s -m $(FILEMODE) -f $(@D) $<
367 INS.dir= $(INS) -s -d -m $(DIRMODE) $@
368 # installs and renames at once
369 #
370 INS.rename= $(INS.file); $(MV) $(@D)/$(<F) $@
371
372 # MACH must be set in the shell environment per uname -p on the build host
373 # More specific architecture variables should be set in lower makefiles.
374 #
375 # MACH64 is derived from MACH
376 #
377 MACH64_1= $(MACH:sparc=sparcv9)
378 MACH64= $(MACH64_1:i386=amd64)
379
380 MACH32_1= $(MACH:sparc=sparcv7)
381 MACH32= $(MACH32_1:i386=i86)
382
383 #
384 # C compiler mode. Future compilers may change the default on us,
385 # so force transition mode globally. Lower level makefiles can
386 # override this by setting CCMODE.
387 #
388 CCMODE= -Xa
389 CCMODE64= -Xa
390
391 #
392 # C compiler verbose mode. This is so we can enable it globally,
393 # but turn it off in the lower level makefiles of things we cannot
394 # (or aren't going to) fix.
395 #
396 CCVERBOSE=
397
398 #
399 # compiler 32/64 bit flag, in case it changes again (and needed
400 # since lint doesn't really want the extra bits in XARCH).
401 CCBITS32= -m32
402 CCBITS64= -m64
403
404 #
405 #
406 # compiler '-xarch' flag. This is here to centralize it and make it
407 # overridable for testing.
408 sparc_XARCH= $(CCBITS32) -xarch=sparc
409 sparcv9_XARCH= $(CCBITS64) -xcode=abs64
410 i386_XARCH= $(CCBITS32) -xchip=pentium
411 amd64_XARCH= $(CCBITS64) -xarch=generic -Ui386 -U__i386
412
413 #
414 # disable the incremental linker
415 ILDOFF= -xildoff
416
417 # C99 mode
418 C99_ENABLE= -xc99=all
419 C99_DISABLE= -xc99=none
420 C99MODE= $(C99_ENABLE)
421 C99LMODE= $(C99MODE:-xc99%=-Xc99%)
422
423 # XPG6 mode. This option enables XPG6 conformance, plus extensions.
424 # Amongst other things, this option will cause system calls like
425 # popen (3C) and system (3C) to invoke the standards-conforming
426 # shell, /usr/xpg4/bin/sh, instead of /usr/bin/sh.
427 XPG6MODE= $(C99MODE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1
428
429 #
430 # The Sun Studio 11 compiler has changed the behaviour of integer
431 # wrap arounds and so a flag is needed to use the legacy behaviour
432 # (without this flag panics/hangs could be exposed within the source).
433 #
434 sparc_IROPTFLAG = -W2,-xwrap_int
435 sparcv9_IROPTFLAG = -W2,-xwrap_int
436 i386_IROPTFLAG =
437 amd64_IROPTFLAG =
438
439 IROPTFLAG = $($(MACH)_IROPTFLAG)
440 IROPTFLAG64 = $($(MACH64)_IROPTFLAG)
441
442 # In most places, assignments to these macros should be appended with +=
443 # (CPPFLAGS.master allows values to be prepended to CPPFLAGS).
444 sparc_CFLAGS= $(sparc_XARCH)
445 sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE)
446 i386_CFLAGS= $(i386_XARCH)
447 amd64_CFLAGS= $(amd64_XARCH)
448
449 #
450 sparc_COPTFLAG= -xO3
451 sparcv9_COPTFLAG= -xO3
452 i386_COPTFLAG= -xO3
453 amd64_COPTFLAG= -xO3
454 COPTFLAG= $($(MACH)_COPTFLAG)
455 COPTFLAG64= $($(MACH64)_COPTFLAG)
456
457 #
458 # tradeoff time for space (smaller is better)
459 #
460 sparc_SPACEFLAG = -xspace -W0,-Lt
461 sparcv9_SPACEFLAG = -xspace -W0,-Lt
462 i386_SPACEFLAG = -xspace
463 amd64_SPACEFLAG =
464 SPACEFLAG = $($(MACH)_SPACEFLAG)
465 SPACEFLAG64 = $($(MACH64)_SPACEFLAG)
466
467 sparc_XREGSFLAG = -xregs=no%appl
468 sparcv9_XREGSFLAG = -xregs=no%appl
469 i386_XREGSFLAG =
470 amd64_XREGSFLAG =
471 XREGSFLAG = $($(MACH)_XREGSFLAG)
472 XREGSFLAG64 = $($(MACH64)_XREGSFLAG)
473
474 CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \
475 $(ILDOFF) $(C99MODE) $(IROPTFLAG)
476
477 CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \
478 $(ILDOFF) $(C99MODE) $(IROPTFLAG64)
479
480 DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging.
481 CPPFLAGS.master=$(DTEXTDOM) \
482 -I$(ROOTINCLUDE) \
483 -I$(ROOTSFWINCLUDE) \
484 $(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4)
485 CPPFLAGS= $(CPPFLAGS.master)
486 AS_CPPFLAGS= $(CPPFLAGS.master)
487 JAVAFLAGS= -deprecation
488
489 #
490 # For source message catalogue
491 #
492 .SUFFIXES: $(SUFFIXES) .po
493 MSGROOT= $(ROOT)/catalog
494 MSGDOMAIN= $(MSGROOT)/$(TEXT_DOMAIN)
495 COMPILE.cpp= $(CC) -E -C $(CFLAGS) $(CPPFLAGS)
496 XGETTEXT= xgettext
497 XGETFLAGS= -c TRANSLATION_NOTE
498 BUILD.po= $(XGETTEXT) $(XGETFLAGS) $<.i ;\
499 $(RM) $@ ;\
500 sed "/^domain/d" < messages.po > $@ ;\
501 $(RM) messages.po $<.i
502 #
503 # This is overwritten by local Makefile when PROG is a list.
504 #
505 POFILE= $(PROG).po
506
507 COMPAT_VERSION= 4
508
509 sparc_CCFLAGS= -compat=$(COMPAT_VERSION) \
510 -Qoption ccfe -messages=no%anachronism
511 sparcv9_CCFLAGS= $(sparcv9_XARCH) -dalign -compat=5 \
512 -Qoption ccfe -messages=no%anachronism \
513 -Qoption ccfe -features=no%conststrings
514 i386_CCFLAGS= -compat=$(COMPAT_VERSION) \
515 -Qoption ccfe -messages=no%anachronism \
516 -Qoption ccfe -features=no%conststrings
517 amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \
518 -Qoption ccfe -messages=no%anachronism \
519 -Qoption ccfe -features=no%conststrings
520
521 sparc_CCOPTFLAG= -xO3
522 sparcv9_CCOPTFLAG= -xO3
523 i386_CCOPTFLAG= -xO3
524 amd64_CCOPTFLAG= -xO3
525
526 CCOPTFLAG= $($(MACH)_CCOPTFLAG)
527 CCOPTFLAG64= $($(MACH64)_CCOPTFLAG)
528 CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS)
529 CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS)
530 #
531 #
532 LDLIBS.cmd = $(ENVLDLIBS1) $(ENVLDLIBS2) $(ENVLDLIBS3)
533 LDFLAGS.cmd = -L$(ROOTSFWLIB) -R/usr/sfw/lib
534 LDFLAGS.cmd += $(STRIPFLAG) $(ENVLDFLAGS1) $(ENVLDFLAGS2) $(ENVLDFLAGS3)
535 LDFLAGS.lib = -L$(ROOTSFWLIB) -R/usr/sfw/lib
536 LDLIBS.lib = $(ENVLDLIBS1) $(ENVLDLIBS2) $(ENVLDLIBS3)
537 #
538 # Define compilation macros.
539 #
540 COMPILE.c= $(CC) $(CFLAGS) $(CPPFLAGS) -c
541 COMPILE64.c= $(CC64) $(CFLAGS64) $(CPPFLAGS) -c
542 COMPILE.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) -c
543 COMPILE64.cc= $(CCC64) $(CCFLAGS64) $(CPPFLAGS) -c
544 COMPILE.s= $(AS) $(ASFLAGS) $(AS_CPPFLAGS)
545
546 CLASSPATH= .:$(WEBSTART_HOME)/classes
547 COMPILE.java= $(JAVAC) $(JAVAFLAGS) -classpath $(CLASSPATH)
548
549 #
550 # Link time macros
551 #
552 CCNEEDED = -lC -lc
553 COMPILE64.s= $(AS) $(ASFLAGS) $($(MACH64)_XARCH) $(AS_CPPFLAGS)
554 LINK.c= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
555 LINK64.c= $(CC64) $(CFLAGS64) $(CPPFLAGS) $(LDFLAGS)
556 LINK.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) -norunpath -nolib $(LDFLAGS) $(CCNEEDED)
557 LINK64.cc= $(CCC64) $(CCFLAGS64) $(CPPFLAGS) -norunpath -nolib $(LDFLAGS) $(CCNEEDED)
558 LINT.c= $(LINT) $(LINTFLAGS) $(CPPFLAGS)
559 LINT64.c= $(LINT) $(LINTFLAGS64) $(CPPFLAGS)
560
561 # For some future builds, NATIVE_MACH and MACH might be different.
562 # Therefore, NATIVE_MACH needs to be redefined in the
563 # environment as `uname -p` to override this macro.
564 #
565 # For now at least, we cross-compile amd64 on i386 machines.
566 NATIVE_MACH= $(MACH:amd64=i386)
567
568 # Define native compilation macros
569 #
570
571 # Base directory where compilers are loaded.
572 # Defined here so it can be overridden by developer.
573 #
574 SPRO_ROOT= $(BUILD_TOOLS)/SUNWspro
575 SPRO_VROOT= $(SPRO_ROOT)/SS12
576
577 # All sub-Makefiles should pass a specific path when building
578 # (such as with configure/make/perl) to ensure that the right
579 # compiler above is found rather than one in the build path
580 # (which might be older/newer depending on what the build machine
581 # has in /opt/SUNWspro or /opt/teamware). This is the default
582 # which can be overridden.
583 #
584 SFW_PATH="$(SPRO_VROOT)/bin:$(PATH)"
585
586 # Specify platform compiler versions for languages
587 # that we use (currently only c and c++).
588 #
589 sparc_CC= $(SPRO_VROOT)/bin/cc
590 sparc_CCC= $(SPRO_VROOT)/bin/CC
591 sparc_AS= /usr/ccs/bin/as
592 sparc_LD= /usr/ccs/bin/ld
593
594 sparcv9_CC= $(SPRO_VROOT)/bin/cc
595 sparcv9_CCC= $(SPRO_VROOT)/bin/CC
596 sparcv9_AS= /usr/ccs/bin/as
597 sparcv9_LD= /usr/ccs/bin/ld
598
599 i386_CC= $(SPRO_VROOT)/bin/cc
600 i386_CCC= $(SPRO_VROOT)/bin/CC
601 i386_AS= /usr/ccs/bin/as
602 i386_LD= /usr/ccs/bin/ld
603
604 amd64_CC= $(SPRO_VROOT)/bin/cc
605 amd64_CCC= $(SPRO_VROOT)/bin/CC
606 amd64_AS= $(SPRO_VROOT)/bin/as
607 amd64_LD= /usr/ccs/bin/ld
608
609 NATIVECC= $($(NATIVE_MACH)_CC)
610 NATIVECCC= $($(NATIVE_MACH)_CCC)
611 NATIVEAS= $($(NATIVE_MACH)_AS)
612 NATIVELD= $($(NATIVE_MACH)_LD)
613
614 CC= $(NATIVECC)
615 CCC= $(NATIVECCC)
616 AS= $(NATIVEAS)
617 LD= $(NATIVELD)
618
619 GCC= /usr/sfw/bin/gcc
620 GXX= /usr/sfw/bin/g++
621
622 CC64= $($(MACH64)_CC)
623 CCC64= $($(MACH64)_CCC)
624 AS64= $($(MACH64)_AS)
625 LD64= $($(MACH64)_LD)
626
627 #
628 # Use the same lint as the cc compiler
629 #
630 sparc_LINT= $(SPRO_VROOT)/bin/lint
631 i386_LINT= $(SPRO_VROOT)/bin/lint
632 LINT= $($(MACH)_LINT)
633
634 # Rules (normally from make.rules) and macros which are used for post
635 # processing files. Normally, these do stripping of the comment section
636 # automatically.
637 # RELEASE_CM: Should be editted to reflect the release.
638 # POST_PROCESS_O: Post-processing for `.o' files.
639 # POST_PROCESS_A: Post-processing for `.a' files (currently null).
640 # POST_PROCESS_SO: Post-processing for `.so' files.
641 # POST_PROCESS: Post-processing for executable files (no suffix).
642 # Note that these macros are not completely generalized as they are to be
643 # used with the file name to be processed following.
644 #
645 # It is left as an exercise to Release Engineering to embellish the generation
646 # of the release comment string.
647 #
648 # If this is a standard development build:
649 # compress the comment section (mcs -c)
650 # add the standard comment (mcs -a $(RELEASE_CM))
651 # add the development specific comment (mcs -a $(DEV_CM))
652 #
653 # If this is an installation build:
654 # delete the comment section (mcs -d)
655 # add the standard comment (mcs -a $(RELEASE_CM))
656 # add the development specific comment (mcs -a $(DEV_CM))
657 #
658 # If this is an release build:
659 # delete the comment section (mcs -d)
660 # add the standard comment (mcs -a $(RELEASE_CM))
661 #
662 # Sigh,... The declaration POUND_SIGN is always '#'. This is just needed
663 # to get around the make **bug** that '#' is always a comment delimiter,
664 # even when escaped or quoted.
665 #
666 # The following list of macros are used in the definition of RELEASE_CM
667 # which is used to label all binaries in the build:
668 #
669 # SFWRELEASE Specific release of the build, eg: 5.2
670 # SFWVERSION Version of the build (alpha, beta, Generic)
671 # PATCHID If this is a patch this value should contain
672 # the patchid value (eg: "Generic 100832-01"), otherwise
673 # it will be set to $(SFWVERSION)
674 # RELEASE_DATE Date of the Release Build
675 # PATCH_DATE Date the patch was created, if this is blank it
676 # will default to the RELEASE_DATE
677 #
678 POUND_SIGN:sh= echo \\043
679 SFWVERS= "11.11.0"
680 SFWRELEASE= 5.11
681 SFWVERSION= SunOS Development
682 PATCHID= $(SFWVERSION)
683 RELEASE_DATE= October 2007
684 PATCH_DATE= $(RELEASE_DATE)
685 RELEASE_CM= "@($(POUND_SIGN))SunOS $(SFWRELEASE) $(PATCHID) $(PATCH_DATE)"
686 DEV_CM= "@($(POUND_SIGN))SunOS Internal Development: `$(ECHO) $$LOGNAME` `date +%D` `$(ECHO) [\`basename $$CODEMGR_WS\`]`"
687
688 PROCESS_COMMENT= @?${MCS} -c -a $(RELEASE_CM) -a $(DEV_CM)
689 $(STRIP_COMMENTS)PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM) -a $(DEV_CM)
690 $(RELEASE_BUILD)PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM)
691
692 POST_PROCESS_O= $(PROCESS_COMMENT) $@
693 POST_PROCESS_A=
694 POST_PROCESS_SO= $(PROCESS_COMMENT) $@
695 POST_PROCESS= $(PROCESS_COMMENT) $@
696
697 # Default build rules which perform comment section post-processing.
698 #
699 .c:
700 $(LINK.c) -o $@ $< $(LDLIBS)
701 $(POST_PROCESS)
702 .c.o:
703 $(COMPILE.c) $(OUTPUT_OPTION) $<
704 $(POST_PROCESS_O)
705 .c.a:
706 $(COMPILE.c) -o $% $<
707 $(PROCESS_COMMENT) $%
708 $(AR) $(ARFLAGS) $@ $%
709 $(RM) $%
710 .s.o:
711 $(COMPILE.s) -o $@ $<
712 $(POST_PROCESS_O)
713 .s.a:
714 $(COMPILE.s) -o $% $<
715 $(PROCESS_COMMENT) $%
716 $(AR) $(ARFLAGS) $@ $%
717 $(RM) $%
718 .cc:
719 $(LINK.cc) -o $@ $< $(LDLIBS)
720 $(POST_PROCESS)
721 .cc.o:
722 $(COMPILE.cc) $(OUTPUT_OPTION) $<
723 $(POST_PROCESS_O)
724 .cc.a:
725 $(COMPILE.cc) -o $% $<
726 $(AR) $(ARFLAGS) $@ $%
727 $(PROCESS_COMMENT) $%
728 $(RM) $%
729 .y:
730 $(YACC.y) $<
731 $(LINK.c) -o $@ y.tab.c $(LDLIBS)
732 $(POST_PROCESS)
733 $(RM) y.tab.c
734 .y.o:
735 $(YACC.y) $<
736 $(COMPILE.c) -o $@ y.tab.c
737 $(POST_PROCESS_O)
738 $(RM) y.tab.c
739 .l:
740 $(RM) $*.c
741 $(LEX.l) $< > $*.c
742 $(LINK.c) -o $@ $*.c -ll $(LDLIBS)
743 $(POST_PROCESS)
744 $(RM) $*.c
745 .l.o:
746 $(RM) $*.c
747 $(LEX.l) $< > $*.c
748 $(COMPILE.c) -o $@ $*.c
749 $(POST_PROCESS_O)
750 $(RM) $*.c
751
752 .java.class:
753 $(COMPILE.java) $<
754
755 #
756 # Rules to create message catalogue files from
757 # .c, .y and .l files
758 #
759 .c.po:
760 $(COMPILE.cpp) $< > $<.i
761 $(BUILD.po)
762
763 .y.po:
764 yacc -d $<
765 $(COMPILE.cpp) y.tab.c > $<.i
766 $(BUILD.po)
767 $(RM) y.tab.c
768
769 .l.po:
770 lex $<
771 $(COMPILE.cpp) lex.yy.c > $<.i
772 $(BUILD.po)
773 $(RM) lex.yy.c
774
775 #
776 # Rules to perform stylistic checks
777 #
778 .SUFFIXES: $(SUFFIXES) .x
779
780 $(ROOTBIN)/%: %
781 $(INS.file)
782
783 $(ROOTLIB)/%: %
784 $(INS.file)
785
786 $(ROOTBIN64)/%: %
787 $(INS.file)
788
789 $(ROOTLIB64)/%: %
790 $(INS.file)
791
792 $(ROOTBIN32)/%: %
793 $(INS.file)
794
795 $(ROOTSBIN)/%: %
796 $(INS.file)
797
798 $(ROOTUSRSBIN)/%: %
799 $(INS.file)
800
801 $(ROOTUSRSBIN32)/%: %
802 $(INS.file)
803
804 $(ROOTUSRSBIN64)/%: %
805 $(INS.file)
806
807 $(ROOTETC)/%: %
808 $(INS.file)
809
810 $(ROOTSFWBIN)/%: %
811 $(INS.file)
812
813 $(ROOTSFWSBIN)/%: %
814 $(INS.file)
815
816 $(ROOTSFWINFO)/%: %
817 $(INS.file)
818
819 $(ROOTSFWLIB)/%: %
820 $(INS.file)
821
822 $(ROOTLIBEXEC)/%: %
823 $(INS.file)
824
825 $(ROOTSFWMAN1)/%: %
826 $(INS.file)
827
828 $(ROOTSFWMAN1M)/%: %
829 $(INS.file)
830
831 $(ROOTSFWMANN)/%: %
832 $(INS.file)
833
834 $(ROOTSFWMAN3)/%: %
835 $(INS.file)
836
837 $(ROOTSFWMAN4)/%: %
838 $(INS.file)
839
840 $(ROOTSFWMAN5)/%: %
841 $(INS.file)
842
843 $(ROOTSFWMAN7)/%: %
844 $(INS.file)
845
846 $(ROOTSFWSHARE)/%: %
847 $(INS.file)