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