in aws-lc-sys/builder/cmake_builder.rs [90:205]
fn prepare_cmake_build(&self) -> cmake::Config {
let mut cmake_cfg = self.get_cmake_config();
if let Some(generator) = optional_env_optional_crate_target("CMAKE_GENERATOR") {
set_env("CMAKE_GENERATOR", generator);
}
if OutputLibType::default() == OutputLibType::Dynamic {
cmake_cfg.define("BUILD_SHARED_LIBS", "1");
} else {
cmake_cfg.define("BUILD_SHARED_LIBS", "0");
}
if let Some(prefix) = &self.build_prefix {
cmake_cfg.define("BORINGSSL_PREFIX", format!("{prefix}_"));
let include_path = self.manifest_dir.join("generated-include");
cmake_cfg.define(
"BORINGSSL_PREFIX_HEADERS",
include_path.display().to_string(),
);
}
// Build flags that minimize our crate size.
cmake_cfg.define("BUILD_TESTING", "OFF");
cmake_cfg.define("BUILD_TOOL", "OFF");
if cfg!(feature = "ssl") {
cmake_cfg.define("BUILD_LIBSSL", "ON");
} else {
cmake_cfg.define("BUILD_LIBSSL", "OFF");
}
if is_no_pregenerated_src() {
// Go and Perl will be required.
cmake_cfg.define("DISABLE_PERL", "OFF");
cmake_cfg.define("DISABLE_GO", "OFF");
} else {
// Build flags that minimize our dependencies.
cmake_cfg.define("DISABLE_PERL", "ON");
cmake_cfg.define("DISABLE_GO", "ON");
}
if is_no_asm() {
let opt_level = cargo_env("OPT_LEVEL");
if opt_level == "0" {
cmake_cfg.define("OPENSSL_NO_ASM", "1");
} else {
panic!("AWS_LC_SYS_NO_ASM only allowed for debug builds!")
}
}
if cfg!(feature = "asan") {
set_env_for_target("CC", "clang");
set_env_for_target("CXX", "clang++");
cmake_cfg.define("ASAN", "1");
}
let cflags = get_crate_cflags();
if !cflags.is_empty() {
set_env_for_target("CFLAGS", cflags);
}
if target_env() == "ohos" {
Self::configure_open_harmony(&mut cmake_cfg);
return cmake_cfg;
}
// cmake-rs has logic that strips Optimization/Debug options that are passed via CFLAGS:
// https://github.com/rust-lang/cmake-rs/issues/240
// This breaks build configurations that generate warnings when optimizations
// are disabled.
Self::preserve_cflag_optimization_flags(&mut cmake_cfg);
// Allow environment to specify CMake toolchain.
if let Some(toolchain) = optional_env_optional_crate_target("CMAKE_TOOLCHAIN_FILE") {
set_env_for_target("CMAKE_TOOLCHAIN_FILE", toolchain);
return cmake_cfg;
}
// We only consider compiler CFLAGS when no cmake toolchain is set
self.apply_universal_build_options(&mut cmake_cfg);
// See issue: https://github.com/aws/aws-lc-rs/issues/453
if target_os() == "windows" {
self.configure_windows(&mut cmake_cfg);
}
// If the build environment vendor is Apple
#[cfg(target_vendor = "apple")]
{
if target_arch() == "aarch64" {
cmake_cfg.define("CMAKE_OSX_ARCHITECTURES", "arm64");
cmake_cfg.define("CMAKE_SYSTEM_PROCESSOR", "arm64");
}
if target_arch() == "x86_64" {
cmake_cfg.define("CMAKE_OSX_ARCHITECTURES", "x86_64");
cmake_cfg.define("CMAKE_SYSTEM_PROCESSOR", "x86_64");
}
if target_os().trim() == "ios" {
cmake_cfg.define("CMAKE_SYSTEM_NAME", "iOS");
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");
}
cmake_cfg.define("CMAKE_THREAD_LIBS_INIT", "-lpthread");
}
if target_os().trim() == "macos" {
cmake_cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
cmake_cfg.define("CMAKE_OSX_SYSROOT", "macosx");
}
}
if target_os() == "android" {
self.configure_android(&mut cmake_cfg);
}
cmake_cfg
}