Skip to content

Build failure when targeting aarch64-pc-windows-gnullvm #919

@rami3l

Description

@rami3l

Hi, it's me on behalf of the rustup team again!

Problem:

Some have asked for aarch64-pc-windows-gnullvm builds from rustup (rust-lang/rustup#3297), so this is the build failure from @magic-akari's first attempt in rust-lang/rustup#4523 when building rustup for that target:

+ cargo build --locked --profile dev --target aarch64-pc-windows-gnullvm --no-default-features --features curl-backend,reqwest-native-tls --features reqwest-rustls-tls
 Downloading crates ...
  Downloaded windows_aarch64_gnullvm v0.52.6
  Downloaded windows_aarch64_gnullvm v0.53.0
   Compiling proc-macro2 v1.0.101
   Compiling unicode-ident v1.0.19
   Compiling getrandom v0.3.3
   Compiling cfg-if v1.0.3
   Compiling find-msvc-tools v0.1.2
   Compiling shlex v1.3.0
   Compiling windows_aarch64_gnullvm v0.52.6
   Compiling pin-project-lite v0.2.16
   Compiling stable_deref_trait v1.2.0
   Compiling windows-targets v0.52.6
   Compiling pkg-config v0.3.32
   Compiling windows-sys v0.59.0
   Compiling jobserver v0.1.34
   Compiling quote v1.0.40
   Compiling syn v2.0.106
   Compiling cc v1.2.38
   Compiling windows-link v0.2.0
   Compiling bytes v1.10.1
   Compiling memchr v2.7.5
   Compiling once_cell v1.21.3
   Compiling libc v0.2.175
   Compiling futures-core v0.3.31
   Compiling windows-sys v0.61.0
   Compiling windows_aarch64_gnullvm v0.53.0
   Compiling itoa v1.0.15
   Compiling cmake v0.1.54
   Compiling synstructure v0.13.2
   Compiling socket2 v0.6.0
   Compiling mio v1.0.4
   Compiling fs_extra v1.3.0
   Compiling serde_core v1.0.226
   Compiling dunce v1.0.5
   Compiling windows-targets v0.53.3
   Compiling aws-lc-sys v0.31.0
   Compiling futures-sink v0.3.31
   Compiling smallvec v1.15.1
   Compiling windows-sys v0.60.2
   Compiling zerofrom-derive v0.1.6
   Compiling yoke-derive v0.8.0
   Compiling tokio-macros v2.5.0
   Compiling zerovec-derive v0.11.1
   Compiling zerofrom v0.1.6
   Compiling yoke v0.8.0
   Compiling displaydoc v0.2.5
   Compiling tokio v1.47.1
   Compiling zerovec v0.11.4
   Compiling fnv v1.0.7
   Compiling http v1.3.1
   Compiling tinystr v0.8.1
   Compiling tracing-core v0.1.34
   Compiling zerocopy v0.8.27
   Compiling writeable v0.6.1
   Compiling litemap v0.8.0
   Compiling aws-lc-rs v1.14.0
   Compiling slab v0.4.11
   Compiling icu_locale_core v2.0.0
   Compiling potential_utf v0.1.3
   Compiling zerotrie v0.2.2
   Compiling tracing-attributes v0.1.30
warning: [email protected]: Building with: CMake
warning: [email protected]: Symbol Prefix: Some("aws_lc_0_31_0")
warning: [email protected]: Environment Variable found 'CMAKE': 'cmake'
warning: [email protected]: CMAKE environment variable set: cmake
warning: [email protected]: ######
warning: [email protected]: If bindgen is unable to locate a header file, use the BINDGEN_EXTRA_CLANG_ARGS environment variable to specify additional include paths.
warning: [email protected]: See: https://github.com/rust-lang/rust-bindgen?tab=readme-ov-file#environment-variables
warning: [email protected]: ######
warning: [email protected]: Generating bindings - external bindgen. Platform: aarch64-pc-windows-gnullvm
error: failed to run custom build command for `aws-lc-sys v0.31.0`

Caused by:
  process didn't exit successfully: `C:\a\rustup\rustup\target\debug\build\aws-lc-sys-f2ff7ca279845f11\build-script-main` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_PREFIX_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_PREFIX
  cargo:rerun-if-env-changed=AWS_LC_SYS_PREGENERATING_BINDINGS_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_PREGENERATING_BINDINGS
  cargo:rerun-if-env-changed=AWS_LC_SYS_EXTERNAL_BINDGEN_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_EXTERNAL_BINDGEN
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_ASM_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_ASM
  cargo:rerun-if-env-changed=AWS_LC_SYS_CFLAGS_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_CFLAGS
  cargo:rerun-if-env-changed=CFLAGS_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=CFLAGS
  cargo:rerun-if-env-changed=AWS_LC_SYS_PREBUILT_NASM_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_PREBUILT_NASM
  cargo:rerun-if-env-changed=AWS_LC_SYS_C_STD_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_C_STD
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE_BUILDER_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE_BUILDER
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_PREGENERATED_SRC_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_NO_PREGENERATED_SRC
  cargo:rerun-if-env-changed=AWS_LC_SYS_EFFECTIVE_TARGET_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_EFFECTIVE_TARGET
  cargo:rerun-if-env-changed=AWS_LC_SYS_STATIC_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_STATIC
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE
  cargo:rerun-if-env-changed=CMAKE_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=CMAKE
  cargo:warning=Building with: CMake
  cargo:warning=Symbol Prefix: Some("aws_lc_0_31_0")
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_CMAKE
  cargo:rerun-if-env-changed=CMAKE_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=CMAKE
  cargo:warning=Environment Variable found 'CMAKE': 'cmake'
  cargo:warning=CMAKE environment variable set: cmake
  cargo:warning=######
  cargo:warning=If bindgen is unable to locate a header file, use the BINDGEN_EXTRA_CLANG_ARGS environment variable to specify additional include paths.
  cargo:warning=See: https://github.com/rust-lang/rust-bindgen?tab=readme-ov-file#environment-variables
  cargo:warning=######
  cargo:warning=Generating bindings - external bindgen. Platform: aarch64-pc-windows-gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_INCLUDES_aarch64_pc_windows_gnullvm
  cargo:rerun-if-env-changed=AWS_LC_SYS_INCLUDES

  --- stderr
  Failure invoking external bindgen! 

  bindgen-PARAMS: --prefix-link-name aws_lc_0_31_0_ --allowlist-file .*(/|\\)openssl((/|\\)[^/\\]+)+\.h --allowlist-file .*(/|\\)rust_wrapper\.h --rustified-enum point_conversion_form_t --default-macro-constant-type signed --with-derive-default --with-derive-partialeq --with-derive-eq --raw-line 
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  // SPDX-License-Identifier: Apache-2.0 OR ISC
   --generate functions,types,vars,methods,constructors,destructors C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\include\rust_wrapper.h --rust-target 1.70 --output C:\a\rustup\rustup\target\aarch64-pc-windows-gnullvm\debug\build\aws-lc-sys-c960ff6c5b2cc9b4\out\bindings.rs --formatter rustfmt -- -I C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\include -I C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\aws-lc\include
  bindgen-STDOUT: 
  bindgen-STDERR: error: version 'llvm' in target triple 'aarch64-pc-windows-gnullvm' is invalid
  C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\aws-lc\include\openssl/base.h:59:10: fatal error: 'stddef.h' file not found
  Unable to generate bindings: clang diagnosed error: error: version 'llvm' in target triple 'aarch64-pc-windows-gnullvm' is invalid
  C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\aws-lc\include\openssl/base.h:59:10: fatal error: 'stddef.h' file not found



  thread 'main' panicked at C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\aws-lc-sys-0.31.0\builder\main.rs:758:5:
  aws-lc-sys build failed. Please enable the 'bindgen' feature on aws-lc-rs or aws-lc-sys.For more information, see the aws-lc-rs User Guide: https://aws.github.io/aws-lc-rs/index.html
  stack backtrace:
  note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
warning: build failed, waiting for other jobs to finish...
Error: Process completed with exit code 1.

However I'm not 100% sure if this is a problem on your side, since this time it's bindgen failing? Or it could be that we have to configure something on our side?

I did a GitHub Global Search and could only find xiph/rav1e#3393, not sure if that's completely related.

Relevant details

AWS-LC for Rust versions:

[[package]]
name = "aws-lc-rs"
version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786"
dependencies = [
 "aws-lc-sys",
 "zeroize",
]

[[package]]
name = "aws-lc-sys"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd"
dependencies = [
 "bindgen",
 "cc",
 "cmake",
 "dunce",
 "fs_extra",
]

System information:

Current runner version: '2.328.0'
Runner Image Provisioner
  Hosted Compute Agent
  Version: 20250912.392
  Commit: d921fda672a98b64f4f82364647e2f10b2267d0b
  Build Date: 2025-09-12T15:23:14Z
VM Image
  - OS: Windows (Arm64)
  - Source: Partner
  - Name: Microsoft Windows 11 Desktop by Arm Limited
  - Version: 20250930.30.1
  - Included Software: https://github.com/actions/partner-runner-images/blob/main/images/arm-windows-11-image.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions