On Mon, 18 Mar 2024 17:43:45 GMT, Suchismith Roy <s...@openjdk.org> wrote:
>> Allow support for both .a and .so files in AIX. >> If .so file is not found, allow fallback to .a extension. >> JBS Issue: [JDK-8319516](https://bugs.openjdk.org/browse/JDK-8319516) > > Suchismith Roy has updated the pull request incrementally with one additional > commit since the last revision: > > trraling spaces In case of jextract (jdk22 branch), we would then need something like the following if we want AIX to behave like the other platforms? diff --git a/src/main/java/org/openjdk/jextract/clang/libclang/Index_h.java b/src/main/java/org/openjdk/jextract/clang/libclang/Index_h.java index 14eba30..c069c3b 100644 --- a/src/main/java/org/openjdk/jextract/clang/libclang/Index_h.java +++ b/src/main/java/org/openjdk/jextract/clang/libclang/Index_h.java @@ -27,11 +27,13 @@ package org.openjdk.jextract.clang.libclang; +import java.io.File; import java.lang.invoke.*; import java.lang.foreign.*; import java.nio.ByteOrder; import java.util.*; import java.util.function.*; +import java.util.StringTokenizer; import java.util.stream.*; import static java.lang.foreign.ValueLayout.*; @@ -101,8 +103,21 @@ public class Index_h { } static { - String libName = System.getProperty("os.name").startsWith("Windows") ? "libclang" : "clang"; - System.loadLibrary(libName); + String osName = System.getProperty("os.name"); + String libName = ""; + if (osName.startsWith("AIX")) { + String libPath = System.getProperty("java.library.path"); + StringTokenizer parser = new StringTokenizer(libPath, ":"); + while (parser.hasMoreTokens()) { + libName = parser.nextToken() + "/libclang.a"; + File f = new File(libName); + if (f.exists() && !f.isDirectory()) break; + } + SymbolLookup.libraryLookup(libName + "(libclang.so.16)", Arena.global()); + } else { + libName = osName.startsWith("Windows") ? "libclang" : "clang"; + System.loadLibrary(libName); + } } static final SymbolLookup SYMBOL_LOOKUP = SymbolLookup.loaderLookup() If I try this, I get "UnsatisfiedLinkError: unresolved symbol: clang_createIndex". So, seems like the lib gets found, but symbols not loaded. Seems like there are more changes needed. ------------- PR Comment: https://git.openjdk.org/jdk/pull/17945#issuecomment-2015506765