Compile for bpf target for compatibility when cargo-build-bpf is used
This commit is contained in:
parent
3fc161bea4
commit
27cee7a7de
|
@ -90,7 +90,7 @@ test-stable-bpf)
|
||||||
|
|
||||||
bpf_dump_archive="bpf-dumps.tar.bz2"
|
bpf_dump_archive="bpf-dumps.tar.bz2"
|
||||||
rm -f "$bpf_dump_archive"
|
rm -f "$bpf_dump_archive"
|
||||||
tar cjvf "$bpf_dump_archive" "${bpf_target_path}"/{deploy/*.txt,sbf-solana-solana/release/*.so}
|
tar cjvf "$bpf_dump_archive" "${bpf_target_path}"/{deploy/*.txt,bpfel-unknown-unknown/release/*.so}
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
test-stable-perf)
|
test-stable-perf)
|
||||||
|
|
|
@ -26,6 +26,8 @@ fn main() {
|
||||||
args.remove(0);
|
args.remove(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
args.push("--arch".to_string());
|
||||||
|
args.push("bpf".to_string());
|
||||||
print!("cargo-build-bpf child: {}", program.display());
|
print!("cargo-build-bpf child: {}", program.display());
|
||||||
for a in &args {
|
for a in &args {
|
||||||
print!(" {}", a);
|
print!(" {}", a);
|
||||||
|
|
|
@ -316,7 +316,11 @@ fn check_undefined_symbols(config: &Config, program: &Path) {
|
||||||
let readelf = config
|
let readelf = config
|
||||||
.sbf_sdk
|
.sbf_sdk
|
||||||
.join("dependencies")
|
.join("dependencies")
|
||||||
.join("sbf-tools")
|
.join(if config.arch == "bpf" {
|
||||||
|
"bpf-tools"
|
||||||
|
} else {
|
||||||
|
"sbf-tools"
|
||||||
|
})
|
||||||
.join("llvm")
|
.join("llvm")
|
||||||
.join("bin")
|
.join("bin")
|
||||||
.join("llvm-readelf");
|
.join("llvm-readelf");
|
||||||
|
@ -355,7 +359,11 @@ fn link_sbf_toolchain(config: &Config) {
|
||||||
let toolchain_path = config
|
let toolchain_path = config
|
||||||
.sbf_sdk
|
.sbf_sdk
|
||||||
.join("dependencies")
|
.join("dependencies")
|
||||||
.join("sbf-tools")
|
.join(if config.arch == "bpf" {
|
||||||
|
"bpf-tools"
|
||||||
|
} else {
|
||||||
|
"sbf-tools"
|
||||||
|
})
|
||||||
.join("rust");
|
.join("rust");
|
||||||
let rustup = PathBuf::from("rustup");
|
let rustup = PathBuf::from("rustup");
|
||||||
let rustup_args = vec!["toolchain", "list", "-v"];
|
let rustup_args = vec!["toolchain", "list", "-v"];
|
||||||
|
@ -369,12 +377,16 @@ fn link_sbf_toolchain(config: &Config) {
|
||||||
}
|
}
|
||||||
let mut do_link = true;
|
let mut do_link = true;
|
||||||
for line in rustup_output.lines() {
|
for line in rustup_output.lines() {
|
||||||
if line.starts_with("sbf") {
|
if line.starts_with(if config.arch == "bpf" { "bpf" } else { "sbf" }) {
|
||||||
let mut it = line.split_whitespace();
|
let mut it = line.split_whitespace();
|
||||||
let _ = it.next();
|
let _ = it.next();
|
||||||
let path = it.next();
|
let path = it.next();
|
||||||
if path.unwrap() != toolchain_path.to_str().unwrap() {
|
if path.unwrap() != toolchain_path.to_str().unwrap() {
|
||||||
let rustup_args = vec!["toolchain", "uninstall", "sbf"];
|
let rustup_args = vec![
|
||||||
|
"toolchain",
|
||||||
|
"uninstall",
|
||||||
|
if config.arch == "bpf" { "bpf" } else { "sbf" },
|
||||||
|
];
|
||||||
let output = spawn(
|
let output = spawn(
|
||||||
&rustup,
|
&rustup,
|
||||||
&rustup_args,
|
&rustup_args,
|
||||||
|
@ -390,7 +402,12 @@ fn link_sbf_toolchain(config: &Config) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if do_link {
|
if do_link {
|
||||||
let rustup_args = vec!["toolchain", "link", "sbf", toolchain_path.to_str().unwrap()];
|
let rustup_args = vec![
|
||||||
|
"toolchain",
|
||||||
|
"link",
|
||||||
|
if config.arch == "bpf" { "bpf" } else { "sbf" },
|
||||||
|
toolchain_path.to_str().unwrap(),
|
||||||
|
];
|
||||||
let output = spawn(
|
let output = spawn(
|
||||||
&rustup,
|
&rustup,
|
||||||
&rustup_args,
|
&rustup_args,
|
||||||
|
@ -447,7 +464,13 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
|
||||||
.cloned()
|
.cloned()
|
||||||
.unwrap_or_else(|| target_directory.join("deploy"));
|
.unwrap_or_else(|| target_directory.join("deploy"));
|
||||||
|
|
||||||
let target_build_directory = target_directory.join("sbf-solana-solana").join("release");
|
let target_build_directory = target_directory
|
||||||
|
.join(if config.arch == "bpf" {
|
||||||
|
"bpfel-unknown-unknown"
|
||||||
|
} else {
|
||||||
|
"sbf-solana-solana"
|
||||||
|
})
|
||||||
|
.join("release");
|
||||||
|
|
||||||
env::set_current_dir(&root_package_dir).unwrap_or_else(|err| {
|
env::set_current_dir(&root_package_dir).unwrap_or_else(|err| {
|
||||||
error!(
|
error!(
|
||||||
|
@ -468,9 +491,19 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
|
||||||
info!("Legacy program feature detected");
|
info!("Legacy program feature detected");
|
||||||
}
|
}
|
||||||
let sbf_tools_download_file_name = if cfg!(target_os = "windows") {
|
let sbf_tools_download_file_name = if cfg!(target_os = "windows") {
|
||||||
"solana-sbf-tools-windows.tar.bz2"
|
if config.arch == "bpf" {
|
||||||
|
"solana-bpf-tools-windows.tar.bz2"
|
||||||
|
} else {
|
||||||
|
"solana-sbf-tools-windows.tar.bz2"
|
||||||
|
}
|
||||||
} else if cfg!(target_os = "macos") {
|
} else if cfg!(target_os = "macos") {
|
||||||
"solana-sbf-tools-osx.tar.bz2"
|
if config.arch == "bpf" {
|
||||||
|
"solana-bpf-tools-osx.tar.bz2"
|
||||||
|
} else {
|
||||||
|
"solana-sbf-tools-osx.tar.bz2"
|
||||||
|
}
|
||||||
|
} else if config.arch == "bpf" {
|
||||||
|
"solana-bpf-tools-linux.tar.bz2"
|
||||||
} else {
|
} else {
|
||||||
"solana-sbf-tools-linux.tar.bz2"
|
"solana-sbf-tools-linux.tar.bz2"
|
||||||
};
|
};
|
||||||
|
@ -479,7 +512,11 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
|
||||||
error!("Can't get home directory path: {}", err);
|
error!("Can't get home directory path: {}", err);
|
||||||
exit(1);
|
exit(1);
|
||||||
}));
|
}));
|
||||||
let package = "sbf-tools";
|
let package = if config.arch == "bpf" {
|
||||||
|
"bpf-tools"
|
||||||
|
} else {
|
||||||
|
"sbf-tools"
|
||||||
|
};
|
||||||
let target_path = home_dir
|
let target_path = home_dir
|
||||||
.join(".cache")
|
.join(".cache")
|
||||||
.join("solana")
|
.join("solana")
|
||||||
|
@ -512,7 +549,11 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
|
||||||
let llvm_bin = config
|
let llvm_bin = config
|
||||||
.sbf_sdk
|
.sbf_sdk
|
||||||
.join("dependencies")
|
.join("dependencies")
|
||||||
.join("sbf-tools")
|
.join(if config.arch == "bpf" {
|
||||||
|
"bpf-tools"
|
||||||
|
} else {
|
||||||
|
"sbf-tools"
|
||||||
|
})
|
||||||
.join("llvm")
|
.join("llvm")
|
||||||
.join("bin");
|
.join("bin");
|
||||||
env::set_var("CC", llvm_bin.join("clang"));
|
env::set_var("CC", llvm_bin.join("clang"));
|
||||||
|
@ -557,11 +598,15 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
|
||||||
|
|
||||||
let cargo_build = PathBuf::from("cargo");
|
let cargo_build = PathBuf::from("cargo");
|
||||||
let mut cargo_build_args = vec![
|
let mut cargo_build_args = vec![
|
||||||
"+sbf",
|
if config.arch == "bpf" { "+bpf" } else { "+sbf" },
|
||||||
"build",
|
"build",
|
||||||
"--target",
|
|
||||||
"sbf-solana-solana",
|
|
||||||
"--release",
|
"--release",
|
||||||
|
"--target",
|
||||||
|
if config.arch == "bpf" {
|
||||||
|
"bpfel-unknown-unknown"
|
||||||
|
} else {
|
||||||
|
"sbf-solana-solana"
|
||||||
|
},
|
||||||
];
|
];
|
||||||
if config.arch == "sbfv2" {
|
if config.arch == "sbfv2" {
|
||||||
cargo_build_args.push("-Zbuild-std=std,panic_abort");
|
cargo_build_args.push("-Zbuild-std=std,panic_abort");
|
||||||
|
@ -852,7 +897,7 @@ fn main() {
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new("arch")
|
Arg::new("arch")
|
||||||
.long("arch")
|
.long("arch")
|
||||||
.possible_values(&["sbf", "sbfv2"])
|
.possible_values(&["bpf", "sbf", "sbfv2"])
|
||||||
.default_value("sbf")
|
.default_value("sbf")
|
||||||
.help("Build for the given SBF version"),
|
.help("Build for the given SBF version"),
|
||||||
)
|
)
|
||||||
|
|
|
@ -32,6 +32,8 @@ fn main() {
|
||||||
args.remove(0);
|
args.remove(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
args.push("--arch".to_string());
|
||||||
|
args.push("bpf".to_string());
|
||||||
print!("cargo-test-bpf child: {}", program.display());
|
print!("cargo-test-bpf child: {}", program.display());
|
||||||
for a in &args {
|
for a in &args {
|
||||||
print!(" {}", a);
|
print!(" {}", a);
|
||||||
|
|
|
@ -319,7 +319,7 @@ fn main() {
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new("arch")
|
Arg::new("arch")
|
||||||
.long("arch")
|
.long("arch")
|
||||||
.possible_values(&["sbf", "sbfv2"])
|
.possible_values(&["bpf", "sbf", "sbfv2"])
|
||||||
.default_value("sbf")
|
.default_value("sbf")
|
||||||
.help("Build for the given SBF version"),
|
.help("Build for the given SBF version"),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue