git: fe94eea55572 - main - java/openjdk25: Add jre and headless flavors

From: Harald Eilertsen <haraldei_at_FreeBSD.org>
Date: Tue, 04 Nov 2025 12:16:43 UTC
The branch main has been updated by haraldei:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fe94eea55572b109ad291b3607ba59caff917a7e

commit fe94eea55572b109ad291b3607ba59caff917a7e
Author:     Harald Eilertsen <haraldei@FreeBSD.org>
AuthorDate: 2025-10-28 11:16:36 +0000
Commit:     Harald Eilertsen <haraldei@FreeBSD.org>
CommitDate: 2025-11-04 12:13:01 +0000

    java/openjdk25: Add jre and headless flavors
    
    Add FLAVORS to allow building jre and headless variants from the same
    port. For backwards compatibility, it is also possible to build the jre
    version by setting the BUILD_JRE env var.
    
    Also reorganize the Makefile to make portclippy happy
    
    Reviewed by:    fuz, jrm
    Approved by:    fuz (mentor)
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D53450
---
 java/openjdk25/Makefile | 128 ++++++++++++++++++++++++++++--------------------
 1 file changed, 76 insertions(+), 52 deletions(-)

diff --git a/java/openjdk25/Makefile b/java/openjdk25/Makefile
index 3c3e590bc437..7465f42df112 100644
--- a/java/openjdk25/Makefile
+++ b/java/openjdk25/Makefile
@@ -1,22 +1,24 @@
 PORTNAME=	openjdk
 DISTVERSIONPREFIX=	jdk-
 DISTVERSION=	${JDK_FULL_VERSION:S/.0.0//}
-
 CATEGORIES=	java devel
 PKGNAMESUFFIX?=	${JDK_MAJOR_VERSION}
 
 MAINTAINER=	java@FreeBSD.org
 COMMENT=	Java Development Kit ${JDK_MAJOR_VERSION}
+
 WWW=		https://openjdk.java.net/projects/jdk/25/
 
 LICENSE=	GPLv2
 
 ONLY_FOR_ARCHS=	aarch64 amd64 powerpc64 powerpc64le
 
-BUILD_DEPENDS=	zip:archivers/zip \
-		${LOCALBASE}/include/cups/cups.h:print/cups \
+BUILD_DEPENDS=	${LOCALBASE}/include/cups/cups.h:print/cups \
 		bash:shells/bash \
-		gsed:textproc/gsed
+		gsed:textproc/gsed \
+		zip:archivers/zip
+
+.if ${FLAVORS:U} != headless
 LIB_DEPENDS=	libasound.so:audio/alsa-lib \
 		libfontconfig.so:x11-fonts/fontconfig \
 		libfreetype.so:print/freetype2 \
@@ -24,18 +26,65 @@ LIB_DEPENDS=	libasound.so:audio/alsa-lib \
 		libharfbuzz.so:print/harfbuzz \
 		liblcms2.so:graphics/lcms2 \
 		libpng.so:graphics/png
-RUN_DEPENDS=	javavm:java/javavmwrapper \
-		xorg-fonts-truetype>0:x11-fonts/xorg-fonts-truetype
+.endif
 
-USES=	autoreconf:build compiler:features cpe gmake iconv jpeg pkgconfig xorg
-USE_XORG=	x11 xext xi xrandr xrender xt xtst
+RUN_DEPENDS=	javavm:java/javavmwrapper
+.if ${FLAVORS:U} != headless
+RUN_DEPENDS+=	xorg-fonts-truetype>0:x11-fonts/xorg-fonts-truetype
+.endif
+
+FLAVORS=	jdk jre headless
+FLAVOR?=	${BUILD_JRE:?jre:${FLAVORS:[1]}}
+
+headless_PKGNAMESUFFIX=	${JDK_MAJOR_VERSION}-headless
+jre_PKGNAMESUFFIX=	${JDK_MAJOR_VERSION}-jre
+
+USES=		autoreconf:build compiler:features cpe gmake iconv pkgconfig
+.if ${FLAVORS:U} != headless
+USES+=		jpeg xorg
+.endif
 
 CPE_VENDOR=	oracle
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	freebsd
 
-NO_CCACHE=	yes
+.if ${FLAVORS:U} != headless
+USE_XORG=	x11 xext xi xrandr xrender xt xtst
+.endif
+
+GNU_CONFIGURE=		yes
+CONFIGURE_ARGS=		--disable-ccache \
+			--disable-javac-server \
+			--with-alsa=${LOCALBASE} \
+			--with-boot-jdk=${BOOTSTRAPJDKDIR} \
+			--with-cups=${LOCALBASE} \
+			--with-debug-level=release \
+			--with-fontconfig=${LOCALBASE} \
+			--with-freetype=system \
+			--with-giflib-include=${LOCALBASE}/include \
+			--with-giflib-lib=${LOCALBASE}/lib \
+			--with-giflib=system \
+			--with-harfbuzz=system \
+			--with-lcms=system \
+			--with-libjpeg=system \
+			--with-libpng=system \
+			--with-native-debug-symbols=none \
+			--with-num-cores=${MAKE_JOBS_NUMBER} \
+			--with-vendor-bug-url="${JDK_BUG_URL}" \
+			--with-vendor-name="OpenJDK BSD Porting Team" \
+			--with-vendor-url="https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/" \
+			--with-vendor-vm-bug-url="${JDK_BUG_URL}" \
+			--with-version-string=${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} \
+			--with-zlib=system \
+			--x-includes=${LOCALBASE}/include \
+			--x-libraries=${LOCALBASE}/lib
+CONFIGURE_ENV=		ac_cv_path_SED=${LOCALBASE}/bin/gsed
+CONFIGURE_TARGET=	${JDK_ARCH}-portbld-${OPSYS:tl}${OSREL}
+
+.if ${FLAVOR:U} == headless
+CONFIGURE_ARGS+=	--enable-headless-only
+.endif
 
 # Suppress passing -j to do-build target via Mk/bsd.port.mk
 # In the JDK build the number of parallel jobs is passed in via configure --with-num-cores=N
@@ -46,16 +95,25 @@ MAKE_ENV=	CLASSPATH="" \
 		LOG=cmdlines \
 		MAKEFLAGS=""
 
+.if ${FLAVOR:U} == jre
+ALL_TARGET=	legacy-images
+.else
+ALL_TARGET=	images
+.endif
+JDK_BUILD_TYPE=	release
+
 JDK_ARCH=	${ARCH:S/amd64/x86_64/:S/i386/x86/:S/powerpc64/ppc64/}
 JDK_OSARCH=	bsd-${JDK_ARCH}
 JDK_BUILDDIR=	${WRKSRC}/build/${JDK_OSARCH}-${JDK_BUILD_JVM}-${JDK_BUILD_TYPE}
-.if defined(BUILD_JRE)
+.if ${FLAVOR:U} == jre
+BUILD_JRE=	true
 JDK_IMAGEDIR=	${JDK_BUILDDIR}/images/jre
 .else
 JDK_IMAGEDIR=	${JDK_BUILDDIR}/images/jdk
 .endif
 INSTALLDIR=	${PREFIX}/${PKGBASE}
 
+NO_CCACHE=	yes
 NOPRECIOUSMAKEVARS=	yes
 
 JDK_MAJOR_VERSION=	25
@@ -67,43 +125,9 @@ JDK_FULL_VERSION=	${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}
 
 JDK_BUG_URL=	https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Ports%20%26%20Packages&component=Individual%20Port(s)&short_desc=java/${PORTNAME}${JDK_MAJOR_VERSION}%3A%20
 
-GNU_CONFIGURE=	yes
-CONFIGURE_TARGET=${JDK_ARCH}-portbld-${OPSYS:tl}${OSREL}
-CONFIGURE_ENV=	ac_cv_path_SED=${LOCALBASE}/bin/gsed
-CONFIGURE_ARGS=	--with-boot-jdk=${BOOTSTRAPJDKDIR} \
-		--disable-ccache \
-		--disable-javac-server \
-		--with-alsa=${LOCALBASE} \
-		--with-cups=${LOCALBASE} \
-		--with-fontconfig=${LOCALBASE} \
-		--with-freetype=system \
-		--with-libjpeg=system \
-		--with-giflib=system \
-		--with-giflib-include=${LOCALBASE}/include \
-		--with-giflib-lib=${LOCALBASE}/lib \
-		--with-harfbuzz=system \
-		--with-libpng=system \
-		--with-num-cores=${MAKE_JOBS_NUMBER} \
-		--with-zlib=system \
-		--with-lcms=system \
-		--x-includes=${LOCALBASE}/include \
-		--x-libraries=${LOCALBASE}/lib \
-		--with-version-string=${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} \
-		--with-native-debug-symbols=none \
-		--with-debug-level=release \
-		--with-vendor-name="OpenJDK BSD Porting Team" \
-		--with-vendor-url="https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/" \
-		--with-vendor-bug-url="${JDK_BUG_URL}" \
-		--with-vendor-vm-bug-url="${JDK_BUG_URL}"
-
+.ifnmake portclippy
 JAVAVMS_COMMENT=	OpenJDK${JDK_MAJOR_VERSION}
-
-.if defined(BUILD_JRE)
-ALL_TARGET=		legacy-images
-.else
-ALL_TARGET=		images
 .endif
-JDK_BUILD_TYPE=		release
 
 .include <bsd.port.pre.mk>
 
@@ -129,15 +153,15 @@ CONFIGURE_ARGS+=	--with-toolchain-type=${COMPILER_TYPE}
 CONFIGURE_ARGS+=	--disable-warnings-as-errors
 
 .if ${COMPILER_TYPE} == gcc
-USE_GCC=	yes
-CONFIGURE_ARGS+=	--with-extra-ldflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT} -L${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
-			--with-extra-cflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
-			--with-extra-cxxflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}"
+USE_GCC=		yes
+CONFIGURE_ARGS+=	--with-extra-cflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
+			--with-extra-cxxflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT}" \
+			--with-extra-ldflags="-Wl,-rpath=${LOCALBASE}/lib/gcc${GCC_DEFAULT} -L${LOCALBASE}/lib/gcc${GCC_DEFAULT}"
 .else
-MAKE_ENV+=	USE_CLANG=true
+MAKE_ENV+=		USE_CLANG=true
 EXTRA_CFLAGS+=		-Wno-unused-but-set-parameter
-EXTRA_CFLAGS+=		-Wno-bitwise-instead-of-logical
-EXTRA_CFLAGS+=		-Wno-error=deprecated-non-prototype
+EXTRA_CFLAGS+=		-Wno-bitwise-instead-of-logical \
+			-Wno-error=deprecated-non-prototype
 CONFIGURE_ARGS+=	--with-extra-cflags="${EXTRA_CFLAGS}"
 CONFIGURE_ARGS+=	--with-extra-cxxflags="${EXTRA_CFLAGS}"
 .endif