node-libclang icon indicating copy to clipboard operation
node-libclang copied to clipboard

Regenerate lib/dynamic_clang.js for clang-9

Open joelpurra opened this issue 5 years ago • 2 comments

Forked and fixed quite a few more things: https://github.com/node-ffi-packager/node-libclang


Note: includes commits from previous pull-requests. Should be merged to master one by one, but wanted to showcase the stepwise progress and allow for feedback.

  • https://github.com/tjfontaine/node-libclang/pull/16
  • https://github.com/tjfontaine/node-libclang/pull/17

  • Uses clang-9 to regenerate support for itself.
  • Version 9 is the most recent major version, released 2019-09-19.
  • Has additional methods not supported by clang-6.0 (the only other version tested).
  • Dynamically targeting the right version might be possible, but also requires more effort in generation and tests.
  • Cross-generation between versions might be possible.
  • Built on Ubuntu 19.10 Eoan using from node-ffi-generate with suport for Elaborated types.
ln --symbolic --force "$(which "llvm-config-9")" "${HOME}/bin/llvm-config"
llvm-config --version
LD_LIBRARY_PATH="$(llvm-config --libdir)" node ./lib/generateffi.js

NOTE: move the generated newclang.js to replace lib/dynamic_clang.js.

See

  • https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html
  • https://en.wikipedia.org/wiki/Clang
  • https://github.com/tjfontaine/node-ffi-generate

joelpurra avatar Mar 07 '20 12:03 joelpurra

Adds 200 or so lines of improvements between clang v6.0 and v9. In particular, I needed the new support for size_t to avoid some corruption issues when reading back struct data from a library using generated ref-struct parsing.

joelpurra avatar Mar 07 '20 12:03 joelpurra

Forked and fixed quite a few more things, might help someone: https://github.com/node-ffi-packager/node-libclang

joelpurra avatar May 07 '21 04:05 joelpurra