diff --git a/.github/workflows/cross.yml b/.github/workflows/cross.yml index 21bc49da6c8..1b044ba9f3c 100644 --- a/.github/workflows/cross.yml +++ b/.github/workflows/cross.yml @@ -114,3 +114,20 @@ jobs: target: x86_64-pc-windows-gnu - name: Test on `x86_64-pc-windows-gnu` run: cargo test -p aws-lc-rs --target x86_64-pc-windows-gnu --features bindgen + + aws-lc-rs-windows-arm64: + if: github.repository_owner == 'aws' + name: aarch64-pc-windows-msvc + runs-on: windows-latest + steps: + - uses: ilammy/setup-nasm@v1 + - uses: actions/checkout@v3 + with: + submodules: 'recursive' + - uses: dtolnay/rust-toolchain@master + id: toolchain + with: + toolchain: stable + target: aarch64-pc-windows-msvc + - name: Build for `aarch64-pc-windows-msvc` + run: cargo build -p aws-lc-rs --target aarch64-pc-windows-msvc --features bindgen \ No newline at end of file diff --git a/aws-lc-sys/aws-lc b/aws-lc-sys/aws-lc index e7572ee050b..8ba3ae3e988 160000 --- a/aws-lc-sys/aws-lc +++ b/aws-lc-sys/aws-lc @@ -1 +1 @@ -Subproject commit e7572ee050b470b2d90e458ee32b8949e76193d5 +Subproject commit 8ba3ae3e988fcf3a15bb686e6ce188d55dd6515e diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index c95cb2d64e1..9b1633a89a5 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -2,7 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 OR ISC use crate::OutputLib::{Crypto, RustWrapper, Ssl}; -use crate::{target, target_arch, target_os, target_vendor, test_command, OutputLibType}; +use crate::{ + target, target_arch, target_env, target_os, target_vendor, test_command, OutputLibType, +}; use std::env; use std::ffi::OsStr; use std::path::PathBuf; @@ -118,6 +120,13 @@ impl CmakeBuilder { } } + if target_os() == "windows" && target_arch() == "aarch64" && target_env() == "msvc" { + cmake_cfg.generator("Ninja"); + cmake_cfg.define("CMAKE_C_COMPILER", "clang-cl"); + cmake_cfg.define("CMAKE_CXX_COMPILER", "clang-cl"); + cmake_cfg.define("CMAKE_ASM_COMPILER", "clang-cl"); + } + if cfg!(feature = "asan") { env::set_var("CC", "clang"); env::set_var("CXX", "clang++");