From b71f6364d22e1e9cea597003e4c563c32e5f651c Mon Sep 17 00:00:00 2001 From: Harm Berntsen Date: Thu, 3 May 2018 14:35:59 +0200 Subject: [PATCH 1/3] Add armv5te-unknown-linux-musl target --- src/bootstrap/configure.py | 2 + .../docker/dist-armv5te-linux-musl/Dockerfile | 47 +++++++++++++++++++ .../spec/armv5te_unknown_linux_musl.rs | 38 +++++++++++++++ src/librustc_target/spec/mod.rs | 1 + src/tools/build-manifest/src/main.rs | 1 + 5 files changed, 89 insertions(+) create mode 100644 src/ci/docker/dist-armv5te-linux-musl/Dockerfile create mode 100644 src/librustc_target/spec/armv5te_unknown_linux_musl.rs diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index a0123da6d8ff9..54b6526c5c81f 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -120,6 +120,8 @@ def v(*args): "arm-unknown-linux-musleabi install directory") v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root", "arm-unknown-linux-musleabihf install directory") +v("musl-root-armv5te", "target.armv5te-unknown-linux-musl.musl-root", + "armv5te-unknown-linux-musleabi install directory") v("musl-root-armv7", "target.armv7-unknown-linux-musleabihf.musl-root", "armv7-unknown-linux-musleabihf install directory") v("musl-root-aarch64", "target.aarch64-unknown-linux-musl.musl-root", diff --git a/src/ci/docker/dist-armv5te-linux-musl/Dockerfile b/src/ci/docker/dist-armv5te-linux-musl/Dockerfile new file mode 100644 index 0000000000000..42eaebcc3dbbd --- /dev/null +++ b/src/ci/docker/dist-armv5te-linux-musl/Dockerfile @@ -0,0 +1,47 @@ +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 \ + zlib1g-dev \ + g++-arm-linux-gnueabi \ + bzip2 \ + patch \ + pkg-config + +WORKDIR /build + +# Suppress some warnings in the openwrt toolchains we downloaded +ENV STAGING_DIR=/tmp + +COPY scripts/musl.sh /build +RUN env \ + CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ + CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ + bash musl.sh armv5te && \ + rm -rf /build/* + +ENV TARGETS=armv5te-unknown-linux-musl + +# FIXME: remove armv5te vars after https://github.com/alexcrichton/cc-rs/issues/271 +# get fixed and cc update +ENV CC_armv5te_unknown_linux_musl=arm-linux-gnueabi-gcc \ + CFLAGS_armv5te_unknown_linux_musl="-march=armv5te -marm -mfloat-abi=soft" + +ENV RUST_CONFIGURE_ARGS \ + --musl-root-armv5te=/musl-armv5te \ + --disable-docs + +ENV SCRIPT python2.7 ../x.py dist --target $TARGETS + +# sccache +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh diff --git a/src/librustc_target/spec/armv5te_unknown_linux_musl.rs b/src/librustc_target/spec/armv5te_unknown_linux_musl.rs new file mode 100644 index 0000000000000..2d4e95ab01d6f --- /dev/null +++ b/src/librustc_target/spec/armv5te_unknown_linux_musl.rs @@ -0,0 +1,38 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; + +pub fn target() -> TargetResult { + let base = super::linux_musl_base::opts(); + Ok(Target { + // It's important we use "gnueabihf" and not "musleabihf" here. LLVM + // uses it to determine the calling convention and float ABI, and LLVM + // doesn't support the "musleabihf" value. + llvm_target: "armv5te-unknown-linux-gnueabi".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: "linux".to_string(), + target_env: "musl".to_string(), + target_vendor: "unknown".to_string(), + linker_flavor: LinkerFlavor::Gcc, + + options: TargetOptions { + features: "+soft-float,+strict-align".to_string(), + // Atomic operations provided by compiler-builtins + max_atomic_width: Some(32), + abi_blacklist: super::arm_base::abi_blacklist(), + .. base + } + }) +} diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index 1e94f03788586..e4071b316c120 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -283,6 +283,7 @@ supported_targets! { ("arm-unknown-linux-musleabihf", arm_unknown_linux_musleabihf), ("armv4t-unknown-linux-gnueabi", armv4t_unknown_linux_gnueabi), ("armv5te-unknown-linux-gnueabi", armv5te_unknown_linux_gnueabi), + ("armv5te-unknown-linux-musl", armv5te_unknown_linux_musl), ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf), ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf), ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu), diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 9f2389292158b..ba5bb45d76798 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -57,6 +57,7 @@ static TARGETS: &'static [&'static str] = &[ "arm-unknown-linux-musleabi", "arm-unknown-linux-musleabihf", "armv5te-unknown-linux-gnueabi", + "armv5te-unknown-linux-musl", "armv7-apple-ios", "armv7-linux-androideabi", "armv7-unknown-cloudabi-eabihf", From 80f1912d83c977ac12946f1a12d2523383a0d3b7 Mon Sep 17 00:00:00 2001 From: Harm Berntsen Date: Fri, 4 May 2018 08:47:24 +0200 Subject: [PATCH 2/3] Add eabi suffix to armv5te musl target --- src/bootstrap/configure.py | 2 +- .../Dockerfile | 6 +++--- ...nown_linux_musl.rs => armv5te_unknown_linux_musleabi.rs} | 0 src/librustc_target/spec/mod.rs | 2 +- src/tools/build-manifest/src/main.rs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename src/ci/docker/{dist-armv5te-linux-musl => dist-armv5te-linux-musleabi}/Dockerfile (83%) rename src/librustc_target/spec/{armv5te_unknown_linux_musl.rs => armv5te_unknown_linux_musleabi.rs} (100%) diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index 54b6526c5c81f..3574b7d210a2d 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -120,7 +120,7 @@ def v(*args): "arm-unknown-linux-musleabi install directory") v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root", "arm-unknown-linux-musleabihf install directory") -v("musl-root-armv5te", "target.armv5te-unknown-linux-musl.musl-root", +v("musl-root-armv5te", "target.armv5te-unknown-linux-musleabi.musl-root", "armv5te-unknown-linux-musleabi install directory") v("musl-root-armv7", "target.armv7-unknown-linux-musleabihf.musl-root", "armv7-unknown-linux-musleabihf install directory") diff --git a/src/ci/docker/dist-armv5te-linux-musl/Dockerfile b/src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile similarity index 83% rename from src/ci/docker/dist-armv5te-linux-musl/Dockerfile rename to src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile index 42eaebcc3dbbd..af2e410a37953 100644 --- a/src/ci/docker/dist-armv5te-linux-musl/Dockerfile +++ b/src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile @@ -29,12 +29,12 @@ RUN env \ bash musl.sh armv5te && \ rm -rf /build/* -ENV TARGETS=armv5te-unknown-linux-musl +ENV TARGETS=armv5te-unknown-linux-musleabi # FIXME: remove armv5te vars after https://github.com/alexcrichton/cc-rs/issues/271 # get fixed and cc update -ENV CC_armv5te_unknown_linux_musl=arm-linux-gnueabi-gcc \ - CFLAGS_armv5te_unknown_linux_musl="-march=armv5te -marm -mfloat-abi=soft" +ENV CC_armv5te_unknown_linux_musleabi=arm-linux-gnueabi-gcc \ + CFLAGS_armv5te_unknown_linux_musleabi="-march=armv5te -marm -mfloat-abi=soft" ENV RUST_CONFIGURE_ARGS \ --musl-root-armv5te=/musl-armv5te \ diff --git a/src/librustc_target/spec/armv5te_unknown_linux_musl.rs b/src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs similarity index 100% rename from src/librustc_target/spec/armv5te_unknown_linux_musl.rs rename to src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index e4071b316c120..48e771e0aafab 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -283,7 +283,7 @@ supported_targets! { ("arm-unknown-linux-musleabihf", arm_unknown_linux_musleabihf), ("armv4t-unknown-linux-gnueabi", armv4t_unknown_linux_gnueabi), ("armv5te-unknown-linux-gnueabi", armv5te_unknown_linux_gnueabi), - ("armv5te-unknown-linux-musl", armv5te_unknown_linux_musl), + ("armv5te-unknown-linux-musleabi", armv5te_unknown_linux_musleabi), ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf), ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf), ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu), diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index ba5bb45d76798..6b548742fb360 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -57,7 +57,7 @@ static TARGETS: &'static [&'static str] = &[ "arm-unknown-linux-musleabi", "arm-unknown-linux-musleabihf", "armv5te-unknown-linux-gnueabi", - "armv5te-unknown-linux-musl", + "armv5te-unknown-linux-musleabi", "armv7-apple-ios", "armv7-linux-androideabi", "armv7-unknown-cloudabi-eabihf", From 235af75d15860503f4f358ce2ad7b806d1b7f514 Mon Sep 17 00:00:00 2001 From: Harm Berntsen Date: Fri, 4 May 2018 08:53:27 +0200 Subject: [PATCH 3/3] Merge armv5te musl container with dist-various-1 --- .../dist-armv5te-linux-musleabi/Dockerfile | 47 ------------------- src/ci/docker/dist-various-1/Dockerfile | 10 +++- 2 files changed, 9 insertions(+), 48 deletions(-) delete mode 100644 src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile diff --git a/src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile b/src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile deleted file mode 100644 index af2e410a37953..0000000000000 --- a/src/ci/docker/dist-armv5te-linux-musleabi/Dockerfile +++ /dev/null @@ -1,47 +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 \ - zlib1g-dev \ - g++-arm-linux-gnueabi \ - bzip2 \ - patch \ - pkg-config - -WORKDIR /build - -# Suppress some warnings in the openwrt toolchains we downloaded -ENV STAGING_DIR=/tmp - -COPY scripts/musl.sh /build -RUN env \ - CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ - CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ - bash musl.sh armv5te && \ - rm -rf /build/* - -ENV TARGETS=armv5te-unknown-linux-musleabi - -# FIXME: remove armv5te vars after https://github.com/alexcrichton/cc-rs/issues/271 -# get fixed and cc update -ENV CC_armv5te_unknown_linux_musleabi=arm-linux-gnueabi-gcc \ - CFLAGS_armv5te_unknown_linux_musleabi="-march=armv5te -marm -mfloat-abi=soft" - -ENV RUST_CONFIGURE_ARGS \ - --musl-root-armv5te=/musl-armv5te \ - --disable-docs - -ENV SCRIPT python2.7 ../x.py dist --target $TARGETS - -# sccache -COPY scripts/sccache.sh /scripts/ -RUN sh /scripts/sccache.sh diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile index 00366301aa17a..b195decfcf574 100644 --- a/src/ci/docker/dist-various-1/Dockerfile +++ b/src/ci/docker/dist-various-1/Dockerfile @@ -43,6 +43,10 @@ ENV STAGING_DIR=/tmp COPY scripts/musl.sh /build RUN env \ + CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ + CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ + bash musl.sh armv5te && \ + env \ CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \ CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \ bash musl.sh arm && \ @@ -84,6 +88,7 @@ ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi +ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu @@ -100,9 +105,12 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \ CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \ CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \ CC_armv5te_unknown_linux_gnueabi=arm-linux-gnueabi-gcc \ - CFLAGS_armv5te_unknown_linux_gnueabi="-march=armv5te -marm -mfloat-abi=soft" + CFLAGS_armv5te_unknown_linux_gnueabi="-march=armv5te -marm -mfloat-abi=soft" \ + CC_armv5te_unknown_linux_musleabi=arm-linux-gnueabi-gcc \ + CFLAGS_armv5te_unknown_linux_musleabi="-march=armv5te -marm -mfloat-abi=soft" ENV RUST_CONFIGURE_ARGS \ + --musl-root-armv5te=/musl-armv5te \ --musl-root-arm=/musl-arm \ --musl-root-armhf=/musl-armhf \ --musl-root-armv7=/musl-armv7 \