c-for-go
c-for-go copied to clipboard
Request: v8
My naive attempt of generating bindings for v8.h via:
GENERATOR:
PackageName: v8
PackageDescription: "Package v8 provides Go bindings for V8"
# PkgConfigOpts: [v8]
Includes: ["v8.h"]
Options:
SafeStrings: true
PARSER:
IncludePaths: [
"/usr/include",
"/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/",
"../../v8/v8/include",
]
SourcesPaths: ["v8.h"]
results in:
processing v8.yml ⠙[ERR] ../../v8/v8/include/cppgc/common.h:11:11: unexpected identifier cppgc, expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile] (and 7 more errors)
I gather it's the namespace..
Unfortunately, namespace is a C++ feature. And V8 is also written in C++. So no bindings directly, usually C++ needs to be wrapped additionally into C code, and that C code can be used in bindings. That's true for most C++ projects, due to lack of stable ABI for C++.
Look at this work for example https://github.com/augustoroman/v8/blob/master/v8_c_bridge.cc
Also this: https://github.com/lazytiger/go-v8/blob/master/v8_wrap.cc
So you can only generate bindings using the corresponding C headers.