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