Contents of /trunk/java8-openjdk/patches/java8-openjdk-8.3.4.0-gcc6.patch
Parent Directory | Revision Log
Revision 2941 -
(show annotations)
(download)
Mon Jun 12 11:28:21 2017 UTC (7 years, 3 months ago) by niro
File size: 42128 byte(s)
Mon Jun 12 11:28:21 2017 UTC (7 years, 3 months ago) by niro
File size: 42128 byte(s)
-added java8 patches
1 | # HG changeset patch |
2 | # User andrew |
3 | # Date 1468209748 -3600 |
4 | # Mon Jul 11 05:02:28 2016 +0100 |
5 | # Node ID 7eb66a95dbd58d26ed271477076e0ab72e8c9ebf |
6 | # Parent 817d9fb584baecae7c989dfd7009a7f0ac7c6360 |
7 | 8151841: Build needs additional flags to compile with GCC 6 [plus parts of 8149647 & 8032045] |
8 | Summary: C++ standard needs to be explicitly set and some optimisations turned off to build on GCC 6 |
9 | Reviewed-by: erikj, dholmes, kbarrett |
10 | |
11 | diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh |
12 | --- a/common/autoconf/generated-configure.sh |
13 | +++ b/common/autoconf/generated-configure.sh |
14 | @@ -679,6 +679,9 @@ |
15 | CFLAGS_JDKLIB |
16 | MACOSX_VERSION_MIN |
17 | PACKAGE_PATH |
18 | +NO_LIFETIME_DSE_CFLAG |
19 | +NO_DELETE_NULL_POINTER_CHECKS_CFLAG |
20 | +CXXSTD_CXXFLAG |
21 | LEGACY_EXTRA_LDFLAGS |
22 | LEGACY_EXTRA_CXXFLAGS |
23 | LEGACY_EXTRA_CFLAGS |
24 | @@ -743,6 +746,8 @@ |
25 | ac_ct_OBJC |
26 | OBJCFLAGS |
27 | OBJC |
28 | +CXX_VERSION |
29 | +CC_VERSION |
30 | ac_ct_CXX |
31 | CXXFLAGS |
32 | CXX |
33 | @@ -3672,7 +3677,7 @@ |
34 | |
35 | |
36 | # |
37 | -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. |
38 | +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. |
39 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
40 | # |
41 | # This code is free software; you can redistribute it and/or modify it |
42 | @@ -3795,6 +3800,19 @@ |
43 | # questions. |
44 | # |
45 | |
46 | +# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called. |
47 | +# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER. |
48 | + |
49 | + |
50 | +# Check if the configured compiler (C and C++) is of a specific version or |
51 | +# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before. |
52 | +# |
53 | +# Arguments: |
54 | +# $1: The version string to check against the found version |
55 | +# $2: block to run if the compiler is at least this version (>=) |
56 | +# $3: block to run if the compiler is older than this version (<) |
57 | + |
58 | + |
59 | # $1 = compiler to test (CC or CXX) |
60 | # $2 = human readable name of compiler (C or C++) |
61 | |
62 | @@ -3818,10 +3836,22 @@ |
63 | |
64 | |
65 | |
66 | +# TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
67 | +# [RUN-IF-FALSE]) |
68 | +# ------------------------------------------------------------ |
69 | +# Check that the C compiler supports an argument |
70 | + |
71 | + |
72 | +# TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
73 | +# [RUN-IF-FALSE]) |
74 | +# ------------------------------------------------------------ |
75 | +# Check that the C++ compiler supports an argument |
76 | + |
77 | + |
78 | # TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
79 | -# [RUN-IF-FALSE]) |
80 | +# [RUN-IF-FALSE]) |
81 | # ------------------------------------------------------------ |
82 | -# Check that the c and c++ compilers support an argument |
83 | +# Check that the C and C++ compilers support an argument |
84 | |
85 | |
86 | |
87 | @@ -3829,6 +3859,8 @@ |
88 | # Setup the JTREG paths |
89 | |
90 | |
91 | + |
92 | + |
93 | # |
94 | # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. |
95 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
96 | @@ -3880,7 +3912,7 @@ |
97 | #CUSTOM_AUTOCONF_INCLUDE |
98 | |
99 | # Do not change or remove the following line, it is needed for consistency checks: |
100 | -DATE_WHEN_GENERATED=1449096260 |
101 | +DATE_WHEN_GENERATED=1468207795 |
102 | |
103 | ############################################################################### |
104 | # |
105 | @@ -20368,7 +20400,8 @@ |
106 | |
107 | # First line typically looks something like: |
108 | # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 |
109 | - COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"` |
110 | + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \ |
111 | + $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'` |
112 | COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"` |
113 | fi |
114 | # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker) |
115 | @@ -21969,7 +22002,8 @@ |
116 | |
117 | # First line typically looks something like: |
118 | # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 |
119 | - COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"` |
120 | + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \ |
121 | + $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'` |
122 | COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"` |
123 | fi |
124 | # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker) |
125 | @@ -22240,6 +22274,32 @@ |
126 | ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
127 | |
128 | |
129 | + # This is the compiler version number on the form X.Y[.Z] |
130 | + |
131 | + |
132 | + |
133 | + |
134 | + if test "x$CC_VERSION" != "x$CXX_VERSION"; then |
135 | + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION." >&5 |
136 | +$as_echo "$as_me: WARNING: C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION." >&2;} |
137 | + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5 |
138 | +$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;} |
139 | + fi |
140 | + |
141 | + # We only check CC_VERSION since we assume CXX_VERSION is equal. |
142 | + if [[ "$CC_VERSION" =~ (.*\.){3} ]] ; then |
143 | + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong." >&5 |
144 | +$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong." >&2;} |
145 | + fi |
146 | + |
147 | + if [[ "$CC_VERSION" =~ [0-9]{6} ]] ; then |
148 | + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong." >&5 |
149 | +$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong." >&2;} |
150 | + fi |
151 | + |
152 | + COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$CC_VERSION"` |
153 | + |
154 | + |
155 | ### Locate other tools |
156 | |
157 | if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
158 | @@ -24831,7 +24891,8 @@ |
159 | |
160 | |
161 | COMPILER_TYPE=CL |
162 | - CCXXFLAGS="$CCXXFLAGS -nologo" |
163 | + # silence copyright notice and other headers. |
164 | + COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
165 | |
166 | fi |
167 | |
168 | @@ -29664,12 +29725,57 @@ |
169 | # |
170 | # Now setup the CFLAGS and LDFLAGS for the JDK build. |
171 | # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build. |
172 | + # CFLAGS_JDK - C Compiler flags |
173 | + # CXXFLAGS_JDK - C++ Compiler flags |
174 | + # COMMON_CCXXFLAGS_JDK - common to C and C++ |
175 | # |
176 | case $COMPILER_NAME in |
177 | gcc ) |
178 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \ |
179 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \ |
180 | -pipe \ |
181 | -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
182 | + CXXSTD_CXXFLAG="-std=gnu++98" |
183 | + |
184 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS\"" >&5 |
185 | +$as_echo_n "checking if the C++ compiler supports \"$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS\"... " >&6; } |
186 | + supports=yes |
187 | + |
188 | + saved_cxxflags="$CXXFLAGS" |
189 | + CXXFLAGS="$CXXFLAG $CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS" |
190 | + ac_ext=cpp |
191 | +ac_cpp='$CXXCPP $CPPFLAGS' |
192 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
193 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
194 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
195 | + |
196 | + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
197 | +/* end confdefs.h. */ |
198 | +int i; |
199 | +_ACEOF |
200 | +if ac_fn_cxx_try_compile "$LINENO"; then : |
201 | + |
202 | +else |
203 | + supports=no |
204 | +fi |
205 | +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
206 | + ac_ext=cpp |
207 | +ac_cpp='$CXXCPP $CPPFLAGS' |
208 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
209 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
210 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
211 | + |
212 | + CXXFLAGS="$saved_cxxflags" |
213 | + |
214 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
215 | +$as_echo "$supports" >&6; } |
216 | + if test "x$supports" = "xyes" ; then |
217 | + : |
218 | + else |
219 | + CXXSTD_CXXFLAG="" |
220 | + fi |
221 | + |
222 | + CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}" |
223 | + |
224 | case $OPENJDK_TARGET_CPU_ARCH in |
225 | arm ) |
226 | # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
227 | @@ -29679,16 +29785,234 @@ |
228 | # on ppc we don't prevent gcc to omit frame pointer nor strict-aliasing |
229 | ;; |
230 | * ) |
231 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer" |
232 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer" |
233 | CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
234 | ;; |
235 | esac |
236 | + |
237 | + REFERENCE_VERSION=6 |
238 | + |
239 | + if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then |
240 | + as_fn_error $? "Internal error: Cannot compare to $REFERENCE_VERSION, only three parts (X.Y.Z) is supported" "$LINENO" 5 |
241 | + fi |
242 | + |
243 | + if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then |
244 | + as_fn_error $? "Internal error: Cannot compare to $REFERENCE_VERSION, only parts < 99999 is supported" "$LINENO" 5 |
245 | + fi |
246 | + |
247 | + # Version comparison method inspired by http://stackoverflow.com/a/24067243 |
248 | + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` |
249 | + |
250 | + if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then |
251 | + |
252 | + # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code |
253 | + # runs afoul of the more aggressive versions of these optimisations. |
254 | + # Notably, value range propagation now assumes that the this pointer of C++ |
255 | + # member functions is non-null. |
256 | + NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks" |
257 | + |
258 | + |
259 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5 |
260 | +$as_echo_n "checking if the C compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; } |
261 | + supports=yes |
262 | + |
263 | + saved_cflags="$CFLAGS" |
264 | + CFLAGS="$CFLAGS $NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror" |
265 | + ac_ext=c |
266 | +ac_cpp='$CPP $CPPFLAGS' |
267 | +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
268 | +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
269 | +ac_compiler_gnu=$ac_cv_c_compiler_gnu |
270 | + |
271 | + |
272 | +cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
273 | +/* end confdefs.h. */ |
274 | +int i; |
275 | +_ACEOF |
276 | +if ac_fn_c_try_compile "$LINENO"; then : |
277 | + |
278 | +else |
279 | + supports=no |
280 | +fi |
281 | +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
282 | + ac_ext=cpp |
283 | +ac_cpp='$CXXCPP $CPPFLAGS' |
284 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
285 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
286 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
287 | + |
288 | + CFLAGS="$saved_cflags" |
289 | + |
290 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
291 | +$as_echo "$supports" >&6; } |
292 | + if test "x$supports" = "xyes" ; then |
293 | + C_COMP_SUPPORTS="yes" |
294 | + else |
295 | + C_COMP_SUPPORTS="no" |
296 | + fi |
297 | + |
298 | + |
299 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5 |
300 | +$as_echo_n "checking if the C++ compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; } |
301 | + supports=yes |
302 | + |
303 | + saved_cxxflags="$CXXFLAGS" |
304 | + CXXFLAGS="$CXXFLAG $NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror" |
305 | + ac_ext=cpp |
306 | +ac_cpp='$CXXCPP $CPPFLAGS' |
307 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
308 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
309 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
310 | + |
311 | + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
312 | +/* end confdefs.h. */ |
313 | +int i; |
314 | +_ACEOF |
315 | +if ac_fn_cxx_try_compile "$LINENO"; then : |
316 | + |
317 | +else |
318 | + supports=no |
319 | +fi |
320 | +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
321 | + ac_ext=cpp |
322 | +ac_cpp='$CXXCPP $CPPFLAGS' |
323 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
324 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
325 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
326 | + |
327 | + CXXFLAGS="$saved_cxxflags" |
328 | + |
329 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
330 | +$as_echo "$supports" >&6; } |
331 | + if test "x$supports" = "xyes" ; then |
332 | + CXX_COMP_SUPPORTS="yes" |
333 | + else |
334 | + CXX_COMP_SUPPORTS="no" |
335 | + fi |
336 | + |
337 | + |
338 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5 |
339 | +$as_echo_n "checking if both compilers support \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; } |
340 | + supports=no |
341 | + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi |
342 | + |
343 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
344 | +$as_echo "$supports" >&6; } |
345 | + if test "x$supports" = "xyes" ; then |
346 | + : |
347 | + else |
348 | + NO_DELETE_NULL_POINTER_CHECKS_CFLAG="" |
349 | + fi |
350 | + |
351 | + |
352 | + NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse" |
353 | + |
354 | + |
355 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5 |
356 | +$as_echo_n "checking if the C compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; } |
357 | + supports=yes |
358 | + |
359 | + saved_cflags="$CFLAGS" |
360 | + CFLAGS="$CFLAGS $NO_LIFETIME_DSE_CFLAG -Werror" |
361 | + ac_ext=c |
362 | +ac_cpp='$CPP $CPPFLAGS' |
363 | +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
364 | +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
365 | +ac_compiler_gnu=$ac_cv_c_compiler_gnu |
366 | + |
367 | + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
368 | +/* end confdefs.h. */ |
369 | +int i; |
370 | +_ACEOF |
371 | +if ac_fn_c_try_compile "$LINENO"; then : |
372 | + |
373 | +else |
374 | + supports=no |
375 | +fi |
376 | +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
377 | + ac_ext=cpp |
378 | +ac_cpp='$CXXCPP $CPPFLAGS' |
379 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
380 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
381 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
382 | + |
383 | + CFLAGS="$saved_cflags" |
384 | + |
385 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
386 | +$as_echo "$supports" >&6; } |
387 | + if test "x$supports" = "xyes" ; then |
388 | + C_COMP_SUPPORTS="yes" |
389 | + else |
390 | + C_COMP_SUPPORTS="no" |
391 | + fi |
392 | + |
393 | + |
394 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5 |
395 | +$as_echo_n "checking if the C++ compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; } |
396 | + supports=yes |
397 | + |
398 | + saved_cxxflags="$CXXFLAGS" |
399 | + CXXFLAGS="$CXXFLAG $NO_LIFETIME_DSE_CFLAG -Werror" |
400 | + ac_ext=cpp |
401 | +ac_cpp='$CXXCPP $CPPFLAGS' |
402 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
403 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
404 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
405 | + |
406 | + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
407 | +/* end confdefs.h. */ |
408 | +int i; |
409 | +_ACEOF |
410 | +if ac_fn_cxx_try_compile "$LINENO"; then : |
411 | + |
412 | +else |
413 | + supports=no |
414 | +fi |
415 | +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
416 | + ac_ext=cpp |
417 | +ac_cpp='$CXXCPP $CPPFLAGS' |
418 | +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
419 | +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
420 | +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
421 | + |
422 | + CXXFLAGS="$saved_cxxflags" |
423 | + |
424 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
425 | +$as_echo "$supports" >&6; } |
426 | + if test "x$supports" = "xyes" ; then |
427 | + CXX_COMP_SUPPORTS="yes" |
428 | + else |
429 | + CXX_COMP_SUPPORTS="no" |
430 | + fi |
431 | + |
432 | + |
433 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5 |
434 | +$as_echo_n "checking if both compilers support \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; } |
435 | + supports=no |
436 | + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi |
437 | + |
438 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
439 | +$as_echo "$supports" >&6; } |
440 | + if test "x$supports" = "xyes" ; then |
441 | + : |
442 | + else |
443 | + NO_LIFETIME_DSE_CFLAG="" |
444 | + fi |
445 | + |
446 | + CFLAGS_JDK="${CFLAGS_JDK} ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}" |
447 | + |
448 | + |
449 | + |
450 | + else |
451 | + : |
452 | + fi |
453 | + |
454 | ;; |
455 | ossc ) |
456 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
457 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
458 | case $OPENJDK_TARGET_CPU_ARCH in |
459 | x86 ) |
460 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
461 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
462 | CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE" |
463 | ;; |
464 | esac |
465 | @@ -29707,16 +30031,16 @@ |
466 | LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" |
467 | ;; |
468 | cl ) |
469 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
470 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
471 | -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ |
472 | -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
473 | -DWIN32 -DIAL" |
474 | case $OPENJDK_TARGET_CPU in |
475 | x86 ) |
476 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86" |
477 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
478 | ;; |
479 | x86_64 ) |
480 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
481 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
482 | ;; |
483 | esac |
484 | ;; |
485 | @@ -29746,7 +30070,7 @@ |
486 | ;; |
487 | esac |
488 | |
489 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64" |
490 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $ADD_LP64" |
491 | |
492 | # The package path is used only on macosx? |
493 | PACKAGE_PATH=/opt/local |
494 | @@ -29759,27 +30083,27 @@ |
495 | # Note: -Dmacro is the same as #define macro 1 |
496 | # -Dmacro= is the same as #define macro |
497 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
498 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
499 | - else |
500 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
501 | - fi |
502 | - else |
503 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" |
504 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
505 | + else |
506 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
507 | + fi |
508 | + else |
509 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
510 | fi |
511 | if test "x$OPENJDK_TARGET_OS" = xlinux; then |
512 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX" |
513 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DLINUX" |
514 | fi |
515 | if test "x$OPENJDK_TARGET_OS" = xwindows; then |
516 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS" |
517 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DWINDOWS" |
518 | fi |
519 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
520 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" |
521 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DSOLARIS" |
522 | fi |
523 | if test "x$OPENJDK_TARGET_OS" = xaix; then |
524 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" |
525 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DAIX -DPPC64" |
526 | fi |
527 | if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
528 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
529 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
530 | # Setting these parameters makes it an error to link to macosx APIs that are |
531 | # newer than the given OS version and makes the linked binaries compatible even |
532 | # if built on a newer version of the OS. |
533 | @@ -29789,25 +30113,25 @@ |
534 | # The macro takes the version with no dots, ex: 1070 |
535 | # Let the flags variables get resolved in make for easier override on make |
536 | # command line. |
537 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
538 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
539 | LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
540 | fi |
541 | if test "x$OPENJDK_TARGET_OS" = xbsd; then |
542 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" |
543 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" |
544 | fi |
545 | if test "x$DEBUG_LEVEL" = xrelease; then |
546 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG" |
547 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG" |
548 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
549 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED" |
550 | - fi |
551 | - else |
552 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG" |
553 | - fi |
554 | - |
555 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
556 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
557 | - |
558 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK \ |
559 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED" |
560 | + fi |
561 | + else |
562 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG" |
563 | + fi |
564 | + |
565 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
566 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
567 | + |
568 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \ |
569 | -I${JDK_OUTPUTDIR}/include \ |
570 | -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \ |
571 | -I${JDK_TOPDIR}/src/share/javavm/export \ |
572 | @@ -29816,12 +30140,12 @@ |
573 | -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common" |
574 | |
575 | # The shared libraries are compiled using the picflag. |
576 | - CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
577 | - CXXFLAGS_JDKLIB="$CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
578 | + CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
579 | + CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
580 | |
581 | # Executable flags |
582 | - CFLAGS_JDKEXE="$CCXXFLAGS_JDK $CFLAGS_JDK" |
583 | - CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK" |
584 | + CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK" |
585 | + CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK" |
586 | |
587 | # Now this is odd. The JDK native libraries have to link against libjvm.so |
588 | # On 32-bit machines there is normally two distinct libjvm.so:s, client and server. |
589 | @@ -29905,7 +30229,6 @@ |
590 | |
591 | |
592 | |
593 | - |
594 | # Some Zero and Shark settings. |
595 | # ZERO_ARCHFLAG tells the compiler which mode to build for |
596 | case "${OPENJDK_TARGET_CPU}" in |
597 | @@ -29916,8 +30239,9 @@ |
598 | ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" |
599 | esac |
600 | |
601 | - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"$ZERO_ARCHFLAG\"" >&5 |
602 | -$as_echo_n "checking if compiler supports \"$ZERO_ARCHFLAG\"... " >&6; } |
603 | + |
604 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$ZERO_ARCHFLAG\"" >&5 |
605 | +$as_echo_n "checking if the C compiler supports \"$ZERO_ARCHFLAG\"... " >&6; } |
606 | supports=yes |
607 | |
608 | saved_cflags="$CFLAGS" |
609 | @@ -29946,6 +30270,19 @@ |
610 | |
611 | CFLAGS="$saved_cflags" |
612 | |
613 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
614 | +$as_echo "$supports" >&6; } |
615 | + if test "x$supports" = "xyes" ; then |
616 | + C_COMP_SUPPORTS="yes" |
617 | + else |
618 | + C_COMP_SUPPORTS="no" |
619 | + fi |
620 | + |
621 | + |
622 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$ZERO_ARCHFLAG\"" >&5 |
623 | +$as_echo_n "checking if the C++ compiler supports \"$ZERO_ARCHFLAG\"... " >&6; } |
624 | + supports=yes |
625 | + |
626 | saved_cxxflags="$CXXFLAGS" |
627 | CXXFLAGS="$CXXFLAG $ZERO_ARCHFLAG" |
628 | ac_ext=cpp |
629 | @@ -29975,6 +30312,20 @@ |
630 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
631 | $as_echo "$supports" >&6; } |
632 | if test "x$supports" = "xyes" ; then |
633 | + CXX_COMP_SUPPORTS="yes" |
634 | + else |
635 | + CXX_COMP_SUPPORTS="no" |
636 | + fi |
637 | + |
638 | + |
639 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$ZERO_ARCHFLAG\"" >&5 |
640 | +$as_echo_n "checking if both compilers support \"$ZERO_ARCHFLAG\"... " >&6; } |
641 | + supports=no |
642 | + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi |
643 | + |
644 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
645 | +$as_echo "$supports" >&6; } |
646 | + if test "x$supports" = "xyes" ; then |
647 | : |
648 | else |
649 | ZERO_ARCHFLAG="" |
650 | @@ -29985,8 +30336,9 @@ |
651 | # Check that the compiler supports -mX (or -qX on AIX) flags |
652 | # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does |
653 | |
654 | - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5 |
655 | -$as_echo_n "checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } |
656 | + |
657 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5 |
658 | +$as_echo_n "checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } |
659 | supports=yes |
660 | |
661 | saved_cflags="$CFLAGS" |
662 | @@ -30015,6 +30367,19 @@ |
663 | |
664 | CFLAGS="$saved_cflags" |
665 | |
666 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
667 | +$as_echo "$supports" >&6; } |
668 | + if test "x$supports" = "xyes" ; then |
669 | + C_COMP_SUPPORTS="yes" |
670 | + else |
671 | + C_COMP_SUPPORTS="no" |
672 | + fi |
673 | + |
674 | + |
675 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5 |
676 | +$as_echo_n "checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } |
677 | + supports=yes |
678 | + |
679 | saved_cxxflags="$CXXFLAGS" |
680 | CXXFLAGS="$CXXFLAG ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" |
681 | ac_ext=cpp |
682 | @@ -30044,6 +30409,20 @@ |
683 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
684 | $as_echo "$supports" >&6; } |
685 | if test "x$supports" = "xyes" ; then |
686 | + CXX_COMP_SUPPORTS="yes" |
687 | + else |
688 | + CXX_COMP_SUPPORTS="no" |
689 | + fi |
690 | + |
691 | + |
692 | + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5 |
693 | +$as_echo_n "checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } |
694 | + supports=no |
695 | + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi |
696 | + |
697 | + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5 |
698 | +$as_echo "$supports" >&6; } |
699 | + if test "x$supports" = "xyes" ; then |
700 | COMPILER_SUPPORTS_TARGET_BITS_FLAG=true |
701 | else |
702 | COMPILER_SUPPORTS_TARGET_BITS_FLAG=false |
703 | diff --git a/common/autoconf/hotspot-spec.gmk.in b/common/autoconf/hotspot-spec.gmk.in |
704 | --- a/common/autoconf/hotspot-spec.gmk.in |
705 | +++ b/common/autoconf/hotspot-spec.gmk.in |
706 | @@ -1,5 +1,5 @@ |
707 | # |
708 | -# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. |
709 | +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. |
710 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
711 | # |
712 | # This code is free software; you can redistribute it and/or modify it |
713 | @@ -109,7 +109,8 @@ |
714 | MT:=@HOTSPOT_MT@ |
715 | RC:=@HOTSPOT_RC@ |
716 | |
717 | -EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ |
718 | +EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \ |
719 | + $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) |
720 | EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@ |
721 | EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@ |
722 | |
723 | diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in |
724 | --- a/common/autoconf/spec.gmk.in |
725 | +++ b/common/autoconf/spec.gmk.in |
726 | @@ -331,6 +331,10 @@ |
727 | CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@ |
728 | CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@ |
729 | |
730 | +NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@ |
731 | +NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@ |
732 | +CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@ |
733 | + |
734 | CXX:=@FIXPATH@ @CCACHE@ @CXX@ |
735 | #CXXFLAGS:=@CXXFLAGS@ |
736 | |
737 | diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4 |
738 | --- a/common/autoconf/toolchain.m4 |
739 | +++ b/common/autoconf/toolchain.m4 |
740 | @@ -23,9 +23,59 @@ |
741 | # questions. |
742 | # |
743 | |
744 | +# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called. |
745 | +# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER. |
746 | +AC_DEFUN([TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS], |
747 | +[ |
748 | + if test "x$CC_VERSION" != "x$CXX_VERSION"; then |
749 | + AC_MSG_WARN([C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION.]) |
750 | + AC_MSG_WARN([This typically indicates a broken setup, and is not supported]) |
751 | + fi |
752 | + |
753 | + # We only check CC_VERSION since we assume CXX_VERSION is equal. |
754 | + if [ [[ "$CC_VERSION" =~ (.*\.){3} ]] ]; then |
755 | + AC_MSG_WARN([C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong.]) |
756 | + fi |
757 | + |
758 | + if [ [[ "$CC_VERSION" =~ [0-9]{6} ]] ]; then |
759 | + AC_MSG_WARN([C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong.]) |
760 | + fi |
761 | + |
762 | + COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$CC_VERSION"` |
763 | +]) |
764 | + |
765 | +# Check if the configured compiler (C and C++) is of a specific version or |
766 | +# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before. |
767 | +# |
768 | +# Arguments: |
769 | +# $1: The version string to check against the found version |
770 | +# $2: block to run if the compiler is at least this version (>=) |
771 | +# $3: block to run if the compiler is older than this version (<) |
772 | +AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION], |
773 | +[ |
774 | + REFERENCE_VERSION=$1 |
775 | + |
776 | + if [ [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ]; then |
777 | + AC_MSG_ERROR([Internal error: Cannot compare to $REFERENCE_VERSION, only three parts (X.Y.Z) is supported]) |
778 | + fi |
779 | + |
780 | + if [ [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ]; then |
781 | + AC_MSG_ERROR([Internal error: Cannot compare to $REFERENCE_VERSION, only parts < 99999 is supported]) |
782 | + fi |
783 | + |
784 | + # Version comparison method inspired by http://stackoverflow.com/a/24067243 |
785 | + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$REFERENCE_VERSION"` |
786 | + |
787 | + if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then |
788 | + m4_ifval([$2], [$2], [:]) |
789 | + else |
790 | + m4_ifval([$3], [$3], [:]) |
791 | + fi |
792 | +]) |
793 | + |
794 | # $1 = compiler to test (CC or CXX) |
795 | # $2 = human readable name of compiler (C or C++) |
796 | -AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION], |
797 | +AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION], |
798 | [ |
799 | COMPILER=[$]$1 |
800 | COMPILER_NAME=$2 |
801 | @@ -81,7 +131,8 @@ |
802 | |
803 | # First line typically looks something like: |
804 | # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 |
805 | - COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \(@<:@1-9@:>@@<:@0-9.@:>@*\)/\1/p"` |
806 | + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \ |
807 | + $SED -e 's/^.* \(@<:@1-9@:>@\.@<:@0-9.@:>@*\)@<:@^0-9.@:>@.*$/\1/'` |
808 | COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) @<:@1-9@:>@@<:@0-9.@:>@*/\1/p"` |
809 | fi |
810 | # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker) |
811 | @@ -181,7 +232,7 @@ |
812 | AC_MSG_RESULT([no, keeping $1]) |
813 | $1="$TEST_COMPILER" |
814 | fi |
815 | - TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME]) |
816 | + TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME]) |
817 | ]) |
818 | |
819 | |
820 | @@ -385,6 +436,12 @@ |
821 | # Now that we have resolved CXX ourself, let autoconf have its go at it |
822 | AC_PROG_CXX([$CXX]) |
823 | |
824 | + # This is the compiler version number on the form X.Y[.Z] |
825 | + AC_SUBST(CC_VERSION) |
826 | + AC_SUBST(CXX_VERSION) |
827 | + |
828 | + TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS |
829 | + |
830 | ### Locate other tools |
831 | |
832 | if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
833 | @@ -507,7 +564,8 @@ |
834 | BASIC_FIXUP_EXECUTABLE(DUMPBIN) |
835 | |
836 | COMPILER_TYPE=CL |
837 | - CCXXFLAGS="$CCXXFLAGS -nologo" |
838 | + # silence copyright notice and other headers. |
839 | + COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
840 | ]) |
841 | AC_SUBST(RC_FLAGS) |
842 | AC_SUBST(COMPILER_TYPE) |
843 | @@ -954,12 +1012,20 @@ |
844 | # |
845 | # Now setup the CFLAGS and LDFLAGS for the JDK build. |
846 | # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build. |
847 | + # CFLAGS_JDK - C Compiler flags |
848 | + # CXXFLAGS_JDK - C++ Compiler flags |
849 | + # COMMON_CCXXFLAGS_JDK - common to C and C++ |
850 | # |
851 | case $COMPILER_NAME in |
852 | gcc ) |
853 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \ |
854 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \ |
855 | -pipe \ |
856 | -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" |
857 | + CXXSTD_CXXFLAG="-std=gnu++98" |
858 | + TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS], |
859 | + [], [CXXSTD_CXXFLAG=""]) |
860 | + CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}" |
861 | + AC_SUBST([CXXSTD_CXXFLAG]) |
862 | case $OPENJDK_TARGET_CPU_ARCH in |
863 | arm ) |
864 | # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
865 | @@ -969,16 +1035,17 @@ |
866 | # on ppc we don't prevent gcc to omit frame pointer nor strict-aliasing |
867 | ;; |
868 | * ) |
869 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer" |
870 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer" |
871 | CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
872 | ;; |
873 | esac |
874 | + TOOLCHAIN_CHECK_COMPILER_VERSION(6, TOOLCHAIN_SETUP_GCC6_COMPILER_FLAGS) |
875 | ;; |
876 | ossc ) |
877 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
878 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
879 | case $OPENJDK_TARGET_CPU_ARCH in |
880 | x86 ) |
881 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
882 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
883 | CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE" |
884 | ;; |
885 | esac |
886 | @@ -997,16 +1064,16 @@ |
887 | LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" |
888 | ;; |
889 | cl ) |
890 | - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
891 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
892 | -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ |
893 | -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
894 | -DWIN32 -DIAL" |
895 | case $OPENJDK_TARGET_CPU in |
896 | x86 ) |
897 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86" |
898 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
899 | ;; |
900 | x86_64 ) |
901 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
902 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
903 | ;; |
904 | esac |
905 | ;; |
906 | @@ -1036,7 +1103,7 @@ |
907 | ;; |
908 | esac |
909 | |
910 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64" |
911 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $ADD_LP64" |
912 | |
913 | # The package path is used only on macosx? |
914 | PACKAGE_PATH=/opt/local |
915 | @@ -1049,27 +1116,27 @@ |
916 | # Note: -Dmacro is the same as #define macro 1 |
917 | # -Dmacro= is the same as #define macro |
918 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
919 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
920 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
921 | else |
922 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
923 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
924 | fi |
925 | else |
926 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" |
927 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
928 | fi |
929 | if test "x$OPENJDK_TARGET_OS" = xlinux; then |
930 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX" |
931 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DLINUX" |
932 | fi |
933 | if test "x$OPENJDK_TARGET_OS" = xwindows; then |
934 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS" |
935 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DWINDOWS" |
936 | fi |
937 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
938 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" |
939 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DSOLARIS" |
940 | fi |
941 | if test "x$OPENJDK_TARGET_OS" = xaix; then |
942 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" |
943 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DAIX -DPPC64" |
944 | fi |
945 | if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
946 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
947 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
948 | # Setting these parameters makes it an error to link to macosx APIs that are |
949 | # newer than the given OS version and makes the linked binaries compatible even |
950 | # if built on a newer version of the OS. |
951 | @@ -1079,25 +1146,25 @@ |
952 | # The macro takes the version with no dots, ex: 1070 |
953 | # Let the flags variables get resolved in make for easier override on make |
954 | # command line. |
955 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
956 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
957 | LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
958 | fi |
959 | if test "x$OPENJDK_TARGET_OS" = xbsd; then |
960 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" |
961 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" |
962 | fi |
963 | if test "x$DEBUG_LEVEL" = xrelease; then |
964 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG" |
965 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG" |
966 | if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
967 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED" |
968 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED" |
969 | fi |
970 | else |
971 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG" |
972 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG" |
973 | fi |
974 | |
975 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
976 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
977 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
978 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
979 | |
980 | - CCXXFLAGS_JDK="$CCXXFLAGS_JDK \ |
981 | + COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \ |
982 | -I${JDK_OUTPUTDIR}/include \ |
983 | -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \ |
984 | -I${JDK_TOPDIR}/src/share/javavm/export \ |
985 | @@ -1106,12 +1173,12 @@ |
986 | -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common" |
987 | |
988 | # The shared libraries are compiled using the picflag. |
989 | - CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
990 | - CXXFLAGS_JDKLIB="$CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
991 | + CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
992 | + CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
993 | |
994 | # Executable flags |
995 | - CFLAGS_JDKEXE="$CCXXFLAGS_JDK $CFLAGS_JDK" |
996 | - CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK" |
997 | + CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK" |
998 | + CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK" |
999 | |
1000 | # Now this is odd. The JDK native libraries have to link against libjvm.so |
1001 | # On 32-bit machines there is normally two distinct libjvm.so:s, client and server. |
1002 | @@ -1196,13 +1263,13 @@ |
1003 | ]) |
1004 | |
1005 | |
1006 | -# TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
1007 | -# [RUN-IF-FALSE]) |
1008 | +# TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
1009 | +# [RUN-IF-FALSE]) |
1010 | # ------------------------------------------------------------ |
1011 | -# Check that the c and c++ compilers support an argument |
1012 | -AC_DEFUN([TOOLCHAIN_COMPILER_CHECK_ARGUMENTS], |
1013 | +# Check that the C compiler supports an argument |
1014 | +AC_DEFUN([TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS], |
1015 | [ |
1016 | - AC_MSG_CHECKING([if compiler supports "$1"]) |
1017 | + AC_MSG_CHECKING([if the C compiler supports "$1"]) |
1018 | supports=yes |
1019 | |
1020 | saved_cflags="$CFLAGS" |
1021 | @@ -1213,6 +1280,23 @@ |
1022 | AC_LANG_POP([C]) |
1023 | CFLAGS="$saved_cflags" |
1024 | |
1025 | + AC_MSG_RESULT([$supports]) |
1026 | + if test "x$supports" = "xyes" ; then |
1027 | + m4_ifval([$2], [$2], [:]) |
1028 | + else |
1029 | + m4_ifval([$3], [$3], [:]) |
1030 | + fi |
1031 | +]) |
1032 | + |
1033 | +# TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
1034 | +# [RUN-IF-FALSE]) |
1035 | +# ------------------------------------------------------------ |
1036 | +# Check that the C++ compiler supports an argument |
1037 | +AC_DEFUN([TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS], |
1038 | +[ |
1039 | + AC_MSG_CHECKING([if the C++ compiler supports "$1"]) |
1040 | + supports=yes |
1041 | + |
1042 | saved_cxxflags="$CXXFLAGS" |
1043 | CXXFLAGS="$CXXFLAG $1" |
1044 | AC_LANG_PUSH([C++]) |
1045 | @@ -1220,7 +1304,32 @@ |
1046 | [supports=no]) |
1047 | AC_LANG_POP([C++]) |
1048 | CXXFLAGS="$saved_cxxflags" |
1049 | + |
1050 | + AC_MSG_RESULT([$supports]) |
1051 | + if test "x$supports" = "xyes" ; then |
1052 | + m4_ifval([$2], [$2], [:]) |
1053 | + else |
1054 | + m4_ifval([$3], [$3], [:]) |
1055 | + fi |
1056 | +]) |
1057 | |
1058 | +# TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
1059 | +# [RUN-IF-FALSE]) |
1060 | +# ------------------------------------------------------------ |
1061 | +# Check that the C and C++ compilers support an argument |
1062 | +AC_DEFUN([TOOLCHAIN_COMPILER_CHECK_ARGUMENTS], |
1063 | +[ |
1064 | + TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([$1], |
1065 | + [C_COMP_SUPPORTS="yes"], |
1066 | + [C_COMP_SUPPORTS="no"]) |
1067 | + TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([$1], |
1068 | + [CXX_COMP_SUPPORTS="yes"], |
1069 | + [CXX_COMP_SUPPORTS="no"]) |
1070 | + |
1071 | + AC_MSG_CHECKING([if both compilers support "$1"]) |
1072 | + supports=no |
1073 | + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi |
1074 | + |
1075 | AC_MSG_RESULT([$supports]) |
1076 | if test "x$supports" = "xyes" ; then |
1077 | m4_ifval([$2], [$2], [:]) |
1078 | @@ -1311,3 +1420,20 @@ |
1079 | AC_SUBST(JT_HOME) |
1080 | AC_SUBST(JTREGEXE) |
1081 | ]) |
1082 | + |
1083 | +AC_DEFUN_ONCE([TOOLCHAIN_SETUP_GCC6_COMPILER_FLAGS], |
1084 | +[ |
1085 | + # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code |
1086 | + # runs afoul of the more aggressive versions of these optimisations. |
1087 | + # Notably, value range propagation now assumes that the this pointer of C++ |
1088 | + # member functions is non-null. |
1089 | + NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks" |
1090 | + TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror], |
1091 | + [], [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""]) |
1092 | + AC_SUBST([NO_DELETE_NULL_POINTER_CHECKS_CFLAG]) |
1093 | + NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse" |
1094 | + TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$NO_LIFETIME_DSE_CFLAG -Werror], |
1095 | + [], [NO_LIFETIME_DSE_CFLAG=""]) |
1096 | + CFLAGS_JDK="${CFLAGS_JDK} ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}" |
1097 | + AC_SUBST([NO_LIFETIME_DSE_CFLAG]) |
1098 | +]) |