--- /dev/null
+config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
+ bool
+ default y if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_OPENJDK
+ bool "openjdk"
+ depends on !BR2_SOFT_FLOAT
+ depends on !BR2_STATIC_LIBS # glibc
+ depends on BR2_INSTALL_LIBSTDCPP # cups
+ depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, cups, libusb
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+ depends on BR2_USE_MMU # cups
+ depends on BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_ALSA_LIB
+ select BR2_PACKAGE_CUPS
+ select BR2_PACKAGE_FONTCONFIG
+ select BR2_PACKAGE_GIFLIB
+ select BR2_PACKAGE_JPEG
+ select BR2_PACKAGE_LCMS2
+ select BR2_PACKAGE_LIBPNG
+ select BR2_PACKAGE_LIBUSB
+ select BR2_PACKAGE_XLIB_LIBXRENDER
+ select BR2_PACKAGE_XLIB_LIBXT
+ select BR2_PACKAGE_XLIB_LIBXTST
+ select BR2_PACKAGE_ZLIB
+ # make sure at least one variant is enabled
+ select BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER \
+ if !BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT
+ help
+ OpenJDK is a free and open-source implementation of the
+ Java Platform.
+
+ http://openjdk.java.net/
+
+if BR2_PACKAGE_OPENJDK
+
+config BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT
+ bool "build client variant"
+ help
+ Quick loading, but slower run-time performance.
+
+config BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER
+ bool "build server variant"
+ help
+ Slower loading, but faster run-time performance.
+
+endif
+
+comment "openjdk needs X.Org"
+ depends on BR2_USE_MMU
+ depends on !BR2_PACKAGE_XORG7
+
+comment "openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++"
+ depends on BR2_USE_MMU
+ depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \
+ !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC
+
+comment "openjdk does not support soft float configurations"
+ depends on BR2_USE_MMU
+ depends on BR2_SOFT_FLOAT
--- /dev/null
+################################################################################
+#
+# openjdk
+#
+################################################################################
+
+OPENJDK_VERSION_MAJOR = 11.0.2
+OPENJDK_VERSION_MINOR = 9
+OPENJDK_VERSION = jdk-$(OPENJDK_VERSION_MAJOR)+$(OPENJDK_VERSION_MINOR)
+OPENJDK_SITE = $(call github,AdoptOpenJDK,openjdk-jdk11u,$(OPENJDK_VERSION))
+OPENJDK_LICENSE = GPL-2.0+ with exception
+OPENJDK_LICENSE_FILES = LICENSE
+
+# OpenJDK requires Alsa, cups, and X11 even for a headless build.
+# host-zip is needed for the zip executable.
+OPENJDK_DEPENDENCIES = \
+ host-openjdk-bin \
+ host-pkgconf \
+ host-zip \
+ host-zlib \
+ alsa-lib \
+ cups \
+ fontconfig \
+ giflib \
+ jpeg \
+ lcms2 \
+ libpng \
+ libusb \
+ xlib_libXrender \
+ xlib_libXt \
+ xlib_libXtst \
+ zlib
+
+# JVM variants
+ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT),y)
+OPENJDK_JVM_VARIANTS += client
+endif
+
+ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER),y)
+OPENJDK_JVM_VARIANTS += server
+endif
+OPENJDK_JVM_VARIANT_LIST = $(subst $(space),$(comma),$(OPENJDK_JVM_VARIANTS))
+
+# OpenJDK ignores some variables unless passed via the environment.
+# These variables are PATH, LD, CC, CXX, and CPP.
+# OpenJDK defaults ld to the ld binary but passes -Xlinker and -z as
+# arguments during the linking process, which causes compilation failures.
+# To fix this issue, LD is set to point to gcc.
+OPENJDK_CONF_ENV = \
+ PATH=$(BR_PATH) \
+ CC=$(TARGET_CC) \
+ CPP=$(TARGET_CPP) \
+ CXX=$(TARGET_CXX) \
+ LD=$(TARGET_CC) \
+ BUILD_SYSROOT_CFLAGS="$(HOST_CFLAGS)" \
+ BUILD_SYSROOT_LDFLAGS="$(HOST_LDFLAGS)"
+
+OPENJDK_CONF_OPTS = \
+ --disable-full-docs \
+ --disable-hotspot-gtest \
+ --disable-manpages \
+ --disable-warnings-as-errors \
+ --enable-headless-only \
+ --enable-openjdk-only \
+ --enable-unlimited-crypto \
+ --openjdk-target=$(GNU_TARGET_NAME) \
+ --with-boot-jdk=$(HOST_DIR) \
+ --with-debug-level=release \
+ --with-devkit=$(HOST_DIR) \
+ --with-extra-cflags="$(TARGET_CFLAGS)" \
+ --with-extra-cxxflags="$(TARGET_CXXFLAGS)" \
+ --with-giflib=system \
+ --with-jobs=$(PARALLEL_JOBS) \
+ --with-jvm-variants=$(OPENJDK_JVM_VARIANT_LIST) \
+ --with-lcms=system \
+ --with-libjpeg=system \
+ --with-libpng=system \
+ --with-zlib=system \
+ --with-native-debug-symbols=none \
+ --without-version-pre \
+ --with-sysroot=$(STAGING_DIR) \
+ --with-vendor-name="AdoptOpenJDK" \
+ --with-vendor-url="https://adoptopenjdk.net/" \
+ --with-vendor-version-string="AdoptOpenJDK" \
+ --with-version-build="$(OPENJDK_VERSION_MAJOR)" \
+ --with-version-string="$(OPENJDK_VERSION_MAJOR)"
+
+ifeq ($(BR2_CCACHE),y)
+OPENJDK_CONF_OPTS += \
+ --enable-ccache \
+ --with-ccache-dir=$(BR2_CCACHE_DIR)
+endif
+
+# Autogen and configure are performed in a single step.
+define OPENJDK_CONFIGURE_CMDS
+ chmod +x $(@D)/configure
+ cd $(@D); $(OPENJDK_CONF_ENV) ./configure autogen $(OPENJDK_CONF_OPTS)
+endef
+
+# Make -jn is unsupported. Instead, set the "--with-jobs=" configure option,
+# and use $(MAKE1).
+define OPENJDK_BUILD_CMDS
+ $(MAKE1) -C $(@D) legacy-jre-image
+endef
+
+# Calling make install always builds and installs the JDK instead of the JRE,
+# which makes manual installation necessary.
+define OPENJDK_INSTALL_TARGET_CMDS
+ cp -dpfr $(@D)/build/linux-*-release/images/jre/bin/* $(TARGET_DIR)/usr/bin/
+ cp -dpfr $(@D)/build/linux-*-release/images/jre/lib/* $(TARGET_DIR)/usr/lib/
+endef
+
+$(eval $(generic-package))