pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

openjdk25: get the build further along on macOS



Module Name:	pkgsrc-wip
Committed By:	Tobias Nygren <tnn%NetBSD.org@localhost>
Pushed By:	tnn
Date:		Wed Sep 16 17:55:59 2026 +0200
Changeset:	bb5ff83279e225d18bb6792a537eda137aa84c30

Modified Files:
	openjdk25/Makefile
	openjdk25/bootstrap.mk
	openjdk25/distinfo
	openjdk25/options.mk
	openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
	openjdk25/patches/patch-make_autoconf_flags-cflags.m4

Log Message:
openjdk25: get the build further along on macOS

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=bb5ff83279e225d18bb6792a537eda137aa84c30

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 openjdk25/Makefile                                       |  8 +++++++-
 openjdk25/bootstrap.mk                                   |  9 +++++++++
 openjdk25/distinfo                                       |  7 +++++--
 openjdk25/options.mk                                     | 13 +++++++++++--
 .../patch-make_autoconf_buildjdk-spec.gmk.template       | 16 +++++++++++++++-
 openjdk25/patches/patch-make_autoconf_flags-cflags.m4    | 14 +++++++++++++-
 6 files changed, 60 insertions(+), 7 deletions(-)

diffs:
diff --git a/openjdk25/Makefile b/openjdk25/Makefile
index ba68467356..bb862f548b 100644
--- a/openjdk25/Makefile
+++ b/openjdk25/Makefile
@@ -64,9 +64,13 @@ CONFIGURE_ARGS+=	--with-boot-jdk=${ALT_BOOTDIR}
 CONFIGURE_ARGS+=	--with-giflib=bundled
 CONFIGURE_ARGS+=	--with-lcms=bundled
 CONFIGURE_ARGS+=	--with-cups-include=${BUILDLINK_PREFIX.libcups}/include
+.if ${OPSYS} == "Darwin"
+CONFIGURE_ARGS+=	--with-freetype=bundled
+.else
 CONFIGURE_ARGS+=	--with-freetype=system
 CONFIGURE_ARGS+=	--with-freetype-lib=${BUILDLINK_PREFIX.freetype2}/lib
 CONFIGURE_ARGS+=	--with-freetype-include=${BUILDLINK_PREFIX.freetype2}/include
+.endif
 CONFIGURE_ARGS+=	--with-jobs=${MAKE_JOBS:U1}
 CONFIGURE_ARGS+=	--with-num-cores=${MAKE_JOBS:U1}
 CONFIGURE_ARGS+=	--disable-precompiled-headers
@@ -88,7 +92,7 @@ MAKE_ENV+=	CLASSPATH=
 ALL_ENV+=	SED="sed -g"
 .endif
 
-BUILD_OPSYS=			${OPSYS:C/.*BSD/bsd/:S/DragonFly/bsd/:S/SunOS/solaris/:S/Linux/linux/}
+BUILD_OPSYS=			${OPSYS:C/.*BSD/bsd/:S/DragonFly/bsd/:S/SunOS/solaris/:S/Linux/linux/:S/Darwin/macosx/}
 BUILD_ARCH=			${MACHINE_ARCH:S/i386/x86/:S/sparc64/sparcv9/:C/^e?arm.*$/arm/}
 BUILDDIR=			${WRKSRC}/build/${BUILD_OPSYS}-${BUILD_ARCH}-${BUILD_VARIANT}-${BUILD_DEBUG_LEVEL}
 BUILDLINK_PASSTHRU_RPATHDIRS+=	${PREFIX}/java/${JAVA_NAME}/lib
@@ -200,8 +204,10 @@ do-install:
 CONFIGURE_ARGS+=	--with-alsa=${BUILDLINK_PREFIX.alsa-lib}
 .endif
 .include "../../converters/libiconv/buildlink3.mk"
+.if ${OPSYS} != "Darwin"
 .include "../../fonts/fontconfig/buildlink3.mk"
 .include "../../graphics/freetype2/buildlink3.mk"
+.endif
 # Headers from CUPS are required to build the native implementation of
 # sun.print.* which is used by java.awt.print.
 BUILDLINK_DEPMETHOD.libcups?=	build
diff --git a/openjdk25/bootstrap.mk b/openjdk25/bootstrap.mk
index fe650886ab..aa7ed0f52f 100644
--- a/openjdk25/bootstrap.mk
+++ b/openjdk25/bootstrap.mk
@@ -49,6 +49,15 @@ EXTRACT_ONLY+=			${BOOT.linux-amd64}
 ALT_BOOTDIR=			${WRKDIR}/jdk-25.0.4.1+1
 .endif
 
+ONLY_FOR_PLATFORM+=		Darwin-*-aarch64
+BOOT.darwin-aarch64+=		OpenJDK25U-jdk_aarch64_mac_hotspot_25.0.4.1_1.tar.gz
+SITES.${BOOT.darwin-aarch64}=	https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/
+.if !empty(MACHINE_PLATFORM:MDarwin-*-aarch64) || make(distinfo)
+DISTFILES+=			${BOOT.darwin-aarch64}
+EXTRACT_ONLY+=			${BOOT.darwin-aarch64}
+ALT_BOOTDIR=			${WRKDIR}/jdk-25.0.4.1+1/Contents/Home
+.endif
+
 CONFIGURE_ENV+=		LD_LIBRARY_PATH=${ALT_BOOTDIR}/lib
 
 ALT_BOOTDIR?=		${WRKDIR}/bootstrap
diff --git a/openjdk25/distinfo b/openjdk25/distinfo
index 15bca7bc26..0fc325e4c8 100644
--- a/openjdk25/distinfo
+++ b/openjdk25/distinfo
@@ -1,5 +1,8 @@
 $NetBSD: distinfo,v 1.17 2026/08/16 11:54:29 tnn Exp $
 
+BLAKE2s (OpenJDK25U-jdk_aarch64_mac_hotspot_25.0.4.1_1.tar.gz) = 3712b494106364a0d0de79aee436f96b01c62be56afb7a977bcef006a31b583f
+SHA512 (OpenJDK25U-jdk_aarch64_mac_hotspot_25.0.4.1_1.tar.gz) = 535f90a294ffe6adf47bc637605cd7ed5ba4d4c1c89eeeb61d293d8e8f727c0955792fae2c8073c15736f8d03e9756419fdc06adca0039f23aba149d38b7f21a
+Size (OpenJDK25U-jdk_aarch64_mac_hotspot_25.0.4.1_1.tar.gz) = 136355078 bytes
 BLAKE2s (OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz) = 472b5de195b366f7e60f02c243155c8b541c9ccb714c0c72f9789dfabd452977
 SHA512 (OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz) = c96f0d7a22068a488c6bc2ef908f946280d26ce384dbd879c6ae9a01a60441cfed8cff97f3dc5f02b939cc9fab5ad9279b5f497a3523195102cfcd151cac0816
 Size (OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz) = 141329719 bytes
@@ -18,8 +21,8 @@ Size (bootstrap-jdk-1.25.0.4.7-netbsd-9-i386-20260907.tar.xz) = 116043068 bytes
 BLAKE2s (jdk25u-jdk-25.0.4-7-1.tar.gz) = db81e919589070cbef63d5f4df43a690cb5119a72f75b12eb1a289621b4e2b97
 SHA512 (jdk25u-jdk-25.0.4-7-1.tar.gz) = ac564673ce14b192f3136d3d92e6125d412f1f449b3fcbe1f47dd0af7a6ccf6ec4a8f4c5074dcab17faf09fc2df54e0430c1e28ea7b8e171169ad97f2213b3fe
 Size (jdk25u-jdk-25.0.4-7-1.tar.gz) = 119810522 bytes
-SHA1 (patch-make_autoconf_buildjdk-spec.gmk.template) = 050c1ac0eaa96240651555264eb0e25d5537ab04
-SHA1 (patch-make_autoconf_flags-cflags.m4) = 863f94fc42117007d68cabf580689cdda194d5f7
+SHA1 (patch-make_autoconf_buildjdk-spec.gmk.template) = 123c0b42323c3de51ccb418486cc57ef8e5feb77
+SHA1 (patch-make_autoconf_flags-cflags.m4) = 577ea110cba90c55e1555d4bde0a02b8c6180101
 SHA1 (patch-make_autoconf_hotspot.m4) = 6097c29677f4b84c3821b5cf7ac8c397376027d0
 SHA1 (patch-make_autoconf_lib-alsa.m4) = 999fbf951363f6b49b22aad81537728f22d7c381
 SHA1 (patch-make_autoconf_lib-bundled.m4) = 5f5b638a08abf2f2066a122a825cfa3db9e95139
diff --git a/openjdk25/options.mk b/openjdk25/options.mk
index 3ddfd94d3c..982b11509f 100644
--- a/openjdk25/options.mk
+++ b/openjdk25/options.mk
@@ -3,8 +3,12 @@
 PKG_OPTIONS_VAR=		PKG_OPTIONS.openjdk25
 PKG_OPTIONS_OPTIONAL_GROUPS=	variant
 PKG_OPTIONS_GROUP.variant=	jdk-zero-vm
-PKG_SUPPORTED_OPTIONS=		debug dtrace jre-jce x11 static-libstdcpp jdk-bundled-zlib
-PKG_SUGGESTED_OPTIONS=		jre-jce x11
+PKG_SUPPORTED_OPTIONS=		debug dtrace jre-jce static-libstdcpp jdk-bundled-zlib
+PKG_SUGGESTED_OPTIONS=		jre-jce
+.if ${OPSYS} != "Darwin"
+PKG_SUPPORTED_OPTIONS+=		x11
+PKG_SUGGESTED_OPTIONS+=		x11
+.endif
 
 .if ${MACHINE_ARCH} == "aarch64" || ${MACHINE_ARCH} == "x86_64"
 PKG_OPTIONS_GROUP.variant+=	jdk-hotspot-vm
@@ -48,6 +52,11 @@ BUILDLINK_DEPMETHOD.libXt?=	build
 .include "../../x11/libXrender/buildlink3.mk"
 .include "../../x11/libXtst/buildlink3.mk"
 .include "../../x11/libXrandr/buildlink3.mk"
+.elif ${OPSYS} == "Darwin"
+# The Metal compiler is no longer part of Xcode itself.
+# You need to manually run `sudo xcodebuild -downloadComponent MetalToolchain`
+CONFIGURE_ARGS+=	METAL="xcrun metal"
+CONFIGURE_ARGS+=	METALLIB="xcrun metallib"
 .else
 CONFIGURE_ARGS+=	--x-includes=${X11BASE}/include
 CONFIGURE_ARGS+=	--x-libraries=${X11BASE}/lib
diff --git a/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template b/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
index b6cf1b0211..6e079c18e0 100644
--- a/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
+++ b/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
@@ -5,9 +5,23 @@ This is needed for native builds on platforms where hotspot is broken or not
 supported. In that case the buildjdk can't be hardcoded to "server" but must
 use "zero". This is fine for pkgsrc since we only ever build one variant.
 
+The buildjdk is run out of the build tree, so on Darwin its libraries must
+not claim to live in ${PREFIX}. c.f. flags-cflags.m4.
+
 --- make/autoconf/buildjdk-spec.gmk.template.orig	2026-07-24 17:22:09.000000000 +0000
 +++ make/autoconf/buildjdk-spec.gmk.template
-@@ -95,8 +95,9 @@ ENABLE_DEBUG_SYMBOLS := false
+@@ -53,6 +53,10 @@ SUPPORT_OUTPUTDIR := $(patsubst $(OUTPUT
+ JDK_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(JDK_OUTPUTDIR))
+ IMAGES_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUTPUTDIR))
+ 
++ifeq ($(OPENJDK_TARGET_OS), macosx)
++  SET_SHARED_LIBRARY_NAME = -Wl,-install_name,$(JDK_OUTPUTDIR)/lib/$(patsubst libjvm.%,$(JVM_VARIANT_MAIN)/libjvm.%,$1)
++endif
++
+ OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
+ OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@
+ OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@
+@@ -95,8 +99,9 @@ DISABLE_WARNING_PREFIX := @BUILD_CC_DISA
  # Save speed and disk space by not enabling debug symbols for the buildjdk
  ENABLE_DEBUG_SYMBOLS := false
  
diff --git a/openjdk25/patches/patch-make_autoconf_flags-cflags.m4 b/openjdk25/patches/patch-make_autoconf_flags-cflags.m4
index 9b20cbe596..cabfc7d450 100644
--- a/openjdk25/patches/patch-make_autoconf_flags-cflags.m4
+++ b/openjdk25/patches/patch-make_autoconf_flags-cflags.m4
@@ -4,7 +4,7 @@ We prefer to use explicit run paths.
 
 --- make/autoconf/flags-cflags.m4.orig	2026-07-24 17:22:09.000000000 +0000
 +++ make/autoconf/flags-cflags.m4
-@@ -40,8 +40,8 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
+@@ -40,17 +40,17 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
      # --disable-new-dtags forces use of RPATH instead of RUNPATH for rpaths.
      # This protects internal library dependencies within the JDK from being
      # overridden using LD_LIBRARY_PATH. See JDK-8326891 for more information.
@@ -15,6 +15,18 @@ We prefer to use explicit run paths.
      SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
  
    elif test "x$TOOLCHAIN_TYPE" = xclang; then
+     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+       # Linking is different on MacOSX
+       SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0"
+-      SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)'
+-      SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+-      SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
++      SET_EXECUTABLE_ORIGIN=''
++      SET_SHARED_LIBRARY_ORIGIN=''
++      SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@PREFIX@/java/@JAVA_NAME@/lib/$(patsubst libjvm.%,${JVM_VARIANT_MAIN}/libjvm.%,[$]1)'
+ 
+     elif test "x$OPENJDK_TARGET_OS" = xaix; then
+       # Linking is different on aix
 @@ -62,19 +62,12 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
      else
        # Default works for linux, might work on other platforms as well.


Home | Main Index | Thread Index | Old Index