diff --git a/java/src/main/java/org/burningwave/jvm/util/Libraries.java b/java/src/main/java/org/burningwave/jvm/util/Libraries.java index 780bea97..9a379e20 100644 --- a/java/src/main/java/org/burningwave/jvm/util/Libraries.java +++ b/java/src/main/java/org/burningwave/jvm/util/Libraries.java @@ -57,11 +57,15 @@ private Libraries() { } String osArch = jVMInfo.osArch != null ? jVMInfo.osArch : "generic"; String operatingSystemName = jVMInfo.operatingSystemName != null ? jVMInfo.operatingSystemName.toLowerCase(Locale.ENGLISH) : "generic"; + boolean isMac = (operatingSystemName.indexOf("mac") >= 0) || (operatingSystemName.indexOf("darwin") >= 0); prefix = "lib"; if (osArch.equals("aarch64")) { conventionedSuffix = osArch; - extension = "so"; - } else if ((operatingSystemName.indexOf("mac") >= 0) || (operatingSystemName.indexOf("darwin") >= 0)) { + // On macOS the loader still needs the platform-correct extension; previously + // this branch hardcoded "so" which made aarch64 macOS fail with + // "slice is not valid mach-o file" when dlopen tried to parse a Linux ELF. + extension = isMac ? "dylib" : "so"; + } else if (isMac) { extension = "dylib"; } else if (operatingSystemName.indexOf("win") >= 0) { prefix = null; diff --git a/native/bin/libNativeExecutor-aarch64.dylib b/native/bin/libNativeExecutor-aarch64.dylib new file mode 100755 index 00000000..1169ccfb Binary files /dev/null and b/native/bin/libNativeExecutor-aarch64.dylib differ diff --git a/native/pom.xml b/native/pom.xml index 7a4988e6..cd481a0e 100644 --- a/native/pom.xml +++ b/native/pom.xml @@ -50,6 +50,10 @@ -O3 -fPIC -fPIC -shared NativeExecutor + + x${sun.arch.data.model} @@ -63,7 +67,25 @@ lib${org.codehaus.mojo.option.gcc-linker.artifact-name} dylib - ${java.home}/include/darwin/ + ${java.home}/include/darwin/ + + + + + mac-aarch64 + + + mac + aarch64 + + + + aarch64 @@ -251,7 +273,7 @@ - ${org.codehaus.mojo.option.gcc-linker.final-name}-x${sun.arch.data.model} + ${org.codehaus.mojo.option.gcc-linker.final-name}-${linker.arch.suffix} ${packaging.type}