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 += memfd
10
TARGETS += memory-hotplug
11
TARGETS += mount
12
TARGETS += mqueue
13
TARGETS += net
14
TARGETS += powerpc
15
TARGETS += ptrace
K
Kees Cook 已提交
16
TARGETS += seccomp
17 18
TARGETS += size
TARGETS += sysctl
S
Shuah Khan 已提交
19
ifneq (1, $(quicktest))
20
TARGETS += timers
S
Shuah Khan 已提交
21
endif
22
TARGETS += user
J
Jason Baron 已提交
23
TARGETS += jumplabel
24
TARGETS += vm
25
TARGETS += x86
26
TARGETS += zram
27
#Please keep the TARGETS list alphabetically sorted
S
Shuah Khan 已提交
28 29
# Run "make quicktest=1 run_tests" or
# "make quicktest=1 kselftest from top level Makefile
30

31 32 33
TARGETS_HOTPLUG = cpu-hotplug
TARGETS_HOTPLUG += memory-hotplug

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

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

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

52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
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 已提交
67 68 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
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

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

.PHONY: install