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