RFR: 7903755: multi header support and special syntax for header file

Athijegannathan Sundararajan sundar at openjdk.org
Wed Jun 19 16:00:38 UTC 2024


On Wed, 19 Jun 2024 10:20:11 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> jextract currently supports only one header file. If the user wants to extract more than one header file, s/he has to create a containing header that includes multiple headers and jextract the containing header.
>> 
>> With the current change, jextract supports more than one header file in the command line.
>> When multiple headers are specified in command line, --header-class-name option is mandatory and it is enforced.
>> 
>> In addition to normal file names for header file names, a special syntax such as "<stdio.h>" is also supported. With this, user does not have to write long file name including directories such as /usr/include/stdio.h.
>> 
>> jextract generates multiple headers by generating a temporary header file. If the command line argument is of the form "<stdio.h>" then jextract generates "#include <stdio.h>" in the auto-generated containing header. If the header specified in of the normal/existing form (say foo.h), then containing header will have #include "foo.h" line.
>
> src/main/java/org/openjdk/jextract/JextractTool.java line 89:
> 
>> 87:     }
>> 88: 
>> 89:     private static Path generateTmpSource(List<String> headers) {
> 
> This creates a temp file. It would be good to avoid this and maybe use clang APIs to parse in-memory files?

we're using the same trick for macro re-parser. I'll try to revisit this in a future PR

-------------

PR Review Comment: https://git.openjdk.org/jextract/pull/249#discussion_r1646369595


More information about the jextract-dev mailing list