bind/java: Add support for building on Linux

This commit is contained in:
Diego Reis 2025-06-02 15:49:51 -03:00
parent ea301de726
commit 4589cd6916
3 changed files with 19 additions and 1 deletions

View file

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

View file

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

View file

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