On Thu, 18 Dec 2025 23:09:51 +0000
Kurt Miller <[email protected]> wrote:

> 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.

I will do that, due to $dayjob and volume of games supported by
indierunner, I'll report back within the next 7 days

> 
> 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