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
22 #
23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright (c) 2012 by Delphix. All rights reserved.
25 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
26 # Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
27 # Copyright 2015 Gary Mills
28 # Copyright 2015 Igor Kozhukhov <ikozhukhov@gmail.com>
29 # Copyright 2016 Toomas Soome <tsoome@me.com>
30 #
31
32 #
33 # Makefile.master, global definitions for system source
34 #
35 ROOT= /proto
36
37 #
38 # Adjunct root, containing an additional proto area to be used for headers
39 # and libraries.
40 #
41 ADJUNCT_PROTO=
42
43 #
44 # Adjunct for building things that run on the build machine.
45 #
46 NATIVE_ADJUNCT= /usr
47
48 #
49 # RELEASE_BUILD should be cleared for final release builds.
50 # NOT_RELEASE_BUILD is exactly what the name implies.
51 #
52 # __GNUC toggles the building of ON components using gcc and related tools.
53 # Normally set to `#', set it to `' to do gcc build.
54 #
55 # The declaration POUND_SIGN is always '#'. This is needed to get around the
56 # make feature that '#' is always a comment delimiter, even when escaped or
57 # quoted. We use this macro expansion method to get POUND_SIGN rather than
58 # always breaking out a shell because the general case can cause a noticable
59 # slowdown in build times when so many Makefiles include Makefile.master.
60 #
61 # While the majority of users are expected to override the setting below
62 # with an env file (via nightly or bldenv), if you aren't building that way
63 # (ie, you're using "ws" or some other bootstrapping method) then you need
64 # this definition in order to avoid the subshell invocation mentioned above.
65 #
66
149 MKDIR= /usr/bin/mkdir
150 CHMOD= /usr/bin/chmod
151 MV= /usr/bin/mv -f
152 RM= /usr/bin/rm -f
153 CUT= /usr/bin/cut
154 NM= /usr/ccs/bin/nm
155 DIFF= /usr/bin/diff
156 GREP= /usr/bin/grep
157 EGREP= /usr/bin/egrep
158 ELFWRAP= /usr/bin/elfwrap
159 KSH93= /usr/bin/ksh93
160 SED= /usr/bin/sed
161 AWK= /usr/bin/nawk
162 CP= /usr/bin/cp -f
163 MCS= /usr/ccs/bin/mcs
164 CAT= /usr/bin/cat
165 ELFDUMP= /usr/ccs/bin/elfdump
166 M4= /usr/bin/m4
167 STRIP= /usr/ccs/bin/strip
168 LEX= /usr/ccs/bin/lex
169 FLEX= /usr/bin/flex
170 YACC= /usr/ccs/bin/yacc
171 CPP= /usr/lib/cpp
172 JAVAC= $(JAVA_ROOT)/bin/javac
173 JAVAH= $(JAVA_ROOT)/bin/javah
174 JAVADOC= $(JAVA_ROOT)/bin/javadoc
175 RMIC= $(JAVA_ROOT)/bin/rmic
176 JAR= $(JAVA_ROOT)/bin/jar
177 CTFCONVERT= $(ONBLD_TOOLS)/bin/$(MACH)/ctfconvert
178 CTFMERGE= $(ONBLD_TOOLS)/bin/$(MACH)/ctfmerge
179 CTFSTABS= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstabs
180 CTFSTRIP= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstrip
181 NDRGEN= $(ONBLD_TOOLS)/bin/$(MACH)/ndrgen
182 GENOFFSETS= $(ONBLD_TOOLS)/bin/genoffsets
183 XREF= $(ONBLD_TOOLS)/bin/xref
184 FIND= /usr/bin/find
185 PERL= /usr/bin/perl
186 PERL_VERSION= 5.10.0
187 PERL_PKGVERS= -510
188 PERL_ARCH = i86pc-solaris-64int
189 $(SPARC_BLD)PERL_ARCH = sun4-solaris-64int
190 PYTHON_VERSION= 2.7
191 PYTHON_PKGVERS= -27
224 JSTYLE= $(ONBLD_TOOLS)/bin/jstyle
225
226 DOT_H_CHECK= \
227 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL); \
228 $(HDRCHK) $< $(HDRCHK_TAIL)
229
230 DOT_X_CHECK= \
231 @$(ECHO) "checking $<"; $(RPCGEN) -C -h $< | $(CSTYLE) $(CSTYLE_TAIL); \
232 $(RPCGEN) -C -h $< | $(HDRCHK) $< $(HDRCHK_TAIL)
233
234 DOT_C_CHECK= \
235 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL)
236
237 MANIFEST_CHECK= \
238 @$(ECHO) "checking $<"; \
239 SVCCFG_DTD=$(SRC)/cmd/svc/dtd/service_bundle.dtd.1 \
240 SVCCFG_REPOSITORY=$(SRC)/cmd/svc/seed/global.db \
241 SVCCFG_CONFIGD_PATH=$(SRC)/cmd/svc/configd/svc.configd-native \
242 $(SRC)/cmd/svc/svccfg/svccfg-native validate $<
243
244 INS.file= $(RM) $@; $(INS) -s -m $(FILEMODE) -f $(@D) $<
245 INS.dir= $(INS) -s -d -m $(DIRMODE) $@
246 # installs and renames at once
247 #
248 INS.rename= $(INS.file); $(MV) $(@D)/$(<F) $@
249
250 # install a link
251 INSLINKTARGET= $<
252 INS.link= $(RM) $@; $(LN) $(INSLINKTARGET) $@
253 INS.symlink= $(RM) $@; $(SYMLINK) $(INSLINKTARGET) $@
254
255 #
256 # Python bakes the mtime of the .py file into the compiled .pyc and
257 # rebuilds if the baked-in mtime != the mtime of the source file
258 # (rather than only if it's less than), thus when installing python
259 # files we must make certain to not adjust the mtime of the source
260 # (.py) file.
261 #
262 INS.pyfile= $(RM) $@; $(SED) -e "1s:^\#!@PYTHON@:\#!$(PYTHON):" < $< > $@; $(CHMOD) $(FILEMODE) $@; $(TOUCH) -r $< $@
263
264 # MACH must be set in the shell environment per uname -p on the build host
424 # (CPPFLAGS.first allows values to be prepended to CPPFLAGS).
425 sparc_CFLAGS= $(sparc_XARCH) $(CCSTATICSYM)
426 sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(V9ABIWARN) $(CCREGSYM) \
427 $(CCSTATICSYM)
428 i386_CFLAGS= $(i386_XARCH)
429 amd64_CFLAGS= $(amd64_XARCH)
430
431 sparc_ASFLAGS= $(sparc_AS_XARCH)
432 sparcv9_ASFLAGS=$(sparcv9_AS_XARCH)
433 i386_ASFLAGS= $(i386_AS_XARCH)
434 amd64_ASFLAGS= $(amd64_AS_XARCH)
435
436 #
437 sparc_COPTFLAG= -xO3
438 sparcv9_COPTFLAG= -xO3
439 i386_COPTFLAG= -O
440 amd64_COPTFLAG= -xO3
441
442 COPTFLAG= $($(MACH)_COPTFLAG)
443 COPTFLAG64= $($(MACH64)_COPTFLAG)
444
445 # When -g is used, the compiler globalizes static objects
446 # (gives them a unique prefix). Disable that.
447 CNOGLOBAL= -W0,-noglobal
448
449 # Direct the Sun Studio compiler to use a static globalization prefix based on the
450 # name of the module rather than something unique. Otherwise, objects
451 # will not build deterministically, as subsequent compilations of identical
452 # source will yeild objects that always look different.
453 #
454 # In the same spirit, this will also remove the date from the N_OPT stab.
455 CGLOBALSTATIC= -W0,-xglobalstatic
456
457 # Sometimes we want all symbols and types in debugging information even
458 # if they aren't used.
459 CALLSYMS= -W0,-xdbggen=no%usedonly
460
461 #
462 # Default debug format for Sun Studio 11 is dwarf, so force it to
463 # generate stabs.
464 #
465 DEBUGFORMAT= -xdebugformat=stabs
466
467 #
468 # Flags used to build in debug mode for ctf generation. Bugs in the Devpro
469 # compilers currently prevent us from building with cc-emitted DWARF.
470 #
471 CTF_FLAGS_sparc = -g -Wc,-Qiselect-T1 $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
472 CTF_FLAGS_i386 = -g $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
473
474 CTF_FLAGS_sparcv9 = $(CTF_FLAGS_sparc)
475 CTF_FLAGS_amd64 = $(CTF_FLAGS_i386)
476
477 # Sun Studio produces broken userland code when saving arguments.
478 $(__GNUC)CTF_FLAGS_amd64 += $(SAVEARGS)
479
480 CTF_FLAGS_32 = $(CTF_FLAGS_$(MACH)) $(DEBUGFORMAT)
481 CTF_FLAGS_64 = $(CTF_FLAGS_$(MACH64)) $(DEBUGFORMAT)
482 CTF_FLAGS = $(CTF_FLAGS_32)
483
484 #
485 # Flags used with genoffsets
509 # The Sun Studio 11 compiler has changed the behaviour of integer
510 # wrap arounds and so a flag is needed to use the legacy behaviour
511 # (without this flag panics/hangs could be exposed within the source).
512 #
513 sparc_IROPTFLAG = -W2,-xwrap_int
514 sparcv9_IROPTFLAG = -W2,-xwrap_int
515 i386_IROPTFLAG =
516 amd64_IROPTFLAG =
517
518 IROPTFLAG = $($(MACH)_IROPTFLAG)
519 IROPTFLAG64 = $($(MACH64)_IROPTFLAG)
520
521 sparc_XREGSFLAG = -xregs=no%appl
522 sparcv9_XREGSFLAG = -xregs=no%appl
523 i386_XREGSFLAG =
524 amd64_XREGSFLAG =
525
526 XREGSFLAG = $($(MACH)_XREGSFLAG)
527 XREGSFLAG64 = $($(MACH64)_XREGSFLAG)
528
529 # dmake SOURCEDEBUG=yes ... enables source-level debugging information, and
530 # avoids stripping it.
531 SOURCEDEBUG = $(POUND_SIGN)
532 SRCDBGBLD = $(SOURCEDEBUG:yes=)
533
534 #
535 # These variables are intended ONLY for use by developers to safely pass extra
536 # flags to the compilers without unintentionally overriding Makefile-set
537 # flags. They should NEVER be set to any value in a Makefile.
538 #
539 # They come last in the associated FLAGS variable such that they can
540 # explicitly override things if necessary, there are gaps in this, but it's
541 # the best we can manage.
542 #
543 CUSERFLAGS =
544 CUSERFLAGS64 = $(CUSERFLAGS)
545 CCUSERFLAGS =
546 CCUSERFLAGS64 = $(CCUSERFLAGS)
547
548 CSOURCEDEBUGFLAGS =
549 CCSOURCEDEBUGFLAGS =
550 $(SRCDBGBLD)CSOURCEDEBUGFLAGS = -g -xs
551 $(SRCDBGBLD)CCSOURCEDEBUGFLAGS = -g -xs
552
553 CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \
554 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG) \
555 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
556 $(CUSERFLAGS)
557 CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \
558 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG64) \
559 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
560 $(CUSERFLAGS64)
561 #
562 # Flags that are used to build parts of the code that are subsequently
563 # run on the build machine (also known as the NATIVE_BUILD).
564 #
565 NATIVE_CFLAGS= $(COPTFLAG) $($(NATIVE_MACH)_CFLAGS) $(CCMODE) \
566 $(ILDOFF) $(CERRWARN) $(CSTD) $($(NATIVE_MACH)_CCUNBOUND) \
567 $(IROPTFLAG) $(CGLOBALSTATIC) $(CCNOAUTOINLINE) \
568 $(CSOURCEDEBUGFLAGS) $(CUSERFLAGS)
569
570 DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging.
571 DTS_ERRNO=-D_TS_ERRNO
572 CPPFLAGS.first= # Please keep empty. Only lower makefiles should set this.
573 CPPFLAGS.master=$(DTEXTDOM) $(DTS_ERRNO) \
574 $(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4) \
575 $(ADJUNCT_PROTO:%=-I%/usr/include)
576 CPPFLAGS.native=$(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) \
577 $(ENVCPPFLAGS4) -I$(NATIVE_ADJUNCT)/include
578 CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
579 AS_CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
580 JAVAFLAGS= -source 1.6 -target 1.6 -Xlint:deprecation,-options
581
582 #
583 # For source message catalogue
584 #
585 .SUFFIXES: $(SUFFIXES) .i .po
586 MSGROOT= $(ROOT)/catalog
587 MSGDOMAIN= $(MSGROOT)/$(TEXT_DOMAIN)
588 MSGDOMAINPOFILE = $(MSGDOMAIN)/$(POFILE)
589 DCMSGDOMAIN= $(MSGROOT)/LC_TIME/$(TEXT_DOMAIN)
590 DCMSGDOMAINPOFILE = $(DCMSGDOMAIN)/$(DCFILE:.dc=.po)
591
592 CLOBBERFILES += $(POFILE) $(POFILES)
593 COMPILE.cpp= $(CC) -E -C $(CFLAGS) $(CPPFLAGS)
594 XGETTEXT= /usr/bin/xgettext
595 XGETFLAGS= -c TRANSLATION_NOTE
596 GNUXGETTEXT= /usr/gnu/bin/xgettext
597 GNUXGETFLAGS= --add-comments=TRANSLATION_NOTE --keyword=_ \
613 -Qoption ccfe -messages=no%anachronism \
614 -Qoption ccfe -features=no%conststrings \
615 $(CCCREGSYM) \
616 $(CCERRWARN)
617 i386_CCFLAGS= -compat=4 \
618 -Qoption ccfe -messages=no%anachronism \
619 -Qoption ccfe -features=no%conststrings \
620 $(CCERRWARN)
621 amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \
622 -Qoption ccfe -messages=no%anachronism \
623 -Qoption ccfe -features=no%conststrings \
624 $(CCERRWARN)
625
626 sparc_CCOPTFLAG= -O
627 sparcv9_CCOPTFLAG= -O
628 i386_CCOPTFLAG= -O
629 amd64_CCOPTFLAG= -O
630
631 CCOPTFLAG= $($(MACH)_CCOPTFLAG)
632 CCOPTFLAG64= $($(MACH64)_CCOPTFLAG)
633 CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
634 $(CCUSERFLAGS)
635 CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
636 $(CCUSERFLAGS64)
637
638 #
639 #
640 #
641 ELFWRAP_FLAGS =
642 ELFWRAP_FLAGS64 = -64
643
644 #
645 # Various mapfiles that are used throughout the build, and delivered to
646 # /usr/lib/ld.
647 #
648 MAPFILE.NED_i386 = $(SRC)/common/mapfiles/common/map.noexdata
649 MAPFILE.NED_sparc =
650 MAPFILE.NED = $(MAPFILE.NED_$(MACH))
651 MAPFILE.PGA = $(SRC)/common/mapfiles/common/map.pagealign
652 MAPFILE.NES = $(SRC)/common/mapfiles/common/map.noexstk
867 ZINITFIRST= -zinitfirst
868 ZINTERPOSE= -zinterpose
869 ZLAZYLOAD= -zlazyload
870 ZLOADFLTR= -zloadfltr
871 ZMULDEFS= -zmuldefs
872 ZNODEFAULTLIB= -znodefaultlib
873 ZNODEFS= -znodefs
874 ZNODELETE= -znodelete
875 ZNODLOPEN= -znodlopen
876 ZNODUMP= -znodump
877 ZNOLAZYLOAD= -znolazyload
878 ZNOLDYNSYM= -znoldynsym
879 ZNORELOC= -znoreloc
880 ZNOVERSION= -znoversion
881 ZRECORD= -zrecord
882 ZREDLOCSYM= -zredlocsym
883 ZTEXT= -ztext
884 ZVERBOSE= -zverbose
885
886 GSHARED= -G
887 CCMT= -mt
888
889 # Handle different PIC models on different ISAs
890 # (May be overridden by lower-level Makefiles)
891
892 sparc_C_PICFLAGS = -K pic
893 sparcv9_C_PICFLAGS = -K pic
894 i386_C_PICFLAGS = -K pic
895 amd64_C_PICFLAGS = -K pic
896 C_PICFLAGS = $($(MACH)_C_PICFLAGS)
897 C_PICFLAGS64 = $($(MACH64)_C_PICFLAGS)
898
899 sparc_C_BIGPICFLAGS = -K PIC
900 sparcv9_C_BIGPICFLAGS = -K PIC
901 i386_C_BIGPICFLAGS = -K PIC
902 amd64_C_BIGPICFLAGS = -K PIC
903 C_BIGPICFLAGS = $($(MACH)_C_BIGPICFLAGS)
904 C_BIGPICFLAGS64 = $($(MACH64)_C_BIGPICFLAGS)
905
906 # CC requires there to be no space between '-K' and 'pic' or 'PIC'.
|
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
22 #
23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright (c) 2012 by Delphix. All rights reserved.
25 # Copyright 2017 Nexenta Systems, Inc. All rights reserved.
26 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
27 # Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
28 # Copyright 2015 Gary Mills
29 # Copyright 2015 Igor Kozhukhov <ikozhukhov@gmail.com>
30 # Copyright 2016 Toomas Soome <tsoome@me.com>
31 #
32
33 #
34 # Makefile.master, global definitions for system source
35 #
36 ROOT= /proto
37
38 #
39 # Adjunct root, containing an additional proto area to be used for headers
40 # and libraries.
41 #
42 ADJUNCT_PROTO=
43
44 #
45 # Adjunct for building things that run on the build machine.
46 #
47 NATIVE_ADJUNCT= /
48
49 #
50 # RELEASE_BUILD should be cleared for final release builds.
51 # NOT_RELEASE_BUILD is exactly what the name implies.
52 #
53 # __GNUC toggles the building of ON components using gcc and related tools.
54 # Normally set to `#', set it to `' to do gcc build.
55 #
56 # The declaration POUND_SIGN is always '#'. This is needed to get around the
57 # make feature that '#' is always a comment delimiter, even when escaped or
58 # quoted. We use this macro expansion method to get POUND_SIGN rather than
59 # always breaking out a shell because the general case can cause a noticable
60 # slowdown in build times when so many Makefiles include Makefile.master.
61 #
62 # While the majority of users are expected to override the setting below
63 # with an env file (via nightly or bldenv), if you aren't building that way
64 # (ie, you're using "ws" or some other bootstrapping method) then you need
65 # this definition in order to avoid the subshell invocation mentioned above.
66 #
67
150 MKDIR= /usr/bin/mkdir
151 CHMOD= /usr/bin/chmod
152 MV= /usr/bin/mv -f
153 RM= /usr/bin/rm -f
154 CUT= /usr/bin/cut
155 NM= /usr/ccs/bin/nm
156 DIFF= /usr/bin/diff
157 GREP= /usr/bin/grep
158 EGREP= /usr/bin/egrep
159 ELFWRAP= /usr/bin/elfwrap
160 KSH93= /usr/bin/ksh93
161 SED= /usr/bin/sed
162 AWK= /usr/bin/nawk
163 CP= /usr/bin/cp -f
164 MCS= /usr/ccs/bin/mcs
165 CAT= /usr/bin/cat
166 ELFDUMP= /usr/ccs/bin/elfdump
167 M4= /usr/bin/m4
168 STRIP= /usr/ccs/bin/strip
169 LEX= /usr/ccs/bin/lex
170 FLEX= $(SFW_ROOT)/bin/flex
171 YACC= /usr/ccs/bin/yacc
172 CPP= /usr/lib/cpp
173 ANSI_CPP= $(GCC_ROOT)/bin/cpp
174 JAVAC= $(JAVA_ROOT)/bin/javac
175 JAVAH= $(JAVA_ROOT)/bin/javah
176 JAVADOC= $(JAVA_ROOT)/bin/javadoc
177 RMIC= $(JAVA_ROOT)/bin/rmic
178 JAR= $(JAVA_ROOT)/bin/jar
179 CTFCONVERT= $(ONBLD_TOOLS)/bin/$(MACH)/ctfconvert
180 CTFMERGE= $(ONBLD_TOOLS)/bin/$(MACH)/ctfmerge
181 CTFSTABS= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstabs
182 CTFSTRIP= $(ONBLD_TOOLS)/bin/$(MACH)/ctfstrip
183 NDRGEN= $(ONBLD_TOOLS)/bin/$(MACH)/ndrgen
184 GENOFFSETS= $(ONBLD_TOOLS)/bin/genoffsets
185 XREF= $(ONBLD_TOOLS)/bin/xref
186 FIND= /usr/bin/find
187 PERL= /usr/bin/perl
188 PERL_VERSION= 5.10.0
189 PERL_PKGVERS= -510
190 PERL_ARCH = i86pc-solaris-64int
191 $(SPARC_BLD)PERL_ARCH = sun4-solaris-64int
192 PYTHON_VERSION= 2.7
193 PYTHON_PKGVERS= -27
226 JSTYLE= $(ONBLD_TOOLS)/bin/jstyle
227
228 DOT_H_CHECK= \
229 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL); \
230 $(HDRCHK) $< $(HDRCHK_TAIL)
231
232 DOT_X_CHECK= \
233 @$(ECHO) "checking $<"; $(RPCGEN) -C -h $< | $(CSTYLE) $(CSTYLE_TAIL); \
234 $(RPCGEN) -C -h $< | $(HDRCHK) $< $(HDRCHK_TAIL)
235
236 DOT_C_CHECK= \
237 @$(ECHO) "checking $<"; $(CSTYLE) $< $(CSTYLE_TAIL)
238
239 MANIFEST_CHECK= \
240 @$(ECHO) "checking $<"; \
241 SVCCFG_DTD=$(SRC)/cmd/svc/dtd/service_bundle.dtd.1 \
242 SVCCFG_REPOSITORY=$(SRC)/cmd/svc/seed/global.db \
243 SVCCFG_CONFIGD_PATH=$(SRC)/cmd/svc/configd/svc.configd-native \
244 $(SRC)/cmd/svc/svccfg/svccfg-native validate $<
245
246 # dmake SOURCEDEBUG=yes ... enables source-level debugging information,
247 # and avoids stripping it.
248 SOURCEDEBUG = $(POUND_SIGN)
249 SRCDBGBLD = $(SOURCEDEBUG:yes=)
250
251 INS_STRIP= -s
252 $(SRCDBGBLD)INS_STRIP=
253 INS.file= $(RM) $@; $(INS) $(INS_STRIP) -m $(FILEMODE) -f $(@D) $<
254 INS.dir= $(INS) -s -d -m $(DIRMODE) $@
255 # installs and renames at once
256 #
257 INS.rename= $(INS.file); $(MV) $(@D)/$(<F) $@
258
259 # install a link
260 INSLINKTARGET= $<
261 INS.link= $(RM) $@; $(LN) $(INSLINKTARGET) $@
262 INS.symlink= $(RM) $@; $(SYMLINK) $(INSLINKTARGET) $@
263
264 #
265 # Python bakes the mtime of the .py file into the compiled .pyc and
266 # rebuilds if the baked-in mtime != the mtime of the source file
267 # (rather than only if it's less than), thus when installing python
268 # files we must make certain to not adjust the mtime of the source
269 # (.py) file.
270 #
271 INS.pyfile= $(RM) $@; $(SED) -e "1s:^\#!@PYTHON@:\#!$(PYTHON):" < $< > $@; $(CHMOD) $(FILEMODE) $@; $(TOUCH) -r $< $@
272
273 # MACH must be set in the shell environment per uname -p on the build host
433 # (CPPFLAGS.first allows values to be prepended to CPPFLAGS).
434 sparc_CFLAGS= $(sparc_XARCH) $(CCSTATICSYM)
435 sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(V9ABIWARN) $(CCREGSYM) \
436 $(CCSTATICSYM)
437 i386_CFLAGS= $(i386_XARCH)
438 amd64_CFLAGS= $(amd64_XARCH)
439
440 sparc_ASFLAGS= $(sparc_AS_XARCH)
441 sparcv9_ASFLAGS=$(sparcv9_AS_XARCH)
442 i386_ASFLAGS= $(i386_AS_XARCH)
443 amd64_ASFLAGS= $(amd64_AS_XARCH)
444
445 #
446 sparc_COPTFLAG= -xO3
447 sparcv9_COPTFLAG= -xO3
448 i386_COPTFLAG= -O
449 amd64_COPTFLAG= -xO3
450
451 COPTFLAG= $($(MACH)_COPTFLAG)
452 COPTFLAG64= $($(MACH64)_COPTFLAG)
453 $(SRCDBGBLD)COPTFLAG = -g -xs
454 $(SRCDBGBLD)COPTFLAG64 = -g -xs
455
456 # When -g is used, the compiler globalizes static objects
457 # (gives them a unique prefix). Disable that.
458 CNOGLOBAL= -W0,-noglobal
459
460 # Direct the Sun Studio compiler to use a static globalization prefix based on the
461 # name of the module rather than something unique. Otherwise, objects
462 # will not build deterministically, as subsequent compilations of identical
463 # source will yeild objects that always look different.
464 #
465 # In the same spirit, this will also remove the date from the N_OPT stab.
466 CGLOBALSTATIC= -W0,-xglobalstatic
467
468 # Sometimes we want all symbols and types in debugging information even
469 # if they aren't used.
470 CALLSYMS= -W0,-xdbggen=no%usedonly
471
472 #
473 # Default debug format for Sun Studio 11 is dwarf, so force it to
474 # generate stabs.
475 #
476 DEBUGFORMAT= -xdebugformat=stabs
477 $(SRCDBGBLD)DEBUGFORMAT=
478
479 #
480 # Flags used to build in debug mode for ctf generation. Bugs in the Devpro
481 # compilers currently prevent us from building with cc-emitted DWARF.
482 #
483 CTF_FLAGS_sparc = -g -Wc,-Qiselect-T1 $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
484 CTF_FLAGS_i386 = -g $(CSTD) $(CNOGLOBAL) $(CDWARFSTR)
485
486 CTF_FLAGS_sparcv9 = $(CTF_FLAGS_sparc)
487 CTF_FLAGS_amd64 = $(CTF_FLAGS_i386)
488
489 # Sun Studio produces broken userland code when saving arguments.
490 $(__GNUC)CTF_FLAGS_amd64 += $(SAVEARGS)
491
492 CTF_FLAGS_32 = $(CTF_FLAGS_$(MACH)) $(DEBUGFORMAT)
493 CTF_FLAGS_64 = $(CTF_FLAGS_$(MACH64)) $(DEBUGFORMAT)
494 CTF_FLAGS = $(CTF_FLAGS_32)
495
496 #
497 # Flags used with genoffsets
521 # The Sun Studio 11 compiler has changed the behaviour of integer
522 # wrap arounds and so a flag is needed to use the legacy behaviour
523 # (without this flag panics/hangs could be exposed within the source).
524 #
525 sparc_IROPTFLAG = -W2,-xwrap_int
526 sparcv9_IROPTFLAG = -W2,-xwrap_int
527 i386_IROPTFLAG =
528 amd64_IROPTFLAG =
529
530 IROPTFLAG = $($(MACH)_IROPTFLAG)
531 IROPTFLAG64 = $($(MACH64)_IROPTFLAG)
532
533 sparc_XREGSFLAG = -xregs=no%appl
534 sparcv9_XREGSFLAG = -xregs=no%appl
535 i386_XREGSFLAG =
536 amd64_XREGSFLAG =
537
538 XREGSFLAG = $($(MACH)_XREGSFLAG)
539 XREGSFLAG64 = $($(MACH64)_XREGSFLAG)
540
541 #
542 # These variables are intended ONLY for use by developers to safely pass extra
543 # flags to the compilers without unintentionally overriding Makefile-set
544 # flags. They should NEVER be set to any value in a Makefile.
545 #
546 # They come last in the associated FLAGS variable such that they can
547 # explicitly override things if necessary, there are gaps in this, but it's
548 # the best we can manage.
549 #
550 CUSERFLAGS =
551 CUSERFLAGS64 = $(CUSERFLAGS)
552 CCUSERFLAGS =
553 CCUSERFLAGS64 = $(CCUSERFLAGS)
554
555 CSOURCEDEBUGFLAGS =
556 CCSOURCEDEBUGFLAGS =
557
558 CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \
559 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG) \
560 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
561 $(CUSERFLAGS)
562 CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \
563 $(ILDOFF) $(CERRWARN) $(CSTD) $(CCUNBOUND) $(IROPTFLAG64) \
564 $(CGLOBALSTATIC) $(CCNOAUTOINLINE) $(CSOURCEDEBUGFLAGS) \
565 $(CUSERFLAGS64)
566 #
567 # Flags that are used to build parts of the code that are subsequently
568 # run on the build machine (also known as the NATIVE_BUILD).
569 #
570 NATIVE_CFLAGS= $(COPTFLAG) $($(NATIVE_MACH)_CFLAGS) $(CCMODE) \
571 $(ILDOFF) $(CERRWARN) $(CSTD) $($(NATIVE_MACH)_CCUNBOUND) \
572 $(IROPTFLAG) $(CGLOBALSTATIC) $(CCNOAUTOINLINE) \
573 $(CSOURCEDEBUGFLAGS) $(CUSERFLAGS)
574
575 DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging.
576 DTS_ERRNO=-D_TS_ERRNO
577 CPPFLAGS.first= # Please keep empty. Only lower makefiles should set this.
578 CPPFLAGS.master=$(DTEXTDOM) $(DTS_ERRNO) \
579 $(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4) \
580 $(ADJUNCT_PROTO:%=-I%/usr/include)
581 CPPFLAGS.native=$(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) \
582 $(ENVCPPFLAGS4) -I$(NATIVE_ADJUNCT)/usr/include
583 CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
584 AS_CPPFLAGS= $(CPPFLAGS.first) $(CPPFLAGS.master)
585 JAVAFLAGS= -source 1.6 -target 1.6 -Xlint:deprecation,-options
586
587 #
588 # For source message catalogue
589 #
590 .SUFFIXES: $(SUFFIXES) .i .po
591 MSGROOT= $(ROOT)/catalog
592 MSGDOMAIN= $(MSGROOT)/$(TEXT_DOMAIN)
593 MSGDOMAINPOFILE = $(MSGDOMAIN)/$(POFILE)
594 DCMSGDOMAIN= $(MSGROOT)/LC_TIME/$(TEXT_DOMAIN)
595 DCMSGDOMAINPOFILE = $(DCMSGDOMAIN)/$(DCFILE:.dc=.po)
596
597 CLOBBERFILES += $(POFILE) $(POFILES)
598 COMPILE.cpp= $(CC) -E -C $(CFLAGS) $(CPPFLAGS)
599 XGETTEXT= /usr/bin/xgettext
600 XGETFLAGS= -c TRANSLATION_NOTE
601 GNUXGETTEXT= /usr/gnu/bin/xgettext
602 GNUXGETFLAGS= --add-comments=TRANSLATION_NOTE --keyword=_ \
618 -Qoption ccfe -messages=no%anachronism \
619 -Qoption ccfe -features=no%conststrings \
620 $(CCCREGSYM) \
621 $(CCERRWARN)
622 i386_CCFLAGS= -compat=4 \
623 -Qoption ccfe -messages=no%anachronism \
624 -Qoption ccfe -features=no%conststrings \
625 $(CCERRWARN)
626 amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \
627 -Qoption ccfe -messages=no%anachronism \
628 -Qoption ccfe -features=no%conststrings \
629 $(CCERRWARN)
630
631 sparc_CCOPTFLAG= -O
632 sparcv9_CCOPTFLAG= -O
633 i386_CCOPTFLAG= -O
634 amd64_CCOPTFLAG= -O
635
636 CCOPTFLAG= $($(MACH)_CCOPTFLAG)
637 CCOPTFLAG64= $($(MACH64)_CCOPTFLAG)
638 $(SRCDBGBLD)CCOPTFLAG = -g -xs
639 $(SRCDBGBLD)CCOPTFLAG64 = -g -xs
640
641 CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
642 $(CCUSERFLAGS)
643 CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS) $(CCSOURCEDEBUGFLAGS) \
644 $(CCUSERFLAGS64)
645
646 #
647 #
648 #
649 ELFWRAP_FLAGS =
650 ELFWRAP_FLAGS64 = -64
651
652 #
653 # Various mapfiles that are used throughout the build, and delivered to
654 # /usr/lib/ld.
655 #
656 MAPFILE.NED_i386 = $(SRC)/common/mapfiles/common/map.noexdata
657 MAPFILE.NED_sparc =
658 MAPFILE.NED = $(MAPFILE.NED_$(MACH))
659 MAPFILE.PGA = $(SRC)/common/mapfiles/common/map.pagealign
660 MAPFILE.NES = $(SRC)/common/mapfiles/common/map.noexstk
875 ZINITFIRST= -zinitfirst
876 ZINTERPOSE= -zinterpose
877 ZLAZYLOAD= -zlazyload
878 ZLOADFLTR= -zloadfltr
879 ZMULDEFS= -zmuldefs
880 ZNODEFAULTLIB= -znodefaultlib
881 ZNODEFS= -znodefs
882 ZNODELETE= -znodelete
883 ZNODLOPEN= -znodlopen
884 ZNODUMP= -znodump
885 ZNOLAZYLOAD= -znolazyload
886 ZNOLDYNSYM= -znoldynsym
887 ZNORELOC= -znoreloc
888 ZNOVERSION= -znoversion
889 ZRECORD= -zrecord
890 ZREDLOCSYM= -zredlocsym
891 ZTEXT= -ztext
892 ZVERBOSE= -zverbose
893
894 GSHARED= -G
895 $(SRCDBGBLD)GSHARED += -g -xs
896
897 CCMT= -mt
898
899 # Handle different PIC models on different ISAs
900 # (May be overridden by lower-level Makefiles)
901
902 sparc_C_PICFLAGS = -K pic
903 sparcv9_C_PICFLAGS = -K pic
904 i386_C_PICFLAGS = -K pic
905 amd64_C_PICFLAGS = -K pic
906 C_PICFLAGS = $($(MACH)_C_PICFLAGS)
907 C_PICFLAGS64 = $($(MACH64)_C_PICFLAGS)
908
909 sparc_C_BIGPICFLAGS = -K PIC
910 sparcv9_C_BIGPICFLAGS = -K PIC
911 i386_C_BIGPICFLAGS = -K PIC
912 amd64_C_BIGPICFLAGS = -K PIC
913 C_BIGPICFLAGS = $($(MACH)_C_BIGPICFLAGS)
914 C_BIGPICFLAGS64 = $($(MACH64)_C_BIGPICFLAGS)
915
916 # CC requires there to be no space between '-K' and 'pic' or 'PIC'.
|