in aws-lc-fips-sys/builder/cmake_builder.rs [273:321]
fn verify_compiler_support(compiler: &cc::Tool) -> Option<bool> {
let compiler_path = compiler.path();
if compiler.is_like_gnu() || compiler.is_like_clang() {
if let TestCommandResult {
stderr: _,
stdout,
executed: true,
status: true,
} = execute_command(compiler_path.as_os_str(), &["--version".as_ref()])
{
if let Some(first_line) = stdout.lines().nth(0) {
if let Some((major, minor, patch)) = parse_version(first_line) {
// We don't force a build failure, but we generate a clear message.
if compiler.is_like_gnu() {
emit_warning(&format!("GCC v{major}.{minor}.{patch} detected."));
if major > 13 {
// TODO: Update when FIPS GCC 14 build is fixed
emit_warning("WARNING: FIPS build is known to fail on GCC >= 14. See: https://github.com/aws/aws-lc-rs/issues/569");
emit_warning("Consider specifying a different compiler in your environment by setting `CC` or: `export AWS_LC_FIPS_SYS_CC=clang`");
return Some(false);
}
}
if compiler.is_like_clang() {
// AWS-LC-FIPS 2.0 was unable to compile with Clang 19
emit_warning(&format!("Clang v{major}.{minor}.{patch} detected."));
}
return Some(true);
}
}
}
} else if compiler.is_like_msvc() {
if let TestCommandResult {
stderr,
stdout: _,
executed: true,
status: true,
} = execute_command(compiler_path.as_os_str(), &["/help".as_ref()])
{
if let Some(first_line) = stderr.lines().nth(0) {
if let Some((major, minor, patch)) = parse_version(first_line) {
emit_warning(&format!("MSVC v{major}.{minor}.{patch} detected."));
return Some(true);
}
}
}
}
None
}