autocxx icon indicating copy to clipboard operation
autocxx copied to clipboard

Can't `#include <immintrin.h>` when both `clang-14` and `libclang1-16` are installed

Open progval opened this issue 6 months ago • 0 comments

Describe the bug When both clang-14 and libclang1-16 are installed, #include <immintrin.h> fails because autocxx(-bindgen?) runs Clang 14 but also loads libclang-16.so.1*:

To Reproduce

  1. Add #include <immintrin.h> to examples/pod/src/cpp.h
  2. Write this to Dockerfile:
FROM docker.io/rust:1.80-bookworm

RUN apt-get update

# Install dependencies
RUN apt-get install -y clang-14

# break it
RUN apt-get install -y libclang1-16

WORKDIR /autocxx/examples/pod/
COPY . /autocxx

RUN cargo build
  1. Run podman build .

Errors with:

error: failed to run custom build command for `autocxx-pod-example v0.1.0 (/autocxx/examples/pod)`

Caused by:
  process didn't exit successfully: `/autocxx/examples/pod/target/debug/build/autocxx-pod-example-7a3a679155f4f647/build-script-build` (exit status: 1)
  --- stderr
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2228:19: error: use of undeclared identifier '__builtin_ia32_paddsb128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2250:19: error: use of undeclared identifier '__builtin_ia32_paddsw128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2271:19: error: use of undeclared identifier '__builtin_ia32_paddusb128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2292:19: error: use of undeclared identifier '__builtin_ia32_paddusw128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2670:19: error: use of undeclared identifier '__builtin_ia32_psubsb128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2691:19: error: use of undeclared identifier '__builtin_ia32_psubsw128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2711:19: error: use of undeclared identifier '__builtin_ia32_psubusb128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/emmintrin.h:2731:19: error: use of undeclared identifier '__builtin_ia32_psubusw128'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:95:19: error: use of undeclared identifier '__builtin_ia32_paddsb256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:101:19: error: use of undeclared identifier '__builtin_ia32_paddsw256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:107:19: error: use of undeclared identifier '__builtin_ia32_paddusb256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:113:19: error: use of undeclared identifier '__builtin_ia32_paddusw256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:631:19: error: use of undeclared identifier '__builtin_ia32_psubsb256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:637:19: error: use of undeclared identifier '__builtin_ia32_psubsw256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:643:19: error: use of undeclared identifier '__builtin_ia32_psubusb256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx2intrin.h:649:19: error: use of undeclared identifier '__builtin_ia32_psubusw256'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx512fintrin.h:9319:10: error: use of undeclared identifier '__builtin_ia32_reduce_add_q512'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx512fintrin.h:9323:10: error: use of undeclared identifier '__builtin_ia32_reduce_mul_q512'
  /usr/lib/llvm-14/lib/clang/14.0.6/include/avx512fintrin.h:9337:10: error: use of undeclared identifier '__builtin_ia32_reduce_add_q512'
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  Error:   × the include_cpp! macro couldn't be expanded into Rust bindings to C++:
    │ Bindgen was unable to generate the initial .rs bindings for this file.
    │ This may indicate a parsing problem with the C++ headers.

Error: building at STEP "RUN cargo build": while running runtime: exit status 101

Expected behavior It should compile with no error

Additional context n/a

progval avatar Aug 23 '24 09:08 progval