0
0
Fork 0
mirror of https://github.com/denoland/rusty_v8.git synced 2024-11-24 15:19:31 -05:00
This commit is contained in:
Divy Srivastava 2024-02-28 18:08:48 +05:30 committed by Ronny Chan
parent 0fc46338c0
commit 14f218a60b
No known key found for this signature in database
GPG key ID: 438610BEA8DC2E2C
3 changed files with 94 additions and 3 deletions

View file

@ -231,6 +231,40 @@ fn build_v8(is_asan: bool) {
}
}
if std::env::var("CARGO_CFG_TARGET_ENV").map_or(false, |e| e == "musl") {
let toolchain = build_musl_cross_make();
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
let manifest_dir = Path::new(&manifest_dir).join("toolchain");
let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
gn_args.push("use_custom_libcxx=false".to_string());
gn_args.push("is_clang=false".to_string());
gn_args.push("treat_warnings_as_errors=false".to_string());
gn_args.push("line_tables_only=false".to_string());
gn_args.push(format!("use_gold=false"));
gn_args.push(format!("use_sysroot=false"));
gn_args.push(format!("use_lld=false"));
gn_args.push("v8_static_library=true".to_string());
gn_args.push("clang_use_chrome_plugins=false".to_string());
gn_args.push(format!(
"custom_toolchain=\"{}:{}\"",
manifest_dir.display(),
arch
));
let target = std::env::var("TARGET").unwrap();
env::set_var("TOOLCHAIN", toolchain.join("bin").display().to_string());
env::set_var(
format!("CC_{}", target.replace("-", "_")),
format!(
"{}/bin/{}-cc",
toolchain.display(),
target.replace("-unknown-", "-")
),
);
}
if let Some(p) = env::var_os("SCCACHE") {
cc_wrapper(&mut gn_args, Path::new(&p));
} else if let Ok(p) = which("sccache") {
@ -417,10 +451,11 @@ fn static_lib_name(suffix: &str) -> String {
}
}
fn build_musl_cross_make() {
fn build_musl_cross_make() -> PathBuf {
let toolchain_dir = build_dir().join("musl-cross-make");
if toolchain_dir.exists() {
println!("musl-cross-make toolchain already exists, skipping build");
return toolchain_dir;
}
std::fs::copy("config.mak", "musl-cross-make/config.mak").unwrap();
@ -439,6 +474,8 @@ fn build_musl_cross_make() {
.arg(format!("OUTPUT={}", toolchain_dir.display()))
.status()
.unwrap();
toolchain_dir
}
fn static_lib_url() -> String {

View file

@ -1,5 +1,5 @@
MUSL_VER = 1.1.24
GCC_VER = 9.2.0
MUSL_VER = 1.2.4
GCC_VER = 11.2.0
GCC_CONFIG += --enable-default-pie

54
toolchain/BUILD.gn Normal file
View file

@ -0,0 +1,54 @@
import("//build/config/sysroot.gni")
import("//build/toolchain/gcc_toolchain.gni")
template("cross_toolchain") {
gcc_toolchain(target_name) {
assert(defined(invoker.toolprefix), "missing toolprefix")
toolchain = getenv("TOOLCHAIN")
toolprefix = "${toolchain}/${invoker.toolprefix}"
cc = "${toolprefix}-gcc"
cxx = "${toolprefix}-g++"
ld = cxx
ar = "${toolprefix}-ar"
readelf = "${toolprefix}-readelf"
nm = "${toolprefix}-nm"
extra_ldflags = "-static"
toolchain_args = {
forward_variables_from(invoker.toolchain_args, "*")
use_remoteexec = false
is_clang = false
}
}
}
cross_toolchain("aarch64") {
toolprefix = "aarch64-linux-musl"
toolchain_args = {
current_cpu = "arm64"
current_os = "linux"
}
}
cross_toolchain("armv7") {
toolprefix = "armv7-linux-musleabihf"
toolchain_args = {
current_cpu = "arm"
current_os = "linux"
}
}
cross_toolchain("x86_64") {
toolprefix = "x86_64-linux-musl"
toolchain_args = {
current_cpu = "x64"
current_os = "linux"
}
}