Clang.jl wrapper generation warnings/missing parts

rayegun
Sun, 02 Feb 2020 20:39:44 +0000
General Usage

I’m trying to wrap this this GraphBLAS.h file using Clang.jl (There is already a wrapper package, but I want to try generating it automatically). I used this code:

const z = "/usr/lib/clang/9.0.0/include"
const y = "/home/Wimmerer/Desktop/GraphBLAS-3.1.1/Include/GraphBLAS.h"
wc = init(;headers= [y], output_file=joinpath(@__DIR__,"libGB_api.jl"),common_file = joinpath(@__DIR__,"libGB_common.jl"),clang_includes = vcat([y],[z]), header_wrapped = (root,current)->root == current,header_library = x->"libGB",clang_diagnostics = true)
run(wc)

Unfortunately while I get most ordinary functions wrapped I do have quite a few warnings and missing bits. In particular I get:

┌ Warning: not wrapping CLCursor (CLLastPreprocessing) stdio.h
└ @ Clang ~/.julia/packages/Clang/CiPzM/src/wrap_c.jl:443

for all the standard libs required by GraphBLAS: errno, string, stdlib, stdbool, stdint, inttypes, stddef, limits, math, stdarg

┌ Warning: not wrapping CLCursor (CLMacroInstantiation) bool
└ @ Clang ~/.julia/packages/Clang/CiPzM/src/wrap_c.jl:443

Repeated many times for bool, as well as GxB_NTHREADS, and GxB_CHUNK
And finally:

┌ Warning: not wrapping CLCursor (CLVarDecl) GrB_BOOL
└ @ Clang ~/.julia/packages/Clang/CiPzM/src/wrap_c.jl:443

for everything under the extern keyword in the .h file.

I’m not well versed enough in C programming and linking to external libraries to diagnose these issues myself unfortunately. I would appreciate any pointers here!
The Clang.jl docs have a great example, but not much to go off of if it doesn’t map well to my particular problems.

10 posts - 4 participants