diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index c86010379f495..f762d9414cff3 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -975,9 +975,19 @@ impl Step for Compiletest { builder.ensure(compile::Rustc { compiler, target }); } - if builder.no_std(target) != Some(true) { + if builder.no_std(target) == Some(true) { + // the `test` doesn't compile for no-std targets + builder.ensure(compile::Std { compiler, target }); + } else { builder.ensure(compile::Test { compiler, target }); } + + if builder.no_std(target) == Some(true) { + // for no_std run-make (e.g. thumb*), + // we need a host compiler which is called by cargo. + builder.ensure(compile::Std { compiler, target: compiler.host }); + } + builder.ensure(native::TestHelpers { target }); builder.ensure(RemoteCopyLibs { compiler, target }); diff --git a/src/test/run-make/git_clone_sha1.sh b/src/test/run-make/git_clone_sha1.sh new file mode 100644 index 0000000000000..efcc93c73a5d2 --- /dev/null +++ b/src/test/run-make/git_clone_sha1.sh @@ -0,0 +1,33 @@ +#!/bin/bash -x + +# 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. + +# Usage: $0 project_name url sha1 +# Get the crate with the specified sha1. +# +# all arguments are required. +# +# See below link for git usage: +# https://stackoverflow.com/questions/3489173#14091182 + +# Mandatory arguments: +PROJECT_NAME=$1 +URL=$2 +SHA1=$3 + +function err_exit() { + echo "ERROR:" $* + exit 1 +} + +git clone $URL $PROJECT_NAME || err_exit +cd $PROJECT_NAME || err_exit +git reset --hard $SHA1 || err_exit diff --git a/src/test/run-make/thumb-none-cortex-m/Makefile b/src/test/run-make/thumb-none-cortex-m/Makefile new file mode 100644 index 0000000000000..a267016efc2e3 --- /dev/null +++ b/src/test/run-make/thumb-none-cortex-m/Makefile @@ -0,0 +1,38 @@ +-include ../../run-make-fulldeps/tools.mk + +# How to run this +# $ ./x.py clean +# $ ./x.py test --target thumbv6m-none-eabi,thumbv7m-none-eabi src/test/run-make + +# Supported targets: +# - thumbv6m-none-eabi (Bare Cortex-M0, M0+, M1) +# - thumbv7em-none-eabi (Bare Cortex-M4, M7) +# - thumbv7em-none-eabihf (Bare Cortex-M4F, M7F, FPU, hardfloat) +# - thumbv7m-none-eabi (Bare Cortex-M3) + +# See https://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or +ifneq (,$(filter $(TARGET),thumbv6m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf thumbv7m-none-eabi)) + +# For cargo setting +RUSTC := $(RUSTC_ORIGINAL) +LD_LIBRARY_PATH := $(HOST_RPATH_DIR) +# We need to be outside of 'src' dir in order to run cargo +WORK_DIR := $(TMPDIR) + +HERE := $(shell pwd) + +CRATE := cortex-m +CRATE_URL := https://github.com/rust-embedded/cortex-m +CRATE_SHA1 := a448e9156e2cb1e556e5441fd65426952ef4b927 # 0.5.0 + +all: + env + mkdir -p $(WORK_DIR) + -cd $(WORK_DIR) && rm -rf $(CRATE) + cd $(WORK_DIR) && bash -x $(HERE)/../git_clone_sha1.sh $(CRATE) $(CRATE_URL) $(CRATE_SHA1) + cd $(WORK_DIR) && cd $(CRATE) && $(CARGO) build --target $(TARGET) -v +else + +all: + +endif