Makefile 2.4 KB
Newer Older
1
TARGETS = breakpoints
2
TARGETS += capabilities
3 4
TARGETS += cpu-hotplug
TARGETS += efivarfs
5 6 7
TARGETS += exec
TARGETS += firmware
TARGETS += ftrace
8
TARGETS += futex
9
TARGETS += kcmp
K
Kees Cook 已提交
10
TARGETS += lib
11
TARGETS += membarrier
12
TARGETS += memfd
13
TARGETS += memory-hotplug
14
TARGETS += mount
15
TARGETS += mqueue
16
TARGETS += net
17
TARGETS += powerpc
18
TARGETS += pstore
19
TARGETS += ptrace
K
Kees Cook 已提交
20
TARGETS += seccomp
21
TARGETS += size
22
TARGETS += static_keys
23
TARGETS += sysctl
S
Shuah Khan 已提交
24
ifneq (1, $(quicktest))
25
TARGETS += timers
S
Shuah Khan 已提交
26
endif
27
TARGETS += user
28
TARGETS += vm
29
TARGETS += x86
30
TARGETS += zram
31
#Please keep the TARGETS list alphabetically sorted
S
Shuah Khan 已提交
32 33
# Run "make quicktest=1 run_tests" or
# "make quicktest=1 kselftest from top level Makefile
34

35 36 37
TARGETS_HOTPLUG = cpu-hotplug
TARGETS_HOTPLUG += memory-hotplug

38 39 40 41
# 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))
42
override LDFLAGS =
43 44 45
override MAKEFLAGS =
endif

46 47 48 49 50
all:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET; \
	done;

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

56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
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;

71 72 73
run_pstore_crash:
	make -C pstore run_crash

M
Michael Ellerman 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
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

104 105 106 107
clean:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET clean; \
	done;
M
Michael Ellerman 已提交
108 109

.PHONY: install