diff options
author | Daniel McGregor <daniel.mcgregor@vecima.com> | 2016-06-22 10:38:45 -0600 |
---|---|---|
committer | Otavio Salvador <otavio@ossystems.com.br> | 2016-06-30 12:07:44 -0300 |
commit | 33ddb28a6428b02ddcc82d1954ecf27cd426fbb5 (patch) | |
tree | eb39d51b3b35a2a3096bfd79ca95e2179dd0be8c | |
parent | 6483010d92be7f6e1e0a268d1ca4b5fc4353c70e (diff) | |
download | meta-java-33ddb28a6428b02ddcc82d1954ecf27cd426fbb5.tar.gz |
openjdk-8: make GCC6 happy
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.
Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
5 files changed, 68 insertions, 16 deletions
diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-core/openjdk/openjdk-8-common.inc index 70bd40c..dd3d397 100644 --- a/recipes-core/openjdk/openjdk-8-common.inc +++ b/recipes-core/openjdk/openjdk-8-common.inc | |||
@@ -236,3 +236,7 @@ EXTRA_OECONF_append = "\ | |||
236 | --with-build-number=${OPENJDK_BUILD_NUMBER} \ | 236 | --with-build-number=${OPENJDK_BUILD_NUMBER} \ |
237 | --with-update-version=${OPENJDK_UPDATE_VERSION} \ | 237 | --with-update-version=${OPENJDK_UPDATE_VERSION} \ |
238 | " | 238 | " |
239 | |||
240 | CFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks" | ||
241 | CXXFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks" | ||
242 | CXX_append = " -std=gnu++98" | ||
diff --git a/recipes-core/openjdk/openjdk-8-cross.inc b/recipes-core/openjdk/openjdk-8-cross.inc index 3189764..11e94ce 100644 --- a/recipes-core/openjdk/openjdk-8-cross.inc +++ b/recipes-core/openjdk/openjdk-8-cross.inc | |||
@@ -39,9 +39,6 @@ SRC_URI_append = "\ | |||
39 | file://jvm.cfg \ | 39 | file://jvm.cfg \ |
40 | " | 40 | " |
41 | 41 | ||
42 | # do not use --wth-extra-cflags, it breaks building demos for jdk | ||
43 | # maybe disabling demos is more reasonable than avoiding --wth-extra-cflags | ||
44 | # needs discussion | ||
45 | EXTRA_OECONF_append = "\ | 42 | EXTRA_OECONF_append = "\ |
46 | --with-jobs=${@get_jdk8_native_jobs(d)} \ | 43 | --with-jobs=${@get_jdk8_native_jobs(d)} \ |
47 | \ | 44 | \ |
@@ -53,6 +50,10 @@ EXTRA_OECONF_append = "\ | |||
53 | --disable-precompiled-headers \ | 50 | --disable-precompiled-headers \ |
54 | --disable-zip-debug-info \ | 51 | --disable-zip-debug-info \ |
55 | \ | 52 | \ |
53 | --with-extra-cflags='${CFLAGS}' \ | ||
54 | --with-extra-cxxflags='${CXXFLAGS}' \ | ||
55 | --with-extra-ldflags='${LDFLAGS}' \ | ||
56 | \ | ||
56 | ${@jdk_configure_options(d)} \ | 57 | ${@jdk_configure_options(d)} \ |
57 | " | 58 | " |
58 | 59 | ||
@@ -83,10 +84,6 @@ export MFLAGS="${@jdk_make_options(d)} MAKE_VERBOSE=y QUIETLY= VERBOSE=-s LOG_LE | |||
83 | BUILD_LD="${BUILD_CCLD}" | 84 | BUILD_LD="${BUILD_CCLD}" |
84 | 85 | ||
85 | EXTRA_OEMAKE_append = '\ | 86 | EXTRA_OEMAKE_append = '\ |
86 | OE_CFLAGS="${CFLAGS}" \ | ||
87 | OE_CPPFLAGS="${CPPFLAGS}" \ | ||
88 | OE_CXXFLAGS="${CXXFLAGS}" \ | ||
89 | OE_LDFLAGS="${LDFLAGS}" \ | ||
90 | ${@jdk_make_options(d)} \ | 87 | ${@jdk_make_options(d)} \ |
91 | ALT_SDT_H="${STAGING_INCDIR}" \ | 88 | ALT_SDT_H="${STAGING_INCDIR}" \ |
92 | ALT_CUPS_HEADERS_PATH="${STAGING_INCDIR}" \ | 89 | ALT_CUPS_HEADERS_PATH="${STAGING_INCDIR}" \ |
diff --git a/recipes-core/openjdk/openjdk-8-native.inc b/recipes-core/openjdk/openjdk-8-native.inc index 7a37d1a..91080d2 100644 --- a/recipes-core/openjdk/openjdk-8-native.inc +++ b/recipes-core/openjdk/openjdk-8-native.inc | |||
@@ -15,15 +15,16 @@ PACKAGECONFIG[cups] = "--with-cups,,cups" | |||
15 | PACKAGECONFIG[alsa] = "--with-alsa,,alsa-lib-native" | 15 | PACKAGECONFIG[alsa] = "--with-alsa,,alsa-lib-native" |
16 | PACKAGECONFIG[jce] = "--enable-unlimited-crypto,," | 16 | PACKAGECONFIG[jce] = "--enable-unlimited-crypto,," |
17 | 17 | ||
18 | # do not use --wth-extra-cflags, it breaks building demos for jdk | ||
19 | # maybe disabling demos is more reasonable than avoiding --wth-extra-cflags | ||
20 | # needs discussion | ||
21 | EXTRA_OECONF_append = "\ | 18 | EXTRA_OECONF_append = "\ |
22 | --with-jobs=${@get_jdk8_native_jobs(d)} \ | 19 | --with-jobs=${@get_jdk8_native_jobs(d)} \ |
23 | \ | 20 | \ |
24 | --with-sys-root=${STAGING_DIR_NATIVE} \ | 21 | --with-sys-root=${STAGING_DIR_NATIVE} \ |
25 | --with-tools-dir=${STAGING_DIR_NATIVE} \ | 22 | --with-tools-dir=${STAGING_DIR_NATIVE} \ |
26 | --with-boot-jdk=${STAGING_LIBDIR_NATIVE}/jvm/icedtea7-native \ | 23 | --with-boot-jdk=${STAGING_LIBDIR_NATIVE}/jvm/icedtea7-native \ |
24 | --with-extra-cflags='${CFLAGS}' \ | ||
25 | --with-extra-cxxflags='${CXXFLAGS}' \ | ||
26 | --with-extra-ldflags='${LDFLAGS}' \ | ||
27 | --with-stdc++lib=dynamic \ | ||
27 | ${@jdk_configure_options(d)} \ | 28 | ${@jdk_configure_options(d)} \ |
28 | " | 29 | " |
29 | # --with-boot-jdk=${WORKDIR}/fake-jdk | 30 | # --with-boot-jdk=${WORKDIR}/fake-jdk |
@@ -32,18 +33,14 @@ inherit native | |||
32 | 33 | ||
33 | require openjdk-8-common.inc | 34 | require openjdk-8-common.inc |
34 | 35 | ||
35 | CFLAGS_append = "${@jdk_cpp_options(d)}" | 36 | CFLAGS_append = " ${@jdk_cpp_options(d)}" |
36 | CPPFLAGS_append = "${@jdk_cpp_options(d)}" | 37 | CPPFLAGS_append = "${@jdk_cpp_options(d)}" |
37 | CXXFLAGS_append = "${@jdk_cpp_options(d)}" | 38 | CXXFLAGS_append = " ${@jdk_cpp_options(d)}" |
38 | 39 | ||
39 | export MAKE_VERBOSE = "y" | 40 | export MAKE_VERBOSE = "y" |
40 | export MFLAGS="${@jdk_make_options(d)} MAKE_VERBOSE=y QUIETLY= VERBOSE=-s LOG_LEVEL=trace" | 41 | export MFLAGS="${@jdk_make_options(d)} MAKE_VERBOSE=y QUIETLY= VERBOSE=-s LOG_LEVEL=trace" |
41 | 42 | ||
42 | EXTRA_OEMAKE_append = ' \ | 43 | EXTRA_OEMAKE_append = ' \ |
43 | OE_CFLAGS="${CFLAGS}" \ | ||
44 | OE_CPPFLAGS="${CPPFLAGS}" \ | ||
45 | OE_CXXFLAGS="${CXXFLAGS}" \ | ||
46 | OE_LDFLAGS="${LDFLAGS}" \ | ||
47 | ${@jdk_make_options(d)} \ | 44 | ${@jdk_make_options(d)} \ |
48 | MAKE_VERBOSE=y VERBOSE=-s LOG_LEVEL=trace \ | 45 | MAKE_VERBOSE=y VERBOSE=-s LOG_LEVEL=trace \ |
49 | QUIETLY= \ | 46 | QUIETLY= \ |
diff --git a/recipes-core/openjdk/openjdk-8-release-72b05.inc b/recipes-core/openjdk/openjdk-8-release-72b05.inc index f8ba367..ce31f3d 100644 --- a/recipes-core/openjdk/openjdk-8-release-72b05.inc +++ b/recipes-core/openjdk/openjdk-8-release-72b05.inc | |||
@@ -4,6 +4,7 @@ PATCHES_URI="\ | |||
4 | file://dont-expect-fqpn-for-make.patch;striplevel=0 \ | 4 | file://dont-expect-fqpn-for-make.patch;striplevel=0 \ |
5 | file://openjdk8-no-genx11-in-headless.patch;apply=no \ | 5 | file://openjdk8-no-genx11-in-headless.patch;apply=no \ |
6 | file://openjdk8-no-unused-deps.patch;apply=no \ | 6 | file://openjdk8-no-unused-deps.patch;apply=no \ |
7 | file://openjdk8-avoid-early-ldflags-expansion.patch;apply=no \ | ||
7 | file://openjdk8-find-compiler-fix-env-respect.patch;apply=no \ | 8 | file://openjdk8-find-compiler-fix-env-respect.patch;apply=no \ |
8 | file://openjdk8-prevent-debuginfo-in-favour-of-openembedded-package-split.patch;apply=no \ | 9 | file://openjdk8-prevent-debuginfo-in-favour-of-openembedded-package-split.patch;apply=no \ |
9 | " | 10 | " |
diff --git a/recipes-core/openjdk/patches-openjdk-8/openjdk8-avoid-early-ldflags-expansion.patch b/recipes-core/openjdk/patches-openjdk-8/openjdk8-avoid-early-ldflags-expansion.patch new file mode 100644 index 0000000..528560c --- /dev/null +++ b/recipes-core/openjdk/patches-openjdk-8/openjdk8-avoid-early-ldflags-expansion.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | # HG changeset patch | ||
2 | # User andrew | ||
3 | # Date 1452261185 0 | ||
4 | # Fri Jan 08 13:53:05 2016 +0000 | ||
5 | # Node ID 92c6a16b6daccda4b7c7f9612e4057df006b9f22 | ||
6 | # Parent b95e325137b439b33a7bb013be21475df5da3a03 | ||
7 | 8146566: OpenJDK build can't handle commas in LDFLAGS | ||
8 | Summary: Backport part of 8142907 to avoid early LDFLAGS expansion | ||
9 | Reviewed-by: erikj | ||
10 | |||
11 | diff --git jdk/make/CompileDemos.gmk jdk/make/CompileDemos.gmk | ||
12 | --- jdk/make/CompileDemos.gmk | ||
13 | +++ jdk/make/CompileDemos.gmk | ||
14 | @@ -224,17 +224,17 @@ define SetupJVMTIDemo | ||
15 | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)/README.txt) \ | ||
16 | $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)/sample.makefile.txt) | ||
17 | BUILD_DEMO_JVMTI_$1_EXTRA_INC := $$(addprefix -I, $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC)) | ||
18 | BUILD_DEMO_JVMTI_$1_LANG := C | ||
19 | ifneq (, $4) | ||
20 | BUILD_DEMO_JVMTI_$1_LANG := $4 | ||
21 | endif | ||
22 | ifeq (C++, $4) | ||
23 | - $1_EXTRA_CXX := $(LDFLAGS_CXX_JDK) $(LIBCXX) | ||
24 | + $1_EXTRA_CXX := $$(LDFLAGS_CXX_JDK) $(LIBCXX) | ||
25 | endif | ||
26 | |||
27 | $1_CXXFLAGS := $(CXXFLAGS_JDKLIB) -I$(JDK_TOPDIR)/src/share/demo/jvmti/$1 \ | ||
28 | $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 \ | ||
29 | $(CXXFLAGS_DEBUG_SYMBOLS) | ||
30 | ifeq ($1-$(OPENJDK_TARGET_CPU_ARCH), waiters-sparc) | ||
31 | $1_FILTER := -xregs=no%appl | ||
32 | $1_CXXFLAGS := $$(filter-out $$($1_FILTER), $$($1_CXXFLAGS)) | ||
33 | @@ -246,18 +246,18 @@ define SetupJVMTIDemo | ||
34 | -I$(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_INC) $3 | ||
35 | |||
36 | # Remove the -incremental:no setting to get .ilk-files like in the old build. | ||
37 | $$(eval $$(call SetupNativeCompilation,BUILD_DEMO_JVMTI_$1, \ | ||
38 | SRC := $(JDK_TOPDIR)/src/share/demo/jvmti/$1 $$(BUILD_DEMO_JVMTI_$1_EXTRA_SRC), \ | ||
39 | LANG := $$(BUILD_DEMO_JVMTI_$1_LANG), \ | ||
40 | OPTIMIZATION := LOW, \ | ||
41 | CXXFLAGS := $$($1_CXXFLAGS), \ | ||
42 | - LDFLAGS := $(filter-out -incremental:no -opt:ref, $(LDFLAGS_JDKLIB)), \ | ||
43 | - LDFLAGS_macosx := $(call SET_EXECUTABLE_ORIGIN), \ | ||
44 | + LDFLAGS := $(filter-out -incremental:no -opt:ref, $$(LDFLAGS_JDKLIB)), \ | ||
45 | + LDFLAGS_macosx := $$(call SET_EXECUTABLE_ORIGIN), \ | ||
46 | LDFLAGS_SUFFIX := $$($1_EXTRA_CXX), \ | ||
47 | LDFLAGS_SUFFIX_posix := $5, \ | ||
48 | LDFLAGS_SUFFIX_windows := $6, \ | ||
49 | LDFLAGS_SUFFIX_solaris := $7 -lc, \ | ||
50 | LDFLAGS_SUFFIX_linux := $8, \ | ||
51 | VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ | ||
52 | RC_FLAGS := $$(RC_FLAGS) \ | ||
53 | -D "JDK_FNAME=$1.dll" \ | ||