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