aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/openjdk
diff options
context:
space:
mode:
authorHenning Heinold <h.heinold@tarent.de>2010-07-07 18:02:19 +0200
committerHenning Heinold <heinold@inf.fu-berlin.de>2010-07-08 15:52:08 +0200
commitecb3cf8e4c3d0a4f26c05b491d3a8025863a60b5 (patch)
tree77fddb481c205058357931c8613f01accd854434 /recipes/openjdk
parent22afd95e74d273b228c7aa685a81d14f16ae1e3c (diff)
downloadopenembedded-ecb3cf8e4c3d0a4f26c05b491d3a8025863a60b5.tar.gz
openjdk: move over the recipes from jalimo
Diffstat (limited to 'recipes/openjdk')
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/build-hacks.patch31
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/cacao-disable-stackbase-check.patch12
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/cacao-vfp-compat.patch37
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/fix-llvm-libs.patch13
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/fix_hotspot_crosscompile.patch94
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-crosscompile-fix.patch214
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-fix-jar-command.patch27
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hostbuildcc.patch12
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-glibc-version.patch23
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isfinte.patch15
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isnanf.patch21
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-loadavg.patch28
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-RTLD_NOLOAD.patch13
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-iconv-uclibc.patch39
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-remove-unused-backtrace.patch51
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-unpack-uclibc.patch12
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-launcher-stdc++.patch13
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-libnet-renaming.patch148
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-remove_werror.patch14
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/icedtea-unbreak-float.patch18
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/mkbc_returncode.patch11
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/shark-build-openjdkdir.patch13
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/thumbee.patch15
-rw-r--r--recipes/openjdk/openjdk-6-6b18-1.8/zero-cmpswap-long.patch20
-rw-r--r--recipes/openjdk/openjdk-6-common.inc473
-rw-r--r--recipes/openjdk/openjdk-6-release-6b18.inc115
-rw-r--r--recipes/openjdk/openjdk-6_6b18-1.8.bb3
27 files changed, 1485 insertions, 0 deletions
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/build-hacks.patch b/recipes/openjdk/openjdk-6-6b18-1.8/build-hacks.patch
new file mode 100644
index 0000000000..02a83005b6
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/build-hacks.patch
@@ -0,0 +1,31 @@
+Index: icedtea6-1.8/Makefile.am
+===================================================================
+--- icedtea6-1.8.orig/Makefile.am 2010-04-12 23:55:51.754838172 +0200
++++ icedtea6-1.8/Makefile.am 2010-06-16 15:17:10.224708601 +0200
+@@ -477,6 +477,11 @@
+ JAVAC="" \
+ JAVA_HOME="" \
+ JDK_HOME="" \
++ OE_CFLAGS="$(OE_CFLAGS)" \
++ OE_CPPFLAGS="$(OE_CPPFLAGS)" \
++ OE_CXXFLAGS="$(OE_CXXFLAGS)" \
++ OE_LDFLAGS="$(OE_LDFLAGS)" \
++ OE_LAUNCHER_LDFLAGS="$(OE_LAUNCHER_LDFLAGS)" \
+ DISTRIBUTION_ID="$(DIST_ID)" \
+ DERIVATIVE_ID="$(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)" \
+ DEBUG_CLASSFILES="true" \
+Index: icedtea6-1.8/javac.in
+===================================================================
+--- icedtea6-1.8.orig/javac.in 2010-03-25 15:10:41.714835519 +0100
++++ icedtea6-1.8/javac.in 2010-06-16 15:14:31.205334756 +0200
+@@ -35,7 +35,9 @@
+ elif [ ! -z "@ECJ@" ] ; then
+ @ECJ@ -1.5 -nowarn $bcoption $NEW_ARGS
+ else
++ # Compiling hotspot-tools consumes tons of memory and exceeds any default
++ # limits for jamvm and cacao.
+ CLASSPATH=@ECJ_JAR@${CLASSPATH:+:}$CLASSPATH \
+- @JAVA@ org.eclipse.jdt.internal.compiler.batch.Main -1.5 -nowarn $bcoption $NEW_ARGS
++ @JAVA@ -Xmx1024m org.eclipse.jdt.internal.compiler.batch.Main -1.5 -nowarn $bcoption $NEW_ARGS
+ fi
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/cacao-disable-stackbase-check.patch b/recipes/openjdk/openjdk-6-6b18-1.8/cacao-disable-stackbase-check.patch
new file mode 100644
index 0000000000..d67614273b
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/cacao-disable-stackbase-check.patch
@@ -0,0 +1,12 @@
+Index: cacao/cacao/src/mm/boehm-gc/os_dep.c
+===================================================================
+--- cacao/cacao/src/mm/boehm-gc/os_dep.c 2009-02-15 16:29:15.000000000 +0100
++++ cacao/cacao/src/mm/boehm-gc/os_dep.c 2009-02-15 16:29:24.000000000 +0100
+@@ -1077,7 +1077,6 @@
+ c = stat_buf[buf_offset++];
+ }
+ close(f);
+- if (result < 0x10000000) ABORT("Absurd stack bottom value");
+ return (ptr_t)result;
+ }
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/cacao-vfp-compat.patch b/recipes/openjdk/openjdk-6-6b18-1.8/cacao-vfp-compat.patch
new file mode 100644
index 0000000000..09ba9845fa
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/cacao-vfp-compat.patch
@@ -0,0 +1,37 @@
+Index: cacao/cacao/src/vm/jit/arm/codegen.c
+===================================================================
+--- cacao/cacao/src/vm/jit/arm/codegen.c 2008-10-01 16:23:21.439856241 +0200
++++ cacao/cacao/src/vm/jit/arm/codegen.c 2008-10-01 16:41:24.278841537 +0200
+@@ -2353,10 +2353,12 @@
+
+ d = md->returntype.type;
+
+-#if !defined(__SOFTFP__)
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ /* TODO: this is only a hack, since we use R0/R1 for float
+ return! this depends on gcc; it is independent from
+- our ENABLE_SOFTFLOAT define */
++ our ENABLE_SOFTFLOAT define
++ It is only needed for -mfpu=fpa -mfloat-abi=hard!
++ */
+ if (iptr->opc == ICMD_BUILTIN && d != TYPE_VOID && IS_FLT_DBL_TYPE(d)) {
+ #if 0 && !defined(NDEBUG)
+ dolog("BUILTIN that returns float or double (%s.%s)", m->clazz->name->text, m->name->text);
+@@ -3019,7 +3021,7 @@
+ s1 = (s4) (cd->mcodeptr - cd->mcodebase);
+ M_RECOMPUTE_PV(s1);
+
+-#if !defined(__SOFTFP__)
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ /* TODO: this is only a hack, since we use R0/R1 for float return! */
+ /* this depends on gcc; it is independent from our ENABLE_SOFTFLOAT define */
+ if (md->returntype.type != TYPE_VOID && IS_FLT_DBL_TYPE(md->returntype.type)) {
+@@ -3030,7 +3032,7 @@
+ /* M_CAST_FLT_TO_INT_TYPED(md->returntype.type, REG_FRESULT, REG_RESULT_TYPED(md->returntype.type)); */
+ if (IS_2_WORD_TYPE(md->returntype.type)) {
+ DCD(0xed2d8102); /* stfd f0, [sp, #-8]! */
+- M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
++ M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
+ } else {
+ DCD(0xed2d0101); /* stfs f0, [sp, #-4]!*/
+ M_LDR_UPDATE(REG_RESULT, REG_SP, 4);
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/fix-llvm-libs.patch b/recipes/openjdk/openjdk-6-6b18-1.8/fix-llvm-libs.patch
new file mode 100644
index 0000000000..7c82daf06f
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/fix-llvm-libs.patch
@@ -0,0 +1,13 @@
+Index: icedtea6-1.8/configure.ac
+===================================================================
+--- icedtea6-1.8.orig/configure.ac
++++ icedtea6-1.8/configure.ac
+@@ -472,7 +472,7 @@
+ if test "x$LLVM_SHARED_LIB" != x && echo "$flag" | grep -q '^-lLLVM'; then
+ continue
+ fi
+- if echo "$flag" | grep -q '^-l'; then
++ if echo "$flag" | grep -q '^-l\|.so'; then
+ if test "x$LLVM_LIBS" != "x"; then
+ LLVM_LIBS="$LLVM_LIBS "
+ fi
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/fix_hotspot_crosscompile.patch b/recipes/openjdk/openjdk-6-6b18-1.8/fix_hotspot_crosscompile.patch
new file mode 100644
index 0000000000..38fb191ff8
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/fix_hotspot_crosscompile.patch
@@ -0,0 +1,94 @@
+Index: icedtea6-1.8/Makefile.am
+===================================================================
+--- icedtea6-1.8.orig/Makefile.am 2010-06-18 12:31:34.534667003 +0200
++++ icedtea6-1.8/Makefile.am 2010-06-18 12:31:34.714667729 +0200
+@@ -488,6 +488,7 @@
+ DEBUG_BINARIES="true" \
+ ALT_DROPS_DIR="$(abs_top_builddir)/drops" \
+ VERBOSE="$(VERBOSE)" \
++ CC_FOR_BUILD="$(CC_FOR_BUILD)" \
+ ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \
+ ALT_LIVECONNECT_DIST="$(abs_top_builddir)/liveconnect"
+
+Index: icedtea6-1.8/acinclude.m4
+===================================================================
+--- icedtea6-1.8.orig/acinclude.m4 2010-04-10 21:58:40.804836529 +0200
++++ icedtea6-1.8/acinclude.m4 2010-06-18 12:31:34.714667729 +0200
+@@ -900,6 +900,21 @@
+ AC_SUBST(ALT_CACAO_SRC_DIR)
+ ])
+
++AC_DEFUN([AC_CHECK_WITH_CC_FOR_BUILD],
++[
++ AC_MSG_CHECKING(for compiler used for subsidiary programs)
++ AC_ARG_WITH([cc-for-build],
++ [AS_HELP_STRING(--with-cc-for-build,specify the compiler for subsidiary (helper) programs)],
++ [
++ CC_FOR_BUILD="${withval}"
++ ],
++ [
++ CC_FOR_BUILD="\$(CC)"
++ ])
++ AC_MSG_RESULT(${CC_FOR_BUILD})
++ AC_SUBST(CC_FOR_BUILD)
++])
++
+ AC_DEFUN([AC_CHECK_WITH_GCJ],
+ [
+ AC_MSG_CHECKING([whether to compile ecj natively])
+Index: icedtea6-1.8/configure.ac
+===================================================================
+--- icedtea6-1.8.orig/configure.ac 2010-04-12 13:46:18.821086023 +0200
++++ icedtea6-1.8/configure.ac 2010-06-18 12:31:34.724666321 +0200
+@@ -44,6 +44,7 @@
+ IT_CHECK_FOR_MERCURIAL
+ IT_OBTAIN_HG_REVISIONS
+ AC_PATH_TOOL([LSB_RELEASE],[lsb_release])
++AC_CHECK_WITH_CC_FOR_BUILD
+ AC_CHECK_WITH_GCJ
+ AC_CHECK_WITH_HOTSPOT_BUILD
+ AC_PATH_TOOL([LINUX32],[linux32])
+Index: icedtea6-1.8/ports/hotspot/make/linux/makefiles/zeroshark.make
+===================================================================
+--- icedtea6-1.8.orig/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-03-25 15:10:42.061085966 +0100
++++ icedtea6-1.8/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-06-18 12:40:42.834666505 +0200
+@@ -32,6 +32,13 @@
+ Obj_Files += thumb2.o
+
+ CFLAGS += -DHOTSPOT_ASM
++CCFLAGS += -DHOTSPOT_ASM
++
++ifeq ($(CROSS_COMPILATION), true)
++ C_COMPILE_FOR_MKBC = $(CC_FOR_BUILD)
++else
++ C_COMPILE_FOR_MKBC = $(C_COMPILE)
++endif
+
+ %.o: %.S
+ @echo Assembling $<
+@@ -43,20 +50,20 @@
+
+ offsets_arm.s: mkoffsets
+ @echo Generating assembler offsets
+- ./mkoffsets > $@
++ $(QEMU) ./mkoffsets > $@
+
+ bytecodes_arm.s: bytecodes_arm.def mkbc
+ @echo Generatine ARM assembler bytecode sequences
+ $(CC_COMPILE) -E -x c++ - < $< | ./mkbc - $@ $(COMPILE_DONE)
+
+-mkbc: $(GAMMADIR)/tools/mkbc.c
++mkbc: $(GAMMADIR)/tools/mkbc.c
+ @echo Compiling mkbc tool
+- $(CC_COMPILE) -o $@ $< $(COMPILE_DONE)
++ $(C_COMPILE_FOR_MKBC) -o $@ $< $(COMPILE_DONE)
+
+-mkoffsets: asm_helper.cpp
++mkoffsets: asm_helper.cpp
+ @echo Compiling offset generator
+ $(QUIETLY) $(REMOVE_TARGET)
+- $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE)
++ $(CC_COMPILE) -static -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE)
+
+ endif
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-crosscompile-fix.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-crosscompile-fix.patch
new file mode 100644
index 0000000000..ec0f259e8c
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-crosscompile-fix.patch
@@ -0,0 +1,214 @@
+Index: openjdk/jdk/make/sun/awt/Makefile
+===================================================================
+--- openjdk.orig/jdk/make/sun/awt/Makefile 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/jdk/make/sun/awt/Makefile 2009-01-24 17:55:07.000000000 +0100
+@@ -509,10 +509,10 @@
+ #
+
+ ifeq ($(PLATFORM), linux)
+-CPPFLAGS += -I$(MOTIF_DIR)/include \
+- -I$(OPENWIN_HOME)/include \
+- -I$(OPENWIN_HOME)/include/X11/extensions \
+- -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
++#CPPFLAGS += -I$(MOTIF_DIR)/include \
++# -I$(OPENWIN_HOME)/include \
++# -I$(OPENWIN_HOME)/include/X11/extensions \
++CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
+ endif
+ CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../font \
+@@ -536,7 +536,7 @@
+ $(EVENT_MODEL)
+
+ ifeq ($(PLATFORM), linux)
+-LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
++#LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
+ endif
+
+ LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/$(TSOBJDIR) \
+Index: openjdk/jdk/make/sun/awt/mawt.gmk
+===================================================================
+--- openjdk.orig/jdk/make/sun/awt/mawt.gmk 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/jdk/make/sun/awt/mawt.gmk 2009-01-24 17:55:07.000000000 +0100
+@@ -194,8 +194,8 @@
+ CPPFLAGS += -I$(CUPS_HEADERS_PATH)
+
+ ifndef HEADLESS
+-CPPFLAGS += -I$(OPENWIN_HOME)/include
+-LDFLAGS += -L$(OPENWIN_LIB)
++#CPPFLAGS += -I$(OPENWIN_HOME)/include
++#LDFLAGS += -L$(OPENWIN_LIB)
+
+ endif # !HEADLESS
+
+@@ -223,8 +223,8 @@
+
+ ifeq ($(PLATFORM), linux)
+ # Checking for the X11/extensions headers at the additional location
+- CPPFLAGS += -I/X11R6/include/X11/extensions \
+- -I/usr/include/X11/extensions
++# CPPFLAGS += -I/X11R6/include/X11/extensions \
++# -I/usr/include/X11/extensions
+ endif
+
+ ifeq ($(PLATFORM), solaris)
+Index: openjdk/jdk/make/sun/xawt/Makefile
+===================================================================
+--- openjdk.orig/jdk/make/sun/xawt/Makefile 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/jdk/make/sun/xawt/Makefile 2009-01-24 17:55:07.000000000 +0100
+@@ -123,11 +123,12 @@
+ -I$(PLATFORM_SRC)/native/sun/awt
+
+ ifeq ($(PLATFORM), linux)
++# Very unsuitable for cross-compilation.
+ # Allows for builds on Debian GNU Linux, X11 is in a different place
+- CPPFLAGS += -I/usr/X11R6/include/X11/extensions \
+- -I/usr/include/X11/extensions \
+- -I$(MOTIF_DIR)/include \
+- -I$(OPENWIN_HOME)/include
++# CPPFLAGS += -I/usr/X11R6/include/X11/extensions \
++# -I/usr/include/X11/extensions \
++# -I$(MOTIF_DIR)/include \
++# -I$(OPENWIN_HOME)/include
+ endif
+
+ ifeq ($(PLATFORM), solaris)
+@@ -237,7 +238,9 @@
+ $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
+ $(SIZER_DIR) $(XLIBTYPES) "sizer" $(subst .,,$(suffix $(basename $@)))
+
+-$(SIZES): $(SIZERS)
++#$(SIZES): $(SIZERS)
++# Prevent binaries being created. Instead take what is available.
++$(SIZES):
+ @if [ "$(DOHACK)$@" = "true$(PREDEFINED_SIZES)" ]; then \
+ $(ECHO) COPYING $(PREDEFINED_SIZES_TMPL) into $@; \
+ $(CP) $(PREDEFINED_SIZES_TMPL) $@; \
+Index: openjdk/hotspot/make/linux/makefiles/vm.make
+===================================================================
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/vm.make 2009-01-24 17:55:07.000000000 +0100
+@@ -170,6 +170,7 @@
+ LIBS_VM += $(LLVM_LIBS)
+ endif
+
++LFLAGS_VM += $(OE_LDFLAGS)
+ LINK_VM = $(LINK_LIB.c)
+
+ # rule for building precompiled header
+Index: openjdk/hotspot/make/linux/makefiles/buildtree.make
+===================================================================
+--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2009-01-24 17:55:07.000000000 +0100
+@@ -343,7 +343,7 @@
+ echo "rm -f Queens.class"; \
+ echo "\$${JAVA_HOME}/bin/javac -d . $(GAMMADIR)/make/test/Queens.java"; \
+ echo '[ -f gamma_g ] && { gamma=gamma_g; }'; \
+- echo './$${gamma:-gamma} $(TESTFLAGS) Queens < /dev/null'; \
++ echo 'echo Silently skipping the execution of the gamma program'; \
+ ) > $@
+ $(QUIETLY) chmod +x $@
+
+Index: openjdk/corba/make/common/Defs-linux.gmk
+===================================================================
+--- openjdk.orig/corba/make/common/Defs-linux.gmk 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/corba/make/common/Defs-linux.gmk 2009-01-24 17:55:07.000000000 +0100
+@@ -82,9 +82,9 @@
+ CC_NO_OPT =
+
+ ifeq ($(PRODUCT), java)
+- _OPT = $(CC_HIGHER_OPT)
++ _OPT = $(OE_CFLAGS)
+ else
+- _OPT = $(CC_LOWER_OPT)
++ _OPT = $(OE_CFLAGS)
+ CPPFLAGS_DBG += -DLOGGING
+ endif
+
+@@ -94,7 +94,7 @@
+ # as the default.
+ CFLAGS_REQUIRED_alpha += -mieee -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+-CFLAGS_REQUIRED_arm += -D_LITTLE_ENDIAN
++CFLAGS_REQUIRED_arm += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_hppa +=
+ CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+@@ -221,7 +221,7 @@
+ #
+ # -L paths for finding and -ljava
+ #
+-LDFLAGS_OPT = -Xlinker -O1
++LDFLAGS_OPT = $(OE_LDFLAGS)
+ LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+ LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+
+Index: openjdk/jdk/make/common/Defs-linux.gmk
+===================================================================
+--- openjdk.orig/jdk/make/common/Defs-linux.gmk 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/jdk/make/common/Defs-linux.gmk 2009-01-24 17:55:07.000000000 +0100
+@@ -92,9 +92,9 @@
+ CC_NO_OPT =
+
+ ifeq ($(PRODUCT), java)
+- _OPT = $(CC_HIGHER_OPT)
++ _OPT = $(OE_CFLAGS)
+ else
+- _OPT = $(CC_LOWER_OPT)
++ _OPT = $(OE_CFLAGS)
+ CPPFLAGS_DBG += -DLOGGING
+ endif
+
+@@ -104,7 +104,7 @@
+ # as the default.
+ CFLAGS_REQUIRED_alpha += -mieee -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+-CFLAGS_REQUIRED_arm += -D_LITTLE_ENDIAN
++CFLAGS_REQUIRED_arm += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_hppa +=
+ CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+@@ -231,7 +231,7 @@
+ #
+ # -L paths for finding and -ljava
+ #
+-LDFLAGS_OPT = -Xlinker -O1
++LDFLAGS_OPT = $(OE_LDFLAGS)
+ LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+ LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+
+Index: openjdk/hotspot/make/linux/makefiles/gcc.make
+===================================================================
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2009-01-24 17:54:57.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2009-01-24 17:55:07.000000000 +0100
+@@ -119,7 +119,7 @@
+ CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
+
+ # The flags to use for an Optimized g++ build
+-OPT_CFLAGS += -O3
++OPT_CFLAGS += $(OE_CFLAGS)
+
+ # Hotspot uses very unstrict aliasing turn this optimization off
+ OPT_CFLAGS += -fno-strict-aliasing
+@@ -148,7 +148,7 @@
+ endif
+
+ # Enable linker optimization
+-LFLAGS += -Xlinker -O1
++LFLAGS += $(OE_LDFLAGS)
+
+ # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
+ MAPFLAG = -Xlinker --version-script=FILENAME
+Index: openjdk/hotspot/make/linux/makefiles/launcher.make
+===================================================================
+--- openjdk.orig/hotspot/make/linux/makefiles/launcher.make 2009-01-24 17:55:19.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/launcher.make 2009-01-24 17:56:05.000000000 +0100
+@@ -44,7 +44,7 @@
+ LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS)
+ else
+ LAUNCHER.o = launcher.o
+- LFLAGS_LAUNCHER += -L `pwd`
++ LFLAGS_LAUNCHER += -L `pwd` $(OE_LAUNCHER_LDFLAGS) $(OE_LDFLAGS)
+ LIBS_LAUNCHER += -l$(JVM) $(LIBS) -lstdc++
+ endif
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-fix-jar-command.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-fix-jar-command.patch
new file mode 100644
index 0000000000..607797e81f
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-fix-jar-command.patch
@@ -0,0 +1,27 @@
+Index: icedtea6-1.8/Makefile.am
+===================================================================
+--- icedtea6-1.8.orig/Makefile.am 2010-06-17 10:29:13.654666801 +0200
++++ icedtea6-1.8/Makefile.am 2010-06-17 10:30:50.334670771 +0200
+@@ -1662,12 +1662,7 @@
+ rm -f extra-source-files.txt
+
+ extra-lib/about.jar: stamps/extra-class-files.stamp
+- if ! test -d $(ICEDTEA_BOOT_DIR) ; \
+- then \
+- $(JAR) cf $@ -C extra-lib net ; \
+- else \
+- $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \
+- fi
++ $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ;
+
+ # PulseAudio based mixer
+ # (pulse-java)
+@@ -1750,7 +1745,7 @@
+ stamps/rewrite-rhino.stamp: stamps/rewriter.stamp $(RHINO_JAR)
+ if WITH_RHINO
+ mkdir -p rhino/rhino.{old,new}
+- (cd rhino/rhino.old ; jar xf $(RHINO_JAR))
++ (cd rhino/rhino.old ; $(ICEDTEA_BOOT_DIR)/bin/jar xf $(RHINO_JAR))
+ $(ICEDTEA_BOOT_DIR)/bin/java -cp $(abs_top_builddir)/rewriter \
+ com.redhat.rewriter.ClassRewriter \
+ $(abs_top_builddir)/rhino/rhino.old $(abs_top_builddir)/rhino/rhino.new \
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hostbuildcc.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hostbuildcc.patch
new file mode 100644
index 0000000000..5f2c98b930
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hostbuildcc.patch
@@ -0,0 +1,12 @@
+Index: openjdk/hotspot/make/linux/makefiles/rules.make
+===================================================================
+--- openjdk/hotspot/make/linux/makefiles/rules.make 2010-02-02 02:22:33.201668748 +0100
++++ openjdk/hotspot/make/linux/makefiles/rules.make 2010-02-02 02:23:08.480415783 +0100
+@@ -39,6 +39,7 @@
+ # $(CC) is the c compiler (cc/gcc), $(CCC) is the c++ compiler (CC/g++).
+ C_COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS)
+ CC_COMPILE = $(CCC) $(CPPFLAGS) $(CFLAGS)
++CC_HOST_COMPILE = $(BUILD_CC) $(CPPFLAGS) $(CFLAGS)
+
+ AS.S = $(AS) $(ASFLAGS)
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-glibc-version.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-glibc-version.patch
new file mode 100644
index 0000000000..faa90ea2d7
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-glibc-version.patch
@@ -0,0 +1,23 @@
+Index: icedtea6-1.8/build/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+===================================================================
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2010-06-09 22:22:13.696298239 +0200
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2010-06-09 22:24:15.308790737 +0200
+@@ -49,7 +49,6 @@
+ # include <string.h>
+ # include <syscall.h>
+ # include <sys/sysinfo.h>
+-# include <gnu/libc-version.h>
+ # include <sys/ipc.h>
+ # include <sys/shm.h>
+ # include <link.h>
+@@ -544,9 +543,7 @@
+ os::Linux::set_glibc_version(str);
+ } else {
+ // _CS_GNU_LIBC_VERSION is not supported, try gnu_get_libc_version()
+- static char _gnu_libc_version[32];
+- jio_snprintf(_gnu_libc_version, sizeof(_gnu_libc_version),
+- "glibc %s %s", gnu_get_libc_version(), gnu_get_libc_release());
++ static char _gnu_libc_version[32] = "2.9";
+ os::Linux::set_glibc_version(_gnu_libc_version);
+ }
+
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isfinte.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isfinte.patch
new file mode 100644
index 0000000000..7c5da597b1
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isfinte.patch
@@ -0,0 +1,15 @@
+Index: icedtea6-1.8/build/openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+===================================================================
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2010-06-09 21:41:28.576131825 +0200
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2010-06-09 21:41:55.555711815 +0200
+@@ -235,8 +235,8 @@
+
+ // Checking for finiteness
+
+-inline int g_isfinite(jfloat f) { return finite(f); }
+-inline int g_isfinite(jdouble f) { return finite(f); }
++inline int g_isfinite(jfloat f) { return isfinite(f); }
++inline int g_isfinite(jdouble f) { return isfinite(f); }
+
+
+ // Wide characters
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isnanf.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isnanf.patch
new file mode 100644
index 0000000000..494e96559f
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-isnanf.patch
@@ -0,0 +1,21 @@
+Index: icedtea6-1.8/build/openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+===================================================================
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2010-06-09 21:47:12.695674808 +0200
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2010-06-09 21:48:08.699007491 +0200
+@@ -220,14 +220,14 @@
+ // checking for nanness
+ #ifdef SOLARIS
+ #ifdef SPARC
+-inline int g_isnan(float f) { return isnanf(f); }
++inline int g_isnan(float f) { return __isnanf(f); }
+ #else
+ // isnanf() broken on Intel Solaris use isnand()
+ inline int g_isnan(float f) { return isnand(f); }
+ #endif
+ inline int g_isnan(double f) { return isnand(f); }
+ #elif LINUX
+-inline int g_isnan(float f) { return isnanf(f); }
++inline int g_isnan(float f) { return __isnanf(f); }
+ inline int g_isnan(double f) { return isnan(f); }
+ #else
+ #error "missing platform-specific definition here"
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-loadavg.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-loadavg.patch
new file mode 100644
index 0000000000..7da41fdc08
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-hotspot-loadavg.patch
@@ -0,0 +1,28 @@
+Index: icedtea6-1.8/build/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+===================================================================
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2010-06-09 22:16:09.406334411 +0200
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2010-06-09 22:19:38.952152043 +0200
+@@ -4325,7 +4325,22 @@
+ // Linux doesn't yet have a (official) notion of processor sets,
+ // so just return the system wide load average.
+ int os::loadavg(double loadavg[], int nelem) {
+- return ::getloadavg(loadavg, nelem);
++
++ FILE *LOADAVG;
++ double avg[3] = { 0.0, 0.0, 0.0 };
++ int i, res = -1;;
++
++ if ((LOADAVG = fopen("/proc/loadavg", "r"))) {
++ fscanf(LOADAVG, "%lf %lf %lf", &avg[0], &avg[1], &avg[2]);
++ res = 0;
++ fclose(LOADAVG);
++ }
++
++ for (i = 0; (i < nelem) && (i < 3); i++) {
++ loadavg[i] = avg[i];
++ }
++
++ return res;
+ }
+
+ void os::pause() {
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-RTLD_NOLOAD.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-RTLD_NOLOAD.patch
new file mode 100644
index 0000000000..9c70ba195b
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-RTLD_NOLOAD.patch
@@ -0,0 +1,13 @@
+Index: openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c
+===================================================================
+--- openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2010-06-13 15:18:05.655136951 +0200
++++ openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2010-06-13 15:20:29.601377967 +0200
+@@ -51,7 +51,7 @@
+ {
+ const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
+ // look up existing handle only, do not load
+- void *hModule = dlopen(libName, RTLD_NOLOAD);
++ void *hModule = dlopen(libName, RTLD_LAZY);
+ dprintf2("-handle for %s: %u\n", libName, hModule);
+ (*env)->ReleaseStringUTFChars(env, jLibName, libName);
+ return (jlong)hModule;
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-iconv-uclibc.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-iconv-uclibc.patch
new file mode 100644
index 0000000000..68f858167f
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-iconv-uclibc.patch
@@ -0,0 +1,39 @@
+Index: openjdk/jdk/make/java/npt/Makefile
+===================================================================
+--- openjdk/jdk/make/java/npt/Makefile 2010-06-13 15:11:02.598512448 +0200
++++ openjdk/jdk/make/java/npt/Makefile 2010-06-13 15:11:28.504759286 +0200
+@@ -65,6 +65,8 @@
+ # We don't want to link against -ljava
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ # Add -export options to explicitly spell exported symbols
+ ifeq ($(PLATFORM), windows)
+ OTHER_LCF += -export:nptInitialize -export:nptTerminate
+Index: icedtea6-1.8/openjdk-ecj/jdk/make/java/instrument/Makefile
+===================================================================
+--- openjdk/jdk/make/java/instrument/Makefile 2010-06-13 15:12:14.688505195 +0200
++++ openjdk/jdk/make/java/instrument/Makefile 2010-06-13 15:12:32.641425670 +0200
+@@ -123,6 +123,8 @@
+ # We don't want to link against -ljava
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ #
+ # Add to ambient vpath so we pick up the library files
+ #
+Index: openjdk/jdk/make/sun/splashscreen/Makefile
+===================================================================
+--- openjdk/jdk/make/sun/splashscreen/Makefile 2010-06-13 15:12:48.951840824 +0200
++++ openjdk/jdk/make/sun/splashscreen/Makefile 2010-06-13 15:13:01.191422891 +0200
+@@ -55,6 +55,8 @@
+
+ JAVALIB=
+
++LDLIBS += -liconv
++
+ #
+ # C Flags
+ #
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-remove-unused-backtrace.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-remove-unused-backtrace.patch
new file mode 100644
index 0000000000..09ab459084
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-remove-unused-backtrace.patch
@@ -0,0 +1,51 @@
+Index: openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
+===================================================================
+--- openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c 2010-06-13 13:44:00.741955478 +0200
++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c 2010-06-13 13:48:11.451931804 +0200
+@@ -27,9 +27,6 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xos.h>
+ #include <X11/Xatom.h>
+-#ifdef __linux__
+-#include <execinfo.h>
+-#endif
+
+ #include <jvm.h>
+ #include <jni.h>
+@@ -692,35 +689,11 @@
+
+ static XErrorHandler saved_error_handler = NULL;
+
+-#ifdef __linux__
+-void print_stack(void)
+-{
+- void *array[10];
+- size_t size;
+- char **strings;
+- size_t i;
+-
+- size = backtrace (array, 10);
+- strings = backtrace_symbols (array, size);
+-
+- fprintf (stderr, "Obtained %zd stack frames.\n", size);
+-
+- for (i = 0; i < size; i++)
+- fprintf (stderr, "%s\n", strings[i]);
+-
+- free (strings);
+-}
+-#endif
+-
+ static int NoisyXErrorHandler(Display * dpy, XErrorEvent * event) {
+ fprintf(stderr, "id=%x, serial=%x, ec=%d, rc=%d, mc=%d\n",
+ event->resourceid, event->serial, event->error_code,
+ event->request_code, event->minor_code);
+- /*
+- #ifdef __linux__
+- print_stack();
+- #endif
+- */
++
+ if (jvm != NULL) {
+ JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+ JNU_CallStaticMethodByName(env, NULL, "java/lang/Thread", "dumpStack", "()V");
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-unpack-uclibc.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-unpack-uclibc.patch
new file mode 100644
index 0000000000..40564f0109
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-jdk-unpack-uclibc.patch
@@ -0,0 +1,12 @@
+Index: openjdk/jdk/make/com/sun/java/pack/Makefile
+===================================================================
+--- openjdk/jdk/make/com/sun/java/pack/Makefile 2010-06-13 15:25:21.548426411 +0200
++++ openjdk/jdk/make/com/sun/java/pack/Makefile 2010-06-13 15:25:43.858007543 +0200
+@@ -103,6 +103,7 @@
+ OTHER_LDLIBS += $(LIBCXX) -lc
+ # setup the list of libraries to link in...
+ ifeq ($(PLATFORM), linux)
++ OTHER_LDLIBS += -lpthread
+ ifeq ("$(CC_VER_MAJOR)", "3")
+ OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
+ endif
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-launcher-stdc++.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-launcher-stdc++.patch
new file mode 100644
index 0000000000..ee24afab4d
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-launcher-stdc++.patch
@@ -0,0 +1,13 @@
+Index: openjdk/hotspot/make/linux/makefiles/launcher.make
+===================================================================
+--- openjdk.orig/hotspot/make/linux/makefiles/launcher.make 2009-01-16 17:30:56.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/launcher.make 2009-01-16 17:31:13.000000000 +0100
+@@ -45,7 +45,7 @@
+ else
+ LAUNCHER.o = launcher.o
+ LFLAGS_LAUNCHER += -L `pwd`
+- LIBS_LAUNCHER += -l$(JVM) $(LIBS)
++ LIBS_LAUNCHER += -l$(JVM) $(LIBS) -lstdc++
+ endif
+
+ LINK_LAUNCHER = $(LINK.c)
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-libnet-renaming.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-libnet-renaming.patch
new file mode 100644
index 0000000000..024969df97
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-libnet-renaming.patch
@@ -0,0 +1,148 @@
+Index: openjdk/jdk/make/java/net/Makefile
+===================================================================
+--- openjdk/jdk/make/java/net/Makefile 2010-07-05 12:28:58.476625401 +0200
++++ openjdk/jdk/make/java/net/Makefile 2010-07-05 12:29:11.876625138 +0200
+@@ -25,7 +25,7 @@
+
+ BUILDDIR = ../..
+ PACKAGE = java.net
+-LIBRARY = net
++LIBRARY = javanet
+ PRODUCT = sun
+ include $(BUILDDIR)/common/Defs.gmk
+
+Index: openjdk/jdk/make/java/nio/Makefile
+===================================================================
+--- openjdk/jdk/make/java/nio/Makefile 2010-07-05 12:31:27.046626250 +0200
++++ openjdk/jdk/make/java/nio/Makefile 2010-07-05 12:32:06.647874890 +0200
+@@ -139,11 +139,11 @@
+ endif
+ ifeq ($(PLATFORM), linux)
+ COMPILER_WARNINGS_FATAL=true
+-OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl
++OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -ljavanet -lpthread -ldl
+ endif
+ ifeq ($(PLATFORM), solaris)
+ OTHER_LDLIBS += $(JVMLIB) $(LIBSOCKET) -lposix4 -ldl \
+- -L$(LIBDIR)/$(LIBARCH) -ljava -lnet
++ -L$(LIBDIR)/$(LIBARCH) -ljava -ljavanet
+ endif # PLATFORM
+
+ #
+Index: openjdk/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
+===================================================================
+--- openjdk/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java 2010-07-05 17:40:56.467876415 +0200
++++ openjdk/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java 2010-07-05 17:41:43.326628410 +0200
+@@ -58,7 +58,7 @@
+ */
+ static {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ }
+
+ /**
+Index: openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java
+===================================================================
+--- openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java 2010-07-05 17:41:01.027875484 +0200
++++ openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java 2010-07-05 17:41:56.826626386 +0200
+@@ -74,7 +74,7 @@
+ */
+ static {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ }
+
+ /**
+Index: openjdk/jdk/src/share/classes/java/net/DatagramPacket.java
+===================================================================
+--- openjdk/jdk/src/share/classes/java/net/DatagramPacket.java 2010-07-05 17:41:02.017875980 +0200
++++ openjdk/jdk/src/share/classes/java/net/DatagramPacket.java 2010-07-05 17:42:06.057875677 +0200
+@@ -47,7 +47,7 @@
+ */
+ static {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ init();
+ }
+
+Index: openjdk/jdk/src/share/classes/java/net/InetAddress.java
+===================================================================
+--- openjdk/jdk/src/share/classes/java/net/InetAddress.java 2010-07-05 17:41:02.756626429 +0200
++++ openjdk/jdk/src/share/classes/java/net/InetAddress.java 2010-07-05 17:42:15.997875786 +0200
+@@ -230,7 +230,7 @@
+ static {
+ preferIPv6Address = java.security.AccessController.doPrivileged(
+ new GetBooleanAction("java.net.preferIPv6Addresses")).booleanValue();
+- AccessController.doPrivileged(new LoadLibraryAction("net"));
++ AccessController.doPrivileged(new LoadLibraryAction("javanet"));
+ init();
+ }
+
+Index: openjdk/jdk/src/share/classes/java/net/NetworkInterface.java
+===================================================================
+--- openjdk/jdk/src/share/classes/java/net/NetworkInterface.java 2010-07-05 17:41:03.547875282 +0200
++++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java 2010-07-05 17:42:22.647875475 +0200
+@@ -52,7 +52,7 @@
+ private boolean virtual = false;
+
+ static {
+- AccessController.doPrivileged(new LoadLibraryAction("net"));
++ AccessController.doPrivileged(new LoadLibraryAction("javanet"));
+ init();
+ }
+
+Index: openjdk/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java
+===================================================================
+--- openjdk/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java 2010-07-05 17:41:04.306628153 +0200
++++ openjdk/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java 2010-07-05 17:42:32.666627264 +0200
+@@ -89,7 +89,7 @@
+ }});
+ if (b != null && b.booleanValue()) {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ hasSystemProxies = init();
+ }
+ }
+Index: henning/bug/com.buglabs.build.oe/tmp/work/armv7a-angstrom-linux-gnueabi/openjdk-6-jre-6b18-1.8-r3.3/openjdk-src-dir/jdk/src/share/classes/sun/nio/ch/Util.java
+===================================================================
+--- openjdk/jdk/src/share/classes/sun/nio/ch/Util.java 2010-07-05 17:41:05.086626745 +0200
++++ openjdk/jdk/src/share/classes/sun/nio/ch/Util.java 2010-07-05 17:42:39.266626410 +0200
+@@ -354,7 +354,7 @@
+ return;
+ loaded = true;
+ java.security.AccessController
+- .doPrivileged(new sun.security.action.LoadLibraryAction("net"));
++ .doPrivileged(new sun.security.action.LoadLibraryAction("javanet"));
+ java.security.AccessController
+ .doPrivileged(new sun.security.action.LoadLibraryAction("nio"));
+ // IOUtil must be initialized; Its native methods are called from
+Index: openjdk/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
+===================================================================
+--- openjdk/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java 2010-07-05 17:41:05.896626691 +0200
++++ openjdk/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java 2010-07-05 17:42:45.606625991 +0200
+@@ -244,7 +244,7 @@
+
+ static {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ }
+
+ }
+Index: henning/bug/com.buglabs.build.oe/tmp/work/armv7a-angstrom-linux-gnueabi/openjdk-6-jre-6b18-1.8-r3.3/openjdk-src-dir/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
+===================================================================
+--- openjdk/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java 2010-07-05 17:41:06.786627210 +0200
++++ openjdk/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java 2010-07-05 17:42:51.926627747 +0200
+@@ -160,7 +160,7 @@
+
+ static {
+ java.security.AccessController.doPrivileged(
+- new sun.security.action.LoadLibraryAction("net"));
++ new sun.security.action.LoadLibraryAction("javanet"));
+ init0();
+
+ // start the address listener thread
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-remove_werror.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-remove_werror.patch
new file mode 100644
index 0000000000..f2ad035dfe
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-remove_werror.patch
@@ -0,0 +1,14 @@
+Index: openjdk/hotspot/make/linux/makefiles/gcc.make
+===================================================================
+--- openjdk/hotspot/make/linux/makefiles/gcc.make 2010-02-02 16:11:35.758533706 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2010-02-02 16:11:42.761456458 +0100
+@@ -98,9 +98,6 @@
+ CFLAGS += -pipe
+ endif
+
+-# Compiler warnings are treated as errors
+-WARNINGS_ARE_ERRORS = -Werror
+-
+ # Except for a few acceptable ones
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+ # conversions which might affect the values. To avoid that, we need to turn
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-unbreak-float.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-unbreak-float.patch
new file mode 100644
index 0000000000..9f875de917
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea-unbreak-float.patch
@@ -0,0 +1,18 @@
+Index: openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
+===================================================================
+--- openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2010-02-02 13:49:39.972718207 +0100
++++ openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2010-02-02 13:50:04.635639302 +0100
+@@ -27,13 +27,11 @@
+
+ #include "jfdlibm.h"
+
+-#ifdef __NEWVALID /* special setup for Sun test regime */
+ #if defined(i386) || defined(i486) || \
+ defined(intel) || defined(x86) || \
+ defined(i86pc) || defined(_M_IA64) || defined(ia64)
+ #define _LITTLE_ENDIAN
+ #endif
+-#endif
+
+ #ifdef _LITTLE_ENDIAN
+ #define __HI(x) *(1+(int*)&x)
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/mkbc_returncode.patch b/recipes/openjdk/openjdk-6-6b18-1.8/mkbc_returncode.patch
new file mode 100644
index 0000000000..13280b380a
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/mkbc_returncode.patch
@@ -0,0 +1,11 @@
+Index: icedtea6/ports/hotspot/tools/mkbc.c
+===================================================================
+--- icedtea6.orig/ports/hotspot/tools/mkbc.c 2010-04-01 12:25:13.791317722 +0200
++++ icedtea6/ports/hotspot/tools/mkbc.c 2010-04-01 12:27:34.151606177 +0200
+@@ -602,4 +602,6 @@
+ if (ferror(bci_f)) fatal("Error writing bci");
+ if (source_f != stdin) fclose(source_f);
+ if (bci_f != stdout) fclose(bci_f);
++
++ return 0;
+ }
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/shark-build-openjdkdir.patch b/recipes/openjdk/openjdk-6-6b18-1.8/shark-build-openjdkdir.patch
new file mode 100644
index 0000000000..4e89967df0
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/shark-build-openjdkdir.patch
@@ -0,0 +1,13 @@
+Index: icedtea6-1.8/Makefile.am
+===================================================================
+--- icedtea6-1.8.orig/Makefile.am 2010-06-30 11:30:49.526648376 +0200
++++ icedtea6-1.8/Makefile.am 2010-06-30 11:42:02.606648734 +0200
+@@ -1882,7 +1882,7 @@
+ # configure script arguments, quoted in single quotes
+ CONFIGURE_ARGS = @CONFIGURE_ARGS@
+ ADD_ZERO_CONFIGURE_ARGS = \
+- --with-openjdk=$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)/j2sdk-image \
++ --with-openjdk=$(abs_top_builddir)/bootstrap/jdk1.6.0 \
+ --enable-zero
+ if ADD_SHARK_BUILD
+ ADD_ZERO_CONFIGURE_ARGS += \
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/thumbee.patch b/recipes/openjdk/openjdk-6-6b18-1.8/thumbee.patch
new file mode 100644
index 0000000000..e436f8d341
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/thumbee.patch
@@ -0,0 +1,15 @@
+Index: icedtea6-1.8/ports/hotspot/make/linux/makefiles/zeroshark.make
+===================================================================
+--- icedtea6-1.8.orig/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-06-18 12:42:36.000000000 +0200
++++ icedtea6-1.8/ports/hotspot/make/linux/makefiles/zeroshark.make 2010-06-18 12:46:55.264667548 +0200
+@@ -31,8 +31,8 @@
+ Obj_Files += cppInterpreter_arm.o
+ Obj_Files += thumb2.o
+
+-CFLAGS += -DHOTSPOT_ASM
+-CCFLAGS += -DHOTSPOT_ASM
++CFLAGS += -DHOTSPOT_ASM -DTHUMB2EE
++CCFLAGS += -DHOTSPOT_ASM -DTHUMB2EE
+
+ ifeq ($(CROSS_COMPILATION, true)
+ C_COMPILE_FOR_MKBC = $(CC_FOR_BUILD)
diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/zero-cmpswap-long.patch b/recipes/openjdk/openjdk-6-6b18-1.8/zero-cmpswap-long.patch
new file mode 100644
index 0000000000..ca21ccfea4
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-6b18-1.8/zero-cmpswap-long.patch
@@ -0,0 +1,20 @@
+Index: icedtea6-1.8/ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp
+===================================================================
+--- icedtea6-1.8.orig/ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp 2010-06-17 10:26:16.885292426 +0200
++++ icedtea6-1.8/ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp 2010-06-17 10:29:19.034668305 +0200
+@@ -266,7 +266,15 @@
+ volatile jlong* dest,
+ jlong compare_value) {
+
++#ifdef ARM
++ return arm_compare_and_swap((jint *) dest, (jint) compare_value, (jint) exchange_value);
++#else
++#ifdef M68K
++ return m68k_compare_and_swap((jint *) dest, (jint) compare_value, (jint) exchange_value);
++#else
+ return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
++#endif // M68K
++#endif // ARM
+ }
+
+ inline intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value,
diff --git a/recipes/openjdk/openjdk-6-common.inc b/recipes/openjdk/openjdk-6-common.inc
new file mode 100644
index 0000000000..55b9d4b80f
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-common.inc
@@ -0,0 +1,473 @@
+DESCRIPTION = "Java runtime based upon the OpenJDK- and Icedtea Project"
+HOMEPAGE = "http://icedtea.classpath.org"
+LICENSE = "GPL with Classpath Exception"
+PRIORITY = "optional"
+SECTION = "libs"
+
+# Name of the icedtea tarball and top-level directory.
+ICEDTEA = "NEEDS TO BE SET"
+
+S = "${WORKDIR}/${ICEDTEA}"
+B = "${S}/build"
+
+INC_PR = "r3"
+
+SRC_URI = "\
+ ${ICEDTEA_URI} \
+ ${OPENJDK_URI} \
+ ${JAXWS_URI} \
+ ${JAF_URI} \
+ ${JAXP_URI} \
+ ${CACAO_URI} \
+ ${OEPATCHES} \
+ ${ICEDTEAPATCHES} \
+ "
+
+JDK_PN = "openjdk-6"
+JDK_DIR = "java-6-openjdk"
+
+PN = "${JDK_PN}-jre"
+PROVIDES = "${JDK_PN}"
+
+DEPENDS = "giflib libpng jpeg cups \
+ xalan-j xerces-j rhino \
+ freetype libxinerama libxt libxp libxrender libxtst libxi \
+ ant-native alsa-lib libffi \
+ icedtea6-native fastjar \
+ llvm2.7 cacaoh-openjdk-native \
+ "
+
+# The OpenJDK build with interpreter optimizations for ARM depends on a binary
+# that generates constants for an assembler source file. There is no other
+# way than to generate this on a pseudo machine. Cross-compiling would not help
+# because structure sizes and/or alignment may differ.
+DEPENDS_append_arm = " qemu-native "
+
+
+FILESPATHPKG = "openjdk-6-${PV}"
+
+# For compatibility with Poky:
+FILESPATH_append = ":${FILE_DIRNAME}/openjdk-6-${PV}"
+
+# No package should directly depend on this (it should require
+# java2-runtime instead).
+PRIVATE_LIBS = "\
+ libunpack.so libverify.so libjava.so libzip.so libnpt.so \
+ libjava_crw_demo.so libhprof.so libnet.so libnio.so \
+ libmanagement.so libinstrument.so libjsound.so libjsoundalsa.so \
+ libj2pcsc.so libj2pkcs11.so libj2gss.so libmlib_image.so \
+ libawt.so libsplashscreen.so libfreetype.so.6 libfontmanager.so \
+ libjpeg.so liblcms.so librmi.so libjawt.so libjaas_unix.so \
+ libattach.so libjdwp.so libdt_socket.so libhpi.so libjli.so \
+ libmawt.so libjvm.so \
+ libversionCheck.so libcompiledMethodLoad.so libgctest.so \
+ libheapViewer.so libheapTracker.so libminst.so libmtrace.so \
+ libwaiters.so libhprof.so \
+"
+
+
+inherit java autotools
+
+export ALT_CUPS_HEADERS_PATH = "${STAGING_INCDIR}"
+export ALT_FREETYPE_HEADERS_PATH = "${STAGING_INCDIR}/freetype2"
+export ALT_FREETYPE_LIB_PATH = "${STAGING_LIBDIR}"
+export CACAO_CONFIGURE_ARGS = "--with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh-openjdk-0.99.4"
+
+JAVA_HOME[unexport] = "1"
+
+EXTRA_OECONF = "\
+ --disable-docs \
+ --disable-pulse-java \
+ --disable-plugin \
+ \
+ --with-ecj=${STAGING_BINDIR_NATIVE}/foo \
+ --with-ecj-jar=${STAGING_DATADIR_JAVA_NATIVE}/ecj-bootstrap.jar \
+ --with-java=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/java \
+ --with-javac=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/javac \
+ --with-javah=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/javah \
+ --with-jar=${STAGING_BINDIR_NATIVE}/fastjar \
+ --with-rmic=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin/rmic \
+ --with-xalan2-jar=${STAGING_DATADIR_JAVA}/xalan2.jar \
+ --with-xalan2-serializer-jar=${STAGING_DATADIR_JAVA}/serializer.jar \
+ --with-xerces2-jar=${STAGING_DATADIR_JAVA}/xercesImpl.jar \
+ --with-rhino=${STAGING_DATADIR_JAVA}/rhino.jar \
+ --with-openjdk-src-dir=${WORKDIR}/openjdk-src-dir \
+ --with-gcj-home=${WORKDIR}/fake-jdk \
+ --with-parallel-jobs=${JDK_JOBS} \
+ \
+ --with-libgcj-jar=${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/jre/lib/rt.jar \
+ \
+ --with-pkgversion=${PV} \
+ --with-cc-for-build=${BUILD_CC} \
+ --enable-zero \
+ --with-additional-vms=shark,cacao \
+ --enable-openjdk-cross-compilation \
+ "
+
+
+# OpenJDK uses slightly different names for certain arches. We need to know
+# this to create some files which are expected by the build.
+def get_jdk_arch(d):
+ import bb
+
+ jdk_arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if jdk_arch == "x86_64":
+ jdk_arch = "amd64"
+ elif (jdk_arch == "i586" or jdk_arch == "i686"):
+ jdk_arch = "i586"
+
+ return jdk_arch
+
+JDK_ARCH = "${@get_jdk_arch(d)}"
+JDK_HOME = "${libdir_jvm}/${JDK_DIR}"
+
+# OpenJDK supports parallel compilation but uses a plain number for this.
+# In OE we have PARALLEL_MAKE which is the actual option passed to make,
+# e.g. "-j 4".
+def get_jdk_jobs(d):
+ import bb
+
+ pm = bb.data.getVar('PARALLEL_MAKE', d, 1);
+ if not pm:
+ return "1"
+
+ pm = pm.split(" ");
+ if (len(pm) == 2):
+ return pm[1]
+
+ # Whatever found in PARALLEL_MAKE was not suitable.
+ return "1"
+
+JDK_JOBS = "${@get_jdk_jobs(d)}"
+
+# A function that is needed in the Shark builds.
+def get_llvm_configure_arch(d):
+ import bb;
+
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if arch == "x86_64" or arch == "i486" or arch == "i586" or arch == "i686":
+ arch = "x86"
+ elif arch == "arm":
+ arch = "arm"
+ elif arch == "mipsel":
+ arch = "mips"
+ elif arch == "powerpc":
+ arch = "powerpc"
+ else:
+ oefatal("Your target architecture is not supported by this recipe");
+
+ return arch
+
+# Custom preparation of the sources which:
+# - cleans up the sources
+# - copies the patches into the proper directory
+# - prepares the FakeJDK directory structure
+#DISABLED because of incompatibility with oe stable 2009: do_prepareconfigure () {
+do_configure_prepend() {
+ chmod -R ug+w ${WORKDIR}/openjdk-src-dir
+ (cd ${WORKDIR}/openjdk-src-dir && sh ${S}/fsg.sh)
+
+ # Automatically copy everything that starts with "icedtea" (or "cacao") and ends with
+ # ".patch" into the patches directory.
+ find ${WORKDIR} -maxdepth 1 -name "icedtea*.patch" -exec cp {} ${S}/patches \;
+ find ${WORKDIR} -maxdepth 1 -name "cacao*.patch" -exec cp {} ${S}/patches \;
+
+ # use now the rt.jar from icedtea6-native
+ mkdir -p ${WORKDIR}/fake-jdk/jre/lib
+ ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/jre/lib/rt.jar ${WORKDIR}/fake-jdk/jre/lib/rt.jar
+
+ symlinked=false
+ oenote "Creating symlinks for fake-jdk"
+ mkdir -p ${WORKDIR}/fake-jdk/include
+ for i in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/include` ;do
+ bn=`basename $i`
+ oenote "Symlinking: $bn"
+ ln -sf $i ${WORKDIR}/fake-jdk/include/$bn;
+ symlinked=true
+ done
+
+ # If the symlinks have not been created the built cannot continue. This
+ # can happen if icedtea6-native is not ready at this point. The recipe
+ # should make sure this is not the case but a little sanity checking
+ # in such a complicated build can't be wrong.
+ if [ x$symlinked == xfalse ]
+ then
+ oefatal "Build b0rken! Have not created any symlinks for fake-jdk!"
+ else
+ oenote "fake-jdk setup appears sane."
+ fi
+}
+
+# Note: The following lines only work for OE.dev branch but cause an exception
+# in oe stable's 2009 bitbake. As such the function is prepended to do_configure instead.
+#addtask prepareconfigure after do_patch before do_configure
+# Makes prepareconfigure depend on icedtea6-native having being staged.
+#do_prepareconfigure[depends] += "icedtea6-native:do_populate_sysroot"
+
+
+do_configure_append() {
+ oe_runmake patch-ecj
+}
+
+# Work around broken variable quoting in oe-stable 2009 and provide the variable
+# via the environment which then overrides the erroneous value that was written
+# into '${ICETDEA}/Makefile'.
+# Icedtea's makefile is not compatible to parallelization so we cannot allow
+# passing a valid ${PARALLEL_MAKE} to it. OTOH OpenJDK's makefiles are
+# parallelizable and we need ${PARALLEL_MAKE} to derive the proper value.
+# The base for this quirk is that GNU Make only considers the last "-j" option.
+EXTRA_OEMAKE = '-j 1 CC="${CC}" CCC="${CXX}" CPP="${CPP}" CXX="${CXX}" CC_FOR_BUILD="${BUILD_CC}"'
+
+EXTRA_OEMAKE += ' \
+ OE_CFLAGS="${TARGET_CFLAGS}" \
+ OE_CPPFLAGS="${TARGET_CPPFLAGS}" \
+ OE_CXXFLAGS="${TARGET_CXXFLAGS}" \
+ OE_LDFLAGS="${TARGET_LDFLAGS}" \
+ '
+
+# Puts an OE specific string into the binary making it possible for the user
+# to know where it comes from (and blame the right people ...).
+DIST_ID = "Built for ${DISTRO}"
+DIST_NAME = "${DISTRO}"
+EXTRA_OEMAKE += 'DIST_NAME="${DIST_NAME}" DIST_ID="${DIST_ID}"'
+
+
+# llvm configure and compiles stuff
+
+export WANT_LLVM_RELEASE = "2.7"
+
+# Provides the target architecture to the configure script.
+export LLVM_CONFIGURE_ARCH="${@get_llvm_configure_arch(d)}"
+
+OE_LAUNCHER_LDFLAGS = "-Wl,-rpath-link,${STAGING_LIBDIR}/llvm2.7"
+
+EXTRA_OEMAKE += 'OE_LAUNCHER_LDFLAGS="${OE_LAUNCHER_LDFLAGS}"'
+
+
+# Large stack is required at least on x86_64 host, otherwise random segfaults appear:
+QEMU = "qemu-${TARGET_ARCH} ${QEMU_OPTIONS} -s 1048576 -L ${STAGING_DIR_TARGET}"
+
+EXTRA_OEMAKE += 'QEMU="${QEMU}"'
+
+# Name of the directory containing the compiled output
+BUILD_DIR = "build/linux-${JDK_ARCH}"
+
+# The build of OpenJDK is a 3-part process. For better restartability and overrideability they have been split into
+# three functions.
+# 1. compile Hotspot or Cacao (this one is supposed to be implemented according to wanted VM)
+# 2. compile openjdk-ecj (to have libraries as libjvm.so and libjava.so which are needed later)
+# 3. compile openjdk (the final result)
+
+do_compilestepone() {
+ oe_runmake bootstrap-directory-ecj
+
+ # now we need to override the tools.jar to point to the normal jdk's tools.jar
+ rm bootstrap/ecj/lib/tools.jar
+ ln -s ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/lib/tools.jar bootstrap/ecj/lib/tools.jar
+
+ # First build hotspot to get a libjvm.so (to link corba in the icedtea-ecj build)
+ echo "1/3 Building Hotspot"
+ oe_runmake hotspot
+
+ # Remove spurious libarch directory/symlink
+ rm -rf bootstrap/ecj/jre/lib/${JDK_ARCH} || true
+
+ # Provide a symlink to the target arch's libjvm.so (to link against)
+ ln -s `pwd`/openjdk-ecj/${BUILD_DIR}/j2sdk-image/jre/lib/${JDK_ARCH} bootstrap/jdk1.6.0/jre/lib/${JDK_ARCH}
+
+ # fake j2sdk-image
+ rm openjdk-ecj/${BUILD_DIR}/j2sdk-image/include || true
+ cp -ar openjdk-ecj/${BUILD_DIR}/hotspot/import/include openjdk-ecj/${BUILD_DIR}/j2sdk-image/
+ install -d openjdk-ecj/${BUILD_DIR}/j2sdk-image/bin
+}
+addtask compilestepone after do_qa_configure before do_compilesteptwo
+
+# This part can be shared between cacao and hotspot-zero builds.
+do_compilesteptwo() {
+ echo "2/3 Building bootstrap JDK"
+
+ # Take pre-generated binaries from -native build
+ install -d generated/sun/awt/X11/generator
+ ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/generated/sizer.32 generated/sun/awt/X11/generator/sizer.32
+ install -d openjdk/${BUILD_DIR}/gensrc/sun/awt/X11/generator
+ ln -sf ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/generated/sizer.32 openjdk/${BUILD_DIR}/gensrc/sun/awt/X11/generator/sizer.32
+
+ # Now cross-compile bootstrap JDK
+ rm stamps/icedtea-against-ecj.stamp stamps/icedtea-ecj.stamp || true
+ oe_runmake icedtea-against-ecj
+
+ ln -sf ../openjdk-ecj/${BUILD_DIR}/j2sdk-image bootstrap/icedtea
+
+ # Replace all executables with symlinks to their native equivalents.
+ for F in `find ${STAGING_LIBDIR_JVM_NATIVE}/icedtea6-native/bin -type f`
+ do
+ bf=`basename $F`
+ echo "Creating symlink for:" $bf
+ ln -sf $F bootstrap/icedtea/bin/$bf
+ done
+}
+addtask compilesteptwo after do_compilestepone before do_compile
+
+do_compile() {
+
+ echo "3/3 Building final JDK"
+
+ # Build the final Hotspot + OpenJDK
+ oe_runmake icedtea-against-icedtea \
+}
+
+do_install() {
+ install -d ${D}${libdir_jvm}
+ cp -R ${S}/build/openjdk/${BUILD_DIR}/j2sdk-image ${D}${JDK_HOME}
+
+ chmod u+rw -R ${D}${JDK_HOME}
+
+ # Fix symlink which would point into staging in the binary package.
+ ln -sf ${datadir_java}/rhino.jar ${D}${JDK_HOME}/jre/lib/rhino.jar
+
+ # JRE is a subset of JDK. So to save space and resemble what the BIG distros
+ # do we create symlinks from the JDK binaries to their counterparts in the
+ # JRE folder (which have to exist by that time b/c of dependencies).
+ for F in `find ${D}${JDK_HOME}/jre/bin -type f`
+ do
+ bf=`basename $F`
+ echo "replace:" $bf
+ rm ${D}${JDK_HOME}/bin/$bf
+ ln -s ${JDK_HOME}/jre/bin/$bf ${D}${JDK_HOME}/bin/$bf
+ done
+}
+
+# Manual staging step that is only needed for oe-stable.
+do_stage() {
+ :
+}
+
+PACKAGES = " \
+ ${JDK_PN}-jre \
+ ${JDK_PN}-dbg \
+ ${JDK_PN}-demo-dbg \
+ ${JDK_PN}-demo \
+ ${JDK_PN}-source \
+ ${JDK_PN}-doc \
+ ${JDK_PN}-jdk \
+ ${JDK_PN}-java \
+ ${JDK_PN}-vm-shark \
+ ${JDK_PN}-vm-zero \
+ ${JDK_PN}-vm-cacao \
+ ${JDK_PN}-common \
+ "
+
+FILES_${JDK_PN}-dbg = "\
+ ${JDK_HOME}/bin/.debug \
+ ${JDK_HOME}/lib/.debug \
+ ${JDK_HOME}/jre/bin/.debug \
+ ${JDK_HOME}/jre/lib/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/jli/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/native_threads/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/server/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/shark/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/headless/.debug \
+ ${JDK_HOME}/jre/lib/${JDK_ARCH}/xawt/.debug \
+ "
+
+FILES_${JDK_PN}-demo = "${JDK_HOME}/demo ${JDK_HOME}/sample"
+RDEPENDS_${JDK_PN}-demo = "java2-runtime"
+FILES_${JDK_PN}-demo-dbg = "\
+ ${JDK_HOME}/demo/jvmti/gctest/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/heapTracker/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/heapViewer/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/hprof/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/minst/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/mtrace/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/versionCheck/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/waiters/lib/.debug \
+ ${JDK_HOME}/demo/jvmti/compiledMethodLoad/lib/.debug \
+ "
+
+FILES_${JDK_PN}-source = "${JDK_HOME}/src.zip"
+
+FILES_${JDK_PN}-java = "${JDK_HOME}/jre/bin/java"
+
+FILES_${JDK_PN}-vm-zero = "${JDK_HOME}/jre/lib/arm/server/"
+
+FILES_${JDK_PN}-vm-shark = "${JDK_HOME}/jre/lib/arm/shark/"
+
+FILES_${JDK_PN}-vm-cacao = "${JDK_HOME}/jre/lib/arm/cacao/"
+
+FILES_${JDK_PN}-common = "${JDK_HOME}/jre/ASSEMBLY_EXCEPTION \
+ ${JDK_HOME}/jre/THIRD_PARTY_README \
+ ${JDK_HOME}/jre/LICENSE \
+ ${JDK_HOME}/jre/lib \
+ "
+
+FILES_openjdk-6-jre_append = " \
+ ${JDK_HOME}/jre/bin/keytool \
+ ${JDK_HOME}/jre/bin/orbd \
+ ${JDK_HOME}/jre/bin/pack200 \
+ ${JDK_HOME}/jre/bin/rmid \
+ ${JDK_HOME}/jre/bin/rmiregistry \
+ ${JDK_HOME}/jre/bin/servertool \
+ ${JDK_HOME}/jre/bin/tnameserv \
+ ${JDK_HOME}/jre/bin/unpack200 \
+ ${JDK_HOME}/jre/bin/policytool \
+ ${JDK_HOME}/jre/bin/javaws \
+ "
+
+RDEPENDS_${JDK_PN}-common = "librhino-java"
+
+RPROVIDES_${JDK_PN}-vm-shark = "java2-vm"
+RPROVIDES_${JDK_PN}-vm-zero = "java2-vm"
+RPROVIDES_${JDK_PN}-vm-cacao = "java2-vm"
+
+RPROVIDES_${JDK_PN}-java = "java2-runtime"
+RDEPENDS_${JDK_PN}-java = "java2-vm"
+
+# There is a symlink to a .so but this one is valid.
+INSANE_SKIP_${JDK_PN}-vm-shark = "1"
+INSANE_SKIP_${JDK_PN}-vm-zero = "1"
+INSANE_SKIP_${JDK_PN}-vm-cacao = "1"
+INSANE_SKIP_${JDK_PN}-common = "1"
+
+
+FILES_${JDK_PN}-jdk = " \
+ ${JDK_HOME}/bin \
+ ${JDK_HOME}/lib \
+ ${JDK_HOME}/include \
+ "
+RDEPENDS_${JDK_PN}-jre = "java2-runtime"
+RDEPENDS_${JDK_PN}-jdk = "${JDK_PN}-jre"
+
+FILES_${JDK_PN}-doc = "${JDK_HOME}/man"
+
+pkg_postinst_${JDK_PN}-vm-shark () {
+ sed -i -e "s|^\-shark.*||" -e "s|\(^\-server*\)|\-shark KNOWN\n\1|" ${JDK_HOME}/jre/lib/arm/jvm.cfg
+}
+
+pkg_prerm_${JDK_PN}-vm-shark () {
+ sed -i -e "s|^\-shark.*||" ${JDK_HOME}/jre/lib/arm/jvm.cfg
+}
+
+pkg_postinst_${JDK_PN}-vm-cacao () {
+ sed -i -e "s|^\-cacao.*|\-cacao KNOWN|" ${JDK_HOME}/jre/lib/arm/jvm.cfg
+}
+
+pkg_prerm_${JDK_PN}-vm-cacao () {
+ sed -i -e "s|^\-cacao.*|\-cacao ERROR|" ${JDK_HOME}/jre/lib/arm/jvm.cfg
+}
+
+pkg_postinst_${JDK_PN}-java () {
+ update-alternatives --install ${bindir}/java java ${JDK_HOME}/jre/bin/java 15
+}
+
+pkg_prerm_${JDK_PN}-java () {
+ update-alternatives --remove java ${JDK_HOME}/jre/bin/java
+}
+
+pkg_postinst_${JDK_PN}-jdk () {
+ update-alternatives --install ${bindir}/javac javac ${JDK_HOME}/bin/javac 15
+}
+
+pkg_prerm_${JDK_PN}-jdk () {
+ update-alternatives --remove javac ${JDK_HOME}/bin/javac
+}
diff --git a/recipes/openjdk/openjdk-6-release-6b18.inc b/recipes/openjdk/openjdk-6-release-6b18.inc
new file mode 100644
index 0000000000..3888d07118
--- /dev/null
+++ b/recipes/openjdk/openjdk-6-release-6b18.inc
@@ -0,0 +1,115 @@
+require openjdk-6-common.inc
+
+EXTRA_OECONF += "\
+ --with-jaxws-drop-zip=${DL_DIR}/jdk6-jaxws-2009_10_27.zip \
+ --with-jaf-drop-zip=${DL_DIR}/jdk6-jaf-2009_10_27.zip \
+ --with-jaxp-drop-zip=${DL_DIR}/jdk6-jaxp-2009_10_13.zip \
+ --with-cacao-src-zip=${DL_DIR}/cacao-0.99.4.tar.gz \
+"
+
+# Use IcedTea6 1.8 release.
+ICEDTEA = "icedtea6-1.8"
+ICEDTEA_URI = "http://icedtea.classpath.org/download/source/${ICEDTEA}.tar.gz;name=iced"
+SRC_URI[iced.md5sum] = "e08dd0762749fb50ec6c273c366ee8ae"
+SRC_URI[iced.sha256sum] = "6823ff87969d978fe5523c729be3074142698c89acc8cc96c05b849fde54f61b"
+
+OPENJDK_URI = "http://download.java.net/openjdk/jdk6/promoted/b18/openjdk-6-src-b18-16_feb_2010.tar.gz;subdir=openjdk-src-dir;name=openjdk"
+SRC_URI[openjdk.md5sum] = "94db01691ab38f98b7d42b2ebf4d5c0b"
+SRC_URI[openjdk.sha256sum] = "778ea7b323aaa24d3c6e8fe32b8bb0f49040d9e86271859077ada9f9ee3c8ebf"
+
+JAXWS_URI = "http://kenai.com/projects/jdk6-drops/downloads/download/jdk6-jaxws-2009_10_27.zip;name=jaxws"
+SRC_URI[jaxws.md5sum] = "3ea5728706169498b722b898a1008acf"
+SRC_URI[jaxws.sha256sum] = "155ff3be83c980e197621a2fbf7ee34e8e0f536489351a5865cf0e52206245e2"
+
+JAF_URI = "http://kenai.com/projects/jdk6-drops/downloads/download/jdk6-jaf-2009_10_27.zip;name=jaf"
+SRC_URI[jaf.md5sum] = "7a50bb540a27cdd0001885630088b758"
+SRC_URI[jaf.sha256sum] = "fdc51476fc6bcc69ea1f099f33e84601a126bfa8b11c8fa11c25dc574345aa9f"
+
+JAXP_URI = "https://jaxp.dev.java.net/files/nidaba/documents/913/147329/jdk6-jaxp-2009_10_13.zip;name=jaxp"
+SRC_URI[jaxp.md5sum] = "a2f7b972124cd776ff71e7754eb9a429"
+SRC_URI[jaxp.sha256sum] = "8714d55de18db48ca9da0ee986202005082f44cf4c215da8683342b70e61792b"
+
+CACAO_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-0.99.4/cacao-0.99.4.tar.gz;name=cacao"
+SRC_URI[cacao.md5sum] = "c5e6525c5212ddbb6026e4a7cde37ca6"
+SRC_URI[cacao.sha256sum] = "c6090c1d2ed3c60acda0076b62563598267be8dab270ce49ee1035002a2510cf"
+
+# Allow overriding this separately
+OEPATCHES = "\
+ file://build-hacks.patch \
+ file://zero-cmpswap-long.patch \
+ file://fix_hotspot_crosscompile.patch \
+ file://mkbc_returncode.patch \
+ file://thumbee.patch \
+ file://icedtea-fix-jar-command.patch \
+ file://fix-llvm-libs.patch \
+ file://shark-build-openjdkdir.patch \
+ "
+
+# Allow overriding this separately
+ICEDTEAPATCHES = "\
+ file://icedtea-launcher-stdc++.patch;apply=no \
+ file://icedtea-crosscompile-fix.patch;apply=no \
+ file://icedtea-hostbuildcc.patch;apply=no \
+ file://icedtea-unbreak-float.patch;apply=no \
+ file://icedtea-remove_werror.patch;apply=no \
+ file://cacao-vfp-compat.patch;apply=no \
+ file://cacao-disable-stackbase-check.patch;apply=no \
+ file://icedtea-libnet-renaming.patch;apply=no \
+ "
+
+ICEDTEAPATCHES_append_linux-uclibc = " \
+ file://icedtea-hotspot-isfinte.patch;apply=no \
+ file://icedtea-hotspot-glibc-version.patch;apply=no \
+ file://icedtea-hotspot-loadavg.patch;apply=no \
+ file://icedtea-hotspot-isnanf.patch;apply=no \
+ file://icedtea-jdk-iconv-uclibc.patch;apply=no \
+ file://icedtea-jdk-remove-unused-backtrace.patch;apply=no \
+ file://icedtea-jdk-RTLD_NOLOAD.patch;apply=no \
+ file://icedtea-jdk-unpack-uclibc.patch;apply=no \
+ "
+
+ICEDTEAPATCHES_append_linux-uclibceabi = " \
+ file://icedtea-hotspot-isfinte.patch;apply=no \
+ file://icedtea-hotspot-isnanf.patch;apply=no \
+ file://icedtea-hotspot-glibc-version.patch;apply=no \
+ file://icedtea-hotspot-loadavg.patch;apply=no \
+ file://icedtea-jdk-iconv-uclibc.patch;apply=no \
+ file://icedtea-jdk-remove-unused-backtrace.patch;apply=no \
+ file://icedtea-jdk-RTLD_NOLOAD.patch;apply=no \
+ file://icedtea-jdk-unpack-uclibc.patch;apply=no \
+ "
+
+# Allow overriding this separately
+DISTRIBUTION_PATCHES = "\
+ patches/icedtea-launcher-stdc++.patch \
+ patches/icedtea-crosscompile-fix.patch \
+ patches/icedtea-hostbuildcc.patch \
+ patches/icedtea-unbreak-float.patch \
+ patches/icedtea-remove_werror.patch \
+ patches/cacao-vfp-compat.patch \
+ patches/cacao-disable-stackbase-check.patch \
+ patches/icedtea-libnet-renaming.patch \
+ "
+
+DISTRIBUTION_PATCHES_append_linux-uclibc = "\
+ patches/icedtea-hotspot-isfinte.patch \
+ patches/icedtea-hotspot-isnanf.patch \
+ patches/icedtea-hotspot-glibc-version.patch \
+ patches/icedtea-hotspot-loadavg.patch \
+ patches/icedtea-jdk-iconv-uclibc.patch \
+ patches/icedtea-jdk-remove-unused-backtrace.patch \
+ patches/icedtea-jdk-RTLD_NOLOAD.patch \
+ patches/icedtea-jdk-unpack-uclibc.patch \
+ "
+DISTRIBUTION_PATCHES_append_linux-uclibceabi = "\
+ patches/icedtea-hotspot-isfinte.patch \
+ patches/icedtea-hotspot-isnanf.patch \
+ patches/icedtea-hotspot-glibc-version.patch \
+ patches/icedtea-hotspot-loadavg.patch \
+ patches/icedtea-jdk-iconv-uclibc.patch \
+ patches/icedtea-jdk-remove-unused-backtrace.patch \
+ patches/icedtea-jdk-RTLD_NOLOAD.patch \
+ patches/icedtea-jdk-unpack-uclibc.patch \
+ "
+
+export DISTRIBUTION_PATCHES
diff --git a/recipes/openjdk/openjdk-6_6b18-1.8.bb b/recipes/openjdk/openjdk-6_6b18-1.8.bb
new file mode 100644
index 0000000000..16b25aefdc
--- /dev/null
+++ b/recipes/openjdk/openjdk-6_6b18-1.8.bb
@@ -0,0 +1,3 @@
+require openjdk-6-release-6b18.inc
+
+PR = "${INC_PR}.3"