Since you're already using LLVM, I'm wondering if you've thought about adding something similar to the includec function in Terra [1] which uses Clang to parse C headers. I used to think that Lisp's CFFI was the best FFI out there until I saw that it was possible to literally parse a C header file and have it "just work". It seems like if you're already building against LLVM, so bundling Clang with your project too might not be that big of a jump for you.
[1]: http://terralang.org/api.html#using-c-inside-terra . The same idea also occurs in e.g. Python DragonFFI.