From 02204eb3c8561133e87ea570428bcbef8c7f278c Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 08:53:39 -0500 Subject: [PATCH 1/8] Update bootstrap.py --- src/bootstrap/bootstrap.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index f3dbae6909a4d..1546470c58775 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -230,7 +230,11 @@ def default_build_triple(): err = "unknown OS type: {}".format(ostype) sys.exit(err) - cputype_mapper = { + if cputype == 'powerpc' and ostype == 'unknown-freebsd': + cputype = subprocess.check_output( + ['uname', '-p']).strip().decode(default_encoding) + +cputype_mapper = { 'BePC': 'i686', 'aarch64': 'aarch64', 'amd64': 'x86_64', From 52330d4e3a4d30cf344d520478c067bd1589e748 Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 08:55:30 -0500 Subject: [PATCH 2/8] Update build.rs --- src/librustc_llvm/build.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs index d4a3ae273fcd4..733ebbbba8a3c 100644 --- a/src/librustc_llvm/build.rs +++ b/src/librustc_llvm/build.rs @@ -263,7 +263,11 @@ fn main() { } else if cxxflags.contains("stdlib=libc++") { println!("cargo:rustc-link-lib=c++"); } else { - println!("cargo:rustc-link-lib={}", stdcppname); + if target.contains("powerpc64-unknown-freebsd") { + println!("cargo:rustc-link-search=native=/usr/local/lib/gcc6"); + println!("cargo:rustc-link-lib=static=stdc++"); + } else { + println!("cargo:rustc-link-lib={}", stdcppname); } } From bc8b4bb54351754223a5aa3bdea019122c5b89aa Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 09:12:59 -0500 Subject: [PATCH 3/8] Create powerpc64_unknown_freebsd.rs --- .../spec/powerpc64_unknown_freebsd.rs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/librustc_target/spec/powerpc64_unknown_freebsd.rs diff --git a/src/librustc_target/spec/powerpc64_unknown_freebsd.rs b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs new file mode 100644 index 0000000000000..85f1d812ce5e0 --- /dev/null +++ b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs @@ -0,0 +1,21 @@ +use spec::{LinkerFlavor, Target, TargetResult}; + +pub fn target() -> TargetResult { + let mut base = super::freebsd_base::opts(); + base.cpu = "ppc64".to_string(); + base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string()); + base.max_atomic_width = Some(64); + + Ok(Target { + llvm_target: "powerpc64-unknown-freebsd".to_string(), + target_endian: "big".to_string(), + target_pointer_width: "64".to_string(), + target_c_int_width: "32".to_string(), + data_layout: "E-m:e-i64:64-n32:64".to_string(), + arch: "powerpc64".to_string(), + target_os: "freebsd".to_string(), + target_env: String::new(), + target_vendor: "unknown".to_string(), + linker_flavor: LinkerFlavor::Gcc, + options: base, + }) From c47fc9d0c41b1a7c20ec351f61a5dcff2989c83a Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 09:14:36 -0500 Subject: [PATCH 4/8] Update mod.rs --- src/librustc_target/spec/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index f42b0a1c3c958..18a17001b85c5 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -327,6 +327,7 @@ supported_targets! { ("aarch64-unknown-freebsd", aarch64_unknown_freebsd), ("i686-unknown-freebsd", i686_unknown_freebsd), + ("powerpc64-unknown-freebsd", powerpc64_unknown_freebsd), ("x86_64-unknown-freebsd", x86_64_unknown_freebsd), ("i686-unknown-dragonfly", i686_unknown_dragonfly), From 3a1198c767ad0c55cd42e0f933b203507d253b87 Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 10:34:21 -0500 Subject: [PATCH 5/8] Update bootstrap.py --- src/bootstrap/bootstrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 1546470c58775..5360739b87549 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -234,7 +234,7 @@ def default_build_triple(): cputype = subprocess.check_output( ['uname', '-p']).strip().decode(default_encoding) -cputype_mapper = { + cputype_mapper = { 'BePC': 'i686', 'aarch64': 'aarch64', 'amd64': 'x86_64', From 8bc75aa4d6933755560e1c3d982e5eaf7e04e716 Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 11:09:15 -0500 Subject: [PATCH 6/8] Update powerpc64_unknown_freebsd.rs --- src/librustc_target/spec/powerpc64_unknown_freebsd.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustc_target/spec/powerpc64_unknown_freebsd.rs b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs index 85f1d812ce5e0..cc7b87bfdebc3 100644 --- a/src/librustc_target/spec/powerpc64_unknown_freebsd.rs +++ b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs @@ -19,3 +19,4 @@ pub fn target() -> TargetResult { linker_flavor: LinkerFlavor::Gcc, options: base, }) +} From e739c817edc83ba6bae94ddf6b563a41e3acf833 Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 11:16:34 -0500 Subject: [PATCH 7/8] Update powerpc64_unknown_freebsd.rs From df9095f088955af88b1b971458b6e1a544c292ac Mon Sep 17 00:00:00 2001 From: lenoil98 Date: Sat, 19 Jan 2019 11:47:17 -0500 Subject: [PATCH 8/8] Update build.rs --- src/librustc_llvm/build.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs index 733ebbbba8a3c..59e6f71861b3b 100644 --- a/src/librustc_llvm/build.rs +++ b/src/librustc_llvm/build.rs @@ -268,6 +268,7 @@ fn main() { println!("cargo:rustc-link-lib=static=stdc++"); } else { println!("cargo:rustc-link-lib={}", stdcppname); + } } }