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