Skip to content

c++ constexpr breaks with Mac OS native clang #1948

Open
@ccouzens

Description

@ccouzens

The native Clang (Apple clang version 12.0.0 (clang-1200.0.32.28)) on Macs (Mac OS 10.15.7 anyway), seems to break bindgen's support for c++ header files. c header files seem fine. In particular, it seems to break the constexpr keyword.

$ echo 'constexpr int test = 1;' > test.hpp

$ bindgen --version
bindgen 0.56.0

$ bindgen test.hpp 
test.hpp:1:1: error: unknown type name 'constexpr'
test.hpp:1:1: error: unknown type name 'constexpr', err: true
thread 'main' panicked at 'Unable to generate bindings: ()', /Users/ccouzens/.cargo/registry/src/github.com-1ecc6299db9ec823/bindgen-0.56.0/src/main.rs:54:36
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ PATH="/usr/local/opt/llvm/bin:$PATH" bindgen test.hpp 
/* automatically generated by rust-bindgen 0.56.0 */

pub const test: ::std::os::raw::c_int = 1;

$ clang --version
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ PATH="/usr/local/opt/llvm/bin:$PATH" clang --version
clang version 11.0.0
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

Clang 12 hasn't yet been released. So it's odd that it's the version Apple is shipping. And it's not reasonable for bindgen to support a prerelease version.

I wanted to raise an issue:

  • To help other people seeing this problem.
  • To help the bindgen team prepare for clang 12 (if that's possible and reasonable)
  • So that I (or someone else) can upgrade documentation such as requirements and the main readme.

ccouzens/tesseract-sys#4

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions