Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
47a18c42 PA |
2 | TARGETS = android |
3 | TARGETS += bpf | |
5aa5bd14 | 4 | TARGETS += breakpoints |
f4ecb322 | 5 | TARGETS += capabilities |
84092dbc | 6 | TARGETS += cgroup |
e66d5b67 | 7 | TARGETS += cpufreq |
58c7be84 | 8 | TARGETS += cpu-hotplug |
6edf2e37 | 9 | TARGETS += drivers/dma-buf |
58c7be84 | 10 | TARGETS += efivarfs |
96e869d8 | 11 | TARGETS += exec |
ce290a19 | 12 | TARGETS += filesystems |
75abec73 | 13 | TARGETS += filesystems/binderfs |
96e869d8 AM |
14 | TARGETS += firmware |
15 | TARGETS += ftrace | |
ecac1a75 | 16 | TARGETS += futex |
22f6592b | 17 | TARGETS += gpio |
6320303f | 18 | TARGETS += intel_pstate |
7e722473 | 19 | TARGETS += ipc |
e55c884e | 20 | TARGETS += ir |
66a01b96 | 21 | TARGETS += kcmp |
c3c0e811 | 22 | TARGETS += kexec |
783e9e51 | 23 | TARGETS += kvm |
317dc34a | 24 | TARGETS += lib |
a2818ee4 | 25 | TARGETS += livepatch |
b6d97344 | 26 | TARGETS += membarrier |
4f5ce5e8 | 27 | TARGETS += memfd |
58c7be84 | 28 | TARGETS += memory-hotplug |
db181ce0 | 29 | TARGETS += mount |
96e869d8 | 30 | TARGETS += mqueue |
a6f68034 | 31 | TARGETS += net |
25d8bced | 32 | TARGETS += netfilter |
cda261f4 | 33 | TARGETS += networking/timestamping |
6ad92bf6 | 34 | TARGETS += nsfs |
575a0ae9 | 35 | TARGETS += pidfd |
96e869d8 | 36 | TARGETS += powerpc |
9cd65655 | 37 | TARGETS += proc |
cc04a46f | 38 | TARGETS += pstore |
17afab1d | 39 | TARGETS += ptrace |
ccba8b64 | 40 | TARGETS += rseq |
a12ab9e1 | 41 | TARGETS += rtc |
c99ee51a | 42 | TARGETS += seccomp |
19fd2868 | 43 | TARGETS += sigaltstack |
96e869d8 | 44 | TARGETS += size |
3c545084 | 45 | TARGETS += sparc64 |
b8826e50 | 46 | TARGETS += splice |
1087d019 | 47 | TARGETS += static_keys |
82208160 | 48 | TARGETS += sync |
96e869d8 | 49 | TARGETS += sysctl |
2278e5ed | 50 | ifneq (1, $(quicktest)) |
0bc4b0cf | 51 | TARGETS += timers |
2278e5ed | 52 | endif |
a3322868 | 53 | TARGETS += tmpfs |
6ea3dfe1 | 54 | TARGETS += tpm2 |
3e2a4c18 | 55 | TARGETS += user |
96e869d8 | 56 | TARGETS += vm |
3f705dfd | 57 | TARGETS += x86 |
f21fb798 | 58 | TARGETS += zram |
96e869d8 | 59 | #Please keep the TARGETS list alphabetically sorted |
2278e5ed | 60 | # Run "make quicktest=1 run_tests" or |
c6a13faf | 61 | # "make quicktest=1 kselftest" from top level Makefile |
274343ad | 62 | |
ddddda9b SK |
63 | TARGETS_HOTPLUG = cpu-hotplug |
64 | TARGETS_HOTPLUG += memory-hotplug | |
65 | ||
67d8712d SK |
66 | # Clear LDFLAGS and MAKEFLAGS if called from main |
67 | # Makefile to avoid test build failures when test | |
68 | # Makefile doesn't have explicit build rules. | |
69 | ifeq (1,$(MAKELEVEL)) | |
60df4642 | 70 | override LDFLAGS = |
67d8712d SK |
71 | override MAKEFLAGS = |
72 | endif | |
73 | ||
52fd1d08 SK |
74 | ifneq ($(KBUILD_SRC),) |
75 | override LDFLAGS = | |
76 | endif | |
77 | ||
a8ba798b | 78 | BUILD := $(O) |
79 | ifndef BUILD | |
80 | BUILD := $(KBUILD_OUTPUT) | |
81 | endif | |
82 | ifndef BUILD | |
83 | BUILD := $(shell pwd) | |
84 | endif | |
85 | ||
44f01352 SK |
86 | # KSFT_TAP_LEVEL is used from KSFT framework to prevent nested TAP header |
87 | # printing from tests. Applicable to run_tests case where run_tests adds | |
88 | # TAP header prior running tests and when a test program invokes another | |
89 | # with system() call. Export it here to cover override RUN_TESTS defines. | |
90 | export KSFT_TAP_LEVEL=`echo 1` | |
91 | ||
a8ba798b | 92 | export BUILD |
274343ad | 93 | all: |
1ede0536 | 94 | @for TARGET in $(TARGETS); do \ |
a8ba798b | 95 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
96 | mkdir $$BUILD_TARGET -p; \ | |
97 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ | |
274343ad FW |
98 | done; |
99 | ||
cab6b056 | 100 | run_tests: all |
1ede0536 | 101 | @for TARGET in $(TARGETS); do \ |
a8ba798b | 102 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
103 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\ | |
f467f714 FW |
104 | done; |
105 | ||
ddddda9b | 106 | hotplug: |
1ede0536 | 107 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
a8ba798b | 108 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
109 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ | |
ddddda9b SK |
110 | done; |
111 | ||
112 | run_hotplug: hotplug | |
1ede0536 | 113 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
a8ba798b | 114 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
115 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\ | |
ddddda9b SK |
116 | done; |
117 | ||
118 | clean_hotplug: | |
1ede0536 | 119 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
a8ba798b | 120 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
121 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ | |
ddddda9b SK |
122 | done; |
123 | ||
f615e2bb HT |
124 | run_pstore_crash: |
125 | make -C pstore run_crash | |
126 | ||
32dcfba6 ME |
127 | INSTALL_PATH ?= install |
128 | INSTALL_PATH := $(abspath $(INSTALL_PATH)) | |
129 | ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh | |
130 | ||
131 | install: | |
132 | ifdef INSTALL_PATH | |
133 | @# Ask all targets to install their files | |
134 | mkdir -p $(INSTALL_PATH) | |
1ede0536 | 135 | @for TARGET in $(TARGETS); do \ |
a8ba798b | 136 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
137 | make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \ | |
32dcfba6 ME |
138 | done; |
139 | ||
140 | @# Ask all targets to emit their test scripts | |
a2b1e8a2 | 141 | echo "#!/bin/sh" > $(ALL_SCRIPT) |
14f1889f ME |
142 | echo "BASE_DIR=\$$(realpath \$$(dirname \$$0))" >> $(ALL_SCRIPT) |
143 | echo "cd \$$BASE_DIR" >> $(ALL_SCRIPT) | |
32dcfba6 | 144 | echo "ROOT=\$$PWD" >> $(ALL_SCRIPT) |
14f1889f ME |
145 | echo "if [ \"\$$1\" = \"--summary\" ]; then" >> $(ALL_SCRIPT) |
146 | echo " OUTPUT=\$$BASE_DIR/output.log" >> $(ALL_SCRIPT) | |
147 | echo " cat /dev/null > \$$OUTPUT" >> $(ALL_SCRIPT) | |
148 | echo "else" >> $(ALL_SCRIPT) | |
149 | echo " OUTPUT=/dev/stdout" >> $(ALL_SCRIPT) | |
150 | echo "fi" >> $(ALL_SCRIPT) | |
3df6131f SKSO |
151 | echo "export KSFT_TAP_LEVEL=1" >> $(ALL_SCRIPT) |
152 | echo "export skip=4" >> $(ALL_SCRIPT) | |
32dcfba6 ME |
153 | |
154 | for TARGET in $(TARGETS); do \ | |
a8ba798b | 155 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
44f01352 SK |
156 | echo "echo ; echo TAP version 13" >> $(ALL_SCRIPT); \ |
157 | echo "echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \ | |
32dcfba6 | 158 | echo "echo ========================================" >> $(ALL_SCRIPT); \ |
88893cf7 | 159 | echo "[ -w /dev/kmsg ] && echo \"kselftest: Running tests in $$TARGET\" >> /dev/kmsg" >> $(ALL_SCRIPT); \ |
32dcfba6 | 160 | echo "cd $$TARGET" >> $(ALL_SCRIPT); \ |
a8ba798b | 161 | make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \ |
32dcfba6 ME |
162 | echo "cd \$$ROOT" >> $(ALL_SCRIPT); \ |
163 | done; | |
164 | ||
165 | chmod u+x $(ALL_SCRIPT) | |
166 | else | |
167 | $(error Error: set INSTALL_PATH to use install) | |
168 | endif | |
169 | ||
274343ad | 170 | clean: |
1ede0536 | 171 | @for TARGET in $(TARGETS); do \ |
a8ba798b | 172 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
173 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ | |
274343ad | 174 | done; |
32dcfba6 | 175 | |
584f34f1 | 176 | .PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean |