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..5ed64243d 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,16 @@ public final class LimboDB implements AutoCloseable { String osName = System.getProperty("os.name").toLowerCase(); String osArch = System.getProperty("os.arch").toLowerCase(); + // TODO: add support for arm64 on Linux + if (osName.contains("linux")) { + if (osArch.contains("aarch64") || osArch.contains("arm64")) { + throw new UnsupportedOperationException( + "ARM64 architecture is not supported on Linux yet"); + } 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;