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