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

33 34 35
TARGETS_HOTPLUG = cpu-hotplug
TARGETS_HOTPLUG += memory-hotplug

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

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

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

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

M
Michael Ellerman 已提交
69 70 71 72 73 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
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

99 100 101 102
clean:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET clean; \
	done;
M
Michael Ellerman 已提交
103 104

.PHONY: install