config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
	bool
	default y if BR2_HOSTARCH = "x86_64"

# Taken from make/autoconf/platform.m4
config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
	bool
	default y if BR2_aarch64
	default y if BR2_arm
	default y if BR2_i386 || BR2_x86_64
	default y if BR2_m68k
	default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
	default y if BR2_sh
	default y if BR2_sparc || BR2_sparc64

config BR2_PACKAGE_OPENJDK
	bool "openjdk"
	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
	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_ALSA_LIB_MIXER
	select BR2_PACKAGE_ALSA_LIB_PCM
	select BR2_PACKAGE_ALSA_LIB_RAWMIDI
	select BR2_PACKAGE_ALSA_LIB_SEQ
	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_LIBXRANDR
	select BR2_PACKAGE_XLIB_LIBXRENDER
	select BR2_PACKAGE_XLIB_LIBXT
	select BR2_PACKAGE_XLIB_LIBXTST
	select BR2_PACKAGE_ZLIB
	help
	  OpenJDK is a free and open-source implementation of the
	  Java Platform.

	  http://openjdk.java.net/

if BR2_PACKAGE_OPENJDK

choice
	prompt "openjdk variant"
	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER if !BR2_powerpc
	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_powerpc

config BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT
	bool "client"
	depends on !BR2_powerpc
	help
	  Quick loading, but slower run-time performance.

config BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER
	bool "server"
	depends on !BR2_powerpc
	help
	  Slower loading, but faster run-time performance.

config BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO
	bool "zero"
	select BR2_PACKAGE_LIBFFI
	help
	  A non-assembler variant with wide arch support, however
	  performance is less then client/server.

	  http://openjdk.java.net/projects/zero

endchoice
endif

comment "openjdk needs X.Org"
	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
	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_PACKAGE_OPENJDK_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
	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_PACKAGE_OPENJDK_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
	depends on BR2_USE_MMU
	depends on BR2_SOFT_FLOAT
