xref: /linux/tools/testing/selftests/riscv/Makefile (revision 9d5328eeb18597749b18f42ff7df1c9f485d3c3c)
1# SPDX-License-Identifier: GPL-2.0
2# Originally tools/testing/arm64/Makefile
3
4# When ARCH not overridden for crosscompiling, lookup machine
5ARCH ?= $(shell uname -m 2>/dev/null || echo not)
6
7ifneq (,$(filter $(ARCH),riscv))
8RISCV_SUBTARGETS ?= hwprobe vector mm sigreturn
9else
10RISCV_SUBTARGETS :=
11endif
12
13CFLAGS := -Wall -O2 -g
14
15# A proper top_srcdir is needed by KSFT(lib.mk)
16top_srcdir = $(realpath ../../../../)
17
18# Additional include paths needed by kselftest.h and local headers
19CFLAGS += -I$(top_srcdir)/tools/testing/selftests/
20
21CFLAGS += $(KHDR_INCLUDES)
22
23export CFLAGS
24export top_srcdir
25
26all:
27	@for DIR in $(RISCV_SUBTARGETS); do				\
28		BUILD_TARGET=$(OUTPUT)/$$DIR;			\
29		mkdir -p $$BUILD_TARGET;			\
30		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$DIR $@;		\
31	done
32
33install: all
34	@for DIR in $(RISCV_SUBTARGETS); do				\
35		BUILD_TARGET=$(OUTPUT)/$$DIR;			\
36		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$DIR $@;		\
37	done
38
39run_tests: all
40	@for DIR in $(RISCV_SUBTARGETS); do				\
41		BUILD_TARGET=$(OUTPUT)/$$DIR;			\
42		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$DIR $@;		\
43	done
44
45# Avoid any output on non riscv on emit_tests
46emit_tests:
47	@for DIR in $(RISCV_SUBTARGETS); do				\
48		BUILD_TARGET=$(OUTPUT)/$$DIR;			\
49		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$DIR $@;		\
50	done
51
52clean:
53	@for DIR in $(RISCV_SUBTARGETS); do				\
54		BUILD_TARGET=$(OUTPUT)/$$DIR;			\
55		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$DIR $@;		\
56	done
57
58.PHONY: all clean install run_tests emit_tests
59