Platform Support

Pre-generated bindings

aws-lc-rs can utilize pre-generated bindings when operating on the following build targets.

Platformaws-lc-sysaws-lc-fips-sys
aarch64-apple-darwin
aarch64-pc-windows-msvc✓ ²
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
i686-pc-windows-msvcNot Supported
i686-unknown-linux-gnuNot Supported
x86_64-apple-darwin
x86_64-pc-windows-gnuNot Supported
x86_64-pc-windows-msvc✓ ²
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl

² FIPS is supported but requires bindgen (no pre-generated FIPS bindings are available for Windows platforms)

Tested platforms

In addition to the platforms with pre-generated bindings listed above, aws-lc-rs CI builds and/or tests on many additional platforms. See our CI workflow configuration for the complete list of tested platforms.

Build Requirements Summary

For non-FIPS builds (aws-lc-sys):

  • C/C++ Compiler: Required
  • CMake: Never required
  • Bindgen: Never required (universal pre-generated bindings are provided)
  • Go: Never required

For FIPS builds (aws-lc-fips-sys):

  • C/C++ Compiler: Required
  • CMake: Always required
  • Go: Always required
  • Bindgen: Required unless the target has pre-generated bindings (see table above)

Bindgen for FIPS Builds

For FIPS builds on targets without pre-generated bindings, one of the following options must be used for bindings generation. See requirements page for more information.

  • Enable bindgen feature in your Cargo.toml:
[dependencies]
aws-lc-rs = { version = "1", features = ["bindgen", "fips"] }

-- OR --

  • Install bindgen-cli in the build environment:
cargo install --force --locked bindgen-cli

Linux Platforms

PlatformBuildTestsFIPS
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
armv7-unknown-linux-gnueabihf
i686-unknown-linux-gnu
mips-unknown-linux-gnu ¹
mips-unknown-linux-musl ¹
mips64-unknown-linux-muslabi64 ¹
mips64el-unknown-linux-muslabi64 ¹
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
riscv64gc-unknown-linux-gnu
s390x-unknown-linux-gnu
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl

¹ Requires nightly Rust toolchain

Apple Platforms

PlatformBuildTestsFIPS
aarch64-apple-darwin
aarch64-apple-ios
aarch64-apple-ios-sim
aarch64-apple-tvos-sim ¹
x86_64-apple-darwin
x86_64-apple-ios

¹ Requires nightly Rust toolchain

Windows Platforms

PlatformBuildTestsFIPS
aarch64-pc-windows-msvc
i686-pc-windows-msvc
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc

Android Platforms

PlatformBuildTests
aarch64-linux-android
arm-linux-androideabi
armv7-linux-androideabi
i686-linux-android
x86_64-linux-android

BSD Platforms

PlatformBuildTestsFIPS
x86_64-unknown-freebsd
x86_64-unknown-netbsd

Other Platforms

PlatformBuildTests
x86_64-unknown-illumos
OpenHarmony (aarch64)
OpenWrt (aarch64-musl)
Alpine Linux