Also build host for size when using --opt-size

This commit is contained in:
Brendan Hansknecht 2022-02-24 16:21:12 -08:00
parent 69b4e78ac7
commit ec411b7a62

View file

@ -137,6 +137,8 @@ pub fn build_zig_host_native(
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.args(&["-O", "ReleaseSafe"]); command.args(&["-O", "ReleaseSafe"]);
} else if matches!(opt_level, OptLevel::Size) {
command.args(&["-O", "ReleaseSmall"]);
} }
command.output().unwrap() command.output().unwrap()
} }
@ -231,6 +233,8 @@ pub fn build_zig_host_native(
]); ]);
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.args(&["-O", "ReleaseSafe"]); command.args(&["-O", "ReleaseSafe"]);
} else if matches!(opt_level, OptLevel::Size) {
command.args(&["-O", "ReleaseSmall"]);
} }
command.output().unwrap() command.output().unwrap()
} }
@ -282,6 +286,8 @@ pub fn build_zig_host_wasm32(
]); ]);
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.args(&["-O", "ReleaseSafe"]); command.args(&["-O", "ReleaseSafe"]);
} else if matches!(opt_level, OptLevel::Size) {
command.args(&["-O", "ReleaseSmall"]);
} }
command.output().unwrap() command.output().unwrap()
} }
@ -317,7 +323,9 @@ pub fn build_c_host_native(
command.args(&["-fPIC", "-c"]); command.args(&["-fPIC", "-c"]);
} }
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.arg("-O2"); command.arg("-O3");
} else if matches!(opt_level, OptLevel::Size) {
command.arg("-Os");
} }
command.output().unwrap() command.output().unwrap()
} }
@ -351,6 +359,8 @@ pub fn build_swift_host_native(
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.arg("-O"); command.arg("-O");
} else if matches!(opt_level, OptLevel::Size) {
command.arg("-Osize");
} }
command.output().unwrap() command.output().unwrap()
@ -456,18 +466,18 @@ pub fn rebuild_host(
} else if cargo_host_src.exists() { } else if cargo_host_src.exists() {
// Compile and link Cargo.toml, if it exists // Compile and link Cargo.toml, if it exists
let cargo_dir = host_input_path.parent().unwrap(); let cargo_dir = host_input_path.parent().unwrap();
let cargo_out_dir = let cargo_out_dir = cargo_dir.join("target").join(
cargo_dir if matches!(opt_level, OptLevel::Optimize | OptLevel::Size) {
.join("target")
.join(if matches!(opt_level, OptLevel::Optimize) {
"release" "release"
} else { } else {
"debug" "debug"
}); },
);
let mut command = Command::new("cargo"); let mut command = Command::new("cargo");
command.arg("build").current_dir(cargo_dir); command.arg("build").current_dir(cargo_dir);
if matches!(opt_level, OptLevel::Optimize) { // Rust doesn't expose size without editing the cargo.toml. Instead just use release.
if matches!(opt_level, OptLevel::Optimize | OptLevel::Size) {
command.arg("--release"); command.arg("--release");
} }
let source_file = if shared_lib_path.is_some() { let source_file = if shared_lib_path.is_some() {
@ -533,6 +543,8 @@ pub fn rebuild_host(
]); ]);
if matches!(opt_level, OptLevel::Optimize) { if matches!(opt_level, OptLevel::Optimize) {
command.arg("-O"); command.arg("-O");
} else if matches!(opt_level, OptLevel::Size) {
command.arg("-C opt-level=s");
} }
let output = command.output().unwrap(); let output = command.output().unwrap();