Merge tag 'mvebu-fixes-4.14-1' of git://git.infradead.org/linux-mvebu into fixes
[linux-2.6-block.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 ifneq ($(KBUILD_SRC),)
56 override LDFLAGS =
57 endif
58
59 BUILD := $(O)
60 ifndef BUILD
61   BUILD := $(KBUILD_OUTPUT)
62 endif
63 ifndef BUILD
64   BUILD := $(shell pwd)
65 endif
66
67 export BUILD
68 all:
69         @for TARGET in $(TARGETS); do           \
70                 BUILD_TARGET=$$BUILD/$$TARGET;  \
71                 mkdir $$BUILD_TARGET  -p;       \
72                 make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
73         done;
74
75 run_tests: all
76         @for TARGET in $(TARGETS); do \
77                 BUILD_TARGET=$$BUILD/$$TARGET;  \
78                 make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
79         done;
80
81 hotplug:
82         @for TARGET in $(TARGETS_HOTPLUG); do \
83                 BUILD_TARGET=$$BUILD/$$TARGET;  \
84                 make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
85         done;
86
87 run_hotplug: hotplug
88         @for TARGET in $(TARGETS_HOTPLUG); do \
89                 BUILD_TARGET=$$BUILD/$$TARGET;  \
90                 make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
91         done;
92
93 clean_hotplug:
94         @for TARGET in $(TARGETS_HOTPLUG); do \
95                 BUILD_TARGET=$$BUILD/$$TARGET;  \
96                 make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
97         done;
98
99 run_pstore_crash:
100         make -C pstore run_crash
101
102 INSTALL_PATH ?= install
103 INSTALL_PATH := $(abspath $(INSTALL_PATH))
104 ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
105
106 install:
107 ifdef INSTALL_PATH
108         @# Ask all targets to install their files
109         mkdir -p $(INSTALL_PATH)
110         @for TARGET in $(TARGETS); do \
111                 BUILD_TARGET=$$BUILD/$$TARGET;  \
112                 make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
113         done;
114
115         @# Ask all targets to emit their test scripts
116         echo "#!/bin/sh" > $(ALL_SCRIPT)
117         echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
118         echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
119
120         for TARGET in $(TARGETS); do \
121                 BUILD_TARGET=$$BUILD/$$TARGET;  \
122                 echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
123                 echo "echo ========================================" >> $(ALL_SCRIPT); \
124                 echo "cd $$TARGET" >> $(ALL_SCRIPT); \
125                 make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
126                 echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
127         done;
128
129         chmod u+x $(ALL_SCRIPT)
130 else
131         $(error Error: set INSTALL_PATH to use install)
132 endif
133
134 clean:
135         @for TARGET in $(TARGETS); do \
136                 BUILD_TARGET=$$BUILD/$$TARGET;  \
137                 make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
138         done;
139
140 .PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean