Mercurial > hg > truffle
comparison make/solaris/makefiles/sparcWorks.make @ 158:a49545cab84a
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
author | ohair |
---|---|
date | Tue, 27 May 2008 09:47:18 -0700 |
parents | ba764ed4b6f2 |
children | d1605aabd0a1 |
comparison
equal
deleted
inserted
replaced
157:a3e5744fafda | 158:a49545cab84a |
---|---|
26 | 26 |
27 # tell make which C and C++ compilers to use | 27 # tell make which C and C++ compilers to use |
28 CC = cc | 28 CC = cc |
29 CPP = CC | 29 CPP = CC |
30 | 30 |
31 # Note that this 'as' is an older version of the Sun Studio 'fbe', and will | |
32 # use the older style options. The 'fbe' options will match 'cc' and 'CC'. | |
31 AS = /usr/ccs/bin/as | 33 AS = /usr/ccs/bin/as |
32 | 34 |
33 NM = /usr/ccs/bin/nm | 35 NM = /usr/ccs/bin/nm |
34 NAWK = /bin/nawk | 36 NAWK = /bin/nawk |
35 | 37 |
41 COMPILER_REV := \ | 43 COMPILER_REV := \ |
42 $(shell $(CPP) -V 2>&1 | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/') | 44 $(shell $(CPP) -V 2>&1 | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/') |
43 C_COMPILER_REV := \ | 45 C_COMPILER_REV := \ |
44 $(shell $(CC) -V 2>&1 | grep -i "cc:" | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/') | 46 $(shell $(CC) -V 2>&1 | grep -i "cc:" | sed -e 's/^.*\([1-9]\.[0-9][0-9]*\).*/\1/') |
45 | 47 |
46 VALIDATED_COMPILER_REV := 5.8 | 48 # Pick which compiler is validated |
47 VALIDATED_C_COMPILER_REV := 5.8 | 49 ifeq ($(JDK_MINOR_VERSION),6) |
48 | 50 # Validated compiler for JDK6 is SS11 (5.8) |
51 VALIDATED_COMPILER_REV := 5.8 | |
52 VALIDATED_C_COMPILER_REV := 5.8 | |
53 else | |
54 # FIXUP: Change to SS12 (5.9) once it has been validated. | |
55 # Validated compiler for JDK7 is SS12 (5.9) | |
56 #VALIDATED_COMPILER_REV := 5.9 | |
57 #VALIDATED_C_COMPILER_REV := 5.9 | |
58 VALIDATED_COMPILER_REV := 5.8 | |
59 VALIDATED_C_COMPILER_REV := 5.8 | |
60 endif | |
61 | |
62 # Warning messages about not using the above validated version | |
49 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := ${VALIDATED_COMPILER_REV} | 63 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := ${VALIDATED_COMPILER_REV} |
50 ifneq (${COMPILER_REV},${ENFORCE_COMPILER_REV}) | 64 ifneq (${COMPILER_REV},${ENFORCE_COMPILER_REV}) |
51 dummy_target_to_enforce_compiler_rev: | 65 dummy_target_to_enforce_compiler_rev:=\ |
52 @echo "Wrong ${CPP} version: ${COMPILER_REV}. " \ | 66 $(info WARNING: You are using CC version ${COMPILER_REV} \ |
53 "Use version ${ENFORCE_COMPILER_REV}, or set" \ | 67 and should be using version ${ENFORCE_COMPILER_REV}) |
54 "ENFORCE_COMPILER_REV=${COMPILER_REV}." | |
55 @exit 1 | |
56 endif | 68 endif |
57 | 69 |
58 ENFORCE_C_COMPILER_REV${ENFORCE_C_COMPILER_REV} := ${VALIDATED_C_COMPILER_REV} | 70 ENFORCE_C_COMPILER_REV${ENFORCE_C_COMPILER_REV} := ${VALIDATED_C_COMPILER_REV} |
59 ifneq (${C_COMPILER_REV},${ENFORCE_C_COMPILER_REV}) | 71 ifneq (${C_COMPILER_REV},${ENFORCE_C_COMPILER_REV}) |
60 dummy_target_to_enforce_c_compiler_rev: | 72 dummy_target_to_enforce_c_compiler_rev:=\ |
61 @echo "Wrong ${CC} version: ${C_COMPILER_REV}. " \ | 73 $(info WARNING: You are using cc version ${C_COMPILER_REV} \ |
62 "Use version ${ENFORCE_C_COMPILER_REV}, or set" \ | 74 and should be using version ${ENFORCE_C_COMPILER_REV}) |
63 "ENFORCE_C_COMPILER_REV=${C_COMPILER_REV}." | |
64 @exit 1 | |
65 endif | 75 endif |
66 | 76 |
67 # Fail the build if __fabsf is used. __fabsf exists only in Solaris 8 2/04 | 77 # Fail the build if __fabsf is used. __fabsf exists only in Solaris 8 2/04 |
68 # and newer; objects with a dependency on this symbol will not run on older | 78 # and newer; objects with a dependency on this symbol will not run on older |
69 # Solaris 8. | 79 # Solaris 8. |
88 # Some interfaces (_lwp_create) changed with LP64 and Solaris 7 | 98 # Some interfaces (_lwp_create) changed with LP64 and Solaris 7 |
89 SOLARIS_7_OR_LATER := \ | 99 SOLARIS_7_OR_LATER := \ |
90 $(shell uname -r | awk -F. '{ if ($$2 >= 7) print "-DSOLARIS_7_OR_LATER"; }') | 100 $(shell uname -r | awk -F. '{ if ($$2 >= 7) print "-DSOLARIS_7_OR_LATER"; }') |
91 CFLAGS += ${SOLARIS_7_OR_LATER} | 101 CFLAGS += ${SOLARIS_7_OR_LATER} |
92 | 102 |
93 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) | 103 # New architecture options started in SS12 (5.9), we need both styles to build. |
94 # set ARCHFLAG/BUILDARCH which will ultimately be ARCHFLAG | 104 # The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as. |
105 # Note: SS12 default for 32bit sparc is now the same as v8plus, so the | |
106 # settings below have changed all SS12 32bit sparc builds to be v8plus. | |
107 # The older SS11 (5.8) settings have remained as they always have been. | |
95 ifeq ($(TYPE),COMPILER2) | 108 ifeq ($(TYPE),COMPILER2) |
96 ARCHFLAG/sparc = -xarch=v8plus | 109 ARCHFLAG_OLD/sparc = -xarch=v8plus |
97 else | 110 else |
98 ifeq ($(TYPE),TIERED) | 111 ifeq ($(TYPE),TIERED) |
99 ARCHFLAG/sparc = -xarch=v8plus | 112 ARCHFLAG_OLD/sparc = -xarch=v8plus |
100 else | 113 else |
101 ARCHFLAG/sparc = -xarch=v8 | 114 ARCHFLAG_OLD/sparc = -xarch=v8 |
102 endif | 115 endif |
103 endif | 116 endif |
104 ARCHFLAG/sparcv9 = -xarch=v9 | 117 ARCHFLAG_NEW/sparc = -m32 -xarch=sparc |
105 ARCHFLAG/i486 = | 118 ARCHFLAG_OLD/sparcv9 = -xarch=v9 |
106 ARCHFLAG/amd64 = -xarch=amd64 | 119 ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc |
120 ARCHFLAG_OLD/i486 = | |
121 ARCHFLAG_NEW/i486 = -m32 | |
122 ARCHFLAG_OLD/amd64 = -xarch=amd64 | |
123 ARCHFLAG_NEW/amd64 = -m64 | |
124 | |
125 # Select the ARCHFLAGs and other SS12 (5.9) options | |
126 ifeq ($(shell expr $(COMPILER_REV) \>= 5.9), 1) | |
127 ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc) | |
128 ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9) | |
129 ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486) | |
130 ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64) | |
131 else | |
132 ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc) | |
133 ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9) | |
134 ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486) | |
135 ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64) | |
136 endif | |
137 | |
138 # ARCHFLAGS for the current build arch | |
139 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) | |
140 AS_ARCHFLAG = $(ARCHFLAG_OLD/$(BUILDARCH)) | |
107 | 141 |
108 # Optional sub-directory in /usr/lib where BUILDARCH libraries are kept. | 142 # Optional sub-directory in /usr/lib where BUILDARCH libraries are kept. |
109 ISA_DIR=$(ISA_DIR/$(BUILDARCH)) | 143 ISA_DIR=$(ISA_DIR/$(BUILDARCH)) |
110 ISA_DIR/sparcv9=/sparcv9 | 144 ISA_DIR/sparcv9=/sparcv9 |
111 ISA_DIR/amd64=/amd64 | 145 ISA_DIR/amd64=/amd64 |
164 | 198 |
165 endif # 32bit x86 | 199 endif # 32bit x86 |
166 | 200 |
167 ifeq ("${Platform_arch_model}", "x86_64") | 201 ifeq ("${Platform_arch_model}", "x86_64") |
168 | 202 |
169 ASFLAGS += -xarch=amd64 | 203 ASFLAGS += $(AS_ARCHFLAG) |
170 CFLAGS += -xarch=amd64 | 204 CFLAGS += $(ARCHFLAG/amd64) |
171 # this one seemed useless | 205 # this one seemed useless |
172 LFLAGS_VM += -xarch=amd64 | 206 LFLAGS_VM += $(ARCHFLAG/amd64) |
173 # this one worked | 207 # this one worked |
174 LFLAGS += -xarch=amd64 | 208 LFLAGS += $(ARCHFLAG/amd64) |
175 AOUT_FLAGS += -xarch=amd64 | 209 AOUT_FLAGS += $(ARCHFLAG/amd64) |
176 | 210 |
177 # -xO3 is faster than -xO4 on specjbb with SS10 compiler | 211 # -xO3 is faster than -xO4 on specjbb with SS10 compiler |
178 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) | 212 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) |
179 | 213 |
180 endif # 64bit x86 | 214 endif # 64bit x86 |
222 CFLAGS += -library=%none | 256 CFLAGS += -library=%none |
223 LFLAGS += -library=%none | 257 LFLAGS += -library=%none |
224 | 258 |
225 LFLAGS += -mt | 259 LFLAGS += -mt |
226 | 260 |
227 endif # COMPILER_REV >= VALIDATED_COMPILER_REV | 261 endif # COMPILER_REV >= 5.5 |
228 | 262 |
229 ###################################### | 263 ###################################### |
230 # End 5.5 Forte compiler options # | 264 # End 5.5 Forte compiler options # |
231 ###################################### | 265 ###################################### |
232 | 266 |
291 # Would be better if these weren't needed, since we link with CC, but | 325 # Would be better if these weren't needed, since we link with CC, but |
292 # at present removing them causes run-time errors | 326 # at present removing them causes run-time errors |
293 LFLAGS += -library=Crun | 327 LFLAGS += -library=Crun |
294 LIBS += -library=Crun -lCrun | 328 LIBS += -library=Crun -lCrun |
295 | 329 |
296 endif # COMPILER_REV >= VALIDATED_COMPILER_REV | 330 endif # COMPILER_REV == 5.2 |
297 | 331 |
298 ################################## | 332 ################################## |
299 # End 5.2 Forte compiler options # | 333 # End 5.2 Forte compiler options # |
300 ################################## | 334 ################################## |
301 | 335 |
318 | 352 |
319 ifeq (${COMPILER_REV}, 5.0) | 353 ifeq (${COMPILER_REV}, 5.0) |
320 | 354 |
321 # Had to hoist this higher apparently because of other changes. Must | 355 # Had to hoist this higher apparently because of other changes. Must |
322 # come before -xarch specification. | 356 # come before -xarch specification. |
357 # NOTE: native says optimize for the machine doing the compile, bad news. | |
323 CFLAGS += -xtarget=native | 358 CFLAGS += -xtarget=native |
324 | 359 |
325 CFLAGS += $(ARCHFLAG) | 360 CFLAGS += $(ARCHFLAG) |
326 AOUT_FLAGS += $(ARCHFLAG) | 361 AOUT_FLAGS += $(ARCHFLAG) |
327 LIB_FLAGS += $(ARCHFLAG) | 362 LIB_FLAGS += $(ARCHFLAG) |
357 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il | 392 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il |
358 | 393 |
359 endif # 32bit x86 | 394 endif # 32bit x86 |
360 | 395 |
361 # The following options run into misaligned ldd problem (raj) | 396 # The following options run into misaligned ldd problem (raj) |
362 #OPT_CFLAGS = -fast -O4 -xarch=v8 -xchip=ultra | 397 #OPT_CFLAGS = -fast -O4 $(ARCHFLAG/sparc) -xchip=ultra |
363 | 398 |
364 # no more exceptions | 399 # no more exceptions |
365 CFLAGS/NOEX=-noex | 400 CFLAGS/NOEX=-noex |
366 | 401 |
367 # PIC is safer for SPARC, and is considerably slower | 402 # PIC is safer for SPARC, and is considerably slower |
424 | 459 |
425 # Flags for Debugging | 460 # Flags for Debugging |
426 DEBUG_CFLAGS = -g | 461 DEBUG_CFLAGS = -g |
427 FASTDEBUG_CFLAGS = -g0 | 462 FASTDEBUG_CFLAGS = -g0 |
428 # The -g0 setting allows the C++ frontend to inline, which is a big win. | 463 # The -g0 setting allows the C++ frontend to inline, which is a big win. |
464 | |
465 # Special global options for SS12 | |
466 ifeq ($(COMPILER_REV),5.9) | |
467 # There appears to be multiple issues with the new Dwarf2 debug format, so | |
468 # we tell the compiler to use the older 'stabs' debug format all the time. | |
469 # Note that this needs to be used in optimized compiles too to be 100%. | |
470 # This is a workaround for SS12 (5.9) bug 6694600 | |
471 CFLAGS += -xdebugformat=stabs | |
472 endif | |
429 | 473 |
430 # Enable the following CFLAGS additions if you need to compare the | 474 # Enable the following CFLAGS additions if you need to compare the |
431 # built ELF objects. | 475 # built ELF objects. |
432 # | 476 # |
433 # The -g option makes static data global and the "-Qoption ccfe | 477 # The -g option makes static data global and the "-Qoption ccfe |