I found a github fork that added jdk 11 build support for Linux, so
I adadapted that to work for us. Here's that commit:

https://github.com/MeFisto94/lwjgl/commit/72e97f53f7d256bc90e397e946054fcbe764c203

I updated games/minecraft to use jdk 11 as well and can launch to
the login screen, but I think games/minecraft is dead - TBD.

So I need people who use games/indiegames and have lwjgl based
games to give this a test run. Not sure I will be able to fix
any problems, but it would be nice to know if anything works.

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/lwjgl/Makefile,v
diff -u -p -u -r1.13 Makefile
--- Makefile    11 Mar 2022 19:04:37 -0000      1.13
+++ Makefile    18 Dec 2025 22:39:39 -0000
@@ -6,7 +6,7 @@ GH_PROJECT=     lwjgl
 GH_TAGNAME=    ${GH_PROJECT}${V}
 DISTNAME=      lwjgl${V}
 PKGNAME=       lwjgl-${V}
-REVISION=      5
+REVISION=      6
 
 .if ${MACHINE_ARCH} == "i386"
 M_ARCH=                ""
@@ -27,7 +27,7 @@ PERMIT_PACKAGE=       Yes
 WANTLIB += GL X11 Xcursor Xext Xrandr Xxf86vm m pthread
 
 MODULES=       java
-MODJAVA_VER=   1.8
+MODJAVA_VER=   11
 MODJAVA_BUILD= ant
 
 BUILD_DEPENDS= audio/openal
Index: patches/patch-build_xml
===================================================================
RCS file: patches/patch-build_xml
diff -N patches/patch-build_xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-build_xml     18 Dec 2025 22:39:39 -0000
@@ -0,0 +1,68 @@
+Build with jdk-11
+
+Index: build.xml
+--- build.xml.orig
++++ build.xml
+@@ -295,6 +295,7 @@
+ 
+       <!-- Generates the native headers from source files -->
+       <target name="headers" description="invokes javah on java classes" 
depends="compile">
++              <!--
+               <javah classpath="${lwjgl.bin}" 
destdir="${lwjgl.src.native}/linux">
+                       <class name="org.lwjgl.LinuxSysImplementation" />
+                       <class name="org.lwjgl.opengl.LinuxEvent" />
+@@ -371,6 +372,7 @@
+                       <class name="org.lwjgl.opengles.GLContext"/>
+                       <class name="org.lwjgl.opengles.CallbackUtil"/>
+               </javah>
++              -->
+       </target>
+ 
+       <target name="touch-version">
+@@ -401,21 +403,21 @@
+                               </tokenfilter>
+                       </filterchain>
+               </loadfile>
+-              <loadfile 
srcfile="${lwjgl.src.native}/windows/org_lwjgl_WindowsSysImplementation.h" 
property="lwjgl.native.windows.version">
++              <loadfile 
srcfile="${lwjgl.src.native}/org_lwjgl_WindowsSysImplementation.h" 
property="lwjgl.native.windows.version">
+                       <filterchain>
+                               <tokenfilter>
+                       <containsstring contains="#define 
org_lwjgl_WindowsSysImplementation_JNI_VERSION"/>
+                               </tokenfilter>
+                       </filterchain>
+               </loadfile>
+-              <loadfile 
srcfile="${lwjgl.src.native}/linux/org_lwjgl_LinuxSysImplementation.h" 
property="lwjgl.native.linux.version">
++              <loadfile 
srcfile="${lwjgl.src.native}/org_lwjgl_LinuxSysImplementation.h" 
property="lwjgl.native.linux.version">
+                       <filterchain>
+                               <tokenfilter>
+                       <containsstring contains="#define 
org_lwjgl_LinuxSysImplementation_JNI_VERSION"/>
+                               </tokenfilter>
+                       </filterchain>
+               </loadfile>
+-              <loadfile 
srcfile="${lwjgl.src.native}/macosx/org_lwjgl_MacOSXSysImplementation.h" 
property="lwjgl.native.macosx.version">
++              <loadfile 
srcfile="${lwjgl.src.native}/org_lwjgl_MacOSXSysImplementation.h" 
property="lwjgl.native.macosx.version">
+                       <filterchain>
+                               <tokenfilter>
+                       <containsstring contains="#define 
org_lwjgl_MacOSXSysImplementation_JNI_VERSION"/>
+@@ -462,7 +464,9 @@
+ 
+       <!-- Compiles the Java source code -->
+       <target name="compile" description="Compiles the java source code" 
depends="-initialize">
+-              <javac debug="yes" destdir="${lwjgl.bin}" source="1.5" 
target="1.5" 
classpath="${lwjgl.lib}/jinput.jar:${lwjgl.lib}/AppleJavaExtensions.jar:${lwjgl.lib}/asm-debug-all.jar"
 taskname="core">
++              <javac debug="yes" destdir="${lwjgl.bin}" source="1.6" 
target="1.6"
++                         
classpath="${lwjgl.lib}/jinput.jar:${lwjgl.lib}/AppleJavaExtensions.jar:${lwjgl.lib}/asm-debug-all.jar"
++                         taskname="core" 
nativeHeaderDir="${lwjgl.src.native}">
+             <!--<compilerarg value="-Xlint:unchecked"/>-->
+                       <src path="${lwjgl.src}/java/"/>
+                       <src path="${lwjgl.src}/generated/"/>
+@@ -475,8 +479,8 @@
+                       <include name="org/lwjgl/util/**"/>
+                       <exclude name="org/lwjgl/util/generator/**"/>
+               </javac>
+-              <javac debug="yes" srcdir="${lwjgl.src}/java/" 
destdir="${lwjgl.bin}" includes="org/lwjgl/test/**" source="1.5" target="1.5" 
taskname="test" />
+-              <javac debug="yes" srcdir="${lwjgl.src}/java/" 
destdir="${lwjgl.bin}" includes="org/lwjgl/examples/**" source="1.5" 
target="1.5" taskname="examples" />
++              <javac debug="yes" srcdir="${lwjgl.src}/java/" 
destdir="${lwjgl.bin}" includes="org/lwjgl/test/**" source="1.6" target="1.6" 
taskname="test" />
++              <javac debug="yes" srcdir="${lwjgl.src}/java/" 
destdir="${lwjgl.bin}" includes="org/lwjgl/examples/**" source="1.6" 
target="1.6" taskname="examples" />
+       </target>
+ 
+       <target name="compile_native" depends="-initialize, headers, 
touch-version, version-mismatch" description="Compiles the native files">
Index: patches/patch-platform_build_bsd_ant_build_xml
===================================================================
RCS file: 
/cvs/ports/games/lwjgl/patches/patch-platform_build_bsd_ant_build_xml,v
diff -u -p -u -r1.5 patch-platform_build_bsd_ant_build_xml
--- patches/patch-platform_build_bsd_ant_build_xml      11 Mar 2022 19:04:37 
-0000      1.5
+++ patches/patch-platform_build_bsd_ant_build_xml      18 Dec 2025 22:39:39 
-0000
@@ -1,18 +1,32 @@
-Use os.arch on 64 bit builds.
+Build with jdk-11
+Build only 32 bit on i386 and 64bit only otherwise
 
 Index: platform_build/bsd_ant/build.xml
 --- platform_build/bsd_ant/build.xml.orig
 +++ platform_build/bsd_ant/build.xml
-@@ -5,7 +5,7 @@
+@@ -4,8 +4,9 @@
+       <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="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="libs64" value="-L/usr/X11R6/lib -L/usr/local/lib -lm 
-lX11 -lXext -lXcursor -lXrandr -lXxf86vm -pthread 
-L${java.home}/lib/${os.arch} -ljawt" />
++      <!-- After JDK 8 (at least on JDK 11), the architecture isn't part of 
the lib folder anymore -->
++      <property name="libs32" value="-L/usr/X11R6/lib -L/usr/local/lib -lm 
-lX11 -lXext -lXcursor -lXrandr -pthread -L${java.home}/lib -ljawt" />
++      <property name="libs64" value="-L/usr/X11R6/lib -L/usr/local/lib -lm 
-lX11 -lXext -lXcursor -lXrandr -lXxf86vm -pthread -L${java.home}/lib -ljawt" />
      <property name="cflags32" value="-O2 -Wall -c -fPIC -std=c99 -Wunused"/>
  
        <target name="clean">
-@@ -67,7 +67,9 @@
+@@ -64,10 +65,19 @@
+             </and>
+         </condition>
+ 
++      <condition property="build.32bit.only">
++            <and>
++                <os name="OpenBSD"/>
++                <equals arg1="${hwplatform}" arg2="i386"/>
++            </and>
++        </condition>
++
        <condition property="build.64bit.only">
              <and>
                  <os name="OpenBSD"/>
@@ -23,3 +37,19 @@ Index: platform_build/bsd_ant/build.xml
              </and>
          </condition>
  
+@@ -87,6 +97,7 @@
+                       <arg value="-I${java.home}/../include/openbsd"/>
+                       <arg value="-I/usr/local/include"/>
+                       <arg value="-I/usr/X11R6/include"/>
++                      <arg value="-I${native}"/>
+                       <arg value="-I${native}/common"/>
+                   <arg value="-I${native}/common/opengl"/>
+                       <arg value="-I${native}/linux"/>
+@@ -124,6 +135,7 @@
+                       <arg value="-I/usr/X11R6/include"/>
+             <arg value="-I${native}/common"/>
+                   <arg value="-I${native}/common/opengl"/>
++                      <arg value="-I${native}"/>
+                       <arg value="-I${native}/linux"/>
+                   <arg value="-I${native}/linux/opengl"/>
+                       <mapper type="glob" from="*.c" to="*.o"/>
Index: patches/patch-platform_build_build-generator_xml
===================================================================
RCS file: patches/patch-platform_build_build-generator_xml
diff -N patches/patch-platform_build_build-generator_xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-platform_build_build-generator_xml    18 Dec 2025 22:39:39 
-0000
@@ -0,0 +1,14 @@
+Build with jdk-11
+
+Index: platform_build/build-generator.xml
+--- platform_build/build-generator.xml.orig
++++ platform_build/build-generator.xml
+@@ -32,7 +32,7 @@
+               </javac>
+ 
+               <!-- Compile helper classes used by the templates -->
+-        <javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" 
source="1.5" target="1.5" taskname="generator">
++        <javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" 
source="1.6" target="1.6" taskname="generator">
+             <include name="org/lwjgl/PointerWrapper.java"/>
+             <include name="org/lwjgl/PointerBuffer.java"/>
+             <!-- OpenGL -->
Index: patches/patch-src_java_org_lwjgl_LinuxSysImplementation_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_LinuxSysImplementation_java
diff -N patches/patch-src_java_org_lwjgl_LinuxSysImplementation_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_LinuxSysImplementation_java        18 Dec 
2025 22:39:39 -0000
@@ -0,0 +1,13 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/LinuxSysImplementation.java
+--- src/java/org/lwjgl/LinuxSysImplementation.java.orig
++++ src/java/org/lwjgl/LinuxSysImplementation.java
+@@ -43,6 +43,7 @@ import java.lang.UnsatisfiedLinkError;
+  * $Id$
+  */
+ final class LinuxSysImplementation extends J2SESysImplementation {
++      @java.lang.annotation.Native
+       private static final int JNI_VERSION = 19;
+ 
+       static {
Index: patches/patch-src_java_org_lwjgl_MacOSXSysImplementation_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_MacOSXSysImplementation_java
diff -N patches/patch-src_java_org_lwjgl_MacOSXSysImplementation_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_MacOSXSysImplementation_java       18 Dec 
2025 22:39:39 -0000
@@ -0,0 +1,13 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/MacOSXSysImplementation.java
+--- src/java/org/lwjgl/MacOSXSysImplementation.java.orig
++++ src/java/org/lwjgl/MacOSXSysImplementation.java
+@@ -44,6 +44,7 @@ import java.lang.UnsatisfiedLinkError;
+  * $Id$
+  */
+ final class MacOSXSysImplementation extends J2SESysImplementation {
++      @java.lang.annotation.Native
+       private static final int JNI_VERSION = 25;
+ 
+       static {
Index: patches/patch-src_java_org_lwjgl_MemoryUtilSun_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_MemoryUtilSun_java
diff -N patches/patch-src_java_org_lwjgl_MemoryUtilSun_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_MemoryUtilSun_java 18 Dec 2025 22:39:39 
-0000
@@ -0,0 +1,53 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/MemoryUtilSun.java
+--- src/java/org/lwjgl/MemoryUtilSun.java.orig
++++ src/java/org/lwjgl/MemoryUtilSun.java
+@@ -37,7 +37,6 @@ import java.lang.reflect.Modifier;
+ import java.nio.Buffer;
+ 
+ import sun.misc.Unsafe;
+-import sun.reflect.FieldAccessor;
+ 
+ /**
+  * MemoryUtil.Accessor implementations that depend on sun.misc.
+@@ -99,37 +98,8 @@ final class MemoryUtilSun {
+                       }
+ 
+                       throw new UnsupportedOperationException();
+-              }
+-
+-      }
+-
+-      /** Implementation using reflection on ByteBuffer, FieldAccessor is 
used directly. */
+-      private static class AccessorReflectFast implements MemoryUtil.Accessor 
{
+-
+-              private final FieldAccessor addressAccessor;
+-
+-              AccessorReflectFast() {
+-                      Field address;
+-                      try {
+-                              address = MemoryUtil.getAddressField();
+-                      } catch (NoSuchFieldException e) {
+-                              throw new UnsupportedOperationException(e);
+-                      }
+-                      address.setAccessible(true);
+-
+-                      try {
+-                              Method m = 
Field.class.getDeclaredMethod("acquireFieldAccessor", boolean.class);
+-                              m.setAccessible(true);
+-                              addressAccessor = 
(FieldAccessor)m.invoke(address, true);
+-                      } catch (Exception e) {
+-                              throw new UnsupportedOperationException(e);
+-                      }
+-              }
+-
+-              public long getAddress(final Buffer buffer) {
+-                      return addressAccessor.getLong(buffer);
+               }
+ 
+       }
+ 
+-}
+\ No newline at end of file
++}
Index: patches/patch-src_java_org_lwjgl_input_Cursor_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_input_Cursor_java
diff -N patches/patch-src_java_org_lwjgl_input_Cursor_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_input_Cursor_java  18 Dec 2025 22:39:39 
-0000
@@ -0,0 +1,22 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/input/Cursor.java
+--- src/java/org/lwjgl/input/Cursor.java.orig
++++ src/java/org/lwjgl/input/Cursor.java
+@@ -51,12 +51,15 @@ import org.lwjgl.Sys;
+ 
+ public class Cursor {
+       /** 1 bit transparency for native cursor */
++      @java.lang.annotation.Native
+       public static final int         CURSOR_ONE_BIT_TRANSPARENCY     = 1;
+ 
+-      /** 8 bit alhpa native cursor */
++      /** 8 bit alpha native cursor */
++      @java.lang.annotation.Native
+       public static final int         CURSOR_8_BIT_ALPHA                      
                = 2;
+ 
+       /** animation native cursor */
++      @java.lang.annotation.Native
+       public static final int         CURSOR_ANIMATION                        
                        = 4;
+ 
+       /** First element to display */
Index: patches/patch-src_java_org_lwjgl_opengl_Pbuffer_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_opengl_Pbuffer_java
diff -N patches/patch-src_java_org_lwjgl_opengl_Pbuffer_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_opengl_Pbuffer_java        18 Dec 2025 
22:39:39 -0000
@@ -0,0 +1,13 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/opengl/Pbuffer.java
+--- src/java/org/lwjgl/opengl/Pbuffer.java.orig
++++ src/java/org/lwjgl/opengl/Pbuffer.java
+@@ -52,6 +52,7 @@ public final class Pbuffer extends DrawableGL {
+       /**
+        * Indicates that Pbuffers can be created.
+        */
++      @java.lang.annotation.Native
+       public static final int PBUFFER_SUPPORTED = 1 << 0;
+ 
+       /**
Index: patches/patch-src_java_org_lwjgl_util_generator_GeneratorVisitor_java
===================================================================
RCS file: patches/patch-src_java_org_lwjgl_util_generator_GeneratorVisitor_java
diff -N patches/patch-src_java_org_lwjgl_util_generator_GeneratorVisitor_java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_java_org_lwjgl_util_generator_GeneratorVisitor_java       
18 Dec 2025 22:39:39 -0000
@@ -0,0 +1,16 @@
+Build with jdk-11
+
+Index: src/java/org/lwjgl/util/generator/GeneratorVisitor.java
+--- src/java/org/lwjgl/util/generator/GeneratorVisitor.java.orig
++++ src/java/org/lwjgl/util/generator/GeneratorVisitor.java
+@@ -300,8 +300,8 @@ public class GeneratorVisitor extends ElementKindVisit
+                       }
+ 
+                       // TODO: Back-port LWJGL 3's generation file handling 
(generate in-memory and avoid touching files if nothing has changed)
+-                      java_writer = new 
PrintWriter(env.getFiler().createSourceFile(Utils.getQualifiedClassName(e), 
env.getElementUtils().getPackageOf(e)).openWriter());
+-                      generateJavaSource(e, java_writer);
++                      outputJava.getParentFile().mkdirs();
++                      generateJavaSource(e, new PrintWriter(new 
java.io.FileWriter(outputJava)));
+ 
+                       if ( methods.size() > 0 ) {
+                               boolean noNative = true;
Index: patches/patch-src_native_common_org_lwjgl_BufferUtils_c
===================================================================
RCS file: patches/patch-src_native_common_org_lwjgl_BufferUtils_c
diff -N patches/patch-src_native_common_org_lwjgl_BufferUtils_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_native_common_org_lwjgl_BufferUtils_c     18 Dec 2025 
22:39:39 -0000
@@ -0,0 +1,10 @@
+Build with jdk-11
+
+Index: src/native/common/org_lwjgl_BufferUtils.c
+--- src/native/common/org_lwjgl_BufferUtils.c.orig
++++ src/native/common/org_lwjgl_BufferUtils.c
+@@ -1,4 +1,3 @@
+-#include "org_lwjgl_BufferUtils.h"
+ #include "common_tools.h"
+ 
+ JNIEXPORT void JNICALL Java_org_lwjgl_BufferUtils_zeroBuffer0(JNIEnv *env, 
jclass clazz, jobject buffer, jlong offset, jlong size) {
Index: patches/patch-src_native_common_org_lwjgl_opencl_CallbackUtil_c
===================================================================
RCS file: patches/patch-src_native_common_org_lwjgl_opencl_CallbackUtil_c
diff -N patches/patch-src_native_common_org_lwjgl_opencl_CallbackUtil_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_native_common_org_lwjgl_opencl_CallbackUtil_c     18 Dec 
2025 22:39:39 -0000
@@ -0,0 +1,13 @@
+Build with jdk-11
+
+Index: src/native/common/org_lwjgl_opencl_CallbackUtil.c
+--- src/native/common/org_lwjgl_opencl_CallbackUtil.c.orig
++++ src/native/common/org_lwjgl_opencl_CallbackUtil.c
+@@ -39,7 +39,6 @@
+ #include <jni.h>
+ #include "common_tools.h"
+ #include "extcl.h"
+-#include "org_lwjgl_opencl_CallbackUtil.h"
+ 
+ static jmethodID contextCallbackJ;
+ static jmethodID memObjectDestructorCallbackJ;
Index: patches/patch-src_native_linux_opengl_org_lwjgl_opengl_Pbuffer_c
===================================================================
RCS file: patches/patch-src_native_linux_opengl_org_lwjgl_opengl_Pbuffer_c
diff -N patches/patch-src_native_linux_opengl_org_lwjgl_opengl_Pbuffer_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_native_linux_opengl_org_lwjgl_opengl_Pbuffer_c    18 Dec 
2025 22:39:39 -0000
@@ -0,0 +1,13 @@
+Build with jdk-11
+
+Index: src/native/linux/opengl/org_lwjgl_opengl_Pbuffer.c
+--- src/native/linux/opengl/org_lwjgl_opengl_Pbuffer.c.orig
++++ src/native/linux/opengl/org_lwjgl_opengl_Pbuffer.c
+@@ -42,6 +42,7 @@
+ #include <stdlib.h>
+ #include "org_lwjgl_opengl_LinuxPbufferPeerInfo.h"
+ #include "org_lwjgl_opengl_Pbuffer.h"
++#include "org_lwjgl_opengl_LinuxDisplay.h"
+ #include "extgl.h"
+ #include "context.h"
+ #include "common_tools.h"

Reply via email to