1config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
2	bool
3	default y if BR2_HOSTARCH = "x86_64"
4	default y if BR2_HOSTARCH = "aarch64"
5
6# Taken from make/autoconf/platform.m4
7config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
8	bool
9	default y if BR2_aarch64
10	default y if BR2_arc && !(BR2_arc750d || BR2_arc770d)
11	default y if BR2_arm
12	default y if BR2_i386 || BR2_x86_64
13	default y if BR2_m68k
14	default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
15	default y if BR2_sh
16
17config BR2_PACKAGE_OPENJDK
18	bool "openjdk"
19	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
20	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
21	depends on !BR2_SOFT_FLOAT
22	depends on !BR2_STATIC_LIBS # glibc
23	depends on BR2_INSTALL_LIBSTDCPP # cups
24	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, cups, libusb
25	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb, C++14 for OpenJDK17
26	# Strictly needed only for OpenJDK17, but to keep dependencies
27	# simple with ARC supported only with OpenJDK17, we make this
28	# dependency apply to OpenJDK as a whole.
29	depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++14
30	depends on BR2_TOOLCHAIN_USES_GLIBC
31	depends on BR2_USE_MMU # cups
32	depends on BR2_PACKAGE_XORG7
33	select BR2_PACKAGE_ALSA_LIB
34	select BR2_PACKAGE_ALSA_LIB_MIXER
35	select BR2_PACKAGE_ALSA_LIB_PCM
36	select BR2_PACKAGE_ALSA_LIB_RAWMIDI
37	select BR2_PACKAGE_ALSA_LIB_SEQ
38	select BR2_PACKAGE_CUPS
39	select BR2_PACKAGE_FONTCONFIG
40	select BR2_PACKAGE_GIFLIB
41	select BR2_PACKAGE_JPEG
42	select BR2_PACKAGE_LCMS2
43	select BR2_PACKAGE_LIBPNG
44	select BR2_PACKAGE_LIBUSB
45	select BR2_PACKAGE_XLIB_LIBXRANDR
46	select BR2_PACKAGE_XLIB_LIBXRENDER
47	select BR2_PACKAGE_XLIB_LIBXT
48	select BR2_PACKAGE_XLIB_LIBXTST
49	select BR2_PACKAGE_ZLIB
50	help
51	  OpenJDK is a free and open-source implementation of the
52	  Java Platform.
53
54	  http://openjdk.java.net/
55
56if BR2_PACKAGE_OPENJDK
57
58choice
59	prompt "openjdk version"
60	default BR2_PACKAGE_OPENJDK_VERSION_17 if BR2_OPENJDK_VERSION_LTS # legacy
61	default BR2_PACKAGE_OPENJDK_VERSION_21 if BR2_OPENJDK_VERSION_LATEST # legacy
62	default BR2_PACKAGE_OPENJDK_VERSION_21
63	help
64	  Select the version of OpenJDK you wish to use.
65
66config BR2_PACKAGE_OPENJDK_VERSION_17
67	bool "OpenJDK 17"
68
69config BR2_PACKAGE_OPENJDK_VERSION_21
70	bool "OpenJDK 21"
71
72endchoice
73
74config BR2_PACKAGE_OPENJDK_FULL_JDK
75	bool "Build the full JDK"
76	help
77	  Install the full JDK instead of just the run time.
78	  The full JDK includes several packages used for debugging and
79	  development. Some useful tools included with the JDK are:
80	    - javaws
81	      Command line tool for launching Java Web Start and setting
82	      various options.
83
84	    - jcmd:
85	      JVM Diagnostic Commands tool: Sends diagnostic command
86	      requests to a running Java Virtual Machine.
87
88	    - jinfo
89	      Configuration Info for Java: Prints configuration
90	      information for a given process or core file or a remote
91	      debug server.
92
93	    - jmap
94	      Memory Map for Java: Prints shared object memory maps or
95	      heap memory details of a given process or core file or a
96	      remote debug server.
97
98	    - jsadebugd
99	      Serviceability Agent Debug Daemon for Java: Attaches to a
100	      process or core file and acts as a debug server.
101
102	    - jstack
103	      Stack Trace for Java - Prints a stack trace of threads for
104	      a given process or core file or remote debug server.
105
106	    - jstat
107	      JVM Statistics Monitoring Tool: Attaches to an
108	      instrumented HotSpot Java virtual machine and collects and
109	      logs performance statistics as specified by the command
110	      line options.
111
112	    - jstatd
113	      JVM jstat Daemon - Launches an RMI server application that
114	      monitors for the creation and termination of instrumented
115	      HotSpot Java virtual machines and provides an interface to
116	      allow remote monitoring tools to attach to Java virtual
117	      machines running on the local system.
118
119	  Note:
120	  While the JDK also comes with several tools which can be used
121	  for developing java applications on a target, Buildroot does
122	  not support development on a target. Building the full JDK is
123	  supported for debugging purposes only.
124
125	  Selecting this option increases the file system by
126	  approximately 110M.
127
128choice
129	prompt "openjdk variant"
130	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER if !(BR2_powerpc || BR2_arc)
131	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_powerpc
132	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_arc
133
134config BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT
135	bool "client"
136	depends on !(BR2_powerpc || BR2_arc)
137	help
138	  Quick loading, but slower run-time performance.
139
140config BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER
141	bool "server"
142	depends on !(BR2_powerpc || BR2_arc)
143	help
144	  Slower loading, but faster run-time performance.
145
146config BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO
147	bool "zero"
148	select BR2_PACKAGE_LIBFFI
149	help
150	  A non-assembler variant with wide arch support, however
151	  performance is less then client/server.
152
153	  http://openjdk.java.net/projects/zero
154
155endchoice
156endif
157
158comment "openjdk needs X.Org"
159	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
160	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
161	depends on BR2_USE_MMU
162	depends on !BR2_PACKAGE_XORG7
163
164comment "openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++, gcc >= 4.9, host gcc >= 4.9"
165	depends on BR2_USE_MMU
166	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
167	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
168	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \
169		!BR2_TOOLCHAIN_HAS_THREADS || \
170		!BR2_TOOLCHAIN_USES_GLIBC || \
171		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \
172		!BR2_HOST_GCC_AT_LEAST_4_9
173
174comment "openjdk does not support soft float configurations"
175	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
176	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
177	depends on BR2_USE_MMU
178	depends on BR2_SOFT_FLOAT
179