From f3372ccfa87c287ac9959db1f9b92fb95b19fc99 Mon Sep 17 00:00:00 2001 From: JianChunfu Date: Tue, 18 Jun 2024 15:03:06 +0800 Subject: [PATCH] spec: Add support for the ppc64le platform Add support for the powerpc platform of ppc64le target. Signed-off-by: JianChunfu --- 0001-add-support-for-ppc64le.patch | 144 +++++++++++++++++++++++++++++ rust.spec | 11 ++- 2 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 0001-add-support-for-ppc64le.patch diff --git a/0001-add-support-for-ppc64le.patch b/0001-add-support-for-ppc64le.patch new file mode 100644 index 0000000..6395b7c --- /dev/null +++ b/0001-add-support-for-ppc64le.patch @@ -0,0 +1,144 @@ +From 85c7f9262e9d4fbfdaa5d7bc22a85eb5300fcca0 Mon Sep 17 00:00:00 2001 +From: jcf +Date: Wed, 12 Jun 2024 09:14:32 +0000 +Subject: [PATCH] add support for ppc64le + +--- + compiler/rustc_target/src/spec/mod.rs | 2 ++ + .../src/spec/targets/ppc64le_unknown_freebsd.rs | 17 +++++++++++++++++ + .../spec/targets/ppc64le_unknown_linux_gnu.rs | 17 +++++++++++++++++ + .../spec/targets/ppc64le_unknown_linux_musl.rs | 17 +++++++++++++++++ + src/bootstrap/configure.py | 2 ++ + vendor/openssl-src/src/lib.rs | 3 +++ + vendor/target-lexicon/src/targets.rs | 3 +++ + 7 files changed, 61 insertions(+) + create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs + create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs + create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs + +diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs +index 6c698c5b0..29575b9aa 100644 +--- a/compiler/rustc_target/src/spec/mod.rs ++++ b/compiler/rustc_target/src/spec/mod.rs +@@ -1421,6 +1421,8 @@ supported_targets! { + ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl), + ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu), + ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl), ++ ("ppc64le-unknown-linux-gnu", ppc64le_unknown_linux_gnu), ++ ("ppc64le-unknown-linux-musl", ppc64le_unknown_linux_musl), + ("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu), + ("s390x-unknown-linux-musl", s390x_unknown_linux_musl), + ("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu), +diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs +new file mode 100644 +index 000000000..41189b6fa +--- /dev/null ++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs +@@ -0,0 +1,17 @@ ++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = base::freebsd::opts(); ++ base.cpu = "ppc64le".into(); ++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); ++ base.max_atomic_width = Some(64); ++ base.stack_probes = StackProbeType::Inline; ++ ++ Target { ++ llvm_target: "ppc64le-unknown-freebsd".into(), ++ pointer_width: 64, ++ data_layout: "e-m:e-Fn32-i64:64-n32:64".into(), ++ arch: "powerpc64".into(), ++ options: TargetOptions { mcount: "_mcount".into(), ..base }, ++ } ++} +diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs +new file mode 100644 +index 000000000..f60b84447 +--- /dev/null ++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs +@@ -0,0 +1,17 @@ ++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = base::linux_gnu::opts(); ++ base.cpu = "ppc64le".into(); ++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); ++ base.max_atomic_width = Some(64); ++ base.stack_probes = StackProbeType::Inline; ++ ++ Target { ++ llvm_target: "ppc64le-unknown-linux-gnu".into(), ++ pointer_width: 64, ++ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(), ++ arch: "powerpc64".into(), ++ options: TargetOptions { mcount: "_mcount".into(), ..base }, ++ } ++} +diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs +new file mode 100644 +index 000000000..d497b674b +--- /dev/null ++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs +@@ -0,0 +1,17 @@ ++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = base::linux_musl::opts(); ++ base.cpu = "ppc64le".into(); ++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); ++ base.max_atomic_width = Some(64); ++ base.stack_probes = StackProbeType::Inline; ++ ++ Target { ++ llvm_target: "ppc64le-unknown-linux-musl".into(), ++ pointer_width: 64, ++ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(), ++ arch: "powerpc64".into(), ++ options: TargetOptions { mcount: "_mcount".into(), ..base }, ++ } ++} +diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py +index d34c19a47..b6adafc5e 100755 +--- a/src/bootstrap/configure.py ++++ b/src/bootstrap/configure.py +@@ -126,6 +126,8 @@ v("musl-root-mips64", "target.mips64-unknown-linux-muslabi64.musl-root", + "mips64-unknown-linux-muslabi64 install directory") + v("musl-root-mips64el", "target.mips64el-unknown-linux-muslabi64.musl-root", + "mips64el-unknown-linux-muslabi64 install directory") ++v("musl-root-ppc64le", "target.ppc64le-unknown-linux-musl.musl-root", ++ "ppc64le-unknown-linux-musl install directory") + v("musl-root-riscv32gc", "target.riscv32gc-unknown-linux-musl.musl-root", + "riscv32gc-unknown-linux-musl install directory") + v("musl-root-riscv64gc", "target.riscv64gc-unknown-linux-musl.musl-root", +diff --git a/vendor/openssl-src/src/lib.rs b/vendor/openssl-src/src/lib.rs +index 1264742dc..14427a70e 100644 +--- a/vendor/openssl-src/src/lib.rs ++++ b/vendor/openssl-src/src/lib.rs +@@ -282,6 +282,9 @@ impl Build { + "powerpc64le-unknown-freebsd" => "BSD-generic64", + "powerpc64le-unknown-linux-gnu" => "linux-ppc64le", + "powerpc64le-unknown-linux-musl" => "linux-ppc64le", ++ "ppc64le-unknown-freebsd" => "BSD-generic64", ++ "ppc64le-unknown-linux-gnu" => "linux-ppc64le", ++ "ppc64le-unknown-linux-musl" => "linux-ppc64le", + "riscv64gc-unknown-linux-gnu" => "linux-generic64", + "s390x-unknown-linux-gnu" => "linux64-s390x", + "s390x-unknown-linux-musl" => "linux64-s390x", +diff --git a/vendor/target-lexicon/src/targets.rs b/vendor/target-lexicon/src/targets.rs +index d03d202a0..7d7c0ee95 100644 +--- a/vendor/target-lexicon/src/targets.rs ++++ b/vendor/target-lexicon/src/targets.rs +@@ -1624,6 +1624,9 @@ mod tests { + "powerpc64le-unknown-freebsd", + "powerpc64le-unknown-linux-gnu", + "powerpc64le-unknown-linux-musl", ++ "ppc64le-unknown-freebsd", ++ "ppc64le-unknown-linux-gnu", ++ "ppc64le-unknown-linux-musl", + "powerpc64-ibm-aix", + "powerpc64-unknown-freebsd", + "powerpc64-unknown-linux-gnu", +-- +2.44.0 + diff --git a/rust.spec b/rust.spec index b2bc8b5..b0ec469 100644 --- a/rust.spec +++ b/rust.spec @@ -11,7 +11,7 @@ Name: rust Version: 1.78.0 -Release: 1 +Release: 2 Summary: The Rust Programming Language License: Apache-2.0 OR MIT URL: https://www.rust-lang.org @@ -40,6 +40,8 @@ Patch0006: 0001-Fix-2-tests-for-offline-execution.patch Patch1000: embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch %endif +Patch1001: 0001-add-support-for-ppc64le.patch + %{lua: function rust_triple(arch) local abi = "gnu" if arch == "armv7hl" then @@ -274,6 +276,7 @@ sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure %ifarch riscv64 %patch -P 1000 -p1 %endif +%patch -P 1001 -p1 rm -rf vendor/curl-sys*/curl/ rm -rf vendor/jemalloc-sys/jemalloc/ rm -rf vendor/libffi-sys*/libffi/ @@ -330,6 +333,9 @@ fi # But there are two versions in openEuler. Why? # We don't have macros.clang so we need clang version here # This is for avoiding rpm syntax error +%ifarch ppc64le +%global _arch powerpc64le +%endif %global clang_maj_ver 17 %if %{?clang_maj_ver} >= 17 # This is the new one, used on openEuler 24.03 LTS or later @@ -525,6 +531,9 @@ export %{rust_env} %{_mandir}/man1/cargo*.1* %changelog +* Thu Jun 13 2024 jianchunfu - 1.78.0-2 +- spec: Add support for ppc64le + * Tue May 07 2024 wangkai <13474090681@163.com> - 1.78.0-1 - Update to 1.78.0 -- Gitee