xref: /openbmc/linux/tools/testing/selftests/Makefile (revision 174cd4b1)
1TARGETS =  bpf
2TARGETS += breakpoints
3TARGETS += capabilities
4TARGETS += cpufreq
5TARGETS += cpu-hotplug
6TARGETS += efivarfs
7TARGETS += exec
8TARGETS += firmware
9TARGETS += ftrace
10TARGETS += futex
11TARGETS += gpio
12TARGETS += intel_pstate
13TARGETS += ipc
14TARGETS += kcmp
15TARGETS += lib
16TARGETS += membarrier
17TARGETS += memfd
18TARGETS += memory-hotplug
19TARGETS += mount
20TARGETS += mqueue
21TARGETS += net
22TARGETS += nsfs
23TARGETS += powerpc
24TARGETS += pstore
25TARGETS += ptrace
26TARGETS += seccomp
27TARGETS += sigaltstack
28TARGETS += size
29TARGETS += static_keys
30TARGETS += sync
31TARGETS += sysctl
32ifneq (1, $(quicktest))
33TARGETS += timers
34endif
35TARGETS += user
36TARGETS += vm
37TARGETS += x86
38TARGETS += zram
39#Please keep the TARGETS list alphabetically sorted
40# Run "make quicktest=1 run_tests" or
41# "make quicktest=1 kselftest from top level Makefile
42
43TARGETS_HOTPLUG = cpu-hotplug
44TARGETS_HOTPLUG += memory-hotplug
45
46# Clear LDFLAGS and MAKEFLAGS if called from main
47# Makefile to avoid test build failures when test
48# Makefile doesn't have explicit build rules.
49ifeq (1,$(MAKELEVEL))
50override LDFLAGS =
51override MAKEFLAGS =
52endif
53
54BUILD := $(O)
55ifndef BUILD
56  BUILD := $(KBUILD_OUTPUT)
57endif
58ifndef BUILD
59  BUILD := $(shell pwd)
60endif
61
62export BUILD
63all:
64	for TARGET in $(TARGETS); do		\
65		BUILD_TARGET=$$BUILD/$$TARGET;	\
66		mkdir $$BUILD_TARGET  -p;	\
67		make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
68	done;
69
70run_tests: all
71	for TARGET in $(TARGETS); do \
72		BUILD_TARGET=$$BUILD/$$TARGET;	\
73		make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
74	done;
75
76hotplug:
77	for TARGET in $(TARGETS_HOTPLUG); do \
78		BUILD_TARGET=$$BUILD/$$TARGET;	\
79		make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
80	done;
81
82run_hotplug: hotplug
83	for TARGET in $(TARGETS_HOTPLUG); do \
84		BUILD_TARGET=$$BUILD/$$TARGET;	\
85		make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
86	done;
87
88clean_hotplug:
89	for TARGET in $(TARGETS_HOTPLUG); do \
90		BUILD_TARGET=$$BUILD/$$TARGET;	\
91		make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
92	done;
93
94run_pstore_crash:
95	make -C pstore run_crash
96
97INSTALL_PATH ?= install
98INSTALL_PATH := $(abspath $(INSTALL_PATH))
99ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
100
101install:
102ifdef INSTALL_PATH
103	@# Ask all targets to install their files
104	mkdir -p $(INSTALL_PATH)
105	for TARGET in $(TARGETS); do \
106		BUILD_TARGET=$$BUILD/$$TARGET;	\
107		make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
108	done;
109
110	@# Ask all targets to emit their test scripts
111	echo "#!/bin/sh" > $(ALL_SCRIPT)
112	echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
113	echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
114
115	for TARGET in $(TARGETS); do \
116		BUILD_TARGET=$$BUILD/$$TARGET;	\
117		echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
118		echo "echo ========================================" >> $(ALL_SCRIPT); \
119		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
120		make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
121		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
122	done;
123
124	chmod u+x $(ALL_SCRIPT)
125else
126	$(error Error: set INSTALL_PATH to use install)
127endif
128
129clean:
130	for TARGET in $(TARGETS); do \
131		BUILD_TARGET=$$BUILD/$$TARGET;	\
132		make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
133	done;
134
135.PHONY: install
136