From 4ddcbb0643262bd3df0878c57fce1005cabfa065 Mon Sep 17 00:00:00 2001 From: Justin Smith Date: Mon, 3 Mar 2025 11:58:29 -0500 Subject: [PATCH] Preserve optimization flags --- aws-lc-sys/builder/cmake_builder.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index f6426ebab0d..1c78c4d2934 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -158,6 +158,11 @@ impl CmakeBuilder { env::set_var("CFLAGS", cflags); } + // cmake-rs has logic that strip Optimization/Debug options that be passed via CFLAGS. + // This breaks the build for build configurations that generate warnings when optimizations + // are disabled. + self.preserve_cflag_optimization_flags(&mut cmake_cfg); + // Allow environment to specify CMake toolchain. let toolchain_var_name = format!("CMAKE_TOOLCHAIN_FILE_{}", target_underscored()); if let Some(toolchain) = @@ -206,6 +211,18 @@ impl CmakeBuilder { cmake_cfg } + fn preserve_cflag_optimization_flags(&self, cmake_cfg: &mut cmake::Config) { + if let Ok(cflags) = env::var("CFLAGS") { + let split = cflags.split("\\s+"); + for arg in split { + if arg.starts_with("-O") || arg.starts_with("/O") { + emit_warning(&format!("Preserving optimization flag: {arg}")); + cmake_cfg.cflag(arg); + } + } + } + } + #[allow(clippy::unused_self)] fn configure_android(&self, _cmake_cfg: &mut cmake::Config) { // If we leave CMAKE_SYSTEM_PROCESSOR unset, then cmake-rs should handle properly setting