From 6f0facc0b83618f2a768680e0a114085059b6efc Mon Sep 17 00:00:00 2001 From: "Sean P. Kelly" Date: Sat, 4 Jan 2025 01:37:15 +0000 Subject: [PATCH] krane-static: fix build in cargo-cross The go compiler needs CGO enabled and a reference to the cross compiler toolchain in order to cross-build. --- tools/krane/build.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/krane/build.rs b/tools/krane/build.rs index fbf54458..83afaed0 100644 --- a/tools/krane/build.rs +++ b/tools/krane/build.rs @@ -14,17 +14,26 @@ fn main() { // build krane FFI wrapper let build_output_loc = out_dir.join("libkrane.a"); - let exit_status = Command::new("go") + let mut build_command = Command::new("go"); + + build_command .env("GOOS", get_goos()) .env("GOARCH", get_goarch()) + .env("CGO_ENABLED", "1") .arg("build") .arg("-buildmode=c-archive") .arg("-o") .arg(&build_output_loc) .arg("main.go") - .current_dir(script_dir.join("go-src")) - .status() - .expect("Failed to build crane"); + .current_dir(script_dir.join("go-src")); + + // Set cross-compiler when using cargo-cross + let cross_cc_var = format!("CC_{}", env::var("TARGET").unwrap().replace("-", "_")); + if let Some(cross_cc) = env::var_os(&cross_cc_var) { + build_command.env("CC", cross_cc); + } + + let exit_status = build_command.status().expect("Failed to build crane"); assert!( exit_status.success(),