From 6801f6d4e19c88dabd5a02dfbbf69a2dcc8e079c Mon Sep 17 00:00:00 2001 From: Fupan Li Date: Fri, 29 Sep 2017 19:24:55 -0700 Subject: openjdk-8-common: Fix the issue of building failed adlc on host with gcc < 6 The patch recipes-core/openjdk/patches-openjdk-8/openjdk8-fix-adlc-flags.patch had tried to fix this issue, and it tried to filter out the TARGET_FLAGS/TARGET_ CXXFLGAS, but for the flags such as "-fno-lifetime-dse" was added to CFLAGS/CXXFLAGS, directly, thus that patch failed to filter it out. To fix this issue, it's better to add those GCC version specific flags to BUILD_CFLAGS/ BUILD_CXXFLAGS and TARGET_CFLAGS/TARGET_CXXFLAGS separatedly, thus that patch can work as expected. Signed-off-by: Fupan Li Signed-off-by: Maxin B. John --- recipes-core/openjdk/openjdk-8-common.inc | 36 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-core/openjdk/openjdk-8-common.inc index 83828e1..c609232 100644 --- a/recipes-core/openjdk/openjdk-8-common.inc +++ b/recipes-core/openjdk/openjdk-8-common.inc @@ -231,27 +231,39 @@ FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-pointer-checks" # version is and only add the flags that are appropriate for that GCC # version. -def version_specific_cflags(d): +def version_specific_cflags(d, toolchain): extraflags = None version = None - if bb.data.inherits_class('native', d): - from subprocess import Popen, PIPE + from subprocess import Popen, PIPE + cmd = d.expand('%s -dumpversion' % toolchain ).split() + cc = Popen(cmd, stdout=PIPE, stderr=PIPE) + version = cc.communicate()[0].decode('utf-8')[0] - cmd = d.expand('${CC} -dumpversion').split() - cc = Popen(cmd, stdout=PIPE, stderr=PIPE) - version = cc.communicate()[0].decode('utf-8')[0] + if version.isdigit(): + extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or '' + return extraflags + return '' + +python __anonymous() { + if bb.data.inherits_class('native', d): + toolchain = d.getVar('CC', True) + extraflags = version_specific_cflags(d, toolchain) + d.appendVar("CFLAGS", ' ' + extraflags) + d.appendVar("CXXFLAGS", ' ' + extraflags) else: # 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', expand=True)[0] - - if version.isdigit(): extraflags = d.getVar('FLAGS_GCC%d' % int(version), True) or '' - return extraflags - return '' + d.appendVar("TARGET_CFLAGS", ' ' + extraflags) + d.appendVar("TARGET_CXXFLAGS", ' ' + extraflags) + + toolchain = d.getVar('BUILD_CC', True) + extraflags = version_specific_cflags(d, toolchain) + d.appendVar("BUILD_CFLAGS", ' ' + extraflags) + d.appendVar("BUILD_CXXFLAGS", ' ' + extraflags) +} -CFLAGS_append = " ${@version_specific_cflags(d)}" -CXXFLAGS_append = " ${@version_specific_cflags(d)}" CXX_append = " -std=gnu++98" -- cgit v1.2.3-54-g00ecf