[oe] [meta-java][PATCH v2 2/2] openjdk-build-helper: move c compiler flags retrieval to here (from openjdk-8)

André Draszik git at andred.net
Mon Aug 13 15:09:18 UTC 2018


From: André Draszik <andre.draszik at jci.com>

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 at jci.com>
---
 classes/openjdk-build-helper.bbclass      | 35 ++++++++++++++++++
 recipes-core/openjdk/openjdk-8-common.inc | 45 ++---------------------
 2 files changed, 39 insertions(+), 41 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)
diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-core/openjdk/openjdk-8-common.inc
index 97bf6e1..d0f7540 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"
 FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-pointer-checks"
 FLAGS_GCC8 = "-fno-lifetime-dse -fno-delete-null-pointer-checks -Wno-error=return-type"
 
-# 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 get_cflags_by_cc_version(d, version):
-    if version.isdigit():
-        return d.getVar('FLAGS_GCC%d' % int(version)) or ''
-    return ''
-
-def 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 get_cflags_by_cc_version(d, version)
-
-def 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 get_cflags_by_cc_version(d, version)
-
-
 # flags for -native, and for bits that need a host-tool during -cross
-BUILD_CFLAGS_append = " ${@get_build_cflags(d)}"
-BUILD_CXXFLAGS_append = " ${@get_build_cflags(d)}"
+BUILD_CFLAGS_append = " ${@openjdk_build_helper_get_build_cflags(d)}"
+BUILD_CXXFLAGS_append = " ${@openjdk_build_helper_get_build_cflags(d)}"
 # flags for -cross
-TARGET_CFLAGS_append = " ${@get_target_cflags(d)}"
-TARGET_CXXFLAGS_append = " ${@get_target_cflags(d)}"
+TARGET_CFLAGS_append = " ${@openjdk_build_helper_get_target_cflags(d)}"
+TARGET_CXXFLAGS_append = " ${@openjdk_build_helper_get_target_cflags(d)}"
-- 
2.18.0




More information about the Openembedded-devel mailing list