aboutsummaryrefslogtreecommitdiffstats
path: root/classes/openjdk-build-helper.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/openjdk-build-helper.bbclass')
-rw-r--r--classes/openjdk-build-helper.bbclass35
1 files changed, 35 insertions, 0 deletions
diff --git a/classes/openjdk-build-helper.bbclass b/classes/openjdk-build-helper.bbclass
index 785ddf0..78906b0 100644
--- a/classes/openjdk-build-helper.bbclass
+++ b/classes/openjdk-build-helper.bbclass
@@ -14,3 +14,38 @@ def openjdk_build_helper_get_parallel_make(d):
return 1
return pm.partition('-j')[2].strip().split(' ')[0]
+
+# All supported cross compilers support the compiler flags that were
+# added to make compilation with gcc6 work. But the host compiler for
+# native compilation is a different story: it may be too old (for example,
+# gcc 4.9.2 on Debian Wheezy). In that case we need to check what the
+# version is and only add the flags that are appropriate for that GCC
+# version.
+def openjdk_build_helper_get_cflags_by_cc_version(d, version):
+ if version.isdigit():
+ return d.getVar('FLAGS_GCC%d' % int(version)) or ''
+ return ''
+
+def openjdk_build_helper_get_build_cflags(d):
+ def get_build_cc_version(build_cc):
+ from subprocess import Popen, PIPE
+ cmd = d.expand('%s -dumpversion' % build_cc).split()
+ cc = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ return cc.communicate()[0].decode('utf-8')[0]
+
+ build_cc = d.getVar('BUILD_CC')
+ version = get_build_cc_version(build_cc)
+ return openjdk_build_helper_get_cflags_by_cc_version(d, version)
+
+def openjdk_build_helper_get_target_cflags(d):
+ import re
+
+ # in the cross case, trust that GCCVERSION is correct. This won't
+ # work if the native toolchain is Clang, but as of this writing that
+ # doesn't work anyway.
+ version = d.getVar('GCCVERSION')[0]
+ # skip non digit characters at the beginning, e.g. from "linaro-6.2%"
+ match = re.search("\d", version)
+ if match:
+ version = version[match.start():]
+ return openjdk_build_helper_get_cflags_by_cc_version(d, version)