[foreign] RFC: Jextract -l options ignored by SymbolFilter when -L is not specified

Jorn Vernee jbvernee at xs4all.nl
Mon Jan 21 18:31:11 UTC 2019


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