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