package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# openjdk
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
2020-03-24 19:34:55 +01:00
|
|
|
OPENJDK_VERSION_MAJOR = 14
|
|
|
|
OPENJDK_VERSION_MINOR = 36
|
package: remove non-conventional prefix/suffix from github-fetched packages
On Github, a large number of projects name their tag
<some-prefix>-0.3-<some-suffix> (i.e release-3.0, poco-0.1-release,
etc.). In fact majority of the cased adressed in this commit concerns
prefixes.
In most packages, we encode those prefix/suffix in the <pkg>_VERSION
variable.
The problem with this approach is that when used in conjunction with
release-monitoring.org, it doesn't work very well, because
release-monitoring.org has the concept of "version prefix/suffix" and
using that they drop the prefix/suffix to really get the version. For
example on https://release-monitoring.org/project/5418/ the latest
release of "poco" is "1.8.1", not "poco-1.8.1-release".
Therefore, a number of packages in Buildroot have a version that
doesn't match with release-monitoring.org.
Since really the version number of 1.8.1, is makes sense to update our
packages to drop these prefixes/suffixes.
This commit addreses the case of github-fetched packages with
non-conventional prefixes/suffixes.
Note that these changes modify the name of the files stored in DL_DIR,
which means that this will force a re-download of those package source
code for all users, and requires a change to their .hash file.
Signed-off-by: Victor Huesca <victor.huesca@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-06-12 08:42:08 +02:00
|
|
|
OPENJDK_VERSION = $(OPENJDK_VERSION_MAJOR)+$(OPENJDK_VERSION_MINOR)
|
package/openjdk: use official hg.openjdk.java.net repository
Since Java 11 (and possibly earlier), OpenJDK now has its own official
repository at hg.openjdk.java.net which is referenced in all OpenJDK
documentation. This patch brings buildroot into line with that
source, reducing the opportunity for code injection, and allowing
consistent patching both across projects and for patches specific to
buildroot environments.
diff -ru shows that the only changes between the downstream and upstream files at
this point in time is the addition of a .hg_archive.txt file, containing:
repo: fd16c54261b32be1aaedd863b7e856801b7f8543
node: 7b6accc7c009304dd2979ea16c1cb15bf749a1fc
branch: default
tag: jdk-12.0.2+10
tag: jdk-12.0.2-ga
This does, however, change the hash for the tar.gz file (but not for the license).
With respect to the concern regarding upstream hash consistency, we have now been
using these archives for just over a year (since OpenJDK 11) and we haven't seen an
archive hash change in that time. This was a vast improvement on the previous
Mercurial forest. /archive is exactly as is sounds. It's an archive that doesn't
change, which is why it effectively negates the need for a "downstream" mirror.
Tests completed successfully (which is not surprising since there are no code changes here):
$ ./support/testing/run-tests -d ./dl/ -k -o test_dir tests.package.test_openjdk.TestOpenJdk
14:35:25 TestOpenJdk Starting
['Hello, World']
['Test: Get JNI Version passed', 'Test: Read Native String Constant passed', 'Test: Write Java String to Native Library passed', 'Test: Write Java Char Array to Native Library passed', 'Test: Write String Member to Native Library passed', 'Test: Set String Member from Native Library passed', 'Test: Execeute Java Function from Native Library passed', 'Test: Instantiate Java Class passed', 'Test: Call Native Library to Set System Time passed']
14:35:46 TestOpenJdk Cleaning up
.
----------------------------------------------------------------------
Ran 1 test in 20.614s
OK
Signed-off-by: Tudor Holton <tudor@tudorholton.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-12-05 06:57:04 +01:00
|
|
|
OPENJDK_SOURCE = jdk-$(OPENJDK_VERSION).tar.gz
|
2020-03-24 19:34:55 +01:00
|
|
|
OPENJDK_SITE = https://hg.openjdk.java.net/jdk-updates/jdk14u/archive
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
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 = \
|
2019-06-01 18:06:20 +02:00
|
|
|
host-gawk \
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
host-openjdk-bin \
|
|
|
|
host-pkgconf \
|
|
|
|
host-zip \
|
|
|
|
host-zlib \
|
|
|
|
alsa-lib \
|
|
|
|
cups \
|
|
|
|
fontconfig \
|
|
|
|
giflib \
|
|
|
|
jpeg \
|
|
|
|
lcms2 \
|
|
|
|
libpng \
|
|
|
|
libusb \
|
2019-03-22 15:19:54 +01:00
|
|
|
xlib_libXrandr \
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
xlib_libXrender \
|
|
|
|
xlib_libXt \
|
|
|
|
xlib_libXtst \
|
|
|
|
zlib
|
|
|
|
|
|
|
|
# JVM variants
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT),y)
|
2019-04-17 16:33:25 +02:00
|
|
|
OPENJDK_JVM_VARIANT = client
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER),y)
|
2019-04-17 16:33:25 +02:00
|
|
|
OPENJDK_JVM_VARIANT = server
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
endif
|
2019-02-26 18:36:45 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO),y)
|
2019-04-17 16:33:25 +02:00
|
|
|
OPENJDK_JVM_VARIANT = zero
|
2019-02-26 18:36:45 +01:00
|
|
|
OPENJDK_DEPENDENCIES += libffi
|
|
|
|
endif
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
|
|
|
|
# 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) \
|
2020-02-02 21:39:31 +01:00
|
|
|
--with-stdc++lib=dynamic \
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
--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) \
|
2019-04-17 16:33:25 +02:00
|
|
|
--with-jvm-variants=$(OPENJDK_JVM_VARIANT) \
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
--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-version-build="$(OPENJDK_VERSION_MAJOR)" \
|
|
|
|
--with-version-string="$(OPENJDK_VERSION_MAJOR)"
|
|
|
|
|
2019-03-15 21:52:32 +01:00
|
|
|
# If building for AArch64, use the provided CPU port.
|
|
|
|
ifeq ($(BR2_aarch64),y)
|
2019-03-22 15:19:54 +01:00
|
|
|
OPENJDK_CONF_OPTS += --with-abi-profile=aarch64
|
2019-03-15 21:52:32 +01:00
|
|
|
endif
|
|
|
|
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
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
|
2019-06-10 15:14:53 +02:00
|
|
|
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) legacy-jre-image
|
package/openjdk: new package
OpenJDK is a free and open-source implementation of the Java Platform.
This package provides the option to build a client or a server JVM
interpreter.
The default option is the server option, as that is what the majority
of users use. This JVM interpreter loads more slowly, putting more
effort into JIT compilations to yield higher performance.
Unlike most autotools packages, OpenJDK is exceptionally different and
has many quirks, some of which are below:
- X11, alsa, and cups are required to build Java, even if it's a headless build.
See
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/common/doc/building.html#external-library-requirements
for more information.
- host-zip is needed for the zip executable.
- There is no autogen.sh file, instead, a user must call "./configure
autogen."
- 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 linking failures.
To fix this issue, ld is set to gcc.
- Make -jn is unsupported. Instead, one must use the "--with-jobs="
configure option, and use $(MAKE1).
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
[Thomas:
- drop explanations about CC, LD, CXX, etc. be set to their "actual
binaries" instead of ccache: TARGET_CC/TARGET_LD/TARGET_CXX point
to the compiler wrapper, so the usage of ccache is hidden
- make sure at least one of the variants is enabled in Config.in
- drop the submenu for variant selection
- use system zlib instead of the bundled one. This works fine when
BUILD_SYSROOT_CFLAGS and BUILD_SYSROOT_LDFLAGS are passed
- fix minor nits in the Config.in comments]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-03-15 21:52:31 +01:00
|
|
|
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))
|