On 11 Jul 2016 11:44 a.m., "Otavio Salvador" < otavio.salva...@ossystems.com.br> wrote: > > On Mon, Jul 11, 2016 at 11:33 AM, Khem Raj <raj.k...@gmail.com> wrote: > > On Mon, Jul 11, 2016 at 4:29 AM, Patrick Ohly <patrick.o...@intel.com> wrote: > >> Dan McGregor <danismostlikely <at> gmail.com> writes: > >>> From: Daniel McGregor <daniel.mcgregor <at> vecima.com> > >>> > >>> GCC 6 sets the default C++ standard to C++14 and introduces dead store > >>> elimination by default. OpenJDK 8 is not ready for either of these > >>> changes, so set the C++ standard back to gnu++98 and disable dead > >>> store elimination. > >>> > >>> Switched to using --with-extra-cflags, cxxflags, and ldflags. The added > >>> patch fixes building when using those flags, and are needed to get > >>> CFLAGS into the JDK build in the native case. > >> > >> Has anyone tested this on a host system where gcc is still 4.x, like 4.9.2 > >> on Debian Wheezy? > >> > >> I'm finding that -fno-lifetime-dse is also getting passed to the gcc used > >> for compiling native binaries (obviously in openjdk-8-native, but also for > >> some helper executables in openjdk-8). This then breaks the compilation > >> because older gcc rejects that flag. > >> > >> I've briefly toyed with the patch below which worked for openjdk-8-native, > >> but not for openjdk-8. I'm just going to work around it by staying on gcc > >> 5.x and clearing these extra flags. > >> > >> I'm not familiar enough with the openjdk-8 build process to propose a better > >> solution, but perhaps someone else has an idea? > >> > >> diff --git a/meta-java/recipes-core/openjdk/openjdk-8-common.inc > >> b/meta-java/recipes-core/openjdk/openjdk-8-common.inc > >> index dd3d397..060d828 100644 > >> --- a/meta-java/recipes-core/openjdk/openjdk-8-common.inc > >> +++ b/meta-java/recipes-core/openjdk/openjdk-8-common.inc > >> @@ -237,6 +237,25 @@ EXTRA_OECONF_append = "\ > >> --with-update-version=${OPENJDK_UPDATE_VERSION} \ > >> " > >> > >> -CFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks" > >> -CXXFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks" > >> +# GCC 6 sets the default C++ standard to C++14 and introduces dead store > >> +# elimination by default. OpenJDK 8 is not ready for either of these > >> +# changes. > >> +FLAGS_GCC6 = "-fno-lifetime-dse -fno-delete-null-pointer-checks" > >> + > >> +# 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 unset the flags when gcc is not yet GCC 6. > >> +python () { > >> + if d.getVar('PN', True).endswith('-native'): > >> + import re, subprocess > >> + version = subprocess.check_output(d.expand('${CC} > >> --version').split()).decode('utf-8') > >> + m = re.search(r'^gcc.* (\d+)(\.\d+)*$', version, re.MULTILINE) > >> + if m and int(m.group(1)) < 6: > >> + d.setVar('FLAGS_GCC6', '') > >> +} > >> + > >> +CFLAGS_append = " ${FLAGS_GCC6}" > >> +CXXFLAGS_append = " ${FLAGS_GCC6}" > >> CXX_append = " -std=gnu++98" > > > > I can see this needed in several other cases too. May be this should be made > > a common utility > > I agree but this can be done after we fix meta-java case, so we can > avoid a bottleneck here.
Yup. I did know about this. I'm glad somebody found a solution. > > -- > Otavio Salvador O.S. Systems > http://www.ossystems.com.br http://code.ossystems.com.br > Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 > -- > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel