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