1 # |
1 # |
2 # Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. |
2 # Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. |
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 # |
4 # |
5 # This code is free software; you can redistribute it and/or modify it |
5 # This code is free software; you can redistribute it and/or modify it |
6 # under the terms of the GNU General Public License version 2 only, as |
6 # under the terms of the GNU General Public License version 2 only, as |
7 # published by the Free Software Foundation. |
7 # published by the Free Software Foundation. |
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
18 # |
18 # |
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 # or visit www.oracle.com if you need additional information or have any |
20 # or visit www.oracle.com if you need additional information or have any |
21 # questions. |
21 # questions. |
22 # |
22 # |
23 # |
23 # |
24 |
24 |
25 # If a SPEC is not set already, then use these defaults. |
25 # If a SPEC is not set already, then use these defaults. |
26 ifeq ($(SPEC),) |
26 ifeq ($(SPEC),) |
27 # Compiler-specific flags for sparcworks. |
27 # Compiler-specific flags for sparcworks. |
37 |
37 |
38 MCS = /usr/ccs/bin/mcs |
38 MCS = /usr/ccs/bin/mcs |
39 STRIP = /usr/ccs/bin/strip |
39 STRIP = /usr/ccs/bin/strip |
40 endif |
40 endif |
41 |
41 |
42 # Check for the versions of C++ and C compilers ($CXX and $CC) used. |
42 # Check for the versions of C++ and C compilers ($CXX and $CC) used. |
43 |
43 |
44 # Get the last thing on the line that looks like x.x+ (x is a digit). |
44 # Get the last thing on the line that looks like x.x+ (x is a digit). |
45 COMPILER_REV := \ |
45 COMPILER_REV := \ |
46 $(shell $(CXX) -V 2>&1 | sed -n 's/^.*[ ,\t]C++[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') |
46 $(shell $(CXX) -V 2>&1 | sed -n 's/^.*[ ,\t]C++[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') |
47 CC_COMPILER_REV := \ |
47 CC_COMPILER_REV := \ |
48 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') |
48 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') |
49 |
49 |
50 # Pick which compiler is validated |
50 # Pick which compiler is validated |
51 ifeq ($(JRE_RELEASE_VER),1.6.0) |
51 # Validated compiler for JDK9 is SS12.3 (5.12) |
52 # Validated compiler for JDK6 is SS11 (5.8) |
52 VALIDATED_COMPILER_REVS := 5.12 |
53 VALIDATED_COMPILER_REVS := 5.8 |
53 VALIDATED_CC_COMPILER_REVS := 5.12 |
54 VALIDATED_CC_COMPILER_REVS := 5.8 |
|
55 else |
|
56 # Validated compiler for JDK9 is SS12.3 (5.12) |
|
57 VALIDATED_COMPILER_REVS := 5.12 |
|
58 VALIDATED_CC_COMPILER_REVS := 5.12 |
|
59 endif |
|
60 |
54 |
61 # Warning messages about not using the above validated versions |
55 # Warning messages about not using the above validated versions |
62 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS}) |
56 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS}) |
63 ifeq ($(filter ${ENFORCE_COMPILER_REV},${COMPILER_REV}),) |
57 ifeq ($(filter ${ENFORCE_COMPILER_REV},${COMPILER_REV}),) |
64 PRINTABLE_CC_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_COMPILER_REV}) |
58 PRINTABLE_CC_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_COMPILER_REV}) |
235 |
229 |
236 # no more exceptions |
230 # no more exceptions |
237 CFLAGS/NOEX=-features=no%except |
231 CFLAGS/NOEX=-features=no%except |
238 |
232 |
239 |
233 |
240 # avoid compilation problems arising from fact that C++ compiler tries |
234 # avoid compilation problems arising from fact that C++ compiler tries |
241 # to search for external template definition by just compiling additional |
235 # to search for external template definition by just compiling additional |
242 # source files in th same context |
236 # source files in th same context |
243 CFLAGS += -template=no%extdef |
237 CFLAGS += -template=no%extdef |
244 |
238 |
245 # Reduce code bloat by reverting back to 5.0 behavior for static initializers |
239 # Reduce code bloat by reverting back to 5.0 behavior for static initializers |
246 CFLAGS += -features=no%split_init |
240 CFLAGS += -features=no%split_init |
247 |
241 |
248 # Use -D_Crun_inline_placement so we don't get references to |
242 # Use -D_Crun_inline_placement so we don't get references to |
249 # __1c2n6FIpv_0_ or void*operator new(unsigned,void*) |
243 # __1c2n6FIpv_0_ or void*operator new(unsigned,void*) |
250 # This avoids the hard requirement of the newer Solaris C++ runtime patches. |
244 # This avoids the hard requirement of the newer Solaris C++ runtime patches. |
251 # NOTE: This is an undocumented feature of the SS10 compiler. See 6306698. |
245 # NOTE: This is an undocumented feature of the SS10 compiler. See 6306698. |
252 CFLAGS += -D_Crun_inline_placement |
246 CFLAGS += -D_Crun_inline_placement |
253 |
247 |