Skip to content

Commit 57f7b6e

Browse files
justinwsmithjustsmth
authored andcommitted
Allow build with prebuilt NASM objects
diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index b4914d1..9eb4c71 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -3,8 +3,8 @@ use crate::OutputLib::{Crypto, RustWrapper, Ssl}; use crate::{ - cargo_env, emit_warning, execute_command, is_no_asm, option_env, target, target_arch, - target_env, target_os, target_underscored, target_vendor, OutputLibType, + cargo_env, emit_warning, execute_command, is_no_asm, is_prebuilt_nasm, option_env, target, + target_arch, target_env, target_os, target_underscored, target_vendor, OutputLibType, }; use std::env; use std::ffi::OsStr; @@ -168,6 +168,23 @@ impl CmakeBuilder { } } + if target_os() == "windows" && target_arch() == "x86_64" && is_prebuilt_nasm() { + emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + emit_warning("!!! Using pre-built NASM binaries !!!"); + emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + + let script_path = self + .manifest_dir + .join("builder") + .join("prebuilt-nasm.bat") + .display() + .to_string(); + let script_path = script_path.replace(r"\", "/"); + + cmake_cfg.define("CMAKE_ASM_NASM_COMPILER", script_path.as_str()); + cmake_cfg.define("CMAKE_VERBOSE_MAKEFILE", "1"); + } + if target_underscored() == "aarch64_pc_windows_msvc" { cmake_cfg.generator("Ninja"); cmake_cfg.define("CMAKE_C_COMPILER", "clang-cl"); @@ -212,7 +229,11 @@ impl crate::Builder for CmakeBuilder { let mut missing_dependency = false; if target_os() == "windows" { - if target_arch() == "x86_64" && !test_nasm_command() && !is_no_asm() { + if target_arch() == "x86_64" + && !test_nasm_command() + && !is_no_asm() + && !is_prebuilt_nasm() + { eprintln!( "Consider setting `AWS_LC_SYS_NO_ASM` in the environment for development builds.\ See User Guide about the limitations: https://aws.github.io/aws-lc-rs/index.html" diff --git a/aws-lc-sys/builder/main.rs b/aws-lc-sys/builder/main.rs index 866d205..d993671 100644 --- a/aws-lc-sys/builder/main.rs +++ b/aws-lc-sys/builder/main.rs @@ -313,6 +313,7 @@ static mut AWS_LC_SYS_NO_PREFIX: bool = false; static mut AWS_LC_SYS_INTERNAL_BINDGEN: bool = false; static mut AWS_LC_SYS_EXTERNAL_BINDGEN: bool = false; static mut AWS_LC_SYS_NO_ASM: bool = false; +static mut AWS_LC_SYS_PREBUILT_NASM: bool = false; fn initialize() { unsafe { @@ -322,6 +323,7 @@ fn initialize() { AWS_LC_SYS_EXTERNAL_BINDGEN = env_var_to_bool("AWS_LC_SYS_EXTERNAL_BINDGEN").unwrap_or(false); AWS_LC_SYS_NO_ASM = env_var_to_bool("AWS_LC_SYS_NO_ASM").unwrap_or(false); + AWS_LC_SYS_PREBUILT_NASM = env_var_to_bool("AWS_LC_SYS_PREBUILT_NASM").unwrap_or(false); } if !is_external_bindgen() && (is_internal_bindgen() || !has_bindgen_feature()) { @@ -369,6 +371,10 @@ fn is_no_asm() -> bool { unsafe { AWS_LC_SYS_NO_ASM } } +fn is_prebuilt_nasm() -> bool { + unsafe { AWS_LC_SYS_PREBUILT_NASM } +} + fn has_bindgen_feature() -> bool { cfg!(feature = "bindgen") } diff --git a/aws-lc-sys/builder/prebuilt-nasm.bat b/aws-lc-sys/builder/prebuilt-nasm.bat new file mode 100644 index 0000000000..9c761db --- /dev/null +++ b/aws-lc-sys/builder/prebuilt-nasm.bat @@ -0,0 +1,21 @@ +@echo off +set "ScriptDir=%~dp0" +set "ScriptDir=%ScriptDir:~0,-1%" +:loop +set "arg1=%~1" +if "%arg1%"=="-o" goto end +if "%arg1%"=="" goto failure +shift +goto loop +:end +shift +set "path=%~1" +for %%f in ("%path%") do set "filename=%%~nxf" +copy "%ScriptDir%\prebuilt-nasm\%filename%" "%path%" +exit 0 + +:failure +echo PATH: %path% 1>&2 +echo FILENAME: %filename% 1>&2 +echo ScriptDir: %ScriptDir% 1>&2 +exit 1 \ No newline at end of file diff --git a/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj new file mode 100644 index 0000000000..3caa1c6 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj new file mode 100644 index 0000000000..99dff12 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj new file mode 100644 index 0000000000..a40c77f Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj new file mode 100644 index 0000000000..9b14149 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj new file mode 100644 index 0000000000..de492cd Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj new file mode 100644 index 0000000000..77ef35b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj new file mode 100644 index 0000000000..45e257d Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj new file mode 100644 index 0000000000..37a378b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj new file mode 100644 index 0000000000..05cee5a Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj new file mode 100644 index 0000000000..42566f6 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj new file mode 100644 index 0000000000..3706db4 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj new file mode 100644 index 0000000000..6ebd3e7 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj b/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj new file mode 100644 index 0000000000..ef2ab1e Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj b/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj new file mode 100644 index 0000000000..98b6522 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj new file mode 100644 index 0000000000..25ecc30 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj b/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj new file mode 100644 index 0000000000..39d98ee Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj new file mode 100644 index 0000000000..28f049b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj new file mode 100644 index 0000000000..88fa74e Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj new file mode 100644 index 0000000000..258d354 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj new file mode 100644 index 0000000000..3370a10 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj new file mode 100644 index 0000000000..1e24b23 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj new file mode 100644 index 0000000000..5a841d3 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj new file mode 100644 index 0000000000..135436d Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj differ diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index ce6dec7..a769d68 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -3,7 +3,7 @@ use crate::OutputLib::{Crypto, RustWrapper, Ssl}; use crate::{ - cargo_env, emit_warning, execute_command, is_crt_static, is_no_asm, option_env, target, + cargo_env, emit_warning, execute_command, is_crt_static, is_no_asm, is_prebuilt_nasm, option_env, target, target_arch, target_env, target_os, target_underscored, target_vendor, OutputLibType, }; use std::env; @@ -135,7 +135,7 @@ impl CmakeBuilder { // See issue: #453 if target_os() == "windows" { - Self::configure_windows(&mut cmake_cfg); + self.configure_windows(&mut cmake_cfg); } // If the build environment vendor is Apple @@ -162,13 +162,30 @@ impl CmakeBuilder { } if target_env() == "ohos" { - Self::configure_open_harmony(&mut cmake_cfg); + self.configure_open_harmony(&mut cmake_cfg); } cmake_cfg } - fn configure_windows(cmake_cfg: &mut cmake::Config) { + fn configure_windows(&self, cmake_cfg: &mut cmake::Config) { + if target_arch() == "x86_64" && is_prebuilt_nasm() { + emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + emit_warning("!!! Using pre-built NASM binaries !!!"); + emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + + let script_path = self + .manifest_dir + .join("builder") + .join("prebuilt-nasm.bat") + .display() + .to_string(); + let script_path = script_path.replace(r"\", "/"); + + cmake_cfg.define("CMAKE_ASM_NASM_COMPILER", script_path.as_str()); + cmake_cfg.define("CMAKE_VERBOSE_MAKEFILE", "1"); + } + match (target_env().as_str(), target_arch().as_str()) { ("msvc", "aarch64") => { cmake_cfg.generator_toolset(format!( @@ -200,7 +217,7 @@ impl CmakeBuilder { } } - fn configure_open_harmony(cmake_cfg: &mut cmake::Config) { + fn configure_open_harmony(&self, cmake_cfg: &mut cmake::Config) { const OHOS_NDK_HOME: &str = "OHOS_NDK_HOME"; if let Ok(ndk) = env::var(OHOS_NDK_HOME) { cmake_cfg.define( @@ -253,7 +270,11 @@ impl crate::Builder for CmakeBuilder { let mut missing_dependency = false; if target_os() == "windows" { - if target_arch() == "x86_64" && !test_nasm_command() && !is_no_asm() { + if target_arch() == "x86_64" + && !test_nasm_command() + && !is_no_asm() + && !is_prebuilt_nasm() + { eprintln!( "Consider setting `AWS_LC_SYS_NO_ASM` in the environment for development builds.\ See User Guide about the limitations: https://aws.github.io/aws-lc-rs/index.html" diff --git a/aws-lc-sys/builder/main.rs b/aws-lc-sys/builder/main.rs index 4bf2201..1241db1 100644 --- a/aws-lc-sys/builder/main.rs +++ b/aws-lc-sys/builder/main.rs @@ -313,6 +313,7 @@ static mut AWS_LC_SYS_NO_PREFIX: bool = false; static mut AWS_LC_SYS_INTERNAL_BINDGEN: bool = false; static mut AWS_LC_SYS_EXTERNAL_BINDGEN: bool = false; static mut AWS_LC_SYS_NO_ASM: bool = false; +static mut AWS_LC_SYS_PREBUILT_NASM: bool = false; fn initialize() { unsafe { @@ -322,6 +323,7 @@ fn initialize() { AWS_LC_SYS_EXTERNAL_BINDGEN = env_var_to_bool("AWS_LC_SYS_EXTERNAL_BINDGEN").unwrap_or(false); AWS_LC_SYS_NO_ASM = env_var_to_bool("AWS_LC_SYS_NO_ASM").unwrap_or(false); + AWS_LC_SYS_PREBUILT_NASM = env_var_to_bool("AWS_LC_SYS_PREBUILT_NASM").unwrap_or(false); } if !is_external_bindgen() && (is_internal_bindgen() || !has_bindgen_feature()) { @@ -369,6 +371,10 @@ fn is_no_asm() -> bool { unsafe { AWS_LC_SYS_NO_ASM } } +fn is_prebuilt_nasm() -> bool { + unsafe { AWS_LC_SYS_PREBUILT_NASM } +} + fn has_bindgen_feature() -> bool { cfg!(feature = "bindgen") } diff --git a/aws-lc-sys/builder/prebuilt-nasm.bat b/aws-lc-sys/builder/prebuilt-nasm.bat new file mode 100644 index 0000000000..9c761db --- /dev/null +++ b/aws-lc-sys/builder/prebuilt-nasm.bat @@ -0,0 +1,21 @@ +@echo off +set "ScriptDir=%~dp0" +set "ScriptDir=%ScriptDir:~0,-1%" +:loop +set "arg1=%~1" +if "%arg1%"=="-o" goto end +if "%arg1%"=="" goto failure +shift +goto loop +:end +shift +set "path=%~1" +for %%f in ("%path%") do set "filename=%%~nxf" +copy "%ScriptDir%\prebuilt-nasm\%filename%" "%path%" +exit 0 + +:failure +echo PATH: %path% 1>&2 +echo FILENAME: %filename% 1>&2 +echo ScriptDir: %ScriptDir% 1>&2 +exit 1 \ No newline at end of file diff --git a/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj new file mode 100644 index 0000000000..3caa1c6 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aes128gcmsiv-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj new file mode 100644 index 0000000000..99dff12 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-avx512.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj new file mode 100644 index 0000000000..a40c77f Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-gcm-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj new file mode 100644 index 0000000000..9b14149 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha1-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj new file mode 100644 index 0000000000..de492cd Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-sha256-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj new file mode 100644 index 0000000000..77ef35b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj b/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj new file mode 100644 index 0000000000..45e257d Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/aesni-xts-avx512.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj new file mode 100644 index 0000000000..37a378b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/chacha-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj new file mode 100644 index 0000000000..05cee5a Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/chacha20_poly1305_x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj new file mode 100644 index 0000000000..42566f6 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/ghash-ssse3-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj new file mode 100644 index 0000000000..3706db4 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/ghash-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj new file mode 100644 index 0000000000..6ebd3e7 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/md5-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj b/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj new file mode 100644 index 0000000000..ef2ab1e Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/p256-x86_64-asm.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj b/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj new file mode 100644 index 0000000000..98b6522 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/p256_beeu-x86_64-asm.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj new file mode 100644 index 0000000000..25ecc30 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/rdrand-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj b/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj new file mode 100644 index 0000000000..39d98ee Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/rsaz-avx2.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj new file mode 100644 index 0000000000..28f049b Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha1-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj new file mode 100644 index 0000000000..88fa74e Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha256-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj new file mode 100644 index 0000000000..258d354 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/sha512-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj new file mode 100644 index 0000000000..3370a10 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/trampoline-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj b/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj new file mode 100644 index 0000000000..1e24b23 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/vpaes-x86_64.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj new file mode 100644 index 0000000000..5a841d3 Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont.obj differ diff --git a/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj new file mode 100644 index 0000000000..135436d Binary files /dev/null and b/aws-lc-sys/builder/prebuilt-nasm/x86_64-mont5.obj differ
1 parent 280be9d commit 57f7b6e

26 files changed

+54
-6
lines changed

aws-lc-sys/builder/cmake_builder.rs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
use crate::OutputLib::{Crypto, RustWrapper, Ssl};
55
use crate::{
6-
cargo_env, emit_warning, execute_command, is_crt_static, is_no_asm, option_env, target,
6+
cargo_env, emit_warning, execute_command, is_crt_static, is_no_asm, is_prebuilt_nasm, option_env, target,
77
target_arch, target_env, target_os, target_underscored, target_vendor, OutputLibType,
88
};
99
use std::env;
@@ -135,7 +135,7 @@ impl CmakeBuilder {
135135

136136
// See issue: https://github.com/aws/aws-lc-rs/issues/453
137137
if target_os() == "windows" {
138-
Self::configure_windows(&mut cmake_cfg);
138+
self.configure_windows(&mut cmake_cfg);
139139
}
140140

141141
// If the build environment vendor is Apple
@@ -162,13 +162,30 @@ impl CmakeBuilder {
162162
}
163163

164164
if target_env() == "ohos" {
165-
Self::configure_open_harmony(&mut cmake_cfg);
165+
self.configure_open_harmony(&mut cmake_cfg);
166166
}
167167

168168
cmake_cfg
169169
}
170170

171-
fn configure_windows(cmake_cfg: &mut cmake::Config) {
171+
fn configure_windows(&self, cmake_cfg: &mut cmake::Config) {
172+
if target_arch() == "x86_64" && is_prebuilt_nasm() {
173+
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
174+
emit_warning("!!! Using pre-built NASM binaries !!!");
175+
emit_warning("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
176+
177+
let script_path = self
178+
.manifest_dir
179+
.join("builder")
180+
.join("prebuilt-nasm.bat")
181+
.display()
182+
.to_string();
183+
let script_path = script_path.replace(r"\", "/");
184+
185+
cmake_cfg.define("CMAKE_ASM_NASM_COMPILER", script_path.as_str());
186+
cmake_cfg.define("CMAKE_VERBOSE_MAKEFILE", "1");
187+
}
188+
172189
match (target_env().as_str(), target_arch().as_str()) {
173190
("msvc", "aarch64") => {
174191
cmake_cfg.generator_toolset(format!(
@@ -200,7 +217,7 @@ impl CmakeBuilder {
200217
}
201218
}
202219

203-
fn configure_open_harmony(cmake_cfg: &mut cmake::Config) {
220+
fn configure_open_harmony(&self, cmake_cfg: &mut cmake::Config) {
204221
const OHOS_NDK_HOME: &str = "OHOS_NDK_HOME";
205222
if let Ok(ndk) = env::var(OHOS_NDK_HOME) {
206223
cmake_cfg.define(
@@ -253,7 +270,11 @@ impl crate::Builder for CmakeBuilder {
253270
let mut missing_dependency = false;
254271

255272
if target_os() == "windows" {
256-
if target_arch() == "x86_64" && !test_nasm_command() && !is_no_asm() {
273+
if target_arch() == "x86_64"
274+
&& !test_nasm_command()
275+
&& !is_no_asm()
276+
&& !is_prebuilt_nasm()
277+
{
257278
eprintln!(
258279
"Consider setting `AWS_LC_SYS_NO_ASM` in the environment for development builds.\
259280
See User Guide about the limitations: https://aws.github.io/aws-lc-rs/index.html"

aws-lc-sys/builder/main.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ static mut AWS_LC_SYS_NO_PREFIX: bool = false;
313313
static mut AWS_LC_SYS_INTERNAL_BINDGEN: bool = false;
314314
static mut AWS_LC_SYS_EXTERNAL_BINDGEN: bool = false;
315315
static mut AWS_LC_SYS_NO_ASM: bool = false;
316+
static mut AWS_LC_SYS_PREBUILT_NASM: bool = false;
316317

317318
fn initialize() {
318319
unsafe {
@@ -322,6 +323,7 @@ fn initialize() {
322323
AWS_LC_SYS_EXTERNAL_BINDGEN =
323324
env_var_to_bool("AWS_LC_SYS_EXTERNAL_BINDGEN").unwrap_or(false);
324325
AWS_LC_SYS_NO_ASM = env_var_to_bool("AWS_LC_SYS_NO_ASM").unwrap_or(false);
326+
AWS_LC_SYS_PREBUILT_NASM = env_var_to_bool("AWS_LC_SYS_PREBUILT_NASM").unwrap_or(false);
325327
}
326328

327329
if !is_external_bindgen() && (is_internal_bindgen() || !has_bindgen_feature()) {
@@ -369,6 +371,10 @@ fn is_no_asm() -> bool {
369371
unsafe { AWS_LC_SYS_NO_ASM }
370372
}
371373

374+
fn is_prebuilt_nasm() -> bool {
375+
unsafe { AWS_LC_SYS_PREBUILT_NASM }
376+
}
377+
372378
fn has_bindgen_feature() -> bool {
373379
cfg!(feature = "bindgen")
374380
}

aws-lc-sys/builder/prebuilt-nasm.bat

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@echo off
2+
set "ScriptDir=%~dp0"
3+
set "ScriptDir=%ScriptDir:~0,-1%"
4+
:loop
5+
set "arg1=%~1"
6+
if "%arg1%"=="-o" goto end
7+
if "%arg1%"=="" goto failure
8+
shift
9+
goto loop
10+
:end
11+
shift
12+
set "path=%~1"
13+
for %%f in ("%path%") do set "filename=%%~nxf"
14+
copy "%ScriptDir%\prebuilt-nasm\%filename%" "%path%"
15+
exit 0
16+
17+
:failure
18+
echo PATH: %path% 1>&2
19+
echo FILENAME: %filename% 1>&2
20+
echo ScriptDir: %ScriptDir% 1>&2
21+
exit 1
45 KB
Binary file not shown.
1.46 KB
Binary file not shown.
17.3 KB
Binary file not shown.
40.5 KB
Binary file not shown.
58.8 KB
Binary file not shown.
56.8 KB
Binary file not shown.
72.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)