From 8f7ec1e91f0d54d567f0230c1b386ef4031e3cf5 Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Wed, 25 Oct 2017 15:52:52 -0700 Subject: Add a local regression Makefile Travis is both slow and screwy, this lets me run the regressions locally. --- .gitignore | 1 + regression/.gitignore | 3 +++ regression/Makefile | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 regression/.gitignore create mode 100644 regression/Makefile diff --git a/.gitignore b/.gitignore index e734c9f..f63fbd3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ config.log config.status Makefile .DS_Store +!/regression/Makefile diff --git a/regression/.gitignore b/regression/.gitignore new file mode 100644 index 0000000..3391cd5 --- /dev/null +++ b/regression/.gitignore @@ -0,0 +1,3 @@ +/build +/stamps +/install diff --git a/regression/Makefile b/regression/Makefile new file mode 100644 index 0000000..559cdf4 --- /dev/null +++ b/regression/Makefile @@ -0,0 +1,63 @@ +.SECONDARY: + +# The list of target tuples that we want to test. +.PHONY: report +report: report-newlib-rv32i-ilp32-medlow +report: report-newlib-rv32im-ilp32-medlow +report: report-newlib-rv32iac-ilp32-medlow +report: report-newlib-rv32imac-ilp32-medlow +report: report-newlib-rv32imafc-ilp32f-medlow +report: report-newlib-rv64imac-lp64-medlow +report: report-newlib-rv64imafdc-lp64d-medlow +report: report-linux-rv32imac-ilp32-medlow +report: report-linux-rv32imafdc-ilp32-medlow +report: report-linux-rv32imafdc-ilp32d-medlow +report: report-linux-rv64imac-lp64-medlow +report: report-linux-rv64imafdc-lp64-medlow +report: report-linux-rv64imafdc-lp64d-medlow + +# This is the link between the report targets and the actual testsuite +# build/test runs. +.PHONY: report-% +report-%: stamps/check-% + $(eval $@_BUILDDIR := build/$(patsubst report-%,%,$(notdir $@))) + $(MAKE) -C $($@_BUILDDIR) report + +# These rules call into the above Makefile to actually test the various +# toolchain targets we care about. +stamps/configure-%: + $(eval $@_BUILDDIR := build/$(patsubst configure-%,%,$(notdir $@))) + $(eval $@_PREFIX := install/$(patsubst configure-%,%,$(notdir $@))) + $(eval $@_LINUX := $(if $(filter linux,$(word 2,$(subst -, ,$(notdir $@)))),--enable-linux,--disable-linux)) + $(eval $@_MARCH := $(word 3,$(subst -, ,$(notdir $@)))) + $(eval $@_MABI := $(word 4,$(subst -, ,$(notdir $@)))) + $(eval $@_MCMODEL := $(word 5,$(subst -, ,$(notdir $@)))) + mkdir -p $($@_BUILDDIR) + cd $($@_BUILDDIR); $(abspath ../configure) \ + $($@_LINUX) \ + --disable-multilib \ + --prefix=$(abspath $($@_PREFIX)) \ + --with-arch=$($@_MARCH) \ + --with-abi=$($@_MABI) \ + --with-cmodel=$($@_MCMODEL) + mkdir -p $(dir $@) + date > $@ + +stamps/build-%: stamps/configure-% + $(eval $@_BUILDDIR := build/$(patsubst build-%,%,$(notdir $@))) + $(eval $@_PREFIX := install/$(patsubst build-%,%,$(notdir $@))) + $(MAKE) -C $($@_BUILDDIR) + mkdir -p $(dir $@) + echo 'export $$PATH="$(abspath $($@_PREFIX)):$$PATH"' > $($@_PREFIX)/enter.bash + date > $@ + +stamps/check-%: stamps/build-% + $(eval $@_BUILDDIR := build/$(patsubst check-%,%,$(notdir $@))) + $(MAKE) -C $($@_BUILDDIR) check + mkdir -p $(dir $@) + date > $@ + +# Cleans up after a run +.PHONY: clean +clean:: + rm -rf build install stamps -- cgit v1.1