[Buildroot] [PATCH 4/4] package/openjdk: add support for building the full jdk

aduskett at gmail.com aduskett at gmail.com
Fri Apr 17 23:29:22 UTC 2020


From: Adam Duskett <Aduskett at gmail.com>

Some users may require the full JDK on the target to debug or compile programs.
This change is relatively trivial to add.

To install the full JDK, do the following:
  - Add a new entry in package/openjdk/Config.in with the variable
    BR2_PACKAGE_OPENJDK_FULL_JDK

  - Check for this variable in openjdk.mk, if it is selected set the following
    variables:
      OPENJDK_INSTALL_DIR = jdk
      OPENJDK_MAKE_TARGET=jdk-image
    Otherwise, set the variables to jre and legacy-jre-image respectively.

  - change legacy-jre-image to $(OPENJDK_MAKE_TARGET) in the OPENJD_BUILD_CMDS
    define.

  - Change jre/* to $(OPENJDK_INSTALL_DIR)/* in the OPENJDK_INSTALL_TARGET_CMDS
    define

Signed-off-by: Adam Duskett <Aduskett at gmail.com>
---
 package/openjdk/Config.in  |  7 +++++++
 package/openjdk/openjdk.mk | 12 ++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in
index 61294ec49f..158f3031c3 100644
--- a/package/openjdk/Config.in
+++ b/package/openjdk/Config.in
@@ -49,6 +49,13 @@ config BR2_PACKAGE_OPENJDK
 
 if BR2_PACKAGE_OPENJDK
 
+config BR2_PACKAGE_OPENJDK_FULL_JDK
+	bool "Build the full JDK"
+	help
+	  Install the full JDK instead of just the run time.
+	  Selecting this option will increase the file system by
+	  approximately 110M.
+
 choice
 	prompt "openjdk variant"
 	default BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER if !BR2_powerpc
diff --git a/package/openjdk/openjdk.mk b/package/openjdk/openjdk.mk
index 19e71e98b2..e8803f3cb5 100644
--- a/package/openjdk/openjdk.mk
+++ b/package/openjdk/openjdk.mk
@@ -46,6 +46,14 @@ OPENJDK_JVM_VARIANT = zero
 OPENJDK_DEPENDENCIES += libffi
 endif
 
+ifeq ($(BR2_PACKAGE_OPENJDK_FULL_JDK),y)
+OPENJDK_INSTALL_DIR = jdk
+OPENJDK_MAKE_TARGET=jdk-image
+else
+OPENJDK_INSTALL_DIR = jre
+OPENJDK_MAKE_TARGET=legacy-jre-image
+endif
+
 # Because jre/lib has a modules file, installation on a system with a merged
 # /usr directory, and a built Kernel before OpenJDK, the following error
 # occurs: "cp: cannot overwrite directory '/usr/lib/modules with non-directory"
@@ -117,14 +125,14 @@ endef
 # Make -jn is unsupported. Instead, set the "--with-jobs=" configure option,
 # and use $(MAKE1).
 define OPENJDK_BUILD_CMDS
-	$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) legacy-jre-image
+	$(TARGET_MAKE_ENV) $(OPENJDK_CONF_ENV) $(MAKE1) -C $(@D) $(OPENJDK_MAKE_TARGET)
 endef
 
 # Calling make install always builds and installs the JDK instead of the JRE,
 # which makes manual installation necessary.
 define OPENJDK_INSTALL_TARGET_CMDS
 	mkdir -p $(TARGET_DIR)/$(OPENJDK_INSTALL_BASE)
-	cp -dpfr $(@D)/build/linux-*-release/images/jre/* \
+	cp -dpfr $(@D)/build/linux-*-release/images/$(OPENJDK_INSTALL_DIR)/* \
 		$(TARGET_DIR)/$(OPENJDK_INSTALL_BASE)
 	cd $(TARGET_DIR)/usr/bin && ln -snf ../../$(OPENJDK_INSTALL_BASE)/bin/* .
 endef
-- 
2.25.2




More information about the buildroot mailing list