<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <div class="markdown-here-wrapper" data-md-url="" style="" markdown-here-wrapper-content-modified="true">
      <p style="margin: 0px 0px 1.2em !important;">On 31/07/2024 16:09,
        Maurizio Cimadamore wrote:</p>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite" cite="mid:c6dcfc86-4393-41ce-9984-9d7b6c193082@oracle.com">This
          is not helpful I agree - seems to be coming somewhere deep in
          libclang. I wonder if it's related to the parsing of the
          compile_flags.txt itself...</blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em !important;"></p>
      <p style="margin: 0px 0px 1.2em !important;">I’ve tried adding a
        compile_flags.txt as follows:</p>
      <pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">-xc++
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">And this seems to
        work as expected for simple files containing a single
        prototype-less function declaration (e.g. jextract generates
        binding for a 0-arity function).</p>
      <p style="margin: 0px 0px 1.2em !important;">I’ve tried extracting
        OpenGL with this flag, and I started running into issues, as
        jextract started to see unsupported C++ constructs (such as
        “using”). Not sure where these came from (probably from standard
        library headers, as the headers for OpenGL don’t seem to have
        any “using” directive inside them).</p>
      <p style="margin: 0px 0px 1.2em !important;">But the error I got
        was something more specific (not just ASTReadError). Adding some
        hacks and workaround to jextract eventually allowed me to get to
        a full extraction.</p>
      <p style="margin: 0px 0px 1.2em !important;">I then tried tweaking
        the compile_flags.txt as follows:</p>
      <pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">-x c++
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">(note the extra
        space).</p>
      <p style="margin: 0px 0px 1.2em !important;">And bam, even for
        simple examples it fails like this:</p>
      <pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">fatal: Unexpected exception org.openjdk.jextract.clang.Index$ParsingFailedException: Failed to parse jextract$tmp.h: ASTReadError occurred
</code></pre>
      <p style="margin: 0px 0px 1.2em !important;">Which is, I think,
        what you saw. If that’s your issue you could try dropping the
        extra space. My (failed) attempts with OpenGL leave me somewhat
        skeptical that this solution truly works.</p>
      <p style="margin: 0px 0px 1.2em !important;">Maurizio</p>
      <div title="MDH:PHA+PGJyPjwvcD48ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDMxLzA3LzIwMjQgMTY6
MDksIE1hdXJpemlvIENpbWFkYW1vcmUgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9
ImNpdGUiIGNpdGU9Im1pZDpjNmRjZmM4Ni00MzkzLTQxY2UtOTk4NC05ZDdiNmMxOTMwODJAb3Jh
Y2xlLmNvbSI+VGhpcyBpcyBub3QgaGVscGZ1bCBJIGFncmVlIC0gc2VlbXMgdG8gYmUgY29taW5n
IHNvbWV3aGVyZSBkZWVwCiAgICAgIGluIGxpYmNsYW5nLiBJIHdvbmRlciBpZiBpdCdzIHJlbGF0
ZWQgdG8gdGhlIHBhcnNpbmcgb2YgdGhlCiAgICAgIGNvbXBpbGVfZmxhZ3MudHh0IGl0c2VsZi4u
LjwvYmxvY2txdW90ZT48cD5JJ3ZlIHRyaWVkIGFkZGluZyBhIGNvbXBpbGVfZmxhZ3MudHh0IGFz
IGZvbGxvd3M6PC9wPjxwPmBgYDxicj4teGMrKzxicj5gYGA8L3A+PHA+QW5kIHRoaXMgc2VlbXMg
dG8gd29yayBhcyBleHBlY3RlZCBmb3Igc2ltcGxlIGZpbGVzIGNvbnRhaW5pbmcgYSBzaW5nbGUg
cHJvdG90eXBlLWxlc3MgZnVuY3Rpb24gZGVjbGFyYXRpb24gKGUuZy4gamV4dHJhY3QgZ2VuZXJh
dGVzIGJpbmRpbmcgZm9yIGEgMC1hcml0eSBmdW5jdGlvbikuPC9wPjxwPkkndmUgdHJpZWQgZXh0
cmFjdGluZyBPcGVuR0wgd2l0aCB0aGlzIGZsYWcsIGFuZCBJIHN0YXJ0ZWQgcnVubmluZyBpbnRv
IGlzc3VlcywgYXMgamV4dHJhY3Qgc3RhcnRlZCB0byBzZWUgdW5zdXBwb3J0ZWQgQysrIGNvbnN0
cnVjdHMgKHN1Y2ggYXMgInVzaW5nIikuIE5vdCBzdXJlIHdoZXJlIHRoZXNlIGNhbWUgZnJvbSAo
cHJvYmFibHkgZnJvbSBzdGFuZGFyZCBsaWJyYXJ5IGhlYWRlcnMsIGFzIHRoZSBoZWFkZXJzIGZv
ciBPcGVuR0wgZG9uJ3Qgc2VlbSB0byBoYXZlIGFueSAidXNpbmciIGRpcmVjdGl2ZSBpbnNpZGUg
dGhlbSkuPC9wPjxwPkJ1dCB0aGUgZXJyb3IgSSBnb3Qgd2FzIHNvbWV0aGluZyBtb3JlIHNwZWNp
ZmljIChub3QganVzdCBBU1RSZWFkRXJyb3IpLiBBZGRpbmcgc29tZSBoYWNrcyBhbmQgd29ya2Fy
b3VuZCB0byBqZXh0cmFjdCBldmVudHVhbGx5IGFsbG93ZWQgbWUgdG8gZ2V0IHRvIGEgZnVsbCBl
eHRyYWN0aW9uLjxicj48L3A+PHA+SSB0aGVuIHRyaWVkIHR3ZWFraW5nIHRoZSBjb21waWxlX2Zs
YWdzLnR4dCBhcyBmb2xsb3dzOjwvcD48cD5gYGA8YnI+LXggYysrPGJyPmBgYDwvcD48cD4obm90
ZSB0aGUgZXh0cmEgc3BhY2UpLjwvcD48cD5BbmQgYmFtLCBldmVuIGZvciBzaW1wbGUgZXhhbXBs
ZXMgaXQgZmFpbHMgbGlrZSB0aGlzOjwvcD48cD5gYGA8YnI+ZmF0YWw6IFVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIG9yZy5vcGVuamRrLmpleHRyYWN0LmNsYW5nLkluZGV4JFBhcnNpbmdGYWlsZWRFeGNl
cHRpb246IEZhaWxlZCB0byBwYXJzZSBqZXh0cmFjdCR0bXAuaDogQVNUUmVhZEVycm9yIG9jY3Vy
cmVkPGJyPmBgYDxicj48L3A+PHA+V2hpY2ggaXMsIEkgdGhpbmssIHdoYXQgeW91IHNlZS4gSWYg
dGhhdCdzIHlvdXIgaXNzdWUgeW91IGNvdWxkIHRyeSBkcm9wcGluZyB0aGUgZXh0cmEgc3BhY2Uu
IE15IGZhaWxlZCBhdHRlbXB0cyB3aXRoIE9wZW5HTCBsZWF2ZSBtZSBzb21ld2hhdCBza2VwdGlj
YWwgdGhhdCB0aGlzIHNvbHV0aW9uIHRydWx5IHdvcmtzLjwvcD48cD5NYXVyaXppbzxicj48L3A+
wqA8YnI+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">​</div>
    </div>
  </body>
</html>