diff --git a/.github/workflows/sys-bindings-generator.yml b/.github/workflows/sys-bindings-generator.yml index 5f1f66a1e43..a5a0b158ca3 100644 --- a/.github/workflows/sys-bindings-generator.yml +++ b/.github/workflows/sys-bindings-generator.yml @@ -136,3 +136,44 @@ jobs: cross test -p aws-lc-sys --features bindgen,ssl --target ${{ matrix.target }} - name: Commit & Push changes run: ./scripts/ci/ci_add_commit_rebase_push.sh "Generated bindings for ${{ matrix.target }}" + collect-src-and-commit: + needs: generate-bindings-and-commit + if: github.repository == 'aws/aws-lc-rs' + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, macos-12, macos-13-xlarge ] + steps: + - uses: actions/checkout@v3 + with: + submodules: 'recursive' + ref: ${{ github.ref_name }} + - uses: dtolnay/rust-toolchain@stable + - name: Install current Bash on macOS + if: runner.os == 'macOS' + run: brew install bash coreutils + - name: Collect source from ${{ matrix.os }} + run: ./scripts/build/collect_build_src.sh + - name: Commit & Push changes + run: ./scripts/ci/ci_add_commit_rebase_push.sh "Collected source files from ${{ matrix.os }}" + collect-cross-src-and-commit: + needs: generate-cross-bindings-and-commit + if: github.repository == 'aws/aws-lc-rs' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: [ aarch64-unknown-linux-gnu, i686-unknown-linux-gnu, aarch64-unknown-linux-musl, x86_64-unknown-linux-musl ] + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + ref: ${{ github.ref_name }} + - uses: dtolnay/rust-toolchain@stable + - name: Install cross + run: cargo install cross --locked --git https://github.com/cross-rs/cross + - name: Collect source for ${{ matrix.target }} + run: ./scripts/build/collect_build_src.sh -t ${{ matrix.target }} + - name: Commit & Push changes + run: ./scripts/ci/ci_add_commit_rebase_push.sh "Collected source files for ${{ matrix.target }}" diff --git a/Cross.toml b/Cross.toml index 6e012b58f98..8426940e113 100644 --- a/Cross.toml +++ b/Cross.toml @@ -4,5 +4,5 @@ dockerfile = "./docker/linux-cross/Dockerfile" [build.env] passthrough = [ "AWS_LC_SYS_INTERNAL_NO_PREFIX", "AWS_LC_RUST_INTERNAL_BINDGEN", "AWS_LC_FIPS_SYS_INTERNAL_NO_PREFIX", "GOPROXY", - "AWS_LC_FIPS_SYS_STATIC", "AWS_LC_SYS_STATIC" + "AWS_LC_FIPS_SYS_STATIC", "AWS_LC_SYS_STATIC", "AWS_LC_SYS_CMAKE_BUILDER", "AWS_LC_SYS_CC_SRC_COLLECTOR" ] diff --git a/aws-lc-fips-sys/builder/cmake_builder.rs b/aws-lc-fips-sys/builder/cmake_builder.rs index c3bb6d1b6c4..fc6207f6a77 100644 --- a/aws-lc-fips-sys/builder/cmake_builder.rs +++ b/aws-lc-fips-sys/builder/cmake_builder.rs @@ -22,7 +22,7 @@ fn test_perl_command() -> bool { fn test_go_command() -> bool { let result = test_command("go".as_ref(), &["version".as_ref()]); if !result.status && result.executed { - eprintln!("Go stdout:\n--------\n{}\n--------", result.output); + eprintln!("Go stdout:\n--------\n{}\n--------", result.stdout); } result.status } @@ -166,11 +166,11 @@ impl CmakeBuilder { let script_path = self.manifest_dir.join("builder").join("printenv.bat"); let result = test_command(script_path.as_os_str(), &[]); if !result.status { - eprintln!("{}", result.output); + eprintln!("{}", result.stdout); return Err("Failed to run vcvarsall.bat.".to_owned()); } - eprintln!("{}", result.output); - let lines = result.output.lines(); + eprintln!("{}", result.stdout); + let lines = result.stdout.lines(); for line in lines { if let Some((var, val)) = line.split_once('=') { map.insert(var.to_string(), val.to_string()); diff --git a/aws-lc-fips-sys/builder/main.rs b/aws-lc-fips-sys/builder/main.rs index 7296ab304ea..ef0d9f866ef 100644 --- a/aws-lc-fips-sys/builder/main.rs +++ b/aws-lc-fips-sys/builder/main.rs @@ -130,39 +130,43 @@ fn prefix_string() -> String { format!("aws_lc_fips_{}", VERSION.to_string().replace('.', "_")) } -#[cfg(any( - feature = "bindgen", - not(all( - any(target_arch = "x86_64", target_arch = "aarch64"), - any(target_os = "linux", target_os = "macos"), - any(target_env = "gnu", target_env = "musl", target_env = "") - )) -))] +#[cfg(feature = "bindgen")] fn target_platform_prefix(name: &str) -> String { format!("{}_{}", target().replace('-', "_"), name) } pub(crate) struct TestCommandResult { - output: Box, - status: bool, + #[allow(dead_code)] + stderr: Box, + #[allow(dead_code)] + stdout: Box, executed: bool, + status: bool, } +const MAX_CMD_OUTPUT_SIZE: usize = 1 << 12; fn test_command(executable: &OsStr, args: &[&OsStr]) -> TestCommandResult { - if let Ok(result) = Command::new(executable).args(args).output() { - let output = String::from_utf8(result.stdout) + if let Ok(mut result) = Command::new(executable).args(args).output() { + result.stderr.truncate(MAX_CMD_OUTPUT_SIZE); + let stderr = String::from_utf8(result.stderr) + .unwrap_or_default() + .into_boxed_str(); + result.stdout.truncate(MAX_CMD_OUTPUT_SIZE); + let stdout = String::from_utf8(result.stdout) .unwrap_or_default() .into_boxed_str(); return TestCommandResult { - output, - status: result.status.success(), + stderr, + stdout, executed: true, + status: result.status.success(), }; } TestCommandResult { - output: String::new().into_boxed_str(), - status: false, + stderr: String::new().into_boxed_str(), + stdout: String::new().into_boxed_str(), executed: false, + status: false, } } @@ -249,17 +253,13 @@ fn current_dir() -> PathBuf { std::env::current_dir().unwrap() } -macro_rules! cfg_bindgen_platform { - ($binding:ident, $target:literal, $additional:expr) => { - let $binding = { - (target() == $target && $additional) - .then(|| { - emit_rustc_cfg(&$target.replace('-', "_")); - true - }) - .unwrap_or(false) - }; - }; +fn get_builder(prefix: &Option, manifest_dir: &Path, out_dir: &Path) -> Box { + Box::new(CmakeBuilder::new( + manifest_dir.to_path_buf(), + out_dir.to_path_buf(), + prefix.clone(), + OutputLibType::default(), + )) } trait Builder { @@ -267,77 +267,87 @@ trait Builder { fn build(&self) -> Result<(), String>; } -#[allow(clippy::too_many_lines)] -fn main() { - let is_internal_no_prefix = - env_var_to_bool("AWS_LC_FIPS_SYS_INTERNAL_NO_PREFIX").unwrap_or(false); - let is_internal_generate = env_var_to_bool("AWS_LC_RUST_INTERNAL_BINDGEN").unwrap_or(false); - let mut is_bindgen_required = - is_internal_no_prefix || is_internal_generate || cfg!(feature = "bindgen"); - - let pregenerated = !is_bindgen_required || is_internal_generate; - - cfg_bindgen_platform!( - x86_64_unknown_linux_gnu, - "x86_64-unknown-linux-gnu", - pregenerated - ); - cfg_bindgen_platform!( - aarch64_unknown_linux_gnu, - "aarch64-unknown-linux-gnu", - pregenerated - ); - cfg_bindgen_platform!( - x86_64_unknown_linux_musl, - "x86_64-unknown-linux-musl", - pregenerated - ); - cfg_bindgen_platform!( - aarch64_unknown_linux_musl, - "aarch64-unknown-linux-musl", - pregenerated - ); - cfg_bindgen_platform!(x86_64_apple_darwin, "x86_64-apple-darwin", pregenerated); - cfg_bindgen_platform!(aarch64_apple_darwin, "aarch64-apple-darwin", pregenerated); - - if !(x86_64_unknown_linux_gnu - || aarch64_unknown_linux_gnu - || x86_64_unknown_linux_musl - || aarch64_unknown_linux_musl - || x86_64_apple_darwin - || aarch64_apple_darwin) - { - is_bindgen_required = true; +static mut PREGENERATED: bool = false; +static mut AWS_LC_SYS_INTERNAL_NO_PREFIX: bool = false; +static mut AWS_LC_RUST_INTERNAL_BINDGEN: bool = false; + +fn initialize() { + unsafe { + AWS_LC_SYS_INTERNAL_NO_PREFIX = + env_var_to_bool("AWS_LC_SYS_INTERNAL_NO_PREFIX").unwrap_or(false); + AWS_LC_RUST_INTERNAL_BINDGEN = + env_var_to_bool("AWS_LC_RUST_INTERNAL_BINDGEN").unwrap_or(false); + } + + if is_internal_generate() || !has_bindgen_feature() { + let target = target(); + let supported_platform = match target.as_str() { + "x86_64-unknown-linux-gnu" + | "aarch64-unknown-linux-gnu" + | "x86_64-unknown-linux-musl" + | "aarch64-unknown-linux-musl" + | "x86_64-apple-darwin" + | "aarch64-apple-darwin" => Some(target), + _ => None, + }; + if let Some(platform) = supported_platform { + emit_rustc_cfg(platform.as_str()); + unsafe { + PREGENERATED = true; + } + } } +} + +fn is_bindgen_required() -> bool { + is_internal_no_prefix() + || is_internal_generate() + || has_bindgen_feature() + || !has_pregenerated() +} + +fn is_internal_no_prefix() -> bool { + unsafe { AWS_LC_SYS_INTERNAL_NO_PREFIX } +} + +fn is_internal_generate() -> bool { + unsafe { AWS_LC_RUST_INTERNAL_BINDGEN } +} + +fn has_bindgen_feature() -> bool { + cfg!(feature = "bindgen") +} + +fn has_pregenerated() -> bool { + unsafe { PREGENERATED } +} + +fn main() { + initialize(); let manifest_dir = current_dir(); let manifest_dir = dunce::canonicalize(Path::new(&manifest_dir)).unwrap(); let prefix_str = prefix_string(); - let prefix = if is_internal_no_prefix { + let prefix = if is_internal_no_prefix() { None } else { Some(prefix_str) }; - let builder = CmakeBuilder::new( - manifest_dir.clone(), - out_dir(), - prefix.clone(), - OutputLibType::default(), - ); + let builder = get_builder(&prefix, &manifest_dir, &out_dir()); builder.check_dependencies().unwrap(); #[allow(unused_assignments)] let mut bindings_available = false; - if is_internal_generate { + if is_internal_generate() { #[cfg(feature = "bindgen")] { let src_bindings_path = Path::new(&manifest_dir).join("src"); generate_src_bindings(&manifest_dir, prefix, &src_bindings_path); bindings_available = true; } - } else if is_bindgen_required { + } else if is_bindgen_required() { #[cfg(any( feature = "bindgen", not(all( diff --git a/aws-lc-rs/Cargo.toml b/aws-lc-rs/Cargo.toml index a33acabe758..73f5180e85e 100644 --- a/aws-lc-rs/Cargo.toml +++ b/aws-lc-rs/Cargo.toml @@ -69,6 +69,8 @@ regex-automata = "~0.3.9" regex-syntax = "~0.7.5" # Pinned to avoid build failure in older versions proc-macro2 = "1.0.60" +# Pinned dependency to preserve MSRV: ??? <= rust-version < 1.63.0 +jobserver = "=0.1.26" [package.metadata.cargo-udeps.ignore] -development = ["which", "home", "regex", "regex-automata", "regex-syntax", "proc-macro2"] +development = ["which", "home", "regex", "regex-automata", "regex-syntax", "proc-macro2", "jobserver"] diff --git a/aws-lc-sys/Cargo.toml b/aws-lc-sys/Cargo.toml index aa9462c808e..d22eb23666f 100644 --- a/aws-lc-sys/Cargo.toml +++ b/aws-lc-sys/Cargo.toml @@ -54,6 +54,7 @@ bindgen = ["dep:bindgen"] # Generate the bindings on the targetted platform as a cmake = "0.1.48" dunce = "1.0" fs_extra = "1.3" +cc = { version = "1.0.83", features = ["parallel"] } [target.'cfg(any(all(any(target_arch = "x86_64", target_arch = "aarch64"), any(target_os = "linux", target_os = "macos"), any(target_env = "gnu", target_env = "musl", target_env = "")), all(target_arch = "i686", target_os = "linux", target_env = "gnu")))'.build-dependencies] bindgen = { version = "0.69.2", optional = true } diff --git a/aws-lc-sys/builder/cc_builder.rs b/aws-lc-sys/builder/cc_builder.rs new file mode 100644 index 00000000000..d621ef475d7 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder.rs @@ -0,0 +1,297 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC + +// NOTE: This module is intended to produce an equivalent "libcrypto" static library to the one +// produced by the CMake. Changes to CMake relating to compiler checks and/or special build flags +// may require modifications to the logic in this module. + +mod aarch64_apple_darwin; +mod aarch64_unknown_linux_gnu; +mod aarch64_unknown_linux_musl; +mod i686_unknown_linux_gnu; +mod x86_64_apple_darwin; +mod x86_64_unknown_linux_gnu; +mod x86_64_unknown_linux_musl; + +use crate::{ + cargo_env, env_var_to_bool, out_dir, target, target_arch, target_os, target_vendor, + test_command, OutputLibType, +}; +use std::path::PathBuf; + +pub(crate) struct CcBuilder { + manifest_dir: PathBuf, + out_dir: PathBuf, + build_prefix: Option, + output_lib_type: OutputLibType, +} + +use std::fs; + +pub(crate) struct Library { + name: &'static str, + flags: &'static [&'static str], + sources: &'static [&'static str], +} + +#[allow(non_camel_case_types)] +enum PlatformConfig { + aarch64_apple_darwin, + aarch64_unknown_linux_gnu, + aarch64_unknown_linux_musl, + x86_64_apple_darwin, + x86_64_unknown_linux_gnu, + x86_64_unknown_linux_musl, + i686_unknown_linux_gnu, +} + +impl PlatformConfig { + fn libcrypto(&self) -> Library { + match self { + PlatformConfig::aarch64_apple_darwin => aarch64_apple_darwin::CRYPTO_LIBRARY, + PlatformConfig::aarch64_unknown_linux_gnu => aarch64_unknown_linux_gnu::CRYPTO_LIBRARY, + PlatformConfig::aarch64_unknown_linux_musl => { + aarch64_unknown_linux_musl::CRYPTO_LIBRARY + } + PlatformConfig::x86_64_apple_darwin => x86_64_apple_darwin::CRYPTO_LIBRARY, + PlatformConfig::x86_64_unknown_linux_gnu => x86_64_unknown_linux_gnu::CRYPTO_LIBRARY, + PlatformConfig::x86_64_unknown_linux_musl => x86_64_unknown_linux_musl::CRYPTO_LIBRARY, + PlatformConfig::i686_unknown_linux_gnu => i686_unknown_linux_gnu::CRYPTO_LIBRARY, + } + } + + fn default_for(target: &str) -> Option { + println!("default_for Target: '{target}'"); + match target { + "aarch64-apple-darwin" => Some(PlatformConfig::aarch64_apple_darwin), + "aarch64-unknown-linux-gnu" => Some(PlatformConfig::aarch64_unknown_linux_gnu), + "aarch64-unknown-linux-musl" => Some(PlatformConfig::aarch64_unknown_linux_musl), + "x86_64-apple-darwin" => Some(PlatformConfig::x86_64_apple_darwin), + "x86_64-unknown-linux-gnu" => Some(PlatformConfig::x86_64_unknown_linux_gnu), + "x86_64-unknown-linux-musl" => Some(PlatformConfig::x86_64_unknown_linux_musl), + "i686-unknown-linux-gnu" => Some(PlatformConfig::i686_unknown_linux_gnu), + _ => None, + } + } +} + +impl Default for PlatformConfig { + fn default() -> Self { + Self::default_for(&target()).unwrap() + } +} + +impl CcBuilder { + pub(crate) fn new( + manifest_dir: PathBuf, + out_dir: PathBuf, + build_prefix: Option, + output_lib_type: OutputLibType, + ) -> Self { + Self { + manifest_dir, + out_dir, + build_prefix, + output_lib_type, + } + } + + fn create_builder(&self) -> cc::Build { + let mut cc_build = cc::Build::default(); + cc_build + .out_dir(&self.out_dir) + .flag("-std=c99") + .flag("-Wno-unused-parameter") + .cpp(false) + .shared_flag(false) + .static_flag(true); + if target_os() == "linux" { + cc_build.define("_XOPEN_SOURCE", "700").flag("-lpthread"); + } + if let Some(prefix) = &self.build_prefix { + cc_build + .define("BORINGSSL_IMPLEMENTATION", "1") + .define("BORINGSSL_PREFIX", prefix.as_str()); + } + self.add_includes(&mut cc_build); + cc_build + } + + fn add_includes(&self, cc_build: &mut cc::Build) { + cc_build + .include(self.manifest_dir.join("include")) + .include(self.manifest_dir.join("generated-include")) + .include(self.manifest_dir.join("aws-lc").join("include")) + .include( + self.manifest_dir + .join("aws-lc") + .join("third_party") + .join("s2n-bignum") + .join("include"), + ); + } + + fn add_all_files(&self, lib: &Library, cc_build: &mut cc::Build) { + use core::str::FromStr; + cc_build.file(PathBuf::from_str("rust_wrapper.c").unwrap()); + + for source in lib.sources { + let source_path = self.manifest_dir.join("aws-lc").join(source); + let is_asm = std::path::Path::new(source) + .extension() + .map_or(false, |ext| ext.eq("S")); + if is_asm && target_vendor() == "apple" && target_arch() == "aarch64" { + let mut cc_preprocessor = self.create_builder(); + cc_preprocessor.file(source_path); + let preprocessed_asm = String::from_utf8(cc_preprocessor.expand()).unwrap(); + let preprocessed_asm = preprocessed_asm.replace(';', "\n\t"); + let asm_output_path = self.out_dir.join(source); + fs::create_dir_all(asm_output_path.parent().unwrap()).unwrap(); + fs::write(asm_output_path.clone(), preprocessed_asm).unwrap(); + cc_build.file(asm_output_path); + } else { + cc_build.file(source_path); + } + } + } + + fn build_library(&self, lib: &Library) { + let mut cc_build = self.create_builder(); + + self.add_all_files(lib, &mut cc_build); + + for flag in lib.flags { + cc_build.flag(flag); + } + self.compiler_checks(&mut cc_build); + + if let Some(prefix) = &self.build_prefix { + cc_build.compile(format!("{}_crypto", prefix.as_str()).as_str()); + } else { + cc_build.compile(lib.name); + } + } + + // This performs basic checks of compiler capabilities and sets an appropriate flag on success. + // This should be kept in alignment with the checks performed by AWS-LC's CMake build. + // See: https://github.com/search?q=repo%3Aaws%2Faws-lc%20check_compiler&type=code + fn compiler_check(&self, cc_build: &mut cc::Build, basename: &str, flag: &str) { + let output_path = self.out_dir.join(format!("{basename}.o")); + if let Ok(()) = cc::Build::default() + .file( + self.manifest_dir + .join("aws-lc") + .join("tests") + .join("compiler_features_tests") + .join(format!("{basename}.c")), + ) + .flag("-Wno-unused-parameter") + .warnings_into_errors(true) + .try_compile(output_path.as_os_str().to_str().unwrap()) + { + cc_build.define(flag, "1"); + } + let _ = fs::remove_file(output_path); + } + + // This checks whether the compiler contains a critical bug that causes `memcmp` to erroneously + // consider two regions of memory to be equal when they're not. + // See GCC bug report: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189 + // This should be kept in alignment with the same check performed by the CMake build. + // See: https://github.com/search?q=repo%3Aaws%2Faws-lc%20check_run&type=code + fn memcmp_check(&self) { + let basename = "memcmp_invalid_stripped_check"; + let exec_path = out_dir().join(basename); + let memcmp_build = cc::Build::default(); + let memcmp_compiler = memcmp_build.get_compiler(); + let mut memcmp_compile_args = Vec::from(memcmp_compiler.args()); + memcmp_compile_args.push( + self.manifest_dir + .join("aws-lc") + .join("tests") + .join("compiler_features_tests") + .join(format!("{basename}.c")) + .into_os_string(), + ); + memcmp_compile_args.push("-Wno-unused-parameter".into()); + memcmp_compile_args.push("-o".into()); + memcmp_compile_args.push(exec_path.clone().into_os_string()); + let memcmp_args: Vec<_> = memcmp_compile_args + .iter() + .map(std::ffi::OsString::as_os_str) + .collect(); + let memcmp_compile_result = + test_command(memcmp_compiler.path().as_os_str(), memcmp_args.as_slice()); + assert!( + memcmp_compile_result.status, + "COMPILER: {:?}\ + ARGS: {:?}\ + EXECUTED: {}\ + ERROR: {}\ + OUTPUT: {}\ + Failed to compile {basename} + ", + memcmp_compiler.path(), + memcmp_args.as_slice(), + memcmp_compile_result.executed, + memcmp_compile_result.stderr, + memcmp_compile_result.stdout + ); + + // We can only execute the binary when the host and target platforms match. + if cargo_env("HOST") == target() { + let result = test_command(exec_path.as_os_str(), &[]); + assert!( + result.status, + "Your compiler ({}) is not supported due to a memcmp related bug reported in \ + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189.\ + We strongly recommend against using this compiler.\ + EXECUTED: {} \ + ERROR: {} \ + OUTPUT: {} \ + ", + memcmp_compiler.path().display(), + memcmp_compile_result.executed, + memcmp_compile_result.stderr, + memcmp_compile_result.stdout + ); + } + let _ = fs::remove_file(exec_path); + } + fn compiler_checks(&self, cc_build: &mut cc::Build) { + self.compiler_check(cc_build, "stdalign_check", "AWS_LC_STDALIGN_AVAILABLE"); + self.compiler_check( + cc_build, + "builtin_swap_check", + "AWS_LC_BUILTIN_SWAP_SUPPORTED", + ); + self.memcmp_check(); + } +} + +impl crate::Builder for CcBuilder { + fn check_dependencies(&self) -> Result<(), String> { + if OutputLibType::Dynamic == self.output_lib_type { + // https://github.com/rust-lang/cc-rs/issues/594 + return Err("CcBuilder only supports static builds".to_string()); + } + + if PlatformConfig::default_for(&target()).is_none() { + return Err(format!("Platform not supported: {}", target())); + } + + if Some(true) == env_var_to_bool("CARGO_FEATURE_SSL") { + return Err(format!("libssl not supported: {}", target())); + } + + Ok(()) + } + + fn build(&self) -> Result<(), String> { + println!("cargo:root={}", self.out_dir.display()); + let platform_config = PlatformConfig::default(); + let libcrypto = platform_config.libcrypto(); + self.build_library(&libcrypto); + Ok(()) + } +} diff --git a/aws-lc-sys/builder/cc_builder/aarch64_apple_darwin.rs b/aws-lc-sys/builder/cc_builder/aarch64_apple_darwin.rs new file mode 100644 index 00000000000..dee081f1728 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/aarch64_apple_darwin.rs @@ -0,0 +1,317 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:53:57 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/hpke/hpke.c", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/pool/pool.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rc4/rc4.c", + "crypto/refcount_lock.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_pthread.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/ios-aarch64/crypto/chacha/chacha-armv8.S", + "generated-src/ios-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/aesv8-armx.S", + "generated-src/ios-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/armv8-mont.S", + "generated-src/ios-aarch64/crypto/fipsmodule/bn-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/ghash-neon-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/ghashv8-armx.S", + "generated-src/ios-aarch64/crypto/fipsmodule/keccak1600-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/md5-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/p256-armv8-asm.S", + "generated-src/ios-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S", + "generated-src/ios-aarch64/crypto/fipsmodule/sha1-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/sha256-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/sha512-armv8.S", + "generated-src/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S", + "generated-src/ios-aarch64/crypto/test/trampoline-armv8.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/arm/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_8n_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_ge.S", + "third_party/s2n-bignum/arm/generic/bignum_mul.S", + "third_party/s2n-bignum/arm/generic/bignum_optsub.S", + "third_party/s2n-bignum/arm/generic/bignum_sqr.S", + "third_party/s2n-bignum/arm/p384/bignum_add_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/arm/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/arm/p521/bignum_add_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_gnu.rs b/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_gnu.rs new file mode 100644 index 00000000000..d20548cc0d5 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_gnu.rs @@ -0,0 +1,329 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:58:49 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/fipsmodule/fips_shared_support.c", + "crypto/hpke/hpke.c", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/deterministic.c", + "crypto/rand_extra/entropy_passive.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/fuchsia.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rand_extra/trusty.c", + "crypto/rand_extra/windows.c", + "crypto/rc4/rc4.c", + "crypto/refcount_c11.c", + "crypto/refcount_lock.c", + "crypto/refcount_win.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_none.c", + "crypto/thread_pthread.c", + "crypto/thread_win.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/linux-aarch64/crypto/chacha/chacha-armv8.S", + "generated-src/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-armx.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/armv8-mont.S", + "generated-src/linux-aarch64/crypto/fipsmodule/bn-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/ghashv8-armx.S", + "generated-src/linux-aarch64/crypto/fipsmodule/keccak1600-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/md5-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/p256-armv8-asm.S", + "generated-src/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha1-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha256-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha512-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/vpaes-armv8.S", + "generated-src/linux-aarch64/crypto/test/trampoline-armv8.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/arm/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_8n_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_ge.S", + "third_party/s2n-bignum/arm/generic/bignum_mul.S", + "third_party/s2n-bignum/arm/generic/bignum_optsub.S", + "third_party/s2n-bignum/arm/generic/bignum_sqr.S", + "third_party/s2n-bignum/arm/p384/bignum_add_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/arm/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/arm/p521/bignum_add_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_musl.rs b/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_musl.rs new file mode 100644 index 00000000000..295a5ec1efc --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/aarch64_unknown_linux_musl.rs @@ -0,0 +1,329 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:59:01 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/fipsmodule/fips_shared_support.c", + "crypto/hpke/hpke.c", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/deterministic.c", + "crypto/rand_extra/entropy_passive.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/fuchsia.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rand_extra/trusty.c", + "crypto/rand_extra/windows.c", + "crypto/rc4/rc4.c", + "crypto/refcount_c11.c", + "crypto/refcount_lock.c", + "crypto/refcount_win.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_none.c", + "crypto/thread_pthread.c", + "crypto/thread_win.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/linux-aarch64/crypto/chacha/chacha-armv8.S", + "generated-src/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-armx.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/armv8-mont.S", + "generated-src/linux-aarch64/crypto/fipsmodule/bn-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/ghashv8-armx.S", + "generated-src/linux-aarch64/crypto/fipsmodule/keccak1600-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/md5-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/p256-armv8-asm.S", + "generated-src/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha1-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha256-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/sha512-armv8.S", + "generated-src/linux-aarch64/crypto/fipsmodule/vpaes-armv8.S", + "generated-src/linux-aarch64/crypto/test/trampoline-armv8.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/arm/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/arm/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte.S", + "third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n.S", + "third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_kmul_32_64_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_16_32_neon.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64.S", + "third_party/s2n-bignum/arm/fastmul/bignum_ksqr_32_64_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_8n_neon.S", + "third_party/s2n-bignum/arm/generic/bignum_ge.S", + "third_party/s2n-bignum/arm/generic/bignum_mul.S", + "third_party/s2n-bignum/arm/generic/bignum_optsub.S", + "third_party/s2n-bignum/arm/generic/bignum_sqr.S", + "third_party/s2n-bignum/arm/p384/bignum_add_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/arm/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/arm/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/arm/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/arm/p521/bignum_add_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/arm/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/arm/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/i686_unknown_linux_gnu.rs b/aws-lc-sys/builder/cc_builder/i686_unknown_linux_gnu.rs new file mode 100644 index 00000000000..c40b4f4ea03 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/i686_unknown_linux_gnu.rs @@ -0,0 +1,271 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:57:52 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/fipsmodule/fips_shared_support.c", + "crypto/hpke/hpke.c", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/deterministic.c", + "crypto/rand_extra/entropy_passive.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/fuchsia.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rand_extra/trusty.c", + "crypto/rand_extra/windows.c", + "crypto/rc4/rc4.c", + "crypto/refcount_c11.c", + "crypto/refcount_lock.c", + "crypto/refcount_win.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_none.c", + "crypto/thread_pthread.c", + "crypto/thread_win.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/linux-x86/crypto/chacha/chacha-x86.S", + "generated-src/linux-x86/crypto/fipsmodule/aesni-x86.S", + "generated-src/linux-x86/crypto/fipsmodule/bn-586.S", + "generated-src/linux-x86/crypto/fipsmodule/co-586.S", + "generated-src/linux-x86/crypto/fipsmodule/ghash-ssse3-x86.S", + "generated-src/linux-x86/crypto/fipsmodule/ghash-x86.S", + "generated-src/linux-x86/crypto/fipsmodule/md5-586.S", + "generated-src/linux-x86/crypto/fipsmodule/sha1-586.S", + "generated-src/linux-x86/crypto/fipsmodule/sha256-586.S", + "generated-src/linux-x86/crypto/fipsmodule/sha512-586.S", + "generated-src/linux-x86/crypto/fipsmodule/vpaes-x86.S", + "generated-src/linux-x86/crypto/fipsmodule/x86-mont.S", + "generated-src/linux-x86/crypto/test/trampoline-x86.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/x86_64_apple_darwin.rs b/aws-lc-sys/builder/cc_builder/x86_64_apple_darwin.rs new file mode 100644 index 00000000000..1021063c504 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/x86_64_apple_darwin.rs @@ -0,0 +1,306 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:55:24 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/hpke/hpke.c", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rc4/rc4.c", + "crypto/refcount_lock.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_pthread.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/mac-x86_64/crypto/chacha/chacha-x86_64.S", + "generated-src/mac-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S", + "generated-src/mac-x86_64/crypto/cipher_extra/aesni-sha1-x86_64.S", + "generated-src/mac-x86_64/crypto/cipher_extra/aesni-sha256-x86_64.S", + "generated-src/mac-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/aesni-gcm-avx512.S", + "generated-src/mac-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/aesni-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/aesni-xts-avx512.S", + "generated-src/mac-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/ghash-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/md5-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S", + "generated-src/mac-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S", + "generated-src/mac-x86_64/crypto/fipsmodule/rdrand-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S", + "generated-src/mac-x86_64/crypto/fipsmodule/sha1-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/sha256-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/sha512-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/vpaes-x86_64.S", + "generated-src/mac-x86_64/crypto/fipsmodule/x86_64-mont.S", + "generated-src/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S", + "generated-src/mac-x86_64/crypto/test/trampoline-x86_64.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_add_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_add_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_gnu.rs b/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_gnu.rs new file mode 100644 index 00000000000..a7f2530703f --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_gnu.rs @@ -0,0 +1,319 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:53:55 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/fipsmodule/fips_shared_support.c", + "crypto/hpke/hpke.c", + "crypto/hrss/asm/poly_rq_mul.S", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/deterministic.c", + "crypto/rand_extra/entropy_passive.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/fuchsia.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rand_extra/trusty.c", + "crypto/rand_extra/windows.c", + "crypto/rc4/rc4.c", + "crypto/refcount_c11.c", + "crypto/refcount_lock.c", + "crypto/refcount_win.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_none.c", + "crypto/thread_pthread.c", + "crypto/thread_win.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/linux-x86_64/crypto/chacha/chacha-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha1-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha256-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-avx512.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-xts-avx512.S", + "generated-src/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/md5-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S", + "generated-src/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S", + "generated-src/linux-x86_64/crypto/fipsmodule/rdrand-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/vpaes-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont.S", + "generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S", + "generated-src/linux-x86_64/crypto/test/trampoline-x86_64.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_add_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_add_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_musl.rs b/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_musl.rs new file mode 100644 index 00000000000..99a44021516 --- /dev/null +++ b/aws-lc-sys/builder/cc_builder/x86_64_unknown_linux_musl.rs @@ -0,0 +1,319 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// Wed Apr 3 12:58:24 UTC 2024 + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + flags: &[], + sources: &[ + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_bool.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/posix_time.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/base64/base64.c", + "crypto/bio/bio.c", + "crypto/bio/bio_mem.c", + "crypto/bio/connect.c", + "crypto/bio/errno.c", + "crypto/bio/fd.c", + "crypto/bio/file.c", + "crypto/bio/hexdump.c", + "crypto/bio/pair.c", + "crypto/bio/printf.c", + "crypto/bio/socket.c", + "crypto/bio/socket_helper.c", + "crypto/blake2/blake2.c", + "crypto/bn_extra/bn_asn1.c", + "crypto/bn_extra/convert.c", + "crypto/buf/buf.c", + "crypto/bytestring/asn1_compat.c", + "crypto/bytestring/ber.c", + "crypto/bytestring/cbb.c", + "crypto/bytestring/cbs.c", + "crypto/bytestring/unicode.c", + "crypto/chacha/chacha.c", + "crypto/cipher_extra/cipher_extra.c", + "crypto/cipher_extra/derive_key.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha1.c", + "crypto/cipher_extra/e_aes_cbc_hmac_sha256.c", + "crypto/cipher_extra/e_aesctrhmac.c", + "crypto/cipher_extra/e_aesgcmsiv.c", + "crypto/cipher_extra/e_chacha20poly1305.c", + "crypto/cipher_extra/e_des.c", + "crypto/cipher_extra/e_null.c", + "crypto/cipher_extra/e_rc2.c", + "crypto/cipher_extra/e_rc4.c", + "crypto/cipher_extra/e_tls.c", + "crypto/cipher_extra/tls_cbc.c", + "crypto/conf/conf.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_nohw.c", + "crypto/curve25519/curve25519_s2n_bignum_asm.c", + "crypto/curve25519/spake25519.c", + "crypto/decrepit/bio/base64_bio.c", + "crypto/decrepit/blowfish/blowfish.c", + "crypto/decrepit/cast/cast.c", + "crypto/decrepit/cast/cast_tables.c", + "crypto/decrepit/cfb/cfb.c", + "crypto/decrepit/dh/dh_decrepit.c", + "crypto/decrepit/evp/evp_do_all.c", + "crypto/decrepit/ripemd/ripemd.c", + "crypto/decrepit/rsa/rsa_decrepit.c", + "crypto/decrepit/x509/x509_decrepit.c", + "crypto/des/des.c", + "crypto/dh_extra/dh_asn1.c", + "crypto/dh_extra/params.c", + "crypto/digest_extra/digest_extra.c", + "crypto/dsa/dsa.c", + "crypto/dsa/dsa_asn1.c", + "crypto/ec_extra/ec_asn1.c", + "crypto/ec_extra/ec_derive.c", + "crypto/ec_extra/hash_to_curve.c", + "crypto/ecdh_extra/ecdh_extra.c", + "crypto/ecdsa_extra/ecdsa_asn1.c", + "crypto/engine/engine.c", + "crypto/err/err.c", + "crypto/evp_extra/evp_asn1.c", + "crypto/evp_extra/p_dsa_asn1.c", + "crypto/evp_extra/p_ec_asn1.c", + "crypto/evp_extra/p_ed25519.c", + "crypto/evp_extra/p_ed25519_asn1.c", + "crypto/evp_extra/p_hmac_asn1.c", + "crypto/evp_extra/p_kem.c", + "crypto/evp_extra/p_kem_asn1.c", + "crypto/evp_extra/p_methods.c", + "crypto/evp_extra/p_rsa_asn1.c", + "crypto/evp_extra/p_x25519.c", + "crypto/evp_extra/p_x25519_asn1.c", + "crypto/evp_extra/print.c", + "crypto/evp_extra/scrypt.c", + "crypto/evp_extra/sign.c", + "crypto/ex_data.c", + "crypto/fipsmodule/bcm.c", + "crypto/fipsmodule/cpucap/cpucap.c", + "crypto/fipsmodule/fips_shared_support.c", + "crypto/hpke/hpke.c", + "crypto/hrss/asm/poly_rq_mul.S", + "crypto/hrss/hrss.c", + "crypto/kem/kem.c", + "crypto/kem/kem_methods.c", + "crypto/kyber/kem_kyber.c", + "crypto/kyber/kyber1024r3_ref.c", + "crypto/kyber/kyber512r3_ref.c", + "crypto/kyber/kyber768r3_ref.c", + "crypto/kyber/pqcrystals_kyber_ref_common/fips202.c", + "crypto/lhash/lhash.c", + "crypto/mem.c", + "crypto/obj/obj.c", + "crypto/obj/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_client.c", + "crypto/ocsp/ocsp_extension.c", + "crypto/ocsp/ocsp_http.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_print.c", + "crypto/ocsp/ocsp_server.c", + "crypto/ocsp/ocsp_verify.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pkcs7/pkcs7.c", + "crypto/pkcs7/pkcs7_x509.c", + "crypto/pkcs8/p5_pbev2.c", + "crypto/pkcs8/pkcs8.c", + "crypto/pkcs8/pkcs8_x509.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_vec.c", + "crypto/pool/pool.c", + "crypto/rand_extra/deterministic.c", + "crypto/rand_extra/entropy_passive.c", + "crypto/rand_extra/forkunsafe.c", + "crypto/rand_extra/fuchsia.c", + "crypto/rand_extra/pq_custom_randombytes.c", + "crypto/rand_extra/rand_extra.c", + "crypto/rand_extra/trusty.c", + "crypto/rand_extra/windows.c", + "crypto/rc4/rc4.c", + "crypto/refcount_c11.c", + "crypto/refcount_lock.c", + "crypto/refcount_win.c", + "crypto/rsa_extra/rsa_asn1.c", + "crypto/rsa_extra/rsa_print.c", + "crypto/rsa_extra/rsassa_pss_asn1.c", + "crypto/siphash/siphash.c", + "crypto/stack/stack.c", + "crypto/thread.c", + "crypto/thread_none.c", + "crypto/thread_pthread.c", + "crypto/thread_win.c", + "crypto/trust_token/pmbtoken.c", + "crypto/trust_token/trust_token.c", + "crypto/trust_token/voprf.c", + "crypto/x509/a_digest.c", + "crypto/x509/a_sign.c", + "crypto/x509/a_verify.c", + "crypto/x509/algorithm.c", + "crypto/x509/asn1_gen.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/i2d_pr.c", + "crypto/x509/name_print.c", + "crypto/x509/policy.c", + "crypto/x509/rsa_pss.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/t_x509a.c", + "crypto/x509/x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x_algor.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_info.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pkey.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_sig.c", + "crypto/x509/x_spki.c", + "crypto/x509/x_val.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_ocsp.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_utl.c", + "generated-src/err_data.c", + "generated-src/linux-x86_64/crypto/chacha/chacha-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha1-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha256-x86_64.S", + "generated-src/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-avx512.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/aesni-xts-avx512.S", + "generated-src/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/md5-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S", + "generated-src/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S", + "generated-src/linux-x86_64/crypto/fipsmodule/rdrand-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/vpaes-x86_64.S", + "generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont.S", + "generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S", + "generated-src/linux-x86_64/crypto/test/trampoline-x86_64.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_mod_n25519.S", + "third_party/s2n-bignum/x86_att/curve25519/bignum_neg_p25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base.S", + "third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_encode.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase_alt.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble.S", + "third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_add_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_deamont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_littleendian_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montmul_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_montsqr_p384_alt.S", + "third_party/s2n-bignum/x86_att/p384/bignum_neg_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_nonzero_6.S", + "third_party/s2n-bignum/x86_att/p384/bignum_sub_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384.S", + "third_party/s2n-bignum/x86_att/p384/bignum_tomont_p384_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_add_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_fromlebytes_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_mul_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_neg_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sqr_p521_alt.S", + "third_party/s2n-bignum/x86_att/p521/bignum_sub_p521.S", + "third_party/s2n-bignum/x86_att/p521/bignum_tolebytes_p521.S", + ], +}; diff --git a/aws-lc-sys/builder/main.rs b/aws-lc-sys/builder/main.rs index b69a07ba9ea..c4e0761178b 100644 --- a/aws-lc-sys/builder/main.rs +++ b/aws-lc-sys/builder/main.rs @@ -7,6 +7,7 @@ use std::ffi::OsStr; use std::path::{Path, PathBuf}; use std::process::Command; +use cc_builder::CcBuilder; use cmake_builder::CmakeBuilder; #[cfg(any( @@ -21,6 +22,7 @@ use cmake_builder::CmakeBuilder; )) ))] mod bindgen; +mod cc_builder; mod cmake_builder; pub(crate) fn get_aws_lc_include_path(manifest_dir: &Path) -> PathBuf { @@ -126,39 +128,42 @@ fn prefix_string() -> String { format!("aws_lc_{}", VERSION.to_string().replace('.', "_")) } -#[cfg(any( - feature = "bindgen", - not(any( - all( - any(target_arch = "x86_64", target_arch = "aarch64"), - any(target_os = "linux", target_os = "macos"), - any(target_env = "gnu", target_env = "musl", target_env = "") - ), - all(target_arch = "i686", target_os = "linux", target_env = "gnu") - )) -))] +#[cfg(feature = "bindgen")] fn target_platform_prefix(name: &str) -> String { format!("{}_{}", target().replace('-', "_"), name) } pub(crate) struct TestCommandResult { #[allow(dead_code)] - output: Box, + stderr: Box, + #[allow(dead_code)] + stdout: Box, + executed: bool, status: bool, } +const MAX_CMD_OUTPUT_SIZE: usize = 1 << 12; fn test_command(executable: &OsStr, args: &[&OsStr]) -> TestCommandResult { - if let Ok(result) = Command::new(executable).args(args).output() { - let output = String::from_utf8(result.stdout) + if let Ok(mut result) = Command::new(executable).args(args).output() { + result.stderr.truncate(MAX_CMD_OUTPUT_SIZE); + let stderr = String::from_utf8(result.stderr) + .unwrap_or_default() + .into_boxed_str(); + result.stdout.truncate(MAX_CMD_OUTPUT_SIZE); + let stdout = String::from_utf8(result.stdout) .unwrap_or_default() .into_boxed_str(); return TestCommandResult { - output, + stderr, + stdout, + executed: true, status: result.status.success(), }; } TestCommandResult { - output: String::new().into_boxed_str(), + stderr: String::new().into_boxed_str(), + stdout: String::new().into_boxed_str(), + executed: false, status: false, } } @@ -226,7 +231,7 @@ fn target_arch() -> String { cargo_env("CARGO_CFG_TARGET_ARCH") } -#[allow(dead_code)] +#[allow(unused)] fn target_env() -> String { cargo_env("CARGO_CFG_TARGET_ENV") } @@ -247,17 +252,42 @@ fn current_dir() -> PathBuf { std::env::current_dir().unwrap() } -macro_rules! cfg_bindgen_platform { - ($binding:ident, $target:literal, $additional:expr) => { - let $binding = { - (target() == $target && $additional) - .then(|| { - emit_rustc_cfg(&$target.replace('-', "_")); - true - }) - .unwrap_or(false) - }; +fn get_builder(prefix: &Option, manifest_dir: &Path, out_dir: &Path) -> Box { + let cmake_builder_builder = || { + Box::new(CmakeBuilder::new( + manifest_dir.to_path_buf(), + out_dir.to_path_buf(), + prefix.clone(), + OutputLibType::default(), + )) + }; + + let cc_builder_builder = || { + Box::new(CcBuilder::new( + manifest_dir.to_path_buf(), + out_dir.to_path_buf(), + prefix.clone(), + OutputLibType::default(), + )) }; + + if let Some(val) = env_var_to_bool("AWS_LC_SYS_CMAKE_BUILDER") { + let builder: Box = if val { + cmake_builder_builder() + } else { + cc_builder_builder() + }; + builder.check_dependencies().unwrap(); + return builder; + } else if !is_bindgen_required() { + let cc_builder = cc_builder_builder(); + if cc_builder.check_dependencies().is_ok() { + return cc_builder; + } + } + let cmake_builder = cmake_builder_builder(); + cmake_builder.check_dependencies().unwrap(); + cmake_builder } trait Builder { @@ -265,82 +295,88 @@ trait Builder { fn build(&self) -> Result<(), String>; } -#[allow(clippy::too_many_lines)] -fn main() { - let is_internal_no_prefix = env_var_to_bool("AWS_LC_SYS_INTERNAL_NO_PREFIX").unwrap_or(false); - let is_internal_generate = env_var_to_bool("AWS_LC_RUST_INTERNAL_BINDGEN").unwrap_or(false); - let mut is_bindgen_required = - is_internal_no_prefix || is_internal_generate || cfg!(feature = "bindgen"); +static mut PREGENERATED: bool = false; +static mut AWS_LC_SYS_INTERNAL_NO_PREFIX: bool = false; +static mut AWS_LC_RUST_INTERNAL_BINDGEN: bool = false; - let pregenerated = !is_bindgen_required || is_internal_generate; +fn initialize() { + unsafe { + AWS_LC_SYS_INTERNAL_NO_PREFIX = + env_var_to_bool("AWS_LC_SYS_INTERNAL_NO_PREFIX").unwrap_or(false); + AWS_LC_RUST_INTERNAL_BINDGEN = + env_var_to_bool("AWS_LC_RUST_INTERNAL_BINDGEN").unwrap_or(false); + } - cfg_bindgen_platform!( - i686_unknown_linux_gnu, - "i686-unknown-linux-gnu", - pregenerated - ); - cfg_bindgen_platform!( - x86_64_unknown_linux_gnu, - "x86_64-unknown-linux-gnu", - pregenerated - ); - cfg_bindgen_platform!( - aarch64_unknown_linux_gnu, - "aarch64-unknown-linux-gnu", - pregenerated - ); - cfg_bindgen_platform!( - x86_64_unknown_linux_musl, - "x86_64-unknown-linux-musl", - pregenerated - ); - cfg_bindgen_platform!( - aarch64_unknown_linux_musl, - "aarch64-unknown-linux-musl", - pregenerated - ); - cfg_bindgen_platform!(x86_64_apple_darwin, "x86_64-apple-darwin", pregenerated); - cfg_bindgen_platform!(aarch64_apple_darwin, "aarch64-apple-darwin", pregenerated); - - if !(i686_unknown_linux_gnu - || x86_64_unknown_linux_gnu - || aarch64_unknown_linux_gnu - || x86_64_unknown_linux_musl - || aarch64_unknown_linux_musl - || x86_64_apple_darwin - || aarch64_apple_darwin) - { - is_bindgen_required = true; + if is_internal_generate() || !has_bindgen_feature() { + let target = target(); + let supported_platform = match target.as_str() { + "i686-unknown-linux-gnu" + | "x86_64-unknown-linux-gnu" + | "aarch64-unknown-linux-gnu" + | "x86_64-unknown-linux-musl" + | "aarch64-unknown-linux-musl" + | "x86_64-apple-darwin" + | "aarch64-apple-darwin" => Some(target), + _ => None, + }; + if let Some(platform) = supported_platform { + emit_rustc_cfg(platform.as_str()); + unsafe { + PREGENERATED = true; + } + } } +} + +fn is_bindgen_required() -> bool { + is_internal_no_prefix() + || is_internal_generate() + || has_bindgen_feature() + || !has_pregenerated() +} + +fn is_internal_no_prefix() -> bool { + unsafe { AWS_LC_SYS_INTERNAL_NO_PREFIX } +} + +fn is_internal_generate() -> bool { + unsafe { AWS_LC_RUST_INTERNAL_BINDGEN } +} + +fn has_bindgen_feature() -> bool { + cfg!(feature = "bindgen") +} + +fn has_pregenerated() -> bool { + unsafe { PREGENERATED } +} + +fn main() { + initialize(); let manifest_dir = current_dir(); let manifest_dir = dunce::canonicalize(Path::new(&manifest_dir)).unwrap(); let prefix_str = prefix_string(); - let prefix = if is_internal_no_prefix { + let prefix = if is_internal_no_prefix() { None } else { Some(prefix_str) }; - let builder = CmakeBuilder::new( - manifest_dir.clone(), - out_dir(), - prefix.clone(), - OutputLibType::default(), - ); + let builder = get_builder(&prefix, &manifest_dir, &out_dir()); builder.check_dependencies().unwrap(); #[allow(unused_assignments)] let mut bindings_available = false; - if is_internal_generate { + if is_internal_generate() { #[cfg(feature = "bindgen")] { let src_bindings_path = Path::new(&manifest_dir).join("src"); generate_src_bindings(&manifest_dir, prefix, &src_bindings_path); bindings_available = true; } - } else if is_bindgen_required { + } else if is_bindgen_required() { #[cfg(any( feature = "bindgen", not(any( diff --git a/scripts/build/collect_build_src.sh b/scripts/build/collect_build_src.sh new file mode 100755 index 00000000000..aa0a23f1210 --- /dev/null +++ b/scripts/build/collect_build_src.sh @@ -0,0 +1,233 @@ +#!/usr/bin/env bash +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 OR ISC + +# This shell script performs a target-specific CMake static build of libcrypto. It extracts from that build artifact +# debug information on the complete set of source files utilized for the build and then generates a target-specific +# Rust source file (e.g., `x86_64_unknown_linux_gnu.rs`) that lists the files for subsequent use by the `cc_builder` +# module for consumer builds where CMake might not be available. + +set -ex +set -o pipefail + +if [[ ${BASH_VERSINFO[0]} -lt 4 ]]; then + echo Must use bash 4 or later: ${BASH_VERSION} + exit 1 +fi + +CROSS_TARGET_ARCH='' + +while getopts "t:" option; do + case ${option} in + t) + CROSS_TARGET_ARCH="${OPTARG}"; + ;; + *) + echo Invalid argument: -"${?}" + usage + exit 1 + ;; + esac +done + +SCRIPT_DIR=$(cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +REPO_ROOT=$(git rev-parse --show-toplevel) +SYS_CRATE_DIR="${REPO_ROOT}/aws-lc-sys" +BUILD_CFG_DIR="${SYS_CRATE_DIR}/builder/cc_builder" +mkdir -p "${BUILD_CFG_DIR}" + +function find_target() { + if [[ -z "${CROSS_TARGET_ARCH}" ]]; then + rustc -vV | grep host | sed -e 's/host: *\(\w*\)/\1/' + else + echo "${CROSS_TARGET_ARCH}" + fi +} + +function target_filename() { + local target + target=$(find_target) + echo "${target//-/_}" +} + +function collect_source_files() { + TARGET_PLATFORM_ARCH=$(find_target) + if [ $? -eq 1 ]; then + echo "Error: find_target failed" + exit 1 + fi + if [[ "${TARGET_PLATFORM_ARCH}" =~ apple ]]; then + dwarfdump --debug-info "${1}" | grep DW_AT_name | grep "$(pwd)" | cut -d\" -f 2 | sort | uniq + elif [[ "${TARGET_PLATFORM_ARCH}" =~ linux ]]; then + readelf -w "${1}" | grep DW_AT_name | grep 'aws-lc-sys' | cut -d: -f 4 | grep -E '\.[csS]$' | sort | uniq + else + echo Unknown OS: "${TARGET_PLATFORM_ARCH}" + exit 1 + fi +} + +function find_s2n_bignum_src_dir() { + TARGET_PLATFORM_ARCH=$(find_target) + if [ $? -eq 1 ]; then + echo "Error: find_target failed" + exit 1 + fi + if [[ "${TARGET_PLATFORM_ARCH}" =~ aarch64 ]]; then + echo arm + else + echo x86_att + fi +} + + +function find_generated_src_dir() { + TARGET_PLATFORM_ARCH=$(find_target) + if [ $? -eq 1 ]; then + echo "Error: find_target failed" + exit 1 + fi + + if [[ "${TARGET_PLATFORM_ARCH}" =~ "linux" ]]; then + OS_NAME="linux" + elif [[ "${TARGET_PLATFORM_ARCH}" =~ "apple" ]]; then + OS_NAME="mac" + if [[ "${TARGET_PLATFORM_ARCH}" =~ "aarch64" ]]; then + OS_NAME="ios" + fi + else + echo Unknown OS: "${TARGET_PLATFORM_ARCH}" + exit 1 + fi + + if [[ "${TARGET_PLATFORM_ARCH}" =~ "aarch64" ]]; then + ARCH_NAME="aarch64" + elif [[ "${TARGET_PLATFORM_ARCH}" =~ "x86_64" ]]; then + ARCH_NAME="x86_64" + elif [[ "${TARGET_PLATFORM_ARCH}" =~ "i686" ]]; then + ARCH_NAME="x86" + else + echo Unknown ARCH: "${TARGET_PLATFORM_ARCH}" + exit 1 + fi + + echo "${OS_NAME}-${ARCH_NAME}" +} + +function cleanup_source_files() { + GS_DIR=$(find_generated_src_dir) + if [ $? -eq 1 ]; then + echo "Error: find_generated_src_dir failed" + exit 1 + fi + S2N_BN_DIR=$(find_s2n_bignum_src_dir) + if [ $? -eq 1 ]; then + echo "Error: find_s2n_bignum_src_dir failed" + exit 1 + fi + for FILE in "${@}"; do + if [[ -n "${FILE}" || -n "${SCRIPT_DIR}${FILE}" ]]; then + #FILE=$(realpath "${FILE}") + echo "${FILE}" | \ + sed -e "s/.*\/aws-lc-sys\/aws-lc\///" | \ + sed -e "s/.*\/out\/build\/aws-lc\/crypto\/fipsmodule\/\(.*\.S\)\.S$/third_party\/s2n-bignum\/${S2N_BN_DIR}\/\1/" | \ + sed -e "s/.*\/out\/build\/aws-lc\//generated-src\/${GS_DIR}\//" | \ + sed -e 's/\(.*\)\/[^\/]*\/crypto\/err_data\.c/\1\/err_data.c/' + fi + done +} + +function process_source_files() { + cleanup_source_files "${@}" | sort | uniq + if [ $? -eq 1 ]; then + echo "Error: process_source_files failed" + exit 1 + fi +} + +function verify_source_files() { + for FILE in "${@}"; do + FILE_PATH="${SYS_CRATE_DIR}/aws-lc/${FILE}" + if [[ ! -f "${FILE_PATH}" ]]; then + echo File does not exist: "${FILE_PATH}" + exit 1 + fi + done +} + +function generate_output() { + TIMESTAMP="$(date -u)" + cat << EOF +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC +// $TIMESTAMP + +use crate::cc_builder::Library; + +pub(super) const CRYPTO_LIBRARY: Library = Library { + name: "crypto", + // This attribute is intentionally let blank + flags: &[], + sources: &[ +EOF + for FILE in "${@}"; do + echo " \"${FILE}\"," + done + cat << EOF + ], +}; +EOF +} + +pushd "${REPO_ROOT}" + +cargo clean + +if [[ -z "${CROSS_TARGET_ARCH}" ]]; then +AWS_LC_SYS_CMAKE_BUILDER=1 AWS_LC_SYS_CC_SRC_COLLECTOR=1 cargo build --package aws-lc-sys --profile dev --features bindgen +else +# Install cross +cargo install cross --locked --git https://github.com/cross-rs/cross +AWS_LC_SYS_CMAKE_BUILDER=1 AWS_LC_SYS_CC_SRC_COLLECTOR=1 cross build --package aws-lc-sys --profile dev --target ${CROSS_TARGET_ARCH} --features bindgen +fi + +if [[ -z "${CROSS_TARGET_ARCH}" ]]; then +LIB_CRYPTO_PATH=$(find target/debug -name "libaws_lc_0_*crypto.a"| head -n 1) +else +LIB_CRYPTO_PATH=$(find target/"${CROSS_TARGET_ARCH}" -name "libaws_lc_0_*crypto.a"| head -n 1) +fi +LIB_CRYPTO_PATH="${REPO_ROOT}/${LIB_CRYPTO_PATH}" + +SOURCE_FILES=($(collect_source_files "${LIB_CRYPTO_PATH}")) +if [ $? -eq 1 ]; then + echo "Error: collect_source_files failed" + exit 1 +fi +PROCESSED_SRC_FILES=($(process_source_files "${SOURCE_FILES[@]}")) +if [ $? -eq 1 ]; then + echo "Error: process_source_files failed" + exit 1 +fi + +verify_source_files "${PROCESSED_SRC_FILES[@]}" + +RUST_TRIPLE=$(target_filename) +BUILD_CFG_PATH="${BUILD_CFG_DIR}/${RUST_TRIPLE}.rs" + +generate_output ${PROCESSED_SRC_FILES[@]} > ${BUILD_CFG_PATH} + +echo +echo Build configuration written to: ${BUILD_CFG_PATH} +echo + +cargo clean +if [[ -z "${CROSS_TARGET_ARCH}" ]]; then + AWS_LC_SYS_CMAKE_BUILDER=0 cargo test --package aws-lc-sys --profile dev + AWS_LC_SYS_CMAKE_BUILDER=0 cargo test --package aws-lc-rs --profile dev +else + AWS_LC_SYS_CMAKE_BUILDER=0 cross test --package aws-lc-sys --profile dev --target ${CROSS_TARGET_ARCH} + AWS_LC_SYS_CMAKE_BUILDER=0 cross test --package aws-lc-rs --profile dev --target ${CROSS_TARGET_ARCH} +fi +popd + +echo +echo COMPLETE