diff options
author | André Draszik <andre.draszik@jci.com> | 2018-08-13 16:09:18 +0100 |
---|---|---|
committer | Richard Leitner <dev@g0hl1n.net> | 2018-08-13 22:55:05 +0200 |
commit | bb3dcf4228fb457939680dc9df3df2bda681abfb (patch) | |
tree | b282afae242e3d8c4b4ea988f783aee6010fc383 /recipes-core | |
parent | 3c710bf3a90fde0cf6d590ffefc349bfb9a1c677 (diff) | |
download | meta-java-bb3dcf4228fb457939680dc9df3df2bda681abfb.tar.gz |
openjdk-build-helper: move c compiler flags retrieval to here (from openjdk-8)
Icedtea 7 and OpenJDK 7 will need to apply new compiler flags for certain
compiler version without breaking support for older (host) compilers.
Move here so that the same code can be re-used.
Signed-off-by: André Draszik <andre.draszik@jci.com>
Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Diffstat (limited to 'recipes-core')
-rw-r--r-- | recipes-core/openjdk/openjdk-8-common.inc | 45 |
1 files changed, 4 insertions, 41 deletions
diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-core/openjdk/openjdk-8-common.inc index 0c77d7c..1c33a3b 100644 --- a/recipes-core/openjdk/openjdk-8-common.inc +++ b/recipes-core/openjdk/openjdk-8-common.inc | |||
@@ -219,46 +219,9 @@ FLAGS_GCC6 = "-fno-lifetime-dse -fno-delete-null-pointer-checks" | |||
219 | FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-pointer-checks" | 219 | FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-pointer-checks" |
220 | FLAGS_GCC8 = "-fno-lifetime-dse -fno-delete-null-pointer-checks -Wno-error=return-type" | 220 | FLAGS_GCC8 = "-fno-lifetime-dse -fno-delete-null-pointer-checks -Wno-error=return-type" |
221 | 221 | ||
222 | # All supported cross compilers support the compiler flags that were | ||
223 | # added to make compilation with gcc6 work. But the host compiler for | ||
224 | # native compilation is a different story: it may be too old (for example, | ||
225 | # gcc 4.9.2 on Debian Wheezy). In that case we need to check what the | ||
226 | # version is and only add the flags that are appropriate for that GCC | ||
227 | # version. | ||
228 | |||
229 | def get_cflags_by_cc_version(d, version): | ||
230 | if version.isdigit(): | ||
231 | return d.getVar('FLAGS_GCC%d' % int(version)) or '' | ||
232 | return '' | ||
233 | |||
234 | def get_build_cflags(d): | ||
235 | def get_build_cc_version(build_cc): | ||
236 | from subprocess import Popen, PIPE | ||
237 | cmd = d.expand('%s -dumpversion' % build_cc).split() | ||
238 | cc = Popen(cmd, stdout=PIPE, stderr=PIPE) | ||
239 | return cc.communicate()[0].decode('utf-8')[0] | ||
240 | |||
241 | build_cc = d.getVar('BUILD_CC') | ||
242 | version = get_build_cc_version(build_cc) | ||
243 | return get_cflags_by_cc_version(d, version) | ||
244 | |||
245 | def get_target_cflags(d): | ||
246 | import re | ||
247 | |||
248 | # in the cross case, trust that GCCVERSION is correct. This won't | ||
249 | # work if the native toolchain is Clang, but as of this writing that | ||
250 | # doesn't work anyway. | ||
251 | version = d.getVar('GCCVERSION')[0] | ||
252 | # skip non digit characters at the beginning, e.g. from "linaro-6.2%" | ||
253 | match = re.search("\d", version) | ||
254 | if match: | ||
255 | version = version[match.start():] | ||
256 | return get_cflags_by_cc_version(d, version) | ||
257 | |||
258 | |||
259 | # flags for -native, and for bits that need a host-tool during -cross | 222 | # flags for -native, and for bits that need a host-tool during -cross |
260 | BUILD_CFLAGS_append = " ${@get_build_cflags(d)}" | 223 | BUILD_CFLAGS_append = " ${@openjdk_build_helper_get_build_cflags(d)}" |
261 | BUILD_CXXFLAGS_append = " ${@get_build_cflags(d)}" | 224 | BUILD_CXXFLAGS_append = " ${@openjdk_build_helper_get_build_cflags(d)}" |
262 | # flags for -cross | 225 | # flags for -cross |
263 | TARGET_CFLAGS_append = " ${@get_target_cflags(d)}" | 226 | TARGET_CFLAGS_append = " ${@openjdk_build_helper_get_target_cflags(d)}" |
264 | TARGET_CXXFLAGS_append = " ${@get_target_cflags(d)}" | 227 | TARGET_CXXFLAGS_append = " ${@openjdk_build_helper_get_target_cflags(d)}" |