[foreign] RFC: Jextract -l options ignored by SymbolFilter when -L is not specified
Sundararajan Athijegannathan
sundararajan.athijegannathan at oracle.com
Tue Jan 22 05:41:55 UTC 2019
I don't think it is a bug - afaik it is as per design. The primary use
of "-l" is to record the library in annotation of the generated jar - so
that binder can auto-load the library (either from java.library.path
configuration or -rpath value recorded in annotation). It is okay to
record name of the shared object alone and leave the library path
configuration to java.library.path setting.
"-L" option is added feature to perform missing symbols checking.
"-rpath" option is to add a path for library search - so that binder can
locate the shared object in the specific directory. If no -rpath is
specified, "-L" is used for runtime search as well.
-Sundar
On 22/01/19, 12:01 AM, Jorn Vernee wrote:
> Hi,
>
> I've recently updated the instructions for using libraries on Windows.
> For python the jextract example I gave was:
>
> jextract -l python27 -o "python.jar" -t "org.python"
> C:\Python27\include\Python.h
>
> I'm lacking an `-L` option here (for specifying library directories)
> since the contents of PATH seems to be added to java.library.path by
> default, and this is presumably also how jextract is able to load the
> library. But, since I'm not using an `-L` option, SymbolFilter is not
> checking if the symbols are in the python27.dll [1]
>
> private void initSymChecker(List<String> linkCheckPaths) {
> if (!libraryNames.isEmpty() && !linkCheckPaths.isEmpty()) {
> // ... init symChecker
> } else {
> symChecker = null;
> }
> }
>
> (linkCheckPaths comes from the -L option values)
>
> This behaviour is somewhat unexpected. At least a warning that missing
> an `-L` option will turn off symbol checking would be nice.
>
> We could also add the paths in `java.library.path` to the list of link
> check paths in jextract [2]. That would mean that the symbol checker
> would run for the example command.
>
> What do you think?
>
> Jorn
>
> [1] :
> http://hg.openjdk.java.net/panama/dev/file/eaca2d16b80b/src/jdk.jextract/share/classes/com/sun/tools/jextract/SymbolFilter.java#l89
> [2] :
> http://cr.openjdk.java.net/~jvernee/panama/webrevs/jlibpath/webrev.01/
More information about the panama-dev
mailing list