-
Notifications
You must be signed in to change notification settings - Fork 126
Description
The root issue here is that bindgen uses clang
(not clang-cl
) on windows, and on unrecognised flags, it fails. Upon adding CXXFLAGS="/clang:-flto=thin /clang:-fuse-ld=lld-link"
, the below code automatically adds it to bindgen's flags as well. As /clang:
flags are only recognised by clang-cl
, there is no way for cc
and the makefile.cargo
to receive the CXXFLAGS
but not bindgen.
Lines 334 to 338 in c7fb1b8
if let Ok(flags) = env::var("CXXFLAGS") { | |
for flag in flags.split_whitespace() { | |
builder = builder.clang_arg(flag); | |
} | |
} |
There are a few possible approaches:
- If a flag starts with
/clang:
on windows, do not add it to bindgen. - Add a separate
BINDGEN_CXXFLAGS
variable for bindgen's flags.
As said earlier, the root issue is the usage of clang
, which means this error may not be just from /clang:
flags but almost any cl
flag. Hence, I would suggest the latter approach.
For a concrete example of the failure, see https://github.com/Redfire75369/spiderfire/actions/runs/7112793006/job/19363443030#step:6:18053, where a libclang error
is caused.
In the event it matters for updating whatever depends on it, #136 was the original PR where this behaviour was introduced.