diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 805a2149dc3..dd80a24da53 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -592,3 +592,31 @@ jobs: working-directory: ./aws-lc-rs # Rust doc tests dislike dynamic linking run: cargo careful test --tests --features fips,bindgen + + clang-19-bindgen: + if: github.repository_owner == 'aws' + name: Clang 19.1 + bindgen tests + runs-on: macos-14-xlarge + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - uses: actions/setup-go@v4 + with: + go-version: '>=1.18' + - uses: dtolnay/rust-toolchain@master + id: toolchain + with: + toolchain: stable + - run: | + cargo install --force --locked bindgen-cli + brew update + brew uninstall --force llvm + brew install llvm@19 + echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> "$GITHUB_ENV" + - name: aws-lc-sys bindgen build + working-directory: ./aws-lc-sys + run: cargo test --features bindgen + - name: aws-lc-fips-sys bindgen build + working-directory: ./aws-lc-fips-sys + run: cargo test --features bindgen diff --git a/aws-lc-fips-sys/builder/main.rs b/aws-lc-fips-sys/builder/main.rs index b700686d6c3..51ca79e7a52 100644 --- a/aws-lc-fips-sys/builder/main.rs +++ b/aws-lc-fips-sys/builder/main.rs @@ -336,12 +336,20 @@ fn is_bindgen_required() -> bool { bindgen_available!( fn internal_bindgen_supported() -> bool { let cv = bindgen::clang_version(); - if let Some((major, _)) = cv.parsed { + if let Some((major, minor)) = cv.parsed { if major >= 19 { - return false; + emit_warning(&format!( + "Clang v{major}.{minor} detected. Will not use internal bindgen." + )); + false + } else { + emit_warning(&format!("Clang v{major}.{minor} detected.")); + true } + } else { + emit_warning(&format!("Clang version: {}", cv.full)); + true } - true } ); diff --git a/aws-lc-sys/builder/main.rs b/aws-lc-sys/builder/main.rs index 5fdbeadf00c..90772bf856e 100644 --- a/aws-lc-sys/builder/main.rs +++ b/aws-lc-sys/builder/main.rs @@ -407,12 +407,20 @@ fn is_bindgen_required() -> bool { bindgen_available!( fn internal_bindgen_supported() -> bool { let cv = bindgen::clang_version(); - if let Some((major, _)) = cv.parsed { + if let Some((major, minor)) = cv.parsed { if major >= 19 { - return false; + emit_warning(&format!( + "Clang v{major}.{minor} detected. Will not use internal bindgen." + )); + false + } else { + emit_warning(&format!("Clang v{major}.{minor} detected.")); + true } + } else { + emit_warning(&format!("Clang version: {}", cv.full)); + true } - true } );