summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel McGregor <daniel.mcgregor@vecima.com>2016-06-22 10:38:45 -0600
committerOtavio Salvador <otavio@ossystems.com.br>2016-06-30 12:07:44 -0300
commit33ddb28a6428b02ddcc82d1954ecf27cd426fbb5 (patch)
treeeb39d51b3b35a2a3096bfd79ca95e2179dd0be8c
parent6483010d92be7f6e1e0a268d1ca4b5fc4353c70e (diff)
downloadmeta-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>
-rw-r--r--recipes-core/openjdk/openjdk-8-common.inc4
-rw-r--r--recipes-core/openjdk/openjdk-8-cross.inc11
-rw-r--r--recipes-core/openjdk/openjdk-8-native.inc15
-rw-r--r--recipes-core/openjdk/openjdk-8-release-72b05.inc1
-rw-r--r--recipes-core/openjdk/patches-openjdk-8/openjdk8-avoid-early-ldflags-expansion.patch53
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
240CFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks"
241CXXFLAGS_append = " -fno-lifetime-dse -fno-delete-null-pointer-checks"
242CXX_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
45EXTRA_OECONF_append = "\ 42EXTRA_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
83BUILD_LD="${BUILD_CCLD}" 84BUILD_LD="${BUILD_CCLD}"
84 85
85EXTRA_OEMAKE_append = '\ 86EXTRA_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"
15PACKAGECONFIG[alsa] = "--with-alsa,,alsa-lib-native" 15PACKAGECONFIG[alsa] = "--with-alsa,,alsa-lib-native"
16PACKAGECONFIG[jce] = "--enable-unlimited-crypto,," 16PACKAGECONFIG[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
21EXTRA_OECONF_append = "\ 18EXTRA_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
33require openjdk-8-common.inc 34require openjdk-8-common.inc
34 35
35CFLAGS_append = "${@jdk_cpp_options(d)}" 36CFLAGS_append = " ${@jdk_cpp_options(d)}"
36CPPFLAGS_append = "${@jdk_cpp_options(d)}" 37CPPFLAGS_append = "${@jdk_cpp_options(d)}"
37CXXFLAGS_append = "${@jdk_cpp_options(d)}" 38CXXFLAGS_append = " ${@jdk_cpp_options(d)}"
38 39
39export MAKE_VERBOSE = "y" 40export MAKE_VERBOSE = "y"
40export MFLAGS="${@jdk_make_options(d)} MAKE_VERBOSE=y QUIETLY= VERBOSE=-s LOG_LEVEL=trace" 41export MFLAGS="${@jdk_make_options(d)} MAKE_VERBOSE=y QUIETLY= VERBOSE=-s LOG_LEVEL=trace"
41 42
42EXTRA_OEMAKE_append = ' \ 43EXTRA_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
78146566: OpenJDK build can't handle commas in LDFLAGS
8Summary: Backport part of 8142907 to avoid early LDFLAGS expansion
9Reviewed-by: erikj
10
11diff --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" \