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