about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-08-28 16:23:27 +0000
committerbors <bors@rust-lang.org>2018-08-28 16:23:27 +0000
commit7061b2775782bb48c0a70d3c79ec711134396687 (patch)
tree216dbc66cbb0544f0a057d771fc9a0b5fc2a0e56 /src
parentec4a752202e56a9b2d978305cb2603208d4a3ab4 (diff)
parent521df797d5ca67ef362913621ea2a10aa7c4deaf (diff)
downloadrust-7061b2775782bb48c0a70d3c79ec711134396687.tar.gz
rust-7061b2775782bb48c0a70d3c79ec711134396687.zip
Auto merge of #53679 - japaric:cortex-r, r=alexcrichton
add more Cortex-R targets

This expands on PR #53663 to complete the set of Cortex-R targets and builds
rust-std components for them.

r? @alexcrichton

each extra rust-std component (there's 4 of them) takes about 3 minutes to build
on my local machine. In terms of stability (LLVM codegen bugs) these new targets
should be as stable as the Cortex-M ones (e.g. `thumbv7m-none-eabi`).

If the extra build time is too much we can leave the rust-std components out for
now

closes #53663
cc @paoloteti
Diffstat (limited to 'src')
-rw-r--r--src/ci/docker/disabled/dist-armebv7r-none-eabihf/Dockerfile36
-rw-r--r--src/ci/docker/dist-various-1/Dockerfile9
-rw-r--r--src/librustc_target/spec/armebv7r_none_eabi.rs40
-rw-r--r--src/librustc_target/spec/armebv7r_none_eabihf.rs9
-rw-r--r--src/librustc_target/spec/armv7r_none_eabi.rs40
-rw-r--r--src/librustc_target/spec/armv7r_none_eabihf.rs41
-rw-r--r--src/librustc_target/spec/mod.rs3
-rw-r--r--src/tools/build-manifest/src/main.rs3
8 files changed, 139 insertions, 42 deletions
diff --git a/src/ci/docker/disabled/dist-armebv7r-none-eabihf/Dockerfile b/src/ci/docker/disabled/dist-armebv7r-none-eabihf/Dockerfile
deleted file mode 100644
index 34c6e640abb..00000000000
--- a/src/ci/docker/disabled/dist-armebv7r-none-eabihf/Dockerfile
+++ /dev/null
@@ -1,36 +0,0 @@
-FROM ubuntu:16.04
-
-RUN apt-get update && apt-get install -y --no-install-recommends \
-  g++ \
-  make \
-  file \
-  curl \
-  ca-certificates \
-  python2.7 \
-  git \
-  cmake \
-  sudo \
-  xz-utils \
-  bzip2 \
-  libssl-dev \
-  pkg-config
-
-
-COPY scripts/sccache.sh /scripts/
-RUN sh /scripts/sccache.sh
-
-ENV BASE_URL=https://releases.linaro.org/components/toolchain/binaries/latest/armeb-eabi/
-ENV GCC_LINARO=gcc-linaro-7.2.1-2017.11-x86_64_armeb-eabi
-
-RUN curl -sL $BASE_URL/$GCC_LINARO.tar.xz | tar -xJ
-
-ENV PATH=$PATH:/$GCC_LINARO/bin
-
-ENV TARGET=armebv7r-none-eabihf
-
-ENV CC_armebv7r_none_eabihf=armeb-eabi-gcc \
-    CFLAGS_armebv7r_none_eabihf="-march=armv7-r"
-
-ENV RUST_CONFIGURE_ARGS --disable-docs
-
-ENV SCRIPT python2.7 ../x.py dist --target $TARGET
diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
index bfc5e712f76..e072959baa9 100644
--- a/src/ci/docker/dist-various-1/Dockerfile
+++ b/src/ci/docker/dist-various-1/Dockerfile
@@ -103,11 +103,16 @@ ENV TARGETS=$TARGETS,thumbv7m-none-eabi
 ENV TARGETS=$TARGETS,thumbv7em-none-eabi
 ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
 ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
+ENV TARGETS=$TARGETS,armebv7r-none-eabi
+ENV TARGETS=$TARGETS,armebv7r-none-eabihf
+ENV TARGETS=$TARGETS,armv7r-none-eabi
+ENV TARGETS=$TARGETS,armv7r-none-eabihf
 
 ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
     CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
     CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
-    CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc
+    CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
+    CC_armebv7r_none_eabi=arm-none-eabi-gcc
 
 ENV RUST_CONFIGURE_ARGS \
       --musl-root-armv5te=/musl-armv5te \
@@ -120,7 +125,7 @@ ENV RUST_CONFIGURE_ARGS \
       --enable-emscripten \
       --disable-docs
 
-ENV SCRIPT \ 
+ENV SCRIPT \
       python2.7 ../x.py test --target $RUN_MAKE_TARGETS src/test/run-make && \
       python2.7 ../x.py dist --target $TARGETS
 
diff --git a/src/librustc_target/spec/armebv7r_none_eabi.rs b/src/librustc_target/spec/armebv7r_none_eabi.rs
new file mode 100644
index 00000000000..8d3ff1b800f
--- /dev/null
+++ b/src/librustc_target/spec/armebv7r_none_eabi.rs
@@ -0,0 +1,40 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Targets the Big endian Cortex-R4/R5 processor (ARMv7-R)
+
+use std::default::Default;
+use spec::{LinkerFlavor, LldFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
+
+pub fn target() -> TargetResult {
+    Ok(Target {
+        llvm_target: "armebv7r-unknown-none-eabi".to_string(),
+        target_endian: "big".to_string(),
+        target_pointer_width: "32".to_string(),
+        target_c_int_width: "32".to_string(),
+        data_layout: "E-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
+        arch: "arm".to_string(),
+        target_os: "none".to_string(),
+        target_env: "".to_string(),
+        target_vendor: "".to_string(),
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
+
+        options: TargetOptions {
+            executables: true,
+            linker: Some("rust-lld".to_owned()),
+            relocation_model: "static".to_string(),
+            panic_strategy: PanicStrategy::Abort,
+            max_atomic_width: Some(32),
+            abi_blacklist: super::arm_base::abi_blacklist(),
+            emit_debug_gdb_scripts: false,
+            .. Default::default()
+        },
+    })
+}
diff --git a/src/librustc_target/spec/armebv7r_none_eabihf.rs b/src/librustc_target/spec/armebv7r_none_eabihf.rs
index c111d2ffe8b..0343ea7bd17 100644
--- a/src/librustc_target/spec/armebv7r_none_eabihf.rs
+++ b/src/librustc_target/spec/armebv7r_none_eabihf.rs
@@ -11,11 +11,11 @@
 // Targets the Cortex-R4F/R5F processor (ARMv7-R)
 
 use std::default::Default;
-use spec::{LinkerFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
+use spec::{LinkerFlavor, LldFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     Ok(Target {
-        llvm_target: "armebv7r-none-eabihf".to_string(),
+        llvm_target: "armebv7r-unknown-none-eabihf".to_string(),
         target_endian: "big".to_string(),
         target_pointer_width: "32".to_string(),
         target_c_int_width: "32".to_string(),
@@ -24,13 +24,14 @@ pub fn target() -> TargetResult {
         target_os: "none".to_string(),
         target_env: String::new(),
         target_vendor: String::new(),
-        linker_flavor: LinkerFlavor::Gcc,
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
 
         options: TargetOptions {
             executables: true,
+            linker: Some("rust-lld".to_owned()),
             relocation_model: "static".to_string(),
             panic_strategy: PanicStrategy::Abort,
-            features: "+v7,+vfp3,+d16,+fp-only-sp".to_string(),
+            features: "+vfp3,+d16,+fp-only-sp".to_string(),
             max_atomic_width: Some(32),
             abi_blacklist: super::arm_base::abi_blacklist(),
             emit_debug_gdb_scripts: false,
diff --git a/src/librustc_target/spec/armv7r_none_eabi.rs b/src/librustc_target/spec/armv7r_none_eabi.rs
new file mode 100644
index 00000000000..43148d593f1
--- /dev/null
+++ b/src/librustc_target/spec/armv7r_none_eabi.rs
@@ -0,0 +1,40 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Targets the Little-endian Cortex-R4/R5 processor (ARMv7-R)
+
+use std::default::Default;
+use spec::{LinkerFlavor, LldFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
+
+pub fn target() -> TargetResult {
+    Ok(Target {
+        llvm_target: "armv7r-unknown-none-eabi".to_string(),
+        target_endian: "little".to_string(),
+        target_pointer_width: "32".to_string(),
+        target_c_int_width: "32".to_string(),
+        data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
+        arch: "arm".to_string(),
+        target_os: "none".to_string(),
+        target_env: "".to_string(),
+        target_vendor: "".to_string(),
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
+
+        options: TargetOptions {
+            executables: true,
+            linker: Some("rust-lld".to_owned()),
+            relocation_model: "static".to_string(),
+            panic_strategy: PanicStrategy::Abort,
+            max_atomic_width: Some(32),
+            abi_blacklist: super::arm_base::abi_blacklist(),
+            emit_debug_gdb_scripts: false,
+            .. Default::default()
+        },
+    })
+}
diff --git a/src/librustc_target/spec/armv7r_none_eabihf.rs b/src/librustc_target/spec/armv7r_none_eabihf.rs
new file mode 100644
index 00000000000..036b0544c52
--- /dev/null
+++ b/src/librustc_target/spec/armv7r_none_eabihf.rs
@@ -0,0 +1,41 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Targets the Little-endian Cortex-R4F/R5F processor (ARMv7-R)
+
+use std::default::Default;
+use spec::{LinkerFlavor, LldFlavor, PanicStrategy, Target, TargetOptions, TargetResult};
+
+pub fn target() -> TargetResult {
+    Ok(Target {
+        llvm_target: "armv7r-unknown-none-eabihf".to_string(),
+        target_endian: "little".to_string(),
+        target_pointer_width: "32".to_string(),
+        target_c_int_width: "32".to_string(),
+        data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
+        arch: "arm".to_string(),
+        target_os: "none".to_string(),
+        target_env: "".to_string(),
+        target_vendor: "".to_string(),
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
+
+        options: TargetOptions {
+            executables: true,
+            linker: Some("rust-lld".to_owned()),
+            relocation_model: "static".to_string(),
+            panic_strategy: PanicStrategy::Abort,
+            features: "+vfp3,+d16,+fp-only-sp".to_string(),
+            max_atomic_width: Some(32),
+            abi_blacklist: super::arm_base::abi_blacklist(),
+            emit_debug_gdb_scripts: false,
+            .. Default::default()
+        },
+    })
+}
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
index 7608ccab66f..7c0cdf991ef 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
@@ -370,7 +370,10 @@ supported_targets! {
     ("armv7-apple-ios", armv7_apple_ios),
     ("armv7s-apple-ios", armv7s_apple_ios),
 
+    ("armebv7r-none-eabi", armebv7r_none_eabi),
     ("armebv7r-none-eabihf", armebv7r_none_eabihf),
+    ("armv7r-none-eabi", armv7r_none_eabi),
+    ("armv7r-none-eabihf", armv7r_none_eabihf),
 
     ("x86_64-sun-solaris", x86_64_sun_solaris),
     ("sparcv9-sun-solaris", sparcv9_sun_solaris),
diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
index 173a349e44f..f43bd88d04f 100644
--- a/src/tools/build-manifest/src/main.rs
+++ b/src/tools/build-manifest/src/main.rs
@@ -63,7 +63,10 @@ static TARGETS: &'static [&'static str] = &[
     "armv7-unknown-cloudabi-eabihf",
     "armv7-unknown-linux-gnueabihf",
     "armv7-unknown-linux-musleabihf",
+    "armebv7r-none-eabi",
     "armebv7r-none-eabihf",
+    "armv7r-none-eabi",
+    "armv7r-none-eabihf",
     "armv7s-apple-ios",
     "asmjs-unknown-emscripten",
     "i386-apple-ios",