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