Browse Source

add OpenJDK8, mostly copied from Optware-NG

Waldemar Brodkorb 8 years ago
parent
commit
85403888e2
2 changed files with 287 additions and 0 deletions
  1. 115 0
      package/openjdk8/Makefile
  2. 172 0
      package/openjdk8/files/openadk.patch

+ 115 - 0
package/openjdk8/Makefile

@@ -0,0 +1,115 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:=		openjdk8
+PKG_VERSION:=		8u76-b02
+PKG_RELEASE:=		1
+PKG_HASH:=		4447890e92da9f6855edb1475930e456fe8d396abe35f83a2259fd8c1e9537f2
+PKG_DESCR:=		java virtual machine
+PKG_SECTION:=		dev/lang
+PKG_DEPENDS:=		alsa-lib freetype libx11 libxext libxrender libxtst
+PKG_DEPENDS+=		libxt libffi zlib
+PKG_BUILDDEP:=		openjdk7-host libX11 libXext libXrender libXtst libXt
+PKG_BUILDDEP+=		freetype alsa-lib cups libffi zlib
+PKG_NEEDS:=             threads c++ rt
+PKG_URL:=		http://openjdk.org/
+PKG_HG:=		http://hg.openjdk.java.net/jdk8u/jdk8u
+PKG_SITES:=		${PKG_HG}/archive/
+PKG_NOPARALLEL:=	1
+ICEDTEA_VERSION:=	3.0.0pre07
+
+DISTFILES:=		jdk$(PKG_VERSION).tar.bz2
+WRKSRC=			${WRKDIST}/openjdk
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,OPENJDK8,openjdk8,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+JDKARCH:=		$(ADK_TARGET_CPU_ARCH)
+ifeq ($(ADK_TARGET_ARCH),x86)
+JDKARCH:=		i386
+endif
+ifeq ($(ADK_TARGET_CPU_ARCH),x86_64)
+JDKARCH:=		amd64
+endif
+
+# uclibc-ng with iconv-tiny/libiconv needs -liconv
+ifeq ($(ADK_TARGET_LIBC_ICONV),)
+ifeq ($(ADK_TARGET_LIB_UCLIBC_NG),y)
+TARGET_LDFLAGS:=	-liconv -lm
+endif
+endif
+
+CONFIG_STYLE:=		basic
+CONFIGURE_ARGS+=	--prefix=$(WRKINST)/usr \
+			--with-jvm-variants=zero \
+			--with-stdc++lib=dynamic \
+			--enable-unlimited-crypto \
+			--disable-debug-symbols \
+			--with-debug-level=release \
+			--with-zlib=system \
+			--enable-freetype-bundling \
+			--with-freetype=$(STAGING_TARGET_DIR)/usr \
+			--with-freetype-include=$(STAGING_TARGET_DIR)/usr/include/freetype2 \
+			--with-boot-jdk=$(STAGING_HOST_DIR)/bootstrap-jdk \
+			--with-extra-cflags="$(TARGET_CFLAGS)" \
+			--with-extra-cxxflags="$(TARGET_CXXFLAGS)" \
+			--with-extra-ldflags="$(TARGET_LDFLAGS)" \
+			--with-cups=$(STAGING_TARGET_DIR)/usr \
+			--with-alsa=$(STAGING_TARGET_DIR) \
+			--with-x=$(STAGING_TARGET_DIR)/usr \
+			--x-includes=$(STAGING_TARGET_DIR)/usr/include \
+			--x-libraries=$(STAGING_TARGET_DIR)/usr/lib
+CONFIGURE_ENV:=		BUILD_CC=/usr/bin/gcc \
+			BUILD_CXX=/usr/bin/g++ \
+			BUILD_LD=/usr/bin/ld \
+			ac_cv_path_POTENTIAL_CC=$(TARGET_CC) \
+			ac_cv_path_POTENTIAL_CXX=$(TARGET_CXX) \
+			LD=$(TARGET_CC) \
+			OBJCOPY='$(TARGET_CROSS)objcopy' \
+			LIBFFI_CFLAGS="$(TARGET_CPPFLAGS)" \
+			LIBFFI_LIBS="$(TARGET_LDFLAGS) -lffi"
+
+XAKE_FLAGS+=		LD=$(TARGET_CC) \
+			BUILD_CC=$(HOST_CC) \
+			BUILD_LD=$(HOST_CC) \
+			WARNINGS_ARE_ERRORS='' \
+			LOG=debug
+
+post-extract:
+	(cd $(DL_DIR); \
+	for file in jdk corba hotspot jaxp jaxws langtools nashorn; do \
+		if [ ! -f openjdk8-$${file}$(PKG_VERSION).tar.bz2 ]; then \
+			wget -c -O openjdk8-$${file}$(PKG_VERSION).tar.bz2 $(PKG_HG)/$${file}/archive/jdk$(PKG_VERSION).tar.bz2 ; \
+		fi; \
+	done; \
+	if [ ! -f icedtea-$(ICEDTEA_VERSION).tar.bz2 ]; then \
+		wget -O icedtea-$(ICEDTEA_VERSION).tar.bz2 http://icedtea.classpath.org/hg/icedtea/archive/icedtea-$(ICEDTEA_VERSION).tar.bz2; \
+	fi; \
+	)
+	mkdir -p $(WRKDIST)/openjdk
+	(cd $(WRKDIST); \
+		tar --strip-components=1 -xvf $(DL_DIR)/icedtea-$(ICEDTEA_VERSION).tar.bz2; \
+		tar --strip-components=1 -C $(WRKDIST)/openjdk -xvf $(DL_DIR)/jdk$(PKG_VERSION).tar.bz2; \
+		for file in jdk corba hotspot jaxp jaxws langtools nashorn; do \
+			mkdir -p $(WRKDIST)/openjdk/$${file}; \
+			tar --strip-components=1 -C $(WRKDIST)/openjdk/$${file} -xvf $(DL_DIR)/openjdk8-$${file}$(PKG_VERSION).tar.bz2 ; \
+		done; \
+	)
+	(cd $(WRKDIST)/openjdk; patch -p1 < $(ADK_TOPDIR)/package/openjdk8/files/openadk.patch) 
+	(cd $(WRKDIST); \
+		PATH=$(HOST_PATH) sed -e 's|@abs_top_srcdir@|$(WRKDIST)|g' -e '/^patch.*/d' fsg.sh.in > fsg.sh; \
+		${BASH} fsg.sh; \
+	)
+
+openjdk8-install:
+	$(INSTALL_DIR) $(IDIR_OPENJDK8)/usr/bin
+	$(INSTALL_DIR) $(IDIR_OPENJDK8)/usr/lib/jvm
+	$(CP) $(WRKINST)//usr/jvm/openjdk-1.8.0-internal/* \
+		$(IDIR_OPENJDK8)/usr/lib/jvm
+	(cd $(IDIR_OPENJDK8)/usr/bin && ln -sf ../lib/jvm/jre/bin/java .)
+	(cd $(IDIR_OPENJDK8)/usr/lib/jvm/jre/lib/$(JDKARCH) && ln -sf server/libjvm.so .)
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk

+ 172 - 0
package/openjdk8/files/openadk.patch

@@ -0,0 +1,172 @@
+diff -Nur openjdk.orig/hotspot/src/cpu/zero/vm/entry_zero.hpp openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/entry_zero.hpp	2015-12-23 01:50:46.000000000 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp	2016-01-06 11:43:50.108091228 +0100
+@@ -26,6 +26,8 @@
+ #ifndef CPU_ZERO_VM_ENTRY_ZERO_HPP
+ #define CPU_ZERO_VM_ENTRY_ZERO_HPP
+ 
++#include "interpreter/cppInterpreter.hpp"
++
+ class ZeroEntry {
+  public:
+   ZeroEntry() {
+diff -Nur openjdk.orig/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp	2015-12-23 01:50:46.000000000 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp	2016-01-06 11:43:50.108091228 +0100
+@@ -25,6 +25,7 @@
+ 
+ #include "precompiled.hpp"
+ #include "assembler_zero.inline.hpp"
++#include "entry_zero.hpp"
+ #include "memory/resourceArea.hpp"
+ #include "nativeInst_zero.hpp"
+ #include "oops/oop.inline.hpp"
+diff -Nur openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2015-12-23 01:50:46.000000000 +0100
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2016-01-06 11:43:50.112090962 +0100
+@@ -94,7 +94,9 @@
+ # include <string.h>
+ # include <syscall.h>
+ # include <sys/sysinfo.h>
++# ifndef __UCLIBC__
+ # include <gnu/libc-version.h>
++# endif
+ # include <sys/ipc.h>
+ # include <sys/shm.h>
+ # include <link.h>
+@@ -533,6 +535,7 @@
+ # define _CS_GNU_LIBPTHREAD_VERSION 3
+ # endif
+ 
++# ifndef __UCLIBC__
+   size_t n = confstr(_CS_GNU_LIBC_VERSION, NULL, 0);
+   if (n > 0) {
+      char *str = (char *)malloc(n, mtInternal);
+@@ -545,6 +548,10 @@
+               "glibc %s %s", gnu_get_libc_version(), gnu_get_libc_release());
+      os::Linux::set_glibc_version(_gnu_libc_version);
+   }
++# else
++  size_t n = 1;
++  os::Linux::set_glibc_version("2");
++# endif
+ 
+   n = confstr(_CS_GNU_LIBPTHREAD_VERSION, NULL, 0);
+   if (n > 0) {
+@@ -2789,10 +2796,14 @@
+ // If we are running with earlier version, which did not have symbol versions,
+ // we should use the base version.
+ void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
++#ifndef __UCLIBC__
+   void *f = dlvsym(handle, name, "libnuma_1.1");
+   if (f == NULL) {
+     f = dlsym(handle, name);
+   }
++#else
++  void *f = dlsym(handle, name);
++#endif
+   return f;
+ }
+ 
+@@ -4805,7 +4816,7 @@
+ 
+   Linux::capture_initial_stack(JavaThread::stack_size_at_create());
+ 
+-#if defined(IA32)
++#if defined(IA32) && !defined(ZERO)
+   workaround_expand_exec_shield_cs_limit();
+ #endif
+ 
+@@ -5437,6 +5448,43 @@
+ // System loadavg support.  Returns -1 if load average cannot be obtained.
+ // Linux doesn't yet have a (official) notion of processor sets,
+ // so just return the system wide load average.
++#ifdef __UCLIBC__
++static int getloadavg (double loadavg[], int nelem)
++{
++  int fd;
++
++  fd = open ("/proc/loadavg", O_RDONLY);
++  if (fd < 0)
++    return -1;
++  else
++    {
++      char buf[65], *p;
++      ssize_t nread;
++      int i;
++
++      nread = read (fd, buf, sizeof buf - 1);
++      close (fd);
++      if (nread <= 0)
++	return -1;
++      buf[nread - 1] = '\0';
++
++      if (nelem > 3)
++	nelem = 3;
++      p = buf;
++      for (i = 0; i < nelem; ++i)
++	{
++	  char *endp;
++	  loadavg[i] = strtod (p, &endp);
++	  if (endp == p)
++	    return -1;
++	  p = endp;
++	}
++
++      return i;
++    }
++}
++#endif
++
+ int os::loadavg(double loadavg[], int nelem) {
+   return ::getloadavg(loadavg, nelem);
+ }
+diff -Nur openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2015-12-23 01:50:46.000000000 +0100
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2016-01-06 11:43:50.220083765 +0100
+@@ -223,6 +223,10 @@
+ #define BREAKPOINT ::breakpoint()
+ #endif
+ 
++#ifdef __UCLIBC__
++#define isnanf __isnanf
++#endif
++
+ // checking for nanness
+ #ifdef SOLARIS
+ #ifdef SPARC
+@@ -249,8 +253,13 @@
+ 
+ // Checking for finiteness
+ 
++#ifdef __UCLIBC__
++inline int g_isfinite(jfloat  f)                 { return isfinite(f); }
++inline int g_isfinite(jdouble f)                 { return isfinite(f); }
++#else
+ inline int g_isfinite(jfloat  f)                 { return finite(f); }
+ inline int g_isfinite(jdouble f)                 { return finite(f); }
++#endif
+ 
+ 
+ // Wide characters
+diff -Nur openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c	2015-12-23 01:50:56.000000000 +0100
++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c	2016-01-06 12:56:51.970983142 +0100
+@@ -27,7 +27,7 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xos.h>
+ #include <X11/Xatom.h>
+-#ifdef __linux__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+ #include <execinfo.h>
+ #endif
+ 
+@@ -799,7 +799,7 @@
+     return ret;
+ }
+ 
+-#ifdef __linux__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+ void print_stack(void)
+ {
+   void *array[10];