Home | History | Annotate | Download | only in sun_nws
      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 src/sun_nws/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 src/sun_nws/OPENSOLARIS.LICENSE.
     15 # If applicable, add the following below this CDDL HEADER, with the
     16 # fields enclosed by brackets "[]" replaced with your own identifying
     17 # information: Portions Copyright [yyyy] [name of copyright owner]
     18 #
     19 # CDDL HEADER END
     20 #
     21 #
     22 # Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
     23 # Use is subject to license terms.
     24 #
     25 #ident	"@(#)Makefile.drvrs	1.13	06/09/30 SMI"
     26 #
     27 # src/sun_nws/Makefile.drvrs
     28 
     29 # Pull dependancies from our gate, after searching locally
     30 INCLUDES	 = -I$(HDRS) 
     31 INCLUDES	+= -I $(ON_REF_GATE)/proto/root_$(MACH)/usr/include
     32 INCLUDES	+= $(COMMON_INCLUDES)
     33 INCLUDES	+= $($(MACH)_INCLUDES)
     34 INCLUDES	+= -Y I,$(ON_REF_GATE)/usr/src/uts/common
     35 
     36 CCINCLUDES	 = -I$(HDRS) 
     37 CCINCLUDES	+= $(COMMON_INCLUDES)
     38 CCINCLUDES	+= -I$(ON_REF_GATE)/usr/src/uts/sparc
     39 CCINCLUDES	+= -I$(ON_REF_GATE)/usr/src/uts/sun
     40 CCINCLUDES	+= -I$(ON_REF_GATE)/usr/src/uts/common
     41 
     42 #
     43 # C compiler mode. Future compilers may change the default on us,
     44 # so force transition mode globally. Lower level makefiles can
     45 # override this by setting CCMODE.
     46 #
     47 CCMODE=		-Xa
     48 CCMODE64=	-Xa
     49 
     50 #
     51 # C compiler verbose mode. This is so we can enable it globally,
     52 # but turn it off in the lower level makefiles of things we cannot
     53 # (or aren't going to) fix.
     54 #
     55 CCVERBOSE=	-v
     56 
     57 # set this to the secret flag "-Wc,-Qiselect-regsym=0" to disable register
     58 # symbols (used to detect conflicts between objects that use global registers)
     59 # we disable this now for safety, and because genunix doesn't link with
     60 # this feature (the v9 default) enabled.
     61 #
     62 CCREGSYM=	-Wc,-Qiselect-regsym=0
     63 
     64 # prevent static symbols being optimized out
     65 CCSTATICSYM=            -Wc,-Qassembler-ounrefsym=0
     66 
     67 # generate 32-bit addresses in the v9 kernel. Saves memory.
     68 CCABS32=	-Wc,-xcode=abs32
     69 
     70 # One optimization the compiler might perform is to turn this:
     71 #	#pragma weak foo
     72 #	extern int foo;
     73 #	if (&foo)
     74 #		foo = 5;
     75 # into
     76 #	foo = 5;
     77 # Since we do some of this (foo might be referenced in common kernel code
     78 # but provided only for some cpu modules or platforms), we disable this
     79 # optimization.
     80 # 
     81 sparc_CCUNBOUND= -Wd,-xsafe=unboundsym
     82 i386_CCUNBOUND=
     83 CCUNBOUND=        $($(MACH)_CCUNBOUND)
     84 
     85 
     86 sparc_XARCH=	-xarch=v8
     87 sparcv9_XARCH=	-xarch=v9
     88 amd64_XARCH=	-xarch=amd64
     89 
     90 #
     91 # disable the incremental linker
     92 ILDOFF=		-xildoff
     93 
     94 #
     95 # turn warnings into errors (C)
     96 CERRWARN=	-errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT \
     97 		-erroff=E_STATEMENT_NOT_REACHED
     98 
     99 # C99 mode
    100 C99MODE=	-xc99=%none
    101 C99LMODE=	-Xc99=%none
    102 
    103 # In most places, assignments to these macros should be appended with +=
    104 # (CPPFLAGS.master allows values to be prepended to CPPFLAGS).
    105 sparc_CFLAGS=	-xcg92 $(sparc_XARCH)
    106 sparcv9_CFLAGS=	-xchip=ultra $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(CCREGSYM) \
    107 	 $(CCSTATICSYM)
    108 i386_CFLAGS=
    109 amd64_CFLAGS=	$(amd64_XARCH)
    110 
    111 # optimization level
    112 sparc_COPTFLAG=		-xO3
    113 sparcv9_COPTFLAG=	-xO3
    114 i386_COPTFLAG=		-O
    115 amd64_COPTFLAG=		-xO3
    116 COPTFLAG= $($(MACH)_COPTFLAG)
    117 COPTFLAG64= $($(MACH64)_COPTFLAG)
    118 
    119 #
    120 # Default debug format for Sun Studio 11 is dwarf, so force it to
    121 # generate stabs.
    122 #
    123 DEBUGFORMAT=    -xdebugformat=stabs
    124 
    125 #
    126 # Flags used to build in debug mode for ctf generation
    127 #
    128 CTF_STABS_FLAGS_sparc	= -g -Wc,-Qiselect-T1 $(C99MODE) -W0,-noglobal
    129 CTF_STABS_FLAGS_i386	= -g $(C99MODE) -W0,-noglobal
    130 CTF_STABS_FLAGS		= $(CTF_STABS_FLAGS_$(MACH)) $(DEBUGFORMAT)
    131 
    132 #
    133 # tradeoff time for space (smaller is better)
    134 #
    135 sparc_SPACEFLAG		= -xspace -W0,-Lt
    136 sparcv9_SPACEFLAG	= -xspace -W0,-Lt
    137 i386_SPACEFLAG		=
    138 amd64_SPACEFLAG		=
    139 SPACEFLAG		= $($(MACH)_SPACEFLAG)
    140 SPACEFLAG64		= $($(MACH64)_SPACEFLAG)
    141 
    142 #
    143 # The Sun Studio 11 compiler has changed the behavior of integer
    144 # wrap arounds and so a flag is needed to use the legacy behavior
    145 # (without this flag panics/hangs could be exposed within the source).
    146 #
    147 sparc_IROPTFLAG         = -W2,-xwrap_int
    148 sparcv9_IROPTFLAG       = -W2,-xwrap_int
    149 i386_IROPTFLAG          =
    150 amd64_IROPTFLAG         =
    151 
    152 IROPTFLAG               = $($(MACH)_IROPTFLAG)
    153 IROPTFLAG64             = $($(MACH64)_IROPTFLAG)
    154 
    155 sparc_XREGSFLAG		= -xregs=no%float
    156 sparcv9_XREGSFLAG	= -xregs=no%float
    157 i386_XREGSFLAG		=
    158 amd64_XREGSFLAG		=
    159 XREGSFLAG		= $($(MACH)_XREGSFLAG)
    160 XREGSFLAG64		= $($(MACH64)_XREGSFLAG)
    161 
    162 
    163 CFLAGS32=       $(COPTFLAG) $(ASM_CODE) $($(MACH)_CFLAGS) $(SPACEFLAG) \
    164 		$(CCMODE) $(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND) \
    165 		$(CTF_STABS_FLAGS) $(IROPTFLAG)
    166 
    167 CFLAGS64=       $(COPTFLAG64) $(ASM_CODE) $($(MACH64)_CFLAGS) $(SPACEFLAG64) \
    168 		$(CCMODE64) $(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND) \
    169 		$(CTF_STABS_FLAGS) $(IROPTFLAG64)
    170 
    171 CPPFLAGS32  = -D_KERNEL
    172 CPPFLAGS32 += -D_SYSCALL32
    173 CPPFLAGS32 += -DSYSACCT
    174 CPPFLAGS32 += -DC2_AUDIT
    175 
    176 CPPFLAGS64  = -D_KERNEL
    177 CPPFLAGS64 += -D_SYSCALL32
    178 CPPFLAGS64 += -D_SYSCALL32_IMPL
    179 CPPFLAGS64 += -D_ELF64
    180 CPPFLAGS64 += -DSYSACCT
    181 CPPFLAGS64 += -DC2_AUDIT
    182 
    183 
    184 # Compiler flags used during ADB macro generation
    185 CCMODE=		-Xa
    186 CCMODE64=	-Xa
    187 
    188 CCVERBOSE=	-v
    189 
    190 CCREGSYM=	-Wc,-Qiselect-regsym=0
    191 
    192 CCABS32=	-Wc,-xcode=abs32
    193 
    194 sparc_CCUNBOUND= -Wd,-xsafe=unboundsym
    195 i386_CCUNBOUND=
    196 CCUNBOUND=        $($(MACH)_CCUNBOUND)
    197 
    198 sparc_XARCH=	-xarch=v8
    199 sparcv9_XARCH=	-xarch=v9
    200 amd64_XARCH=	-xarch=amd64
    201 
    202 ILDOFF=		-xildoff
    203 
    204 CERRWARN=	-errtags=yes -errwarn=%all -erroff=E_EMPTY_TRANSLATION_UNIT \
    205 		-erroff=E_STATEMENT_NOT_REACHED
    206 
    207 C99MODE=	-xc99=%none
    208 
    209 sparc_CFLAGS=	-xcg92 $(sparc_XARCH)
    210 sparcv9_CFLAGS=	-xchip=ultra $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(CCREGSYM)
    211 i386_CFLAGS=
    212 amd64_CFLAGS=	$(amd64_XARCH) $(CCVERBOSE) -Wu,-xmodel=kernel -Wu,-save_args
    213 
    214 sparc_COPTFLAG=		-xO3
    215 sparcv9_COPTFLAG=	-xO3
    216 i386_COPTFLAG=		-O
    217 amd64_COPTFLAG=		-xO3
    218 COPTFLAG= $($(MACH)_COPTFLAG)
    219 COPTFLAG64= $($(MACH64)_COPTFLAG)
    220 
    221 #
    222 # Flags used to build in debug mode for ctf generation
    223 #
    224 CTF_STABS_FLAGS_sparc	= -g -Wc,-Qiselect-T1 $(C99MODE) -W0,-noglobal
    225 CTF_STABS_FLAGS_i386	= -g $(C99MODE) -W0,-noglobal
    226 CTF_STABS_FLAGS		= $(CTF_STABS_FLAGS_$(MACH))
    227 
    228 sparc_SPACEFLAG		= -xspace -W0,-Lt -W2,-Rcond_elim
    229 sparcv9_SPACEFLAG	= -xspace -W0,-Lt -W2,-Rcond_elim
    230 i386_SPACEFLAG		=
    231 amd64_SPACEFLAG		=
    232 SPACEFLAG		= $($(MACH)_SPACEFLAG)
    233 SPACEFLAG64		= $($(MACH64)_SPACEFLAG)
    234 
    235 sparc_XREGSFLAG		= -xregs=no%float
    236 sparcv9_XREGSFLAG	= -xregs=no%float
    237 i386_XREGSFLAG		=
    238 amd64_XREGSFLAG		=
    239 XREGSFLAG		= $($(MACH)_XREGSFLAG)
    240 XREGSFLAG64		= $($(MACH64)_XREGSFLAG)
    241 
    242 
    243 CFLAGS32=       $(COPTFLAG) $(ASM_CODE) $($(MACH)_CFLAGS) $(SPACEFLAG) \
    244 		$(CCMODE) $(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND) \
    245 		$(CTF_STABS_FLAGS)
    246 
    247 CFLAGS64=       $(COPTFLAG64) $(ASM_CODE) $($(MACH64)_CFLAGS) $(SPACEFLAG64) \
    248 		$(CCMODE64) $(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND) \
    249 		$(CTF_STABS_FLAGS)
    250 
    251 
    252 
    253 # Compiler flags used during ADB macro generation
    254 sparc_ADBCOMPFLAGS = -Dsparc -D__sparc
    255 i386_ADBCOMPFLAGS  = -D__i386
    256 
    257 ADBCOMPFLAGS = -O -D_KERNEL $($(MACH)_ADBCOMPFLAGS) -g -S
    258 
    259 ADBCOMPFLAGS32 = 
    260 
    261 sparc_ADBCOMPFLAGS64 = -Dsparcv9
    262 sparc_ADBCOMPFLAGS64 += -D__sparcv9
    263 sparc_ADBCOMPFLAGS64 += -D_ELF64
    264 sparc_ADBCOMPFLAGS64 += -xO3
    265 sparc_ADBCOMPFLAGS64 += -xarch=v9
    266 sparc_ADBCOMPFLAGS64 += -dalign
    267 sparc_ADBCOMPFLAGS64 += -v
    268 sparc_ADBCOMPFLAGS64 += -Wc,-Qiselect-regsym=0
    269 sparc_ADBCOMPFLAGS64 += -xspace
    270 sparc_ADBCOMPFLAGS64 += -W0,-Lt
    271 sparc_ADBCOMPFLAGS64 += -W2,-Rcond_elim
    272 sparc_ADBCOMPFLAGS64 += -Xa
    273 sparc_ADBCOMPFLAGS64 += -xildoff
    274 sparc_ADBCOMPFLAGS64 += -errtags=yes
    275 sparc_ADBCOMPFLAGS64 += -errwarn=%all
    276 sparc_ADBCOMPFLAGS64 += -erroff=E_EMPTY_TRANSLATION_UNIT
    277 sparc_ADBCOMPFLAGS64 += -erroff=E_STATEMENT_NOT_REACHED
    278 sparc_ADBCOMPFLAGS64 += -xc99=%none
    279 sparc_ADBCOMPFLAGS64 += -Wd,-xsafe=unboundsym
    280 sparc_ADBCOMPFLAGS64 += -g
    281 sparc_ADBCOMPFLAGS64 += -Wc,-Qiselect-T1
    282 sparc_ADBCOMPFLAGS64 += -xc99=%none
    283 sparc_ADBCOMPFLAGS64 += -W0,-noglobal
    284 sparc_ADBCOMPFLAGS64 += -xc99=%none
    285 
    286 i386_ADBCOMPFLAGS64   = -D__x86
    287 
    288 ADBCOMPFLAGS64 = $($(MACH)_ADBCOMPFLAGS64)
    289 
    290 # adb FLAGS
    291 
    292 sparc_MGENPPFLAGS  = -Dsparc
    293 sparc_MGENPPFLAGS += -D__sparc
    294 sparc_MGENPPFLAGS += -D_BIG_ENDIAN
    295 
    296 i386_MGENPPFLAGS   = -D_LITTLE_ENDIAN
    297 
    298 MGENPPFLAGS  = -D_KERNEL
    299 MGENPPFLAGS += $($(MACH)_MGENPPFLAGS)
    300 
    301 MGENPPFLAGS32  = -D__i386
    302 MGENPPFLAGS32 += -D_ILP32
    303 
    304 sparc_MGENPPFLAGS64  = -Dsparcv9
    305 sparc_MGENPPFLAGS64 += -D__sparcv9
    306 sparc_MGENPPFLAGS64 += -D_BIG_ENDIAN
    307 
    308 i386_MGENPPFLAGS64   = -D__x86
    309 
    310 MGENPPFLAGS64 = $($(MACH)_MGENPPFLAGS64)
    311 MGENPPFLAGS64 += -D_ELF64
    312 MGENPPFLAGS64 += -D_LP64
    313 
    314 # mdb module FLAGS
    315 
    316 MDBMODCFLAGS   = -v -xstrconst -K pic
    317 MDBMODCPPFLAGS = -D_KERNEL
    318 MDBMODLDFLAGS  = -Wl,-z,text
    319 
    320 sparc_MDBMODCFLAGS64   = $(MDBMODCFLAGS) -xarch=v9
    321 sparc_MDBMODCPPFLAGS64 = $(MDBMODCPPFLAGS)
    322 sparc_MDBMODLDFLAGS64  = $(MDBMODLDFLAGS) -xarch=v9
    323 
    324 i386_MDBMODCFLAGS64   = $(MDBMODCFLAGS) -xarch=amd64
    325 i386_MDBMODCPPFLAGS64 = $(MDBMODCPPFLAGS)
    326 i386_MDBMODLDFLAGS64  = $(MDBMODLDFLAGS) -xarch=amd64
    327 
    328 MDBMODCFLAGS64 = $($(MACH)_MDBMODCFLAGS64)
    329 MDBMODCPPFLAGS64 = $($(MACH)_MDBMODCPPFLAGS64)
    330 MDMODLDFLAGS64 = $($(MACH)_MDBMODLDFLAGS64)
    331 
    332 # Lint Flags
    333 LFLAGS32 = -Xa
    334 LFLAGS32 += -nsxmuF
    335 LFLAGS32 += -errtags=yes
    336 LFLAGS32 += -erroff=E_BAD_PTR_CAST_ALIGN
    337 LFLAGS32 += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
    338 LFLAGS32 += -erroff=E_SUSPICIOUS_COMPARISON
    339 LFLAGS32 += -erroff=E_CAST_UINT_TO_SIGNED_INT
    340 LFLAGS32 += -erroff=E_PASS_UINT_TO_SIGNED_INT
    341 LFLAGS32 += -erroff=E_INVALID_ANNOTATION_NAME
    342 LFLAGS32 += -erroff=E_OLD_STYLE_DECL_OR_BAD_TYPE
    343 LFLAGS32 += -erroff=E_NO_EXPLICIT_TYPE_GIVEN
    344 LFLAGS32 += -erroff=E_STATIC_UNUSED
    345 LFLAGS32 += -erroff=E_PTRDIFF_OVERFLOW
    346 LFLAGS32 += -erroff=E_ASSIGN_NARROW_CONV
    347 LFLAGS32 += -erroff=E_INCONS_VAL_TYPE_USED2
    348 LFLAGS32 += -erroff=E_INCONS_ARG_USED2
    349 LFLAGS32 += -Xc99=%none
    350 
    351 sparc_LXARCH += -Xarch=v9
    352 i386_LXARCH  +=
    353 
    354 LFLAGS64 = -Xa
    355 LFLAGS64 += -nsxmuF
    356 LFLAGS64 += -errtags=yes
    357 LFLAGS64 += $($(MACH)_LXARCH)
    358 LFLAGS64 += -erroff=E_BAD_PTR_CAST_ALIGN
    359 LFLAGS64 += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
    360 LFLAGS64 += -erroff=E_SUSPICIOUS_COMPARISON
    361 LFLAGS64 += -erroff=E_CAST_UINT_TO_SIGNED_INT
    362 LFLAGS64 += -erroff=E_PASS_UINT_TO_SIGNED_INT
    363 LFLAGS64 += -erroff=E_INVALID_ANNOTATION_NAME
    364 LFLAGS64 += -erroff=E_OLD_STYLE_DECL_OR_BAD_TYPE
    365 LFLAGS64 += -erroff=E_NO_EXPLICIT_TYPE_GIVEN
    366 LFLAGS64 += -erroff=E_STATIC_UNUSED
    367 LFLAGS64 += -erroff=E_PTRDIFF_OVERFLOW
    368 LFLAGS64 += -erroff=E_ASSIGN_NARROW_CONV
    369 LFLAGS64 += -erroff=E_CAST_INT_TO_SMALL_INT
    370 LFLAGS64 += -erroff=E_CAST_INT_CONST_TO_SMALL_INT
    371 LFLAGS64 += -erroff=E_CAST_TO_PTR_FROM_INT
    372 LFLAGS64 += -erroff=E_ASSIGN_INT_TO_SMALL_INT
    373 LFLAGS64 += -erroff=E_ASSIGN_INT_FROM_BIG_CONST
    374 LFLAGS64 += -erroff=E_CONST_PROMOTED_UNSIGNED_LL
    375 LFLAGS64 += -erroff=E_CONST_PROMOTED_LONG_LONG
    376 LFLAGS64 += -erroff=E_CONST_TRUNCATED_BY_ASSIGN
    377 LFLAGS64 += -erroff=E_PASS_INT_FROM_BIG_CONST
    378 LFLAGS64 += -erroff=E_COMP_INT_WITH_LARGE_INT
    379 LFLAGS64 += -erroff=E_ASSIGN_UINT_TO_SIGNED_INT
    380 LFLAGS64 += -erroff=E_PASS_INT_TO_SMALL_INT
    381 LFLAGS64 += -erroff=E_PTR_CONV_LOSES_BITS
    382 LFLAGS64 += -erroff=E_INCONS_VAL_TYPE_USED2
    383 LFLAGS64 += -erroff=E_INCONS_ARG_USED2
    384 LFLAGS64 += -Xc99=%none
    385 
    386 sparc_LDEF32 = -Dsparc
    387 i386_LDEF32  = -Dintel
    388 
    389 LDEF32  = $($(MACH)_LDEF32)
    390 LDEF32 += -Dsun
    391 LDEF32 += -Dunix
    392 
    393 sparc_LDEF64 = -Xarch=v9
    394 i386_LDEF64  = -Xarch=amd64
    395 
    396 LDEF64  = $(LDEF32)
    397 LDEF64 += $($(MACH)_LDEF64)
    398 
    399 LINK32 	= $(LD) -r $(LDFLAGS) -o $@ $(MODULE_OBJ_32)
    400 LINK64 	= $(LD) -r $(LDFLAGS) -o $@ $(MODULE_OBJ_64)
    401 
    402 # These are no longer used but are being saved in case the ctfmerge is ever needed.
    403 sparc_GENUNIX_PATH	= $(ON_REF_GATE)/usr/src/uts/$(ARCH)/genunix
    404 i386_GENUNIX_PATH	= $(ON_REF_GATE)/usr/src/uts/intel/genunix
    405 
    406 GENUNIX_PATH		= $($(MACH)_GENUNIX_PATH)
    407 
    408 GENUNIX32		= $(GENUNIX_PATH)/$(OBJ)32/genunix
    409 GENUNIX64		= $(GENUNIX_PATH)/$(OBJ)64/genunix 
    410 
    411 CTFCONVERT	= $(CTFCONVERTCMD) -l '$(VERSION)' $(CTFCONVERTARGS) $@
    412 CTFMERGE32	= $(CTFMERGECMD) -l '$(VERSION)' $(CTFMERGEARGS) -o $@ \
    413 		  $(MODULE_OBJ_32)
    414 CTFMERGE64	= $(CTFMERGECMD) -l '$(VERSION)' $(CTFMERGEARGS) -o $@ \
    415 		  $(MODULE_OBJ_64)
    416