diff --git a/aws-lc-sys/builder/cc_builder.rs b/aws-lc-sys/builder/cc_builder.rs index ea8e6c32bcf..4fd6648d27b 100644 --- a/aws-lc-sys/builder/cc_builder.rs +++ b/aws-lc-sys/builder/cc_builder.rs @@ -14,8 +14,8 @@ mod x86_64_unknown_linux_gnu; mod x86_64_unknown_linux_musl; use crate::{ - cargo_env, emit_warning, env_var_to_bool, execute_command, get_crate_cflags, is_no_asm, - option_env, out_dir, requested_c_std, target, target_arch, target_env, target_os, + cargo_env, effective_target, emit_warning, env_var_to_bool, execute_command, get_crate_cflags, + is_no_asm, option_env, out_dir, requested_c_std, target, target_arch, target_env, target_os, target_vendor, CStdRequested, OutputLibType, }; use std::path::PathBuf; @@ -78,7 +78,7 @@ impl PlatformConfig { impl Default for PlatformConfig { fn default() -> Self { - Self::default_for(&target()).unwrap() + Self::default_for(&effective_target()).unwrap() } } @@ -394,12 +394,12 @@ impl crate::Builder for CcBuilder { return Err("CcBuilder only supports static builds".to_string()); } - if PlatformConfig::default_for(&target()).is_none() { - return Err(format!("Platform not supported: {}", target())); + if PlatformConfig::default_for(&effective_target()).is_none() { + return Err(format!("Platform not supported: {}", effective_target())); } if Some(true) == env_var_to_bool("CARGO_FEATURE_SSL") { - return Err(format!("libssl not supported: {}", target())); + return Err(format!("cc_builder for libssl not supported")); } Ok(()) diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index 0d2f4c0be63..e963b24cdff 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -4,10 +4,10 @@ use crate::cc_builder::CcBuilder; use crate::OutputLib::{Crypto, RustWrapper, Ssl}; use crate::{ - allow_prebuilt_nasm, cargo_env, emit_warning, execute_command, get_crate_cflags, is_crt_static, - is_no_asm, option_env, requested_c_std, target, target_arch, target_env, target_os, - target_underscored, target_vendor, test_nasm_command, use_prebuilt_nasm, CStdRequested, - OutputLibType, + allow_prebuilt_nasm, cargo_env, effective_target, emit_warning, execute_command, + get_crate_cflags, is_crt_static, is_no_asm, option_env, requested_c_std, target_arch, + target_env, target_os, target_underscored, target_vendor, test_nasm_command, use_prebuilt_nasm, + CStdRequested, OutputLibType, }; use std::env; use std::ffi::OsString; @@ -215,7 +215,7 @@ impl CmakeBuilder { if target_vendor() == "apple" && target_os().to_lowercase() == "ios" { cmake_cfg.define("CMAKE_SYSTEM_NAME", "iOS"); - if target().ends_with("-ios-sim") || target_arch() == "x86_64" { + if effective_target().ends_with("-ios-sim") || target_arch() == "x86_64" { cmake_cfg.define("CMAKE_OSX_SYSROOT", "iphonesimulator"); } else { cmake_cfg.define("CMAKE_OSX_SYSROOT", "iphoneos"); @@ -331,7 +331,7 @@ impl CmakeBuilder { } } - match target().as_str() { + match effective_target().as_str() { "aarch64-unknown-linux-ohos" => { cmake_cfg.define("OHOS_ARCH", "arm64-v8a"); } diff --git a/aws-lc-sys/builder/main.rs b/aws-lc-sys/builder/main.rs index 89e7eab5050..ad89cba23ac 100644 --- a/aws-lc-sys/builder/main.rs +++ b/aws-lc-sys/builder/main.rs @@ -216,7 +216,7 @@ fn prefix_string() -> String { #[cfg(feature = "bindgen")] fn target_platform_prefix(name: &str) -> String { - format!("{}_{}", target().replace('-', "_"), name) + format!("{}_{}", effective_target().replace('-', "_"), name) } pub(crate) struct TestCommandResult { @@ -319,9 +319,18 @@ fn target() -> String { cargo_env("TARGET") } +fn effective_target() -> String { + let target = target(); + match target.as_str() { + "x86_64-alpine-linux-musl" => "x86_64-unknown-linux-musl".to_string(), + "aarch64-alpine-linux-musl" => "aarch64-unknown-linux-musl".to_string(), + _ => target, + } +} + #[allow(unused)] fn target_underscored() -> String { - target().replace('-', "_") + effective_target().replace('-', "_") } fn out_dir() -> PathBuf { @@ -428,7 +437,8 @@ fn initialize() { } if !is_external_bindgen() && (is_pregenerating_bindings() || !has_bindgen_feature()) { - let target = target(); + let target = effective_target(); + eprintln!("Effective Target: {:?}", target); let supported_platform = match target.as_str() { "aarch64-apple-darwin" | "aarch64-linux-android" @@ -444,6 +454,7 @@ fn initialize() { | "x86_64-unknown-linux-musl" => Some(target), _ => None, }; + eprintln!("Supported platform: {:?}", supported_platform); if let Some(platform) = supported_platform { emit_rustc_cfg(platform.as_str()); unsafe { @@ -548,7 +559,7 @@ bindgen_available!( if internal_bindgen_supported() && !is_external_bindgen() { emit_warning(&format!( "Generating bindings - internal bindgen. Platform: {}", - target() + effective_target() )); let gen_bindings_path = out_dir().join("bindings.rs"); generate_bindings(manifest_dir, prefix, &gen_bindings_path); @@ -764,7 +775,7 @@ fn invoke_external_bindgen( emit_warning(&format!( "Generating bindings - external bindgen. Platform: {}", - target() + effective_target() )); let options = BindingOptions { diff --git a/docker/alpine-3.20/Dockerfile b/docker/alpine-3.20/Dockerfile index 197e14276bb..65694e33df2 100644 --- a/docker/alpine-3.20/Dockerfile +++ b/docker/alpine-3.20/Dockerfile @@ -7,6 +7,7 @@ RUN apk add \ build-base \ busybox-suid \ clang-dev \ + cargo \ curl \ cmake \ openssl-dev @@ -17,12 +18,13 @@ USER satoshi WORKDIR /home/satoshi ENV CARGO_HTTP_MULTIPLEXING=false -RUN cd "${HOME}" && \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > ./rustup.sh && \ - chmod +x ./rustup.sh && \ - ./rustup.sh -y && \ - . "${HOME}/.cargo/env" && \ - echo '. "${HOME}/.cargo/env"' >> ${HOME}/.profile && \ - cargo install --locked bindgen-cli && \ - rustup component add rustfmt clippy && \ - rm ./rustup.sh +# If needed, setup Rust environment for user +#RUN cd "${HOME}" && \ +# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > ./rustup.sh && \ +# chmod +x ./rustup.sh && \ +# ./rustup.sh -y && \ +# . "${HOME}/.cargo/env" && \ +# echo '. "${HOME}/.cargo/env"' >> ${HOME}/.profile && \ +# cargo install --locked bindgen-cli && \ +# rustup component add rustfmt clippy && \ +# rm ./rustup.sh