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.41    09/05/14 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)$(CFGBIN32)
 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)