in aws-lc-sys/builder/cc_builder.rs [393:437]
fn compiler_check(&self, basename: &str) -> bool {
let mut ret_val = false;
let output_dir = self.out_dir.join(format!("out-{basename}"));
let source_file = self
.manifest_dir
.join("aws-lc")
.join("tests")
.join("compiler_features_tests")
.join(format!("{basename}.c"));
if !source_file.exists() {
emit_warning("######");
emit_warning("###### WARNING: MISSING GIT SUBMODULE ######");
emit_warning(&format!(
" -- Did you initialize the repo's git submodules? Unable to find source file: {}.",
source_file.display()
));
emit_warning(" -- run 'git submodule update --init --recursive' to initialize.");
emit_warning("######");
emit_warning("######");
}
let mut cc_build = cc::Build::default();
cc_build
.file(source_file)
.warnings_into_errors(true)
.out_dir(&output_dir);
let compiler = cc_build.get_compiler();
if compiler.is_like_gnu() || compiler.is_like_clang() {
cc_build.flag("-Wno-unused-parameter");
}
let result = cc_build.try_compile_intermediates();
if result.is_ok() {
ret_val = true;
}
if fs::remove_dir_all(&output_dir).is_err() {
emit_warning(&format!("Failed to remove {}", output_dir.display()));
}
emit_warning(&format!(
"Compilation of '{basename}.c' {} - {:?}.",
if ret_val { "succeeded" } else { "failed" },
&result
));
ret_val
}