From 16cba60c48a36b1047dcb63f52f85f0147c21450 Mon Sep 17 00:00:00 2001
From: monkuous <84319635+monkuous@users.noreply.github.com>
Date: Sat, 15 Nov 2025 23:21:02 +0100
Subject: [PATCH] jna: add port
---
patches/jna/jinx-working-patch.patch | 138 +++++++++++++++++++++++++++
recipes/jna | 26 +++++
source-recipes/jna | 8 ++
3 files changed, 172 insertions(+)
create mode 100644 patches/jna/jinx-working-patch.patch
create mode 100644 recipes/jna
create mode 100644 source-recipes/jna
diff --git a/patches/jna/jinx-working-patch.patch b/patches/jna/jinx-working-patch.patch
new file mode 100644
index 00000000..c1ec1834
--- /dev/null
+++ b/patches/jna/jinx-working-patch.patch
@@ -0,0 +1,138 @@
+diff -urN --no-dereference jna-clean/build.xml jna-workdir/build.xml
+--- jna-clean/build.xml
++++ jna-workdir/build.xml
+@@ -939,6 +939,9 @@
+
+
+
++
++
++
+
+
+
+diff -urN --no-dereference jna-clean/native/Makefile jna-workdir/native/Makefile
+--- jna-clean/native/Makefile
++++ jna-workdir/native/Makefile
+@@ -32,7 +32,7 @@
+ # NDK_PLATFORM below or set it in your environment.
+ #
+ # The windows build requires a cygwin installation. The build will use MSVC
+-# for compilation if cl.exe is found on the PATH, otherwise the build will fall
++# for compilation if cl.exe is found on the PATH, otherwise the build will fall
+ # back to mingw.
+
+ # Systems which support POSIX signals may be able to support VM crash
+@@ -118,7 +118,7 @@
+ ALIBDIR=/usr/lib
+ ifeq ($(ARCH),arm)
+ PREFIX=arm-linux-androideabi-
+-COPT+= -mthumb-interwork -march=armv5te -mtune=xscale -msoft-float -fstack-protector
++COPT+= -mthumb-interwork -march=armv5te -mtune=xscale -msoft-float -fstack-protector
+ HOST=arm-linux-eabi
+ else
+ ifeq ($(ARCH),armv7)
+@@ -234,7 +234,7 @@
+ ifeq ($(USE_MSVC),true)
+ # MS compiler
+ CC=$(FFI_SRC)/msvcc.sh
+-CDEFINES+=-DHAVE_PROTECTION
++CDEFINES+=-DHAVE_PROTECTION
+ ifneq ($(DYNAMIC_LIBFFI),true)
+ CDEFINES+=-DUSE_STATIC_RTL
+ endif
+@@ -396,13 +396,13 @@
+ DARWIN_ARCH=$(ARCH)
+ ifeq ($(ARCH),aarch64)
+ DARWIN_ARCH=arm64
+-else
++else
+ ifeq ($(ARCH),x86-64)
+ DARWIN_ARCH=x86_64
+ else
+ ifeq ($(ARCH),x86)
+ DARWIN_ARCH=x86
+-else
++else
+ endif
+ endif
+ endif
+@@ -455,6 +455,19 @@
+ LIBS=
+ endif
+
++ifeq ($(OS),astral)
++PCFLAGS+=-fPIC
++CDEFINES+=-DHAVE_PROTECTION
++HOST_CONFIG=--host=x86_64-astral
++JAVA_INCLUDES+=-I"$(JAVA_HOME)/include/linux"
++ifeq ($(DYNAMIC_LIBFFI),true)
++LDFLAGS+=-Wl,-soname,$@
++else
++# Ensure we bind to local libffi symbols
++LDFLAGS+=-Wl,-soname,$@,-Bsymbolic
++endif
++endif
++
+ # Unfortunately, we have to use different libffi include files depending on
+ # the target, so we can't do a simple universal build on darwin. Do
+ # separate builds, then merge the results.
+@@ -473,7 +486,7 @@
+ cp $(LIBRARY) $(INSTALLDIR)
+
+ ifeq ($(ARCH), amd64)
+-$(DLLCB): dll-callback.c
++$(DLLCB): dll-callback.c
+ $(MINGW) -DDEFINE_CALLBACKS -c $< $(COUT)
+ endif
+
+@@ -505,7 +518,7 @@
+ $(LD) $(LDFLAGS) $< $(TESTDEP) $(LIBS)
+
+ ifneq ($(DYNAMIC_LIBFFI),true)
+-$(FFI_LIB):
++$(FFI_LIB):
+ @mkdir -p $(FFI_BUILD)
+ @if [ ! -f $(FFI_SRC)/configure ]; then \
+ echo "Generating configure"; \
+diff -urN --no-dereference jna-clean/src/com/sun/jna/Platform.java jna-workdir/src/com/sun/jna/Platform.java
+--- jna-clean/src/com/sun/jna/Platform.java
++++ jna-workdir/src/com/sun/jna/Platform.java
+@@ -42,6 +42,7 @@
+ public static final int GNU = 9;
+ public static final int KFREEBSD = 10;
+ public static final int NETBSD = 11;
++ public static final int ASTRAL = 13;
+
+ /** Whether read-only (final) fields within Structures are supported. */
+ public static final boolean RO_FIELDS;
+@@ -110,6 +111,9 @@
+ else if (osName.equalsIgnoreCase("netbsd")) {
+ osType = NETBSD;
+ }
++ else if (osName.startsWith("Astral")) {
++ osType = ASTRAL;
++ }
+ else {
+ osType = UNSPECIFIED;
+ }
+@@ -175,6 +179,9 @@
+ public static final boolean iskFreeBSD() {
+ return osType == KFREEBSD;
+ }
++ public static final boolean isAstral() {
++ return osType == ASTRAL;
++ }
+ public static final boolean isX11() {
+ // TODO: check filesystem for /usr/X11 or some other X11-specific test
+ return !Platform.isWindows() && !Platform.isMac();
+@@ -341,6 +348,9 @@
+ case Platform.KFREEBSD:
+ osPrefix = "kfreebsd-" + arch;
+ break;
++ case Platform.ASTRAL:
++ osPrefix = "astral-" + arch;
++ break;
+ default:
+ osPrefix = name.toLowerCase();
+ int space = osPrefix.indexOf(" ");
diff --git a/recipes/jna b/recipes/jna
new file mode 100644
index 00000000..e8d9964c
--- /dev/null
+++ b/recipes/jna
@@ -0,0 +1,26 @@
+name=jna
+revision=1
+from_source=jna
+imagedeps="build-essential zip unzip file ant openjdk-8-jdk"
+hostdeps="xgcc xbinutils"
+deps="base openjdk17"
+
+configure() {
+ cp -rp "${source_dir}/." .
+}
+
+build() {
+ JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ant \
+ -DCC=x86_64-astral-gcc \
+ -Dos.prefix=linux-x86-64 \
+ -Djre.arch=x86-64 \
+ -Djdk.home="${sysroot_dir}/usr/lib/jvm/java-17" \
+ -Dbuild-native=true \
+ -Ddynlink.native=true \
+ dist
+}
+
+package() {
+ mkdir -p "${dest_dir}${prefix}/share/jna"
+ cp build/jna.jar "${dest_dir}${prefix}/share/jna"
+}
diff --git a/source-recipes/jna b/source-recipes/jna
new file mode 100644
index 00000000..52f89ecc
--- /dev/null
+++ b/source-recipes/jna
@@ -0,0 +1,8 @@
+name=jna
+version=5.13.0
+source_method=tarball
+tarball_url="https://github.com/java-native-access/jna/archive/refs/tags/${version}.tar.gz"
+tarball_sha512=aefd0becc03bb7fd753e8c5cdcbcb20f6d590125a5fb03048bef0024e826ab0254b750e22a8bb26bea38cc89262ad45e5030b666cb2c857b01b15a6a55379a0f
+prepare() {
+ true
+}