Makefile 2.5 KB
Newer Older
1 2
TARGETS =  bpf
TARGETS += breakpoints
3
TARGETS += capabilities
4 5
TARGETS += cpu-hotplug
TARGETS += efivarfs
6 7 8
TARGETS += exec
TARGETS += firmware
TARGETS += ftrace
9
TARGETS += futex
10
TARGETS += gpio
B
Bamvor Jian Zhang 已提交
11
TARGETS += ipc
12
TARGETS += kcmp
K
Kees Cook 已提交
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
K
Kees Cook 已提交
24
TARGETS += seccomp
25
TARGETS += sigaltstack
26
TARGETS += size
27
TARGETS += static_keys
28
TARGETS += sync
29
TARGETS += sysctl
S
Shuah Khan 已提交
30
ifneq (1, $(quicktest))
31
TARGETS += timers
S
Shuah Khan 已提交
32
endif
33
TARGETS += user
34
TARGETS += vm
35
TARGETS += x86
36
TARGETS += zram
37
#Please keep the TARGETS list alphabetically sorted
S
Shuah Khan 已提交
38 39
# Run "make quicktest=1 run_tests" or
# "make quicktest=1 kselftest from top level Makefile
40

41 42 43
TARGETS_HOTPLUG = cpu-hotplug
TARGETS_HOTPLUG += memory-hotplug

44 45 46 47
# Clear LDFLAGS and MAKEFLAGS if called from main
# Makefile to avoid test build failures when test
# Makefile doesn't have explicit build rules.
ifeq (1,$(MAKELEVEL))
48
override LDFLAGS =
49 50 51
override MAKEFLAGS =
endif

52 53 54 55 56
all:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET; \
	done;

57
run_tests: all
58 59 60 61
	for TARGET in $(TARGETS); do \
		make -C $$TARGET run_tests; \
	done;

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
hotplug:
	for TARGET in $(TARGETS_HOTPLUG); do \
		make -C $$TARGET; \
	done;

run_hotplug: hotplug
	for TARGET in $(TARGETS_HOTPLUG); do \
		make -C $$TARGET run_full_test; \
	done;

clean_hotplug:
	for TARGET in $(TARGETS_HOTPLUG); do \
		make -C $$TARGET clean; \
	done;

77 78 79
run_pstore_crash:
	make -C pstore run_crash

M
Michael Ellerman 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
INSTALL_PATH ?= install
INSTALL_PATH := $(abspath $(INSTALL_PATH))
ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh

install:
ifdef INSTALL_PATH
	@# Ask all targets to install their files
	mkdir -p $(INSTALL_PATH)
	for TARGET in $(TARGETS); do \
		make -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
	done;

	@# Ask all targets to emit their test scripts
	echo "#!/bin/bash" > $(ALL_SCRIPT)
	echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
	echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)

	for TARGET in $(TARGETS); do \
		echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
		echo "echo ========================================" >> $(ALL_SCRIPT); \
		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
		make -s --no-print-directory -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
	done;

	chmod u+x $(ALL_SCRIPT)
else
	$(error Error: set INSTALL_PATH to use install)
endif

110 111 112 113
clean:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET clean; \
	done;
M
Michael Ellerman 已提交
114 115

.PHONY: install