Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107762757
D44263.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
32 KB
Referenced Files
None
Subscribers
None
D44263.diff
View Options
diff --git a/games/Makefile b/games/Makefile
--- 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
--- 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
--- 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
--- 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
--- /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
--- /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
--- /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
--- /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.<i>.*" 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
--- /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
--- /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
--- 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
--- /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
--- 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
--- /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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jan 19, 12:57 AM (12 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15910525
Default Alt Text
D44263.diff (32 KB)
Attached To
Mode
D44263: games/lwjgl3: new port - required for games/minecraft-client 1.20.x
Attached
Detach File
Event Timeline
Log In to Comment