Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Mar 2024 17:22:33 GMT
From:      Vladimir Druzenko <vvd@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 680dc7bb031d - main - games/lwjgl3: update to 3.3.4.20231218
Message-ID:  <202403141722.42EHMXU3018530@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by vvd:

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

commit 680dc7bb031d0f708c2dd38f055ec8d63ee68b8a
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2024-03-14 17:14:40 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2024-03-14 17:21:38 +0000

    games/lwjgl3: update to 3.3.4.20231218
    
    This port required for games/minecraft-client (Java Minecraft Client)
    1.20.x run on FreeBSD without linux compatibility layer.
    
    Upstream support FreeBSD on amd64 only, but on linux they support
    i386, arm* and ppc* too - if somebody can and want to add support
    for other arches - welcome.
    
    PR:                     275279 269879 269900
    Approved by:            arrowd (mentor)
    Differential Revision:  https://reviews.freebsd.org/D44263
---
 games/Makefile                                     |   1 +
 games/lwjgl3/Makefile                              | 154 ++++++++++++++-------
 games/lwjgl3/distinfo                              |  36 ++++-
 games/lwjgl3/files/patch-build.xml                 |  10 --
 .../files/patch-config_build-definitions.xml       |  12 ++
 games/lwjgl3/files/patch-config_freebsd_build.xml  |  23 +++
 ...rc_main_java_org_lwjgl_system_MemoryManage.java |  12 ++
 ...ed_java_org_lwjgl_system_jemalloc_JEmalloc.java |  69 +++++++++
 ...erated_java_org_lwjgl_util_shaderc_Shaderc.java |  11 ++
 ...rc_generated_java_org_lwjgl_util_spvc_Spvc.java |  11 ++
 .../files/patch-platform_build__bsd_ant__build.xml |  22 ---
 games/lwjgl3/files/patch-update-dependencies.xml   |  20 +++
 games/lwjgl3/pkg-descr                             |  13 +-
 games/lwjgl3/pkg-plist                             | 140 +++++++++++++++++++
 14 files changed, 445 insertions(+), 89 deletions(-)

diff --git a/games/Makefile b/games/Makefile
index e91f3b413c00..dd9d770fffeb 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -602,6 +602,7 @@
     SUBDIR += lugaru
     SUBDIR += luola
     SUBDIR += lwjgl
+    SUBDIR += lwjgl3
     SUBDIR += macopix
     SUBDIR += madbomber
     SUBDIR += maelstrom
diff --git a/games/lwjgl3/Makefile b/games/lwjgl3/Makefile
index 0ca10c803db1..d9d7a0b6a9fe 100644
--- a/games/lwjgl3/Makefile
+++ b/games/lwjgl3/Makefile
@@ -1,79 +1,127 @@
 PORTNAME=	lwjgl
-DISTVERSION=	2.9.4.20161208
+DISTVERSION=	3.3.4.20231218
 CATEGORIES=	games java
+MASTER_SITES=	https://repo1.maven.org/:source1
+PKGNAMESUFFIX=	3
+DISTFILES=	maven2/com/beust/jcommander/1.78/jcommander-1.78.jar:source1 \
+		maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar:source1 \
+		maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:source1 \
+		maven2/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:source1 \
+		maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar:source1 \
+		maven2/org/joml/joml/1.10.5/joml-1.10.5-sources.jar:source1 \
+		maven2/org/joml/joml/1.10.5/joml-1.10.5.jar:source1 \
+		maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37-sources.jar:source1 \
+		maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar:source1 \
+		maven2/org/openjdk/jmh/jmh-generator-annprocess/1.37/jmh-generator-annprocess-1.37.jar:source1 \
+		maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:source1 \
+		maven2/org/slf4j/slf4j-jdk14/1.7.36/slf4j-jdk14-1.7.36.jar:source1 \
+		maven2/org/testng/testng/7.5/testng-7.5-sources.jar:source1 \
+		maven2/org/testng/testng/7.5/testng-7.5.jar:source1 \
+		maven2/org/webjars/jquery/3.5.1/jquery-3.5.1.jar:source1
+EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
 
-MAINTAINER=	freebsd@skinc.ru
+MAINTAINER=	vvd@FreeBSD.org
 COMMENT=	Lightweight Java Game Library
-WWW=		https://legacy.lwjgl.org
+WWW=		https://www.lwjgl.org
 
 LICENSE=	BSD3CLAUSE
 
-ONLY_FOR_ARCHS=	amd64 i386 powerpc64 powerpc64le
+ONLY_FOR_ARCHS=		amd64
+ONLY_FOR_ARCHS_REASON=	Upstream support FreeBSD on amd64 only: https://github.com/LWJGL/lwjgl3/issues/421
 
-BUILD_DEPENDS=	${JAVAJARDIR}/jutils/jutils.jar:games/jutils \
-		${JAVAJARDIR}/jinput/jinput.jar:games/jinput
-RUN_DEPENDS:=	${BUILD_DEPENDS}
+BUILD_DEPENDS=		${LOCALBASE}/openjdk8/bin/java:java/openjdk8 \
+			kotlinc-jvm:lang/kotlin
+LIB_DEPENDS=		libdraco.so:archivers/draco \
+			libopenal.so:audio/openal-soft \
+			libopus.so:audio/opus \
+			libdbus-1.so:devel/dbus \
+			libhwloc.so:devel/hwloc2 \
+			libffi.so:devel/libffi \
+			libbgfx.so:graphics/bgfx \
+			libglfw.so:graphics/glfw \
+			libktx.so:graphics/khronos-texture \
+			libopenxr_loader.so:graphics/openxr \
+			libshaderc_shared.so:graphics/shaderc \
+			libspirv-cross-c-shared.so:graphics/spirv-cross \
+			libassimp.so:multimedia/assimp \
+			libfreetype.so:print/freetype2 \
+			libharfbuzz.so:print/harfbuzz
+
+USES=		gl gnome
+USE_ANT=	yes
+USE_GL=		gl
+USE_GNOME=	glib20 gtk30
+USE_JAVA=	17+
 
-USES=		dos2unix xorg
 USE_GITHUB=	yes
 GH_ACCOUNT=	LWJGL
-GH_TAGNAME=	2df01dd
+GH_PROJECT=	${PORTNAME}${PKGNAMESUFFIX}
+GH_TAGNAME=	de8bd86
 
-DOS2UNIX_REGEX=	.*.[^jp][^an][^rg]$
-USE_JAVA=	yes
-USE_LDCONFIG=	yes
-USE_ANT=	yes
-USE_XORG=	xcursor xrandr xxf86vm
-MAKE_ENV+=	CLASSPATH=${JAVAJARDIR}/jutils/jutils.jar:${JAVAJARDIR}/jinput/jinput.jar:${WRKSRC}/${DISTNAME}/jar/
-ALL_TARGET=	jars compile_native
+MAKE_ARGS=	-Dbuild.offline=true \
+		-Djavadoc.skip=true \
+		-Duse.libffi.so=true \
+		-Dlibffi.path=${LOCALBASE}/lib \
+		-Dlocal.kotlin=${LOCALBASE}/share/kotlin
+MAKE_ENV+=	JAVA8_HOME=${LOCALBASE}/openjdk8
 
-PLIST_FILES=	${JAVAJARDIR}/${PORTNAME}/${PORTNAME}.jar \
-		${JAVAJARDIR}/${PORTNAME}/${PORTNAME}_test.jar \
-		${JAVAJARDIR}/${PORTNAME}/${PORTNAME}_util.jar \
-		${JAVAJARDIR}/${PORTNAME}/${PORTNAME}_util_applet.jar
-PLIST_DIRS=	${JAVAJARDIR}/${PORTNAME} \
-		lib/${PORTNAME}
+LIBSDIR=	${WRKSRC}/bin/libs/native/freebsd/*/org/lwjgl
 
 .include <bsd.port.pre.mk>
 
-.if ${ARCH} == i386
-PLIST_FILES+=	lib/${PORTNAME}/lib${PORTNAME}.so
+.if ${ARCH} == amd64
+_ARCH_DIR=		x64
+.elif ${ARCH} == i386
+_ARCH_DIR=		x86
+MAKE_ENV+=	ANT_OPTS=-Xmx2G
 .endif
 
-.if ${ARCH} == amd64 || ${ARCH:Mpowerpc64*}
-PLIST_FILES+=	lib/${PORTNAME}/lib${PORTNAME}64.so
-.endif
-
-.if ${ARCH:Mpowerpc64*}
-MAKE_ARGS+=	-Dbuild.64bit.only=1
-.endif
+post-extract:
+	${MKDIR} ${WRKSRC}/bin/libs/java
+	${LN} -s ${DISTDIR}/maven2/com/beust/jcommander/1.78/jcommander-1.78.jar \
+		${WRKSRC}/bin/libs/java/jcommander.jar
+	${LN} -s ${DISTDIR}/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar \
+		${WRKSRC}/bin/libs/java/jsr305-sources.jar
+	${LN} -s ${DISTDIR}/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar \
+		${WRKSRC}/bin/libs/java/jsr305.jar
+	${LN} -s ${DISTDIR}/maven2/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar \
+		${WRKSRC}/bin/libs/java/jopt-simple.jar
+	${LN} -s ${DISTDIR}/maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar \
+		${WRKSRC}/bin/libs/java/commons-math3.jar
+	${LN} -s ${DISTDIR}/maven2/org/joml/joml/1.10.5/joml-1.10.5-sources.jar \
+		${WRKSRC}/bin/libs/java/joml-sources.jar
+	${LN} -s ${DISTDIR}/maven2/org/joml/joml/1.10.5/joml-1.10.5.jar \
+		${WRKSRC}/bin/libs/java/joml.jar
+	${LN} -s ${DISTDIR}/maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37-sources.jar \
+		${WRKSRC}/bin/libs/java/jmh-core-sources.jar
+	${LN} -s ${DISTDIR}/maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar \
+		${WRKSRC}/bin/libs/java/jmh-core.jar
+	${LN} -s ${DISTDIR}/maven2/org/openjdk/jmh/jmh-generator-annprocess/1.37/jmh-generator-annprocess-1.37.jar \
+		${WRKSRC}/bin/libs/java/jmh-generator-annprocess.jar
+	${LN} -s ${DISTDIR}/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar \
+		${WRKSRC}/bin/libs/java/slf4j-api.jar
+	${LN} -s ${DISTDIR}/maven2/org/slf4j/slf4j-jdk14/1.7.36/slf4j-jdk14-1.7.36.jar \
+		${WRKSRC}/bin/libs/java/slf4j-jdk14.jar
+	${LN} -s ${DISTDIR}/maven2/org/testng/testng/7.5/testng-7.5-sources.jar \
+		${WRKSRC}/bin/libs/java/testng-sources.jar
+	${LN} -s ${DISTDIR}/maven2/org/testng/testng/7.5/testng-7.5.jar \
+		${WRKSRC}/bin/libs/java/testng.jar
+	${LN} -s ${DISTDIR}/maven2/org/webjars/jquery/3.5.1/jquery-3.5.1.jar \
+		${WRKSRC}/bin/libs/java/jquery.jar
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|PREFIX|${PREFIX}|g' \
-		-e '/executable/s/cc/${CC}/g' \
-		${WRKSRC}/platform_build/bsd_ant/build.xml
-.if ${ARCH} == powerpc64
-	@${REINPLACE_CMD} -e 's|amd64|ppc64|g' \
-		${WRKSRC}/platform_build/bsd_ant/build.xml
-.elif ${ARCH} == powerpc64le
-	@${REINPLACE_CMD} -e 's|amd64|ppc64le|g' \
-		${WRKSRC}/platform_build/bsd_ant/build.xml
-.endif
+	@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' ${WRKSRC}/config/freebsd/build.xml \
+		${WRKSRC}/modules/lwjgl/cuda/src/main/java/org/lwjgl/cuda/CUDA.java
 
 do-install:
+	@cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${ANT} release ${MAKE_ARGS}
 	@${MKDIR} ${STAGEDIR}${JAVAJARDIR}/${PORTNAME}
-.for _jar in ${PLIST_FILES:M*.jar}
-	${INSTALL_DATA} ${WRKSRC}/libs/${_jar:T} \
-		${STAGEDIR}${JAVAJARDIR}/${PORTNAME}
-.endfor
 	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}
-.if ${ARCH} == i386
-	${INSTALL_DATA} ${WRKSRC}/libs/freebsd/lib${PORTNAME}.so \
-		${STAGEDIR}${PREFIX}/lib/${PORTNAME}
-.endif
-.if ${ARCH} == amd64 || ${ARCH:Mpowerpc64*}
-	${INSTALL_DATA} ${WRKSRC}/libs/freebsd/lib${PORTNAME}64.so \
-		${STAGEDIR}${PREFIX}/lib/${PORTNAME}
-.endif
+.for x in ${WRKSRC}/bin/RELEASE/lwjgl*/*.jar
+	${INSTALL_DATA} ${WRKSRC}${x} ${STAGEDIR}${JAVAJARDIR}/${PORTNAME}/
+.endfor
+.for x in ${LIBSDIR}/liblwjgl.so ${LIBSDIR}/*/liblwjgl*.so
+	${INSTALL_LIB} ${WRKSRC}${x} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/
+.endfor
 
 .include <bsd.port.post.mk>
diff --git a/games/lwjgl3/distinfo b/games/lwjgl3/distinfo
index 62990c1abb77..be19673c1770 100644
--- a/games/lwjgl3/distinfo
+++ b/games/lwjgl3/distinfo
@@ -1,3 +1,33 @@
-TIMESTAMP = 1576013211
-SHA256 (LWJGL-lwjgl-2.9.4.20161208-2df01dd_GH0.tar.gz) = a4d03e9244a9e253abcfe7ee75d4413bd3db1fd8c38e67eedbd0c6c313c4e504
-SIZE (LWJGL-lwjgl-2.9.4.20161208-2df01dd_GH0.tar.gz) = 15052370
+TIMESTAMP = 1705410040
+SHA256 (maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar) = 766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7
+SIZE (maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar) = 19936
+SHA256 (maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar) = 1c9e85e272d0708c6a591dc74828c71603053b48cc75ae83cce56912a2aa063b
+SIZE (maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar) = 18102
+SHA256 (maven2/org/testng/testng/7.5/testng-7.5.jar) = e549db50dcc421f9501d6af933af15e4fba96617577409d939724cd7e1a25033
+SIZE (maven2/org/testng/testng/7.5/testng-7.5.jar) = 941401
+SHA256 (maven2/org/testng/testng/7.5/testng-7.5-sources.jar) = b87c87ab56212a895cf535a4fedd4a9d4be77427257b11ce6574cb15834357cc
+SIZE (maven2/org/testng/testng/7.5/testng-7.5-sources.jar) = 486428
+SHA256 (maven2/com/beust/jcommander/1.78/jcommander-1.78.jar) = 7891debb84b5f83e9bd57593ebece3399abbe0fd938cf306b3534c57913b9615
+SIZE (maven2/com/beust/jcommander/1.78/jcommander-1.78.jar) = 83782
+SHA256 (maven2/org/webjars/jquery/3.5.1/jquery-3.5.1.jar) = 83168112220ac912a3dba0eebae90a4da5bf1e24b1bafd401e3d4f9f598bb2cb
+SIZE (maven2/org/webjars/jquery/3.5.1/jquery-3.5.1.jar) = 313070
+SHA256 (maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar) = d3ef575e3e4979678dc01bf1dcce51021493b4d11fb7f1be8ad982877c16a1c0
+SIZE (maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar) = 41125
+SHA256 (maven2/org/slf4j/slf4j-jdk14/1.7.36/slf4j-jdk14-1.7.36.jar) = 5bf64690af4e59876b8902bb0db3dd39c686a40abfed97d3837eeeec7a2922ac
+SIZE (maven2/org/slf4j/slf4j-jdk14/1.7.36/slf4j-jdk14-1.7.36.jar) = 8436
+SHA256 (maven2/org/joml/joml/1.10.5/joml-1.10.5.jar) = cac9f22f83a7aa33eebda73c16ff5261e3cb4911b6bafcf4c79ea486099d0c9a
+SIZE (maven2/org/joml/joml/1.10.5/joml-1.10.5.jar) = 712082
+SHA256 (maven2/org/joml/joml/1.10.5/joml-1.10.5-sources.jar) = 08f15fcbc7b2154657c53706f4169142d9aa20cd8cfd1d4d4aa4aa60c949e622
+SIZE (maven2/org/joml/joml/1.10.5/joml-1.10.5-sources.jar) = 691986
+SHA256 (maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar) = dc0eaf2bbf0036a70b60798c785d6e03a9daf06b68b8edb0f1ba9eb3421baeb3
+SIZE (maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37.jar) = 552986
+SHA256 (maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37-sources.jar) = fd4beda07b3b94cd0e32199401bbb2d9ed3371a770c8c320761b9442ff3e8e05
+SIZE (maven2/org/openjdk/jmh/jmh-core/1.37/jmh-core-1.37-sources.jar) = 416281
+SHA256 (maven2/org/openjdk/jmh/jmh-generator-annprocess/1.37/jmh-generator-annprocess-1.37.jar) = 6a5604b5b804e0daca1145df1077609321687734a8b49387e49f10557c186c77
+SIZE (maven2/org/openjdk/jmh/jmh-generator-annprocess/1.37/jmh-generator-annprocess-1.37.jar) = 30881
+SHA256 (maven2/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar) = df26cc58f235f477db07f753ba5a3ab243ebe5789d9f89ecf68dd62ea9a66c28
+SIZE (maven2/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar) = 78146
+SHA256 (maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar) = 1e56d7b058d28b65abd256b8458e3885b674c1d588fa43cd7d1cbb9c7ef2b308
+SIZE (maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar) = 2213560
+SHA256 (LWJGL-lwjgl3-3.3.4.20231218-de8bd86_GH0.tar.gz) = 77f796784b750b49c699b457f3cab3c19b378f4ea4f0f645dfc5c33e4d1947f2
+SIZE (LWJGL-lwjgl3-3.3.4.20231218-de8bd86_GH0.tar.gz) = 15322197
diff --git a/games/lwjgl3/files/patch-build.xml b/games/lwjgl3/files/patch-build.xml
deleted file mode 100644
index 3ed34b1ff2fd..000000000000
--- a/games/lwjgl3/files/patch-build.xml
+++ /dev/null
@@ -1,10 +0,0 @@
---- build.xml.orig	2014-04-04 16:45:10 UTC
-+++ build.xml
-@@ -7,7 +7,6 @@
- 	<import file="platform_build/build-applet.xml"/>
- 	<import file="platform_build/build-webstart.xml"/>
- 	<import file="platform_build/build-maven.xml"/>
--	<import file="eclipse-update/org.lwjgl.build/build-updatesite.xml"/>
- 
- 	<!-- ================================================================== -->
- 	<!-- Everything below this line is targets.								-->
diff --git a/games/lwjgl3/files/patch-config_build-definitions.xml b/games/lwjgl3/files/patch-config_build-definitions.xml
new file mode 100644
index 000000000000..a8664fe7cb93
--- /dev/null
+++ b/games/lwjgl3/files/patch-config_build-definitions.xml
@@ -0,0 +1,12 @@
+--- config/build-definitions.xml.orig	2023-12-18 14:22:59 UTC
++++ config/build-definitions.xml
+@@ -100,7 +100,8 @@ This script is included in /build.xml and /config/upda
+ 
+     <property name="lib" location="bin/libs" relative="true"/>
+ 
+-    <property name="kotlinc" location="${lib}/kotlinc" relative="true"/>
++    <property name="kotlinc" location="${lib}/kotlinc" relative="true" unless:set="local.kotlin"/>
++    <property name="kotlinc" location="${local.kotlin}" relative="false" if:set="local.kotlin"/>
+ 
+     <property name="module.lwjgl" location="modules/lwjgl" relative="true"/>
+ 
diff --git a/games/lwjgl3/files/patch-config_freebsd_build.xml b/games/lwjgl3/files/patch-config_freebsd_build.xml
new file mode 100644
index 000000000000..e4ef6a9204eb
--- /dev/null
+++ b/games/lwjgl3/files/patch-config_freebsd_build.xml
@@ -0,0 +1,23 @@
+--- config/freebsd/build.xml.orig	2023-12-18 14:22:59 UTC
++++ config/freebsd/build.xml
+@@ -159,16 +159,18 @@
+                     <include name="${module.lwjgl}/jawt/src/generated/c/*.c" if:true="${binding.jawt}"/>
+                 </fileset>
+             </source>
+-            <beforeLink>
++            <beforeLink unless:true="${use.libffi.so}">
+                 <parallel threadsPerProcessor="2" failonany="true" unless:set="lib-dependencies-uptodate">
+                     <update-dependency module="core" artifact="core/libffi.a"/>
+                 </parallel>
+             </beforeLink>
+             <link>
+-                <fileset dir="${lib.native}/org/lwjgl">
++                <fileset dir="${lib.native}/org/lwjgl" unless:true="${use.libffi.so}">
+                     <include name="libffi.a"/>
+                 </fileset>
+                 <arg value="-ldl"/>
++                <arg value="-lffi" if:true="${use.libffi.so}"/>
++                <arg value="-L${libffi.path}" if:set="libffi.path"/>
+             </link>
+         </build>
+ 
diff --git a/games/lwjgl3/files/patch-modules_lwjgl_core_src_main_java_org_lwjgl_system_MemoryManage.java b/games/lwjgl3/files/patch-modules_lwjgl_core_src_main_java_org_lwjgl_system_MemoryManage.java
new file mode 100644
index 000000000000..0e976ea34e68
--- /dev/null
+++ b/games/lwjgl3/files/patch-modules_lwjgl_core_src_main_java_org_lwjgl_system_MemoryManage.java
@@ -0,0 +1,12 @@
+--- modules/lwjgl/core/src/main/java/org/lwjgl/system/MemoryManage.java.orig	2023-12-18 14:22:59 UTC
++++ modules/lwjgl/core/src/main/java/org/lwjgl/system/MemoryManage.java
+@@ -34,6 +34,9 @@ final class MemoryManage {
+             String className;
+             if (allocator == null || "jemalloc".equals(allocator)) {
+                 className = "org.lwjgl.system.jemalloc.JEmallocAllocator";
++                if (Platform.get() == Platform.FREEBSD) {
++                    Configuration.JEMALLOC_LIBRARY_NAME.set("libc.so.7");
++                }
+             } else if ("rpmalloc".equals(allocator)) {
+                 className = "org.lwjgl.system.rpmalloc.RPmallocAllocator";
+             } else {
diff --git a/games/lwjgl3/files/patch-modules_lwjgl_jemalloc_src_generated_java_org_lwjgl_system_jemalloc_JEmalloc.java b/games/lwjgl3/files/patch-modules_lwjgl_jemalloc_src_generated_java_org_lwjgl_system_jemalloc_JEmalloc.java
new file mode 100644
index 000000000000..8de303595b8f
--- /dev/null
+++ b/games/lwjgl3/files/patch-modules_lwjgl_jemalloc_src_generated_java_org_lwjgl_system_jemalloc_JEmalloc.java
@@ -0,0 +1,69 @@
+--- modules/lwjgl/jemalloc/src/generated/java/org/lwjgl/system/jemalloc/JEmalloc.java.orig	2023-12-18 14:22:59 UTC
++++ modules/lwjgl/jemalloc/src/generated/java/org/lwjgl/system/jemalloc/JEmalloc.java
+@@ -40,27 +40,27 @@ public class JEmalloc {
+ 
+         /** Function address. */
+         public static final long
+-            malloc_message     = apiGetFunctionAddress(JEMALLOC, "je_malloc_message"),
+-            malloc             = apiGetFunctionAddress(JEMALLOC, "je_malloc"),
+-            calloc             = apiGetFunctionAddress(JEMALLOC, "je_calloc"),
+-            posix_memalign     = apiGetFunctionAddress(JEMALLOC, "je_posix_memalign"),
+-            aligned_alloc      = apiGetFunctionAddress(JEMALLOC, "je_aligned_alloc"),
+-            realloc            = apiGetFunctionAddress(JEMALLOC, "je_realloc"),
+-            free               = apiGetFunctionAddress(JEMALLOC, "je_free"),
+-            free_sized         = apiGetFunctionAddress(JEMALLOC, "je_free_sized"),
+-            free_aligned_sized = apiGetFunctionAddress(JEMALLOC, "je_free_aligned_sized"),
+-            mallocx            = apiGetFunctionAddress(JEMALLOC, "je_mallocx"),
+-            rallocx            = apiGetFunctionAddress(JEMALLOC, "je_rallocx"),
+-            xallocx            = apiGetFunctionAddress(JEMALLOC, "je_xallocx"),
+-            sallocx            = apiGetFunctionAddress(JEMALLOC, "je_sallocx"),
+-            dallocx            = apiGetFunctionAddress(JEMALLOC, "je_dallocx"),
+-            sdallocx           = apiGetFunctionAddress(JEMALLOC, "je_sdallocx"),
+-            nallocx            = apiGetFunctionAddress(JEMALLOC, "je_nallocx"),
+-            mallctl            = apiGetFunctionAddress(JEMALLOC, "je_mallctl"),
+-            mallctlnametomib   = apiGetFunctionAddress(JEMALLOC, "je_mallctlnametomib"),
+-            mallctlbymib       = apiGetFunctionAddress(JEMALLOC, "je_mallctlbymib"),
+-            malloc_stats_print = apiGetFunctionAddress(JEMALLOC, "je_malloc_stats_print"),
+-            malloc_usable_size = apiGetFunctionAddress(JEMALLOC, "je_malloc_usable_size");
++            malloc_message     = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "malloc_message"),
++            malloc             = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "malloc"),
++            calloc             = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "calloc"),
++            posix_memalign     = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "posix_memalign"),
++            aligned_alloc      = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "aligned_alloc"),
++            realloc            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "realloc"),
++            free               = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "free"),
++            free_sized         = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "free_sized"),
++            free_aligned_sized = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "free_aligned_sized"),
++            mallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "mallocx"),
++            rallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "rallocx"),
++            xallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "xallocx"),
++            sallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "sallocx"),
++            dallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "dallocx"),
++            sdallocx           = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "sdallocx"),
++            nallocx            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "nallocx"),
++            mallctl            = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "mallctl"),
++            mallctlnametomib   = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "mallctlnametomib"),
++            mallctlbymib       = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "mallctlbymib"),
++            malloc_stats_print = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "malloc_stats_print"),
++            malloc_usable_size = apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "malloc_usable_size");
+ 
+     }
+ 
+@@ -105,11 +105,16 @@ public class JEmalloc {
+     /** Use as arena index in "stats.arenas.&lt;i&gt;.*" mallctl interfaces to select destroyed arenas. */
+     public static final int MALLCTL_ARENAS_DESTROYED = 0x1001;
+ 
++    private static String functionNamePrefix = "je_";
++
+     static {
++        if (Platform.get() == Platform.FREEBSD) {
++            functionNamePrefix = "";
++        }
+         // Force jemalloc to initialize before anyone else uses it.
+         // This avoids a dangerous race when the first jemalloc functions are called concurrently.
+         if (Platform.get() == Platform.WINDOWS) {
+-            invokePV(invokePP(8L, apiGetFunctionAddress(JEMALLOC, "je_malloc")), apiGetFunctionAddress(JEMALLOC, "je_free"));
++            invokePV(invokePP(8L, apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "malloc")), apiGetFunctionAddress(JEMALLOC, functionNamePrefix + "free"));
+         }
+     }
+ 
diff --git a/games/lwjgl3/files/patch-modules_lwjgl_shaderc_src_generated_java_org_lwjgl_util_shaderc_Shaderc.java b/games/lwjgl3/files/patch-modules_lwjgl_shaderc_src_generated_java_org_lwjgl_util_shaderc_Shaderc.java
new file mode 100644
index 000000000000..262e86b4b7b8
--- /dev/null
+++ b/games/lwjgl3/files/patch-modules_lwjgl_shaderc_src_generated_java_org_lwjgl_util_shaderc_Shaderc.java
@@ -0,0 +1,11 @@
+--- modules/lwjgl/shaderc/src/generated/java/org/lwjgl/util/shaderc/Shaderc.java.orig	2023-12-18 14:22:59 UTC
++++ modules/lwjgl/shaderc/src/generated/java/org/lwjgl/util/shaderc/Shaderc.java
+@@ -20,7 +20,7 @@ import static org.lwjgl.system.MemoryUtil.*;
+ /** Native bindings to the libshaderc C API of the <a href="https://github.com/google/shaderc/">shaderc</a>; library. */
+ public class Shaderc {
+ 
+-    private static final SharedLibrary SHADERC = Library.loadNative(Shaderc.class, "org.lwjgl.shaderc", Configuration.SHADERC_LIBRARY_NAME.get(Platform.mapLibraryNameBundled("shaderc")), true);
++    private static final SharedLibrary SHADERC = Library.loadNative(Shaderc.class, "org.lwjgl.shaderc", Configuration.SHADERC_LIBRARY_NAME.get(Platform.mapLibraryNameBundled(Platform.get() == Platform.FREEBSD ? "shaderc_shared" : "shaderc")), true);
+ 
+     /** Contains the function pointers loaded from the shaderc {@link SharedLibrary}. */
+     public static final class Functions {
diff --git a/games/lwjgl3/files/patch-modules_lwjgl_spvc_src_generated_java_org_lwjgl_util_spvc_Spvc.java b/games/lwjgl3/files/patch-modules_lwjgl_spvc_src_generated_java_org_lwjgl_util_spvc_Spvc.java
new file mode 100644
index 000000000000..361420cf9ca1
--- /dev/null
+++ b/games/lwjgl3/files/patch-modules_lwjgl_spvc_src_generated_java_org_lwjgl_util_spvc_Spvc.java
@@ -0,0 +1,11 @@
+--- modules/lwjgl/spvc/src/generated/java/org/lwjgl/util/spvc/Spvc.java.orig	2023-12-18 14:22:59 UTC
++++ modules/lwjgl/spvc/src/generated/java/org/lwjgl/util/spvc/Spvc.java
+@@ -40,7 +40,7 @@ import static org.lwjgl.system.MemoryUtil.*;
+  */
+ public class Spvc {
+ 
+-    private static final SharedLibrary SPVC = Library.loadNative(Spvc.class, "org.lwjgl.spvc", Configuration.SPVC_LIBRARY_NAME.get(Platform.mapLibraryNameBundled("spirv-cross")), true);
++    private static final SharedLibrary SPVC = Library.loadNative(Spvc.class, "org.lwjgl.spvc", Configuration.SPVC_LIBRARY_NAME.get(Platform.mapLibraryNameBundled(Platform.get() == Platform.FREEBSD ? "spirv-cross-c-shared" : "spirv-cross")), true);
+ 
+     /** Contains the function pointers loaded from the spvc {@link SharedLibrary}. */
+     public static final class Functions {
diff --git a/games/lwjgl3/files/patch-platform_build__bsd_ant__build.xml b/games/lwjgl3/files/patch-platform_build__bsd_ant__build.xml
deleted file mode 100644
index f700a84daf83..000000000000
--- a/games/lwjgl3/files/patch-platform_build__bsd_ant__build.xml
+++ /dev/null
@@ -1,22 +0,0 @@
---- platform_build/bsd_ant/build.xml.orig	2019-12-10 20:24:26
-+++ platform_build/bsd_ant/build.xml
-@@ -4,8 +4,8 @@
- 	<property name="native" location="../../src/native"/>
- 	<property name="libname32" value="liblwjgl.so"/>
- 	<property name="libname64" value="liblwjgl64.so"/>
--	<property name="libs32" value="-L/usr/X11R6/lib -L/usr/local/lib -lm -lX11 -lXext -lXcursor -lXrandr -pthread -L${java.home}/lib/i386 -ljawt" />
--	<property name="libs64" value="-L/usr/X11R6/lib -L/usr/local/lib -lm -lX11 -lXext -lXcursor -lXrandr -lXxf86vm -pthread -L${java.home}/lib/amd64 -ljawt" />
-+	<property name="libs32" value="-LPREFIX/lib -lm -lX11 -lXext -lXcursor -lXrandr -pthread -L${java.home}/lib/i386 -ljawt" />
-+	<property name="libs64" value="-LPREFIX/lib -lm -lX11 -lXext -lXcursor -lXrandr -lXxf86vm -pthread -L${java.home}/lib/amd64 -ljawt" />
-     <property name="cflags32" value="-O2 -Wall -c -fPIC -std=c99 -Wunused"/>
- 
- 	<target name="clean">
-@@ -39,7 +39,7 @@
-     		<os name="SunOS" />
-     	</condition>
- 
--		<property name="linker_flags32" value="${version_script_flags32} -shared -O2 -Wall -o ${libname32} ${libs32} ${xf86vm_lib}"/>
-+		<property name="linker_flags32" value="${version_script_flags32} -shared -O2 -Wall -z notext -o ${libname32} ${libs32} ${xf86vm_lib}"/>
- 		<property name="linker_flags64" value="${version_script_flags64} -shared -O2 -Wall -o ${libname64} ${libs64} ${xf86vm_lib}"/>
- 
-     	<condition property="build.32bit.only">
diff --git a/games/lwjgl3/files/patch-update-dependencies.xml b/games/lwjgl3/files/patch-update-dependencies.xml
new file mode 100644
index 000000000000..4c3943508b63
--- /dev/null
+++ b/games/lwjgl3/files/patch-update-dependencies.xml
@@ -0,0 +1,20 @@
+--- update-dependencies.xml.orig	2023-12-18 14:22:59 UTC
++++ update-dependencies.xml
+@@ -27,7 +27,7 @@
+     <target name="check-dependencies" description="Updates LWJGL dependencies, if required" unless="${build.offline}">
+         <!-- Checks if the Kotlin compiler must be updated -->
+         <local name="kotlinc-build-current"/>
+-        <loadfile property="kotlinc-build-current" srcfile="${kotlinc}/build.txt" quiet="true" taskname="kotlinc"/>
++        <loadfile property="kotlinc-build-current" srcfile="${kotlinc}/build.txt" quiet="true" taskname="kotlinc" unless:set="local.kotlin"/>
+         <condition property="kotlinc-uptodate">
+             <and>
+                 <isset property="kotlinc-build-current"/>
+@@ -54,7 +54,7 @@
+         <mkdir dir="${lib}"/>
+         <mkdir dir="${lib}/java"/>
+         <antcall target="-lib-download"/>
+-        <antcall target="-kotlinc-download"/>
++        <antcall target="-kotlinc-download" unless:set="local.kotlin"/>
+     </target>
+ 
+     <!-- Downloads and extracts the Kotlin compiler. -->
diff --git a/games/lwjgl3/pkg-descr b/games/lwjgl3/pkg-descr
index 26f7d6ba117f..b821aa2e5eb0 100644
--- a/games/lwjgl3/pkg-descr
+++ b/games/lwjgl3/pkg-descr
@@ -1 +1,12 @@
-The Lightweight Java Game Library
+The Lightweight Java Game Library (LWJGL) is a Java library that enables
+cross-platform access to popular native APIs useful in the development
+of graphics (OpenGL, Vulkan), audio (OpenAL) and parallel computing
+(OpenCL) applications. This access is direct and high-performance, yet
+also wrapped in a type-safe and user-friendly layer, appropriate for the
+Java ecosystem.
+LWJGL is an enabling technology and provides low-level access. It is not
+a framework and does not provide higher-level utilities than what the
+native libraries expose. As such, novice programmers are encouraged to
+try one of the frameworks or game engines that make use of LWJGL, before
+working directly with the library.
+LWJGL is open source software and freely available at no charge.
diff --git a/games/lwjgl3/pkg-plist b/games/lwjgl3/pkg-plist
new file mode 100644
index 000000000000..845786e4b16f
--- /dev/null
+++ b/games/lwjgl3/pkg-plist
@@ -0,0 +1,140 @@
+lib/lwjgl/liblwjgl.so
+lib/lwjgl/liblwjgl_libdivide.so
+lib/lwjgl/liblwjgl_llvm.so
+lib/lwjgl/liblwjgl_lmdb.so
+lib/lwjgl/liblwjgl_lz4.so
+lib/lwjgl/liblwjgl_meow.so
+lib/lwjgl/liblwjgl_meshoptimizer.so
+lib/lwjgl/liblwjgl_nanovg.so
+lib/lwjgl/liblwjgl_nfd.so
+lib/lwjgl/liblwjgl_nfd_portal.so
+lib/lwjgl/liblwjgl_nuklear.so
+lib/lwjgl/liblwjgl_opengl.so
+lib/lwjgl/liblwjgl_opengles.so
+lib/lwjgl/liblwjgl_openvr.so
+lib/lwjgl/liblwjgl_par.so
+lib/lwjgl/liblwjgl_remotery.so
+lib/lwjgl/liblwjgl_rpmalloc.so
+lib/lwjgl/liblwjgl_sse.so
+lib/lwjgl/liblwjgl_stb.so
+lib/lwjgl/liblwjgl_tinyexr.so
+lib/lwjgl/liblwjgl_tinyfd.so
+lib/lwjgl/liblwjgl_tootle.so
+lib/lwjgl/liblwjgl_vma.so
+lib/lwjgl/liblwjgl_xxhash.so
+lib/lwjgl/liblwjgl_yoga.so
+lib/lwjgl/liblwjgl_zstd.so
+%%JAVAJARDIR%%/lwjgl/lwjgl.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-assimp-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-assimp.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-bgfx-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-bgfx.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-cuda-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-cuda.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-egl-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-egl.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-fmod-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-fmod.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-freetype-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-freetype.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-glfw-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-glfw.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-harfbuzz-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-harfbuzz.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-hwloc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-hwloc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-jawt-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-jawt.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-jemalloc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-jemalloc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-ktx-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-ktx.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-libdivide-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-libdivide-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-libdivide.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-llvm-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-llvm-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-llvm.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lmdb-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lmdb-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lmdb.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lz4-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lz4-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-lz4.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meow-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meow-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meow.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meshoptimizer-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meshoptimizer-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-meshoptimizer.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nanovg-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nanovg-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nanovg.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nfd-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nfd-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nfd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nuklear-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nuklear-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-nuklear.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-odbc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-odbc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openal-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openal.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opencl-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opencl.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengl-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengl-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengl.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengles-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengles-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opengles.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openvr-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openvr.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openxr-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-openxr.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opus-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-opus.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-par-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-par-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-par.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-remotery-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-remotery-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-remotery.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-rpmalloc-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-rpmalloc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-rpmalloc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-shaderc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-shaderc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-spvc-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-spvc.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-sse-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-sse-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-sse.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-stb-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-stb-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-stb.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyexr-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyexr-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyexr.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyfd-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyfd-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tinyfd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tootle-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tootle-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-tootle.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-vma-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-vma-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-vma.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-vulkan-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-vulkan.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-xxhash-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-xxhash-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-xxhash.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-yoga-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-yoga-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-yoga.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-zstd-natives-freebsd.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-zstd-sources.jar
+%%JAVAJARDIR%%/lwjgl/lwjgl-zstd.jar



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202403141722.42EHMXU3018530>