make/solaris/makefiles/sparcWorks.make

Tue, 27 May 2008 09:47:18 -0700

author
ohair
date
Tue, 27 May 2008 09:47:18 -0700
changeset 593
a49545cab84a
parent 548
ba764ed4b6f2
child 631
d1605aabd0a1
permissions
-rw-r--r--

6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles)
Summary: Allows for building with SS12, no longer requires SS11, warns if not SS11 for now. Once SS12 is validated and performance measurements look ok, SS12 will be the validated compiler.
Reviewed-by: sspitsyn, ikrylov

duke@435 1 #
duke@435 2 # Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
duke@435 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 #
duke@435 5 # This code is free software; you can redistribute it and/or modify it
duke@435 6 # under the terms of the GNU General Public License version 2 only, as
duke@435 7 # published by the Free Software Foundation.
duke@435 8 #
duke@435 9 # This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 # version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 # accompanied this code).
duke@435 14 #
duke@435 15 # You should have received a copy of the GNU General Public License version
duke@435 16 # 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 #
duke@435 19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@435 20 # CA 95054 USA or visit www.sun.com if you need additional information or
duke@435 21 # have any questions.
duke@435 22 #
duke@435 23 #
duke@435 24
duke@435 25 # Compiler-specific flags for sparcworks.
duke@435 26
duke@435 27 # tell make which C and C++ compilers to use
duke@435 28 CC = cc
duke@435 29 CPP = CC
duke@435 30
ohair@593 31 # Note that this 'as' is an older version of the Sun Studio 'fbe', and will
ohair@593 32 # use the older style options. The 'fbe' options will match 'cc' and 'CC'.
duke@435 33 AS = /usr/ccs/bin/as
duke@435 34
duke@435 35 NM = /usr/ccs/bin/nm
duke@435 36 NAWK = /bin/nawk
duke@435 37
duke@435 38 REORDER_FLAG = -xF
duke@435 39
duke@435 40 # Check for the versions of C++ and C compilers ($CPP and $CC) used.
duke@435 41
duke@435 42 # Get the last thing on the line that looks like x.x+ (x is a digit).
duke@435 43 COMPILER_REV := \
duke@435 44 $(shell $(CPP) -V 2>&1 | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/')
duke@435 45 C_COMPILER_REV := \
duke@435 46 $(shell $(CC) -V 2>&1 | grep -i "cc:" | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/')
duke@435 47
ohair@593 48 # Pick which compiler is validated
ohair@593 49 ifeq ($(JDK_MINOR_VERSION),6)
ohair@593 50 # Validated compiler for JDK6 is SS11 (5.8)
ohair@593 51 VALIDATED_COMPILER_REV := 5.8
ohair@593 52 VALIDATED_C_COMPILER_REV := 5.8
ohair@593 53 else
ohair@593 54 # FIXUP: Change to SS12 (5.9) once it has been validated.
ohair@593 55 # Validated compiler for JDK7 is SS12 (5.9)
ohair@593 56 #VALIDATED_COMPILER_REV := 5.9
ohair@593 57 #VALIDATED_C_COMPILER_REV := 5.9
ohair@593 58 VALIDATED_COMPILER_REV := 5.8
ohair@593 59 VALIDATED_C_COMPILER_REV := 5.8
ohair@593 60 endif
duke@435 61
ohair@593 62 # Warning messages about not using the above validated version
duke@435 63 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := ${VALIDATED_COMPILER_REV}
duke@435 64 ifneq (${COMPILER_REV},${ENFORCE_COMPILER_REV})
ohair@593 65 dummy_target_to_enforce_compiler_rev:=\
ohair@593 66 $(info WARNING: You are using CC version ${COMPILER_REV} \
ohair@593 67 and should be using version ${ENFORCE_COMPILER_REV})
duke@435 68 endif
duke@435 69
duke@435 70 ENFORCE_C_COMPILER_REV${ENFORCE_C_COMPILER_REV} := ${VALIDATED_C_COMPILER_REV}
duke@435 71 ifneq (${C_COMPILER_REV},${ENFORCE_C_COMPILER_REV})
ohair@593 72 dummy_target_to_enforce_c_compiler_rev:=\
ohair@593 73 $(info WARNING: You are using cc version ${C_COMPILER_REV} \
ohair@593 74 and should be using version ${ENFORCE_C_COMPILER_REV})
duke@435 75 endif
duke@435 76
duke@435 77 # Fail the build if __fabsf is used. __fabsf exists only in Solaris 8 2/04
duke@435 78 # and newer; objects with a dependency on this symbol will not run on older
duke@435 79 # Solaris 8.
duke@435 80 JVM_FAIL_IF_UNDEFINED = __fabsf
duke@435 81
duke@435 82 JVM_CHECK_SYMBOLS = $(NM) -u -p $(LIBJVM.o) | \
duke@435 83 $(NAWK) -v f="${JVM_FAIL_IF_UNDEFINED}" \
duke@435 84 'BEGIN { c=split(f,s); rc=0; } \
duke@435 85 /:$$/ { file = $$1; } \
duke@435 86 /[^:]$$/ { for(n=1;n<=c;++n) { \
duke@435 87 if($$1==s[n]) { \
duke@435 88 printf("JVM_CHECK_SYMBOLS: %s contains illegal symbol %s\n", \
duke@435 89 file,$$1); \
duke@435 90 rc=1; \
duke@435 91 } \
duke@435 92 } \
duke@435 93 } \
duke@435 94 END { exit rc; }'
duke@435 95
duke@435 96 LINK_LIB.CC/PRE_HOOK += $(JVM_CHECK_SYMBOLS) || exit 1;
duke@435 97
duke@435 98 # Some interfaces (_lwp_create) changed with LP64 and Solaris 7
duke@435 99 SOLARIS_7_OR_LATER := \
duke@435 100 $(shell uname -r | awk -F. '{ if ($$2 >= 7) print "-DSOLARIS_7_OR_LATER"; }')
duke@435 101 CFLAGS += ${SOLARIS_7_OR_LATER}
duke@435 102
ohair@593 103 # New architecture options started in SS12 (5.9), we need both styles to build.
ohair@593 104 # The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as.
ohair@593 105 # Note: SS12 default for 32bit sparc is now the same as v8plus, so the
ohair@593 106 # settings below have changed all SS12 32bit sparc builds to be v8plus.
ohair@593 107 # The older SS11 (5.8) settings have remained as they always have been.
duke@435 108 ifeq ($(TYPE),COMPILER2)
ohair@593 109 ARCHFLAG_OLD/sparc = -xarch=v8plus
duke@435 110 else
ohair@593 111 ifeq ($(TYPE),TIERED)
ohair@593 112 ARCHFLAG_OLD/sparc = -xarch=v8plus
ohair@593 113 else
ohair@593 114 ARCHFLAG_OLD/sparc = -xarch=v8
ohair@593 115 endif
ohair@593 116 endif
ohair@593 117 ARCHFLAG_NEW/sparc = -m32 -xarch=sparc
ohair@593 118 ARCHFLAG_OLD/sparcv9 = -xarch=v9
ohair@593 119 ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc
ohair@593 120 ARCHFLAG_OLD/i486 =
ohair@593 121 ARCHFLAG_NEW/i486 = -m32
ohair@593 122 ARCHFLAG_OLD/amd64 = -xarch=amd64
ohair@593 123 ARCHFLAG_NEW/amd64 = -m64
ohair@593 124
ohair@593 125 # Select the ARCHFLAGs and other SS12 (5.9) options
ohair@593 126 ifeq ($(shell expr $(COMPILER_REV) \>= 5.9), 1)
ohair@593 127 ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc)
ohair@593 128 ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9)
ohair@593 129 ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486)
ohair@593 130 ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64)
duke@435 131 else
ohair@593 132 ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc)
ohair@593 133 ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9)
ohair@593 134 ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486)
ohair@593 135 ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64)
duke@435 136 endif
ohair@593 137
ohair@593 138 # ARCHFLAGS for the current build arch
ohair@593 139 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
ohair@593 140 AS_ARCHFLAG = $(ARCHFLAG_OLD/$(BUILDARCH))
duke@435 141
duke@435 142 # Optional sub-directory in /usr/lib where BUILDARCH libraries are kept.
duke@435 143 ISA_DIR=$(ISA_DIR/$(BUILDARCH))
duke@435 144 ISA_DIR/sparcv9=/sparcv9
duke@435 145 ISA_DIR/amd64=/amd64
duke@435 146
duke@435 147 # Use these to work around compiler bugs:
duke@435 148 OPT_CFLAGS/SLOWER=-xO3
duke@435 149 OPT_CFLAGS/O2=-xO2
duke@435 150 OPT_CFLAGS/NOOPT=-xO1
duke@435 151
duke@435 152 #################################################
duke@435 153 # Begin current (>=5.6) Forte compiler options #
duke@435 154 #################################################
duke@435 155
duke@435 156 ifeq ($(shell expr $(COMPILER_REV) \>= 5.6), 1)
duke@435 157
duke@435 158 ifeq ("${Platform_arch}", "sparc")
duke@435 159
duke@435 160 # We MUST allow data alignment of 4 for sparc (sparcv9 is ok at 8s)
duke@435 161 ifndef LP64
duke@435 162 CFLAGS += -xmemalign=4s
duke@435 163 endif
duke@435 164
duke@435 165 endif
duke@435 166
duke@435 167 endif
duke@435 168
duke@435 169 #################################################
duke@435 170 # Begin current (>=5.5) Forte compiler options #
duke@435 171 #################################################
duke@435 172
duke@435 173 ifeq ($(shell expr $(COMPILER_REV) \>= 5.5), 1)
duke@435 174
duke@435 175 CFLAGS += $(ARCHFLAG)
duke@435 176 AOUT_FLAGS += $(ARCHFLAG)
duke@435 177 LIB_FLAGS += $(ARCHFLAG)
duke@435 178 LFLAGS += $(ARCHFLAG)
duke@435 179
duke@435 180 ifeq ("${Platform_arch}", "sparc")
duke@435 181
duke@435 182 # Flags for Optimization
duke@435 183
duke@435 184 # [phh] Commented out pending verification that we do indeed want
duke@435 185 # to potentially bias against u1 and u3 targets.
duke@435 186 #CFLAGS += -xchip=ultra2
duke@435 187
duke@435 188 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
duke@435 189
duke@435 190 endif # sparc
duke@435 191
duke@435 192 ifeq ("${Platform_arch_model}", "x86_32")
duke@435 193
duke@435 194 OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
duke@435 195
duke@435 196 # UBE (CC 5.5) has bug 4923569 with -xO4
duke@435 197 OPT_CFLAGS+=-xO3
duke@435 198
duke@435 199 endif # 32bit x86
duke@435 200
duke@435 201 ifeq ("${Platform_arch_model}", "x86_64")
duke@435 202
ohair@593 203 ASFLAGS += $(AS_ARCHFLAG)
ohair@593 204 CFLAGS += $(ARCHFLAG/amd64)
duke@435 205 # this one seemed useless
ohair@593 206 LFLAGS_VM += $(ARCHFLAG/amd64)
duke@435 207 # this one worked
ohair@593 208 LFLAGS += $(ARCHFLAG/amd64)
ohair@593 209 AOUT_FLAGS += $(ARCHFLAG/amd64)
duke@435 210
duke@435 211 # -xO3 is faster than -xO4 on specjbb with SS10 compiler
duke@435 212 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
duke@435 213
duke@435 214 endif # 64bit x86
duke@435 215
duke@435 216 # Inline functions
duke@435 217 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_${Platform_arch}/vm/solaris_${Platform_arch_model}.il
duke@435 218
duke@435 219 # no more exceptions
duke@435 220 CFLAGS/NOEX=-features=no%except
duke@435 221
coleenp@548 222
coleenp@548 223 # avoid compilation problems arising from fact that C++ compiler tries
coleenp@548 224 # to search for external template definition by just compiling additional
coleenp@548 225 # source files in th same context
coleenp@548 226 CFLAGS += -template=no%extdef
coleenp@548 227
duke@435 228 # Reduce code bloat by reverting back to 5.0 behavior for static initializers
duke@435 229 CFLAGS += -features=no%split_init
duke@435 230
duke@435 231 # Use -D_Crun_inline_placement so we don't get references to
duke@435 232 # __1c2n6FIpv_0_ or void*operator new(unsigned,void*)
duke@435 233 # This avoids the hard requirement of the newer Solaris C++ runtime patches.
duke@435 234 # NOTE: This is an undocumented feature of the SS10 compiler. See 6306698.
duke@435 235 CFLAGS += -D_Crun_inline_placement
duke@435 236
duke@435 237 # PIC is safer for SPARC, and is considerably slower
duke@435 238 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
duke@435 239 PICFLAG = -KPIC
duke@435 240 PICFLAG/DEFAULT = $(PICFLAG)
duke@435 241 # [RGV] Need to figure which files to remove to get link to work
duke@435 242 #PICFLAG/BETTER = -pic
duke@435 243 PICFLAG/BETTER = $(PICFLAG/DEFAULT)
duke@435 244 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
duke@435 245
duke@435 246 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
duke@435 247 MAPFLAG = -M FILENAME
duke@435 248
duke@435 249 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
duke@435 250 SONAMEFLAG = -h SONAME
duke@435 251
duke@435 252 # Build shared library
duke@435 253 SHARED_FLAG = -G
duke@435 254
duke@435 255 # We don't need libCstd.so and librwtools7.so, only libCrun.so
duke@435 256 CFLAGS += -library=%none
duke@435 257 LFLAGS += -library=%none
duke@435 258
duke@435 259 LFLAGS += -mt
duke@435 260
ohair@593 261 endif # COMPILER_REV >= 5.5
duke@435 262
duke@435 263 ######################################
duke@435 264 # End 5.5 Forte compiler options #
duke@435 265 ######################################
duke@435 266
duke@435 267 ######################################
duke@435 268 # Begin 5.2 Forte compiler options #
duke@435 269 ######################################
duke@435 270
duke@435 271 ifeq ($(COMPILER_REV), 5.2)
duke@435 272
duke@435 273 CFLAGS += $(ARCHFLAG)
duke@435 274 AOUT_FLAGS += $(ARCHFLAG)
duke@435 275 LIB_FLAGS += $(ARCHFLAG)
duke@435 276 LFLAGS += $(ARCHFLAG)
duke@435 277
duke@435 278 ifeq ("${Platform_arch}", "sparc")
duke@435 279
duke@435 280 # Flags for Optimization
duke@435 281
duke@435 282 # [phh] Commented out pending verification that we do indeed want
duke@435 283 # to potentially bias against u1 and u3 targets.
duke@435 284 #CFLAGS += -xchip=ultra2
duke@435 285
duke@435 286 ifdef LP64
duke@435 287 # SC5.0 tools on v9 are flakey at -xO4
duke@435 288 # [phh] Is this still true for 6.1?
duke@435 289 OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS)
duke@435 290 else
duke@435 291 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
duke@435 292 endif
duke@435 293
duke@435 294 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_sparc/vm/solaris_sparc.il
duke@435 295
duke@435 296 endif # sparc
duke@435 297
duke@435 298 ifeq ("${Platform_arch_model}", "x86_32")
duke@435 299
duke@435 300 OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
duke@435 301
duke@435 302 # SC5.0 tools on x86 are flakey at -xO4
duke@435 303 # [phh] Is this still true for 6.1?
duke@435 304 OPT_CFLAGS+=-xO3
duke@435 305
duke@435 306 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il
duke@435 307
duke@435 308 endif # 32bit x86
duke@435 309
duke@435 310 # no more exceptions
duke@435 311 CFLAGS/NOEX=-noex
duke@435 312
duke@435 313 # Reduce code bloat by reverting back to 5.0 behavior for static initializers
duke@435 314 CFLAGS += -Qoption ccfe -one_static_init
duke@435 315
duke@435 316 # PIC is safer for SPARC, and is considerably slower
duke@435 317 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
duke@435 318 PICFLAG = -KPIC
duke@435 319 PICFLAG/DEFAULT = $(PICFLAG)
duke@435 320 # [RGV] Need to figure which files to remove to get link to work
duke@435 321 #PICFLAG/BETTER = -pic
duke@435 322 PICFLAG/BETTER = $(PICFLAG/DEFAULT)
duke@435 323 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
duke@435 324
duke@435 325 # Would be better if these weren't needed, since we link with CC, but
duke@435 326 # at present removing them causes run-time errors
duke@435 327 LFLAGS += -library=Crun
duke@435 328 LIBS += -library=Crun -lCrun
duke@435 329
ohair@593 330 endif # COMPILER_REV == 5.2
duke@435 331
duke@435 332 ##################################
duke@435 333 # End 5.2 Forte compiler options #
duke@435 334 ##################################
duke@435 335
duke@435 336 ##################################
duke@435 337 # Begin old 5.1 compiler options #
duke@435 338 ##################################
duke@435 339 ifeq ($(COMPILER_REV), 5.1)
duke@435 340
duke@435 341 _JUNK_ := $(shell echo >&2 \
duke@435 342 "*** ERROR: sparkWorks.make incomplete for 5.1 compiler")
duke@435 343 @exit 1
duke@435 344 endif
duke@435 345 ##################################
duke@435 346 # End old 5.1 compiler options #
duke@435 347 ##################################
duke@435 348
duke@435 349 ##################################
duke@435 350 # Begin old 5.0 compiler options #
duke@435 351 ##################################
duke@435 352
duke@435 353 ifeq (${COMPILER_REV}, 5.0)
duke@435 354
duke@435 355 # Had to hoist this higher apparently because of other changes. Must
duke@435 356 # come before -xarch specification.
ohair@593 357 # NOTE: native says optimize for the machine doing the compile, bad news.
duke@435 358 CFLAGS += -xtarget=native
duke@435 359
duke@435 360 CFLAGS += $(ARCHFLAG)
duke@435 361 AOUT_FLAGS += $(ARCHFLAG)
duke@435 362 LIB_FLAGS += $(ARCHFLAG)
duke@435 363 LFLAGS += $(ARCHFLAG)
duke@435 364
duke@435 365 CFLAGS += -library=iostream
duke@435 366 LFLAGS += -library=iostream -library=Crun
duke@435 367 LIBS += -library=iostream -library=Crun -lCrun
duke@435 368
duke@435 369 # Flags for Optimization
duke@435 370 ifdef LP64
duke@435 371 # SC5.0 tools on v9 are flakey at -xO4
duke@435 372 OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS)
duke@435 373 else
duke@435 374 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
duke@435 375 endif
duke@435 376
duke@435 377 ifeq ("${Platform_arch}", "sparc")
duke@435 378
duke@435 379 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.il
duke@435 380
duke@435 381 endif # sparc
duke@435 382
duke@435 383 ifeq ("${Platform_arch_model}", "x86_32")
duke@435 384 OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
duke@435 385 ifeq ("${COMPILER_REV}", "5.0")
duke@435 386 # SC5.0 tools on x86 are flakey at -xO4
duke@435 387 OPT_CFLAGS+=-xO3
duke@435 388 else
duke@435 389 OPT_CFLAGS+=-xO4
duke@435 390 endif
duke@435 391
duke@435 392 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il
duke@435 393
duke@435 394 endif # 32bit x86
duke@435 395
duke@435 396 # The following options run into misaligned ldd problem (raj)
ohair@593 397 #OPT_CFLAGS = -fast -O4 $(ARCHFLAG/sparc) -xchip=ultra
duke@435 398
duke@435 399 # no more exceptions
duke@435 400 CFLAGS/NOEX=-noex
duke@435 401
duke@435 402 # PIC is safer for SPARC, and is considerably slower
duke@435 403 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
duke@435 404 PICFLAG = -PIC
duke@435 405 PICFLAG/DEFAULT = $(PICFLAG)
duke@435 406 # [RGV] Need to figure which files to remove to get link to work
duke@435 407 #PICFLAG/BETTER = -pic
duke@435 408 PICFLAG/BETTER = $(PICFLAG/DEFAULT)
duke@435 409 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
duke@435 410
duke@435 411 endif # COMPILER_REV = 5.0
duke@435 412
duke@435 413 ################################
duke@435 414 # End old 5.0 compiler options #
duke@435 415 ################################
duke@435 416
duke@435 417 ifeq ("${COMPILER_REV}", "4.2")
duke@435 418 # 4.2 COMPILERS SHOULD NO LONGER BE USED
duke@435 419 _JUNK_ := $(shell echo >&2 \
duke@435 420 "*** ERROR: SC4.2 compilers are not supported by this code base!")
duke@435 421 @exit 1
duke@435 422 endif
duke@435 423
duke@435 424 # do not include shared lib path in a.outs
duke@435 425 AOUT_FLAGS += -norunpath
duke@435 426 LFLAGS_VM = -norunpath -z noversion
duke@435 427
duke@435 428 # need position-indep-code for shared libraries
duke@435 429 # (ild appears to get errors on PIC code, so we'll try non-PIC for debug)
duke@435 430 ifeq ($(PICFLAGS),DEFAULT)
duke@435 431 VM_PICFLAG/LIBJVM = $(PICFLAG/DEFAULT)
duke@435 432 else
duke@435 433 VM_PICFLAG/LIBJVM = $(PICFLAG/BYFILE)
duke@435 434 endif
duke@435 435 VM_PICFLAG/AOUT =
duke@435 436
duke@435 437 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
duke@435 438 CFLAGS += $(VM_PICFLAG)
duke@435 439
duke@435 440 # less dynamic linking (no PLTs, please)
duke@435 441 #LIB_FLAGS += $(LINK_MODE)
duke@435 442 # %%%%% despite -znodefs, -Bsymbolic gets link errors -- Rose
duke@435 443
duke@435 444 LINK_MODE = $(LINK_MODE/$(VERSION))
duke@435 445 LINK_MODE/debug =
duke@435 446 LINK_MODE/optimized = -Bsymbolic -znodefs
duke@435 447
duke@435 448 # Have thread local errnos
duke@435 449 ifeq ($(shell expr $(COMPILER_REV) \>= 5.5), 1)
duke@435 450 CFLAGS += -mt
duke@435 451 else
duke@435 452 CFLAGS += -D_REENTRANT
duke@435 453 endif
duke@435 454
duke@435 455 ifdef CC_INTERP
duke@435 456 # C++ Interpreter
duke@435 457 CFLAGS += -DCC_INTERP
duke@435 458 endif
duke@435 459
duke@435 460 # Flags for Debugging
duke@435 461 DEBUG_CFLAGS = -g
duke@435 462 FASTDEBUG_CFLAGS = -g0
duke@435 463 # The -g0 setting allows the C++ frontend to inline, which is a big win.
duke@435 464
ohair@593 465 # Special global options for SS12
ohair@593 466 ifeq ($(COMPILER_REV),5.9)
ohair@593 467 # There appears to be multiple issues with the new Dwarf2 debug format, so
ohair@593 468 # we tell the compiler to use the older 'stabs' debug format all the time.
ohair@593 469 # Note that this needs to be used in optimized compiles too to be 100%.
ohair@593 470 # This is a workaround for SS12 (5.9) bug 6694600
ohair@593 471 CFLAGS += -xdebugformat=stabs
ohair@593 472 endif
ohair@593 473
duke@435 474 # Enable the following CFLAGS additions if you need to compare the
duke@435 475 # built ELF objects.
duke@435 476 #
duke@435 477 # The -g option makes static data global and the "-Qoption ccfe
duke@435 478 # -xglobalstatic" option tells the compiler to not globalize static
duke@435 479 # data using a unique globalization prefix. Instead force the use of
duke@435 480 # a static globalization prefix based on the source filepath so the
duke@435 481 # objects from two identical compilations are the same.
duke@435 482 #DEBUG_CFLAGS += -Qoption ccfe -xglobalstatic
duke@435 483 #FASTDEBUG_CFLAGS += -Qoption ccfe -xglobalstatic
duke@435 484
duke@435 485 ifeq (${COMPILER_REV}, 5.2)
duke@435 486 COMPILER_DATE := $(shell $(CPP) -V 2>&1 | awk '{ print $$NF; }')
duke@435 487 ifeq (${COMPILER_DATE}, 2001/01/31)
duke@435 488 # disable -g0 in fastdebug since SC6.1 dated 2001/01/31 seems to be buggy
duke@435 489 # use an innocuous value because it will get -g if it's empty
duke@435 490 FASTDEBUG_CFLAGS = -c
duke@435 491 endif
duke@435 492 endif
duke@435 493
duke@435 494 # Uncomment or 'gmake CFLAGS_BROWSE=-sbfast' to get source browser information.
duke@435 495 # CFLAGS_BROWSE = -sbfast
duke@435 496 CFLAGS += $(CFLAGS_BROWSE)
duke@435 497
duke@435 498 # ILD is gone as of SS11 (5.8), not supportted in SS10 (5.7)
duke@435 499 ifeq ($(shell expr $(COMPILER_REV) \< 5.7), 1)
duke@435 500 # use ild when debugging (but when optimizing we want reproducible results)
duke@435 501 ILDFLAG = $(ILDFLAG/$(VERSION))
duke@435 502 ILDFLAG/debug = -xildon
duke@435 503 ILDFLAG/optimized =
duke@435 504 AOUT_FLAGS += $(ILDFLAG)
duke@435 505 endif
duke@435 506
duke@435 507 # Where to put the *.o files (a.out, or shared library)?
duke@435 508 LINK_INTO = $(LINK_INTO/$(VERSION))
duke@435 509 LINK_INTO/debug = LIBJVM
duke@435 510 LINK_INTO/optimized = LIBJVM
duke@435 511
duke@435 512 # We link the debug version into the a.out because:
duke@435 513 # 1. ild works on a.out but not shared libraries, and using ild
duke@435 514 # can cut rebuild times by 25% for small changes. (ILD is gone in SS11)
duke@435 515 # 2. dbx cannot gracefully set breakpoints in shared libraries
duke@435 516 #
duke@435 517
duke@435 518 # apply this setting to link into the shared library even in the debug version:
duke@435 519 ifdef LP64
duke@435 520 LINK_INTO = LIBJVM
duke@435 521 else
duke@435 522 #LINK_INTO = LIBJVM
duke@435 523 endif
duke@435 524
duke@435 525 MCS = /usr/ccs/bin/mcs
duke@435 526 STRIP = /usr/ccs/bin/strip
duke@435 527
duke@435 528 # Solaris platforms collect lots of redundant file-ident lines,
duke@435 529 # to the point of wasting a significant percentage of file space.
duke@435 530 # (The text is stored in ELF .comment sections, contributed by
duke@435 531 # all "#pragma ident" directives in header and source files.)
duke@435 532 # This command "compresses" the .comment sections simply by
duke@435 533 # removing repeated lines. The data can be extracted from
duke@435 534 # binaries in the field by using "mcs -p libjvm.so" or the older
duke@435 535 # command "what libjvm.so".
duke@435 536 LINK_LIB.CC/POST_HOOK += $(MCS) -c $@ || exit 1;
duke@435 537 # (The exit 1 is necessary to cause a build failure if the command fails and
duke@435 538 # multiple commands are strung together, and the final semicolon is necessary
duke@435 539 # since the hook must terminate itself as a valid command.)
duke@435 540
duke@435 541 # Also, strip debug and line number information (worth about 1.7Mb).
duke@435 542 STRIP_LIB.CC/POST_HOOK = $(STRIP) -x $@ || exit 1;
duke@435 543 # STRIP_LIB.CC/POST_HOOK is incorporated into LINK_LIB.CC/POST_HOOK
duke@435 544 # in certain configurations, such as product.make. Other configurations,
duke@435 545 # such as debug.make, do not include the strip operation.

mercurial