From 4589cd6916a13d6ed5732f437e0ed1b35762442b Mon Sep 17 00:00:00 2001 From: Diego Reis Date: Mon, 2 Jun 2025 15:49:51 -0300 Subject: [PATCH 1/3] bind/java: Add support for building on Linux --- bindings/java/Makefile | 8 ++++++++ bindings/java/README.md | 2 +- .../java/src/main/java/tech/turso/core/LimboDB.java | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/bindings/java/Makefile b/bindings/java/Makefile index fbcaea66b..6cfcc2ef8 100644 --- a/bindings/java/Makefile +++ b/bindings/java/Makefile @@ -6,6 +6,7 @@ CARGO_BUILD := cargo build --release MACOS_X86_DIR := $(RELEASE_DIR)/macos_x86 MACOS_ARM64_DIR := $(RELEASE_DIR)/macos_arm64 WINDOWS_DIR := $(RELEASE_DIR)/windows +LINUX_X86_DIR := $(RELEASE_DIR)/linux_x86 .PHONY: libs macos_x86 macos_arm64 windows lint lint_apply test build_test @@ -33,6 +34,13 @@ windows: @cp $(TEMP_DIR)/x86_64-pc-windows-gnu/release/_limbo_java.dll $(WINDOWS_DIR)/lib_limbo_java.dll @rm -rf $(TEMP_DIR) +linux_x86: + @echo "Building release version for linux x86_64..." + @mkdir -p $(TEMP_DIR) $(LINUX_X86_DIR) + @CARGO_TARGET_DIR=$(TEMP_DIR) $(CARGO_BUILD) --target x86_64-unknown-linux-gnu + @cp $(TEMP_DIR)/x86_64-unknown-linux-gnu/release/lib_limbo_java.d $(LINUX_X86_DIR) + @rm -rf $(TEMP_DIR) + lint: ./gradlew spotlessCheck diff --git a/bindings/java/README.md b/bindings/java/README.md index c5ee4b6d5..464d90a15 100644 --- a/bindings/java/README.md +++ b/bindings/java/README.md @@ -18,7 +18,7 @@ maven local to use it. ```shell $ cd bindings/java -# Please select the appropriate target platform, currently supports `macos_x86`, `macos_arm64`, `windows` +# Please select the appropriate target platform, currently supports `macos_x86`, `macos_arm64`, `windows` and `linux_x86` $ make macos_x86 # deploy to maven local diff --git a/bindings/java/src/main/java/tech/turso/core/LimboDB.java b/bindings/java/src/main/java/tech/turso/core/LimboDB.java index 3d9a4d8b8..598b9672f 100644 --- a/bindings/java/src/main/java/tech/turso/core/LimboDB.java +++ b/bindings/java/src/main/java/tech/turso/core/LimboDB.java @@ -41,6 +41,7 @@ public final class LimboDB implements AutoCloseable { enum Architecture { MACOS_ARM64("libs/macos_arm64/lib_limbo_java.dylib", ".dylib"), MACOS_X86("libs/macos_x86/lib_limbo_java.dylib", ".dylib"), + LINUX_X86("libs/linux_x86/lib_limbo_java.so", ".so"), WINDOWS("libs/windows/lib_limbo_java.dll", ".dll"), UNSUPPORTED("", ""); @@ -64,6 +65,15 @@ public final class LimboDB implements AutoCloseable { String osName = System.getProperty("os.name").toLowerCase(); String osArch = System.getProperty("os.arch").toLowerCase(); + // TODO: Fix this + if (osName.contains("linux")) { + if (osArch.contains("aarch64") || osArch.contains("arm64")) { + return LINUX_X86; + } else if (osArch.contains("x86_64") || osArch.contains("amd64")) { + return LINUX_X86; + } + } + if (osName.contains("mac")) { if (osArch.contains("aarch64") || osArch.contains("arm64")) { return MACOS_ARM64; From b50dcd493a187650212dbdc6c73c249f9f2c5fdf Mon Sep 17 00:00:00 2001 From: Diego Reis Date: Tue, 3 Jun 2025 10:37:46 -0300 Subject: [PATCH 2/3] bind/java: Improve TODO comment --- bindings/java/src/main/java/tech/turso/core/LimboDB.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/java/src/main/java/tech/turso/core/LimboDB.java b/bindings/java/src/main/java/tech/turso/core/LimboDB.java index 598b9672f..9e436dfd7 100644 --- a/bindings/java/src/main/java/tech/turso/core/LimboDB.java +++ b/bindings/java/src/main/java/tech/turso/core/LimboDB.java @@ -65,7 +65,7 @@ public final class LimboDB implements AutoCloseable { String osName = System.getProperty("os.name").toLowerCase(); String osArch = System.getProperty("os.arch").toLowerCase(); - // TODO: Fix this + // TODO: add support for arm64 on Linux if (osName.contains("linux")) { if (osArch.contains("aarch64") || osArch.contains("arm64")) { return LINUX_X86; From 3a17bf71864e4876f02e8ca094c8d822ec009398 Mon Sep 17 00:00:00 2001 From: Diego Reis Date: Wed, 4 Jun 2025 08:34:34 -0300 Subject: [PATCH 3/3] bind/java: Throw in case of yet unsupported Linux on arm64 --- bindings/java/src/main/java/tech/turso/core/LimboDB.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bindings/java/src/main/java/tech/turso/core/LimboDB.java b/bindings/java/src/main/java/tech/turso/core/LimboDB.java index 9e436dfd7..5ed64243d 100644 --- a/bindings/java/src/main/java/tech/turso/core/LimboDB.java +++ b/bindings/java/src/main/java/tech/turso/core/LimboDB.java @@ -68,7 +68,8 @@ public final class LimboDB implements AutoCloseable { // TODO: add support for arm64 on Linux if (osName.contains("linux")) { if (osArch.contains("aarch64") || osArch.contains("arm64")) { - return LINUX_X86; + throw new UnsupportedOperationException( + "ARM64 architecture is not supported on Linux yet"); } else if (osArch.contains("x86_64") || osArch.contains("amd64")) { return LINUX_X86; }