blob: d8593f1251ecce4c750fc54086ba3fc2b0b7c90a [file] [log] [blame]
Daniel Borkmann5aa5bd12016-10-17 14:28:36 +02001TARGETS = bpf
2TARGETS += breakpoints
Bamvor Jian Zhangf4ecb322015-11-17 22:35:42 +08003TARGETS += capabilities
Viresh Kumare66d5b62017-01-13 12:06:45 +05304TARGETS += cpufreq
Andrew Morton66a01b92013-02-27 17:05:56 -08005TARGETS += cpu-hotplug
Andrew Morton66a01b92013-02-27 17:05:56 -08006TARGETS += efivarfs
Andrew Morton96e869d2014-12-18 16:17:43 -08007TARGETS += exec
8TARGETS += firmware
9TARGETS += ftrace
Darren Hartecac1a72015-05-12 21:07:55 -070010TARGETS += futex
Bamvor Jian Zhang22f65922016-11-21 18:16:11 +080011TARGETS += gpio
Stafford Horne63203032017-01-12 00:16:07 +090012TARGETS += intel_pstate
Bamvor Jian Zhang7e722472015-11-17 22:35:43 +080013TARGETS += ipc
Pavel Emelyanov58c7be82013-04-30 15:27:06 -070014TARGETS += kcmp
Kees Cook317dc342015-11-06 16:30:32 -080015TARGETS += lib
Pranith Kumarb6d97342015-09-11 13:07:42 -070016TARGETS += membarrier
David Herrmann4f5ce5e2014-08-08 14:25:32 -070017TARGETS += memfd
Pavel Emelyanov58c7be82013-04-30 15:27:06 -070018TARGETS += memory-hotplug
Eric W. Biedermandb181ce2014-07-29 15:50:44 -070019TARGETS += mount
Andrew Morton96e869d2014-12-18 16:17:43 -080020TARGETS += mqueue
David S. Millera6f68032013-03-20 15:07:56 -040021TARGETS += net
Andrey Vagin6ad92bf2016-09-06 00:47:16 -070022TARGETS += nsfs
Michael Ellerman0e56dac2013-08-06 17:42:35 +100023TARGETS += powerpc
Hiraku Toyookacc04a462015-10-02 20:46:39 +090024TARGETS += pstore
Andrew Morton96e869d2014-12-18 16:17:43 -080025TARGETS += ptrace
Kees Cookc99ee512015-06-16 10:54:14 -070026TARGETS += seccomp
Stas Sergeev19fd2862016-04-14 23:20:05 +030027TARGETS += sigaltstack
Tim Bird3ce51052014-12-03 10:42:21 -080028TARGETS += size
Al Virob8826e52017-02-18 22:07:24 -050029TARGETS += splice
Bamvor Jian Zhang1087d012015-09-09 21:06:25 +080030TARGETS += static_keys
Emilio López822081602016-10-19 09:49:48 -030031TARGETS += sync
Andrew Morton96e869d2014-12-18 16:17:43 -080032TARGETS += sysctl
Shuah Khan2278e5e2015-06-19 13:13:43 -060033ifneq (1, $(quicktest))
Andrew Morton96e869d2014-12-18 16:17:43 -080034TARGETS += timers
Shuah Khan2278e5e2015-06-19 13:13:43 -060035endif
Andrew Morton96e869d2014-12-18 16:17:43 -080036TARGETS += user
37TARGETS += vm
Andy Lutomirski3f705df2015-04-06 23:11:06 -070038TARGETS += x86
Naresh Kambojuf21fb792015-08-18 12:31:59 +053039TARGETS += zram
Andrew Morton96e869d2014-12-18 16:17:43 -080040#Please keep the TARGETS list alphabetically sorted
Shuah Khan2278e5e2015-06-19 13:13:43 -060041# Run "make quicktest=1 run_tests" or
42# "make quicktest=1 kselftest from top level Makefile
Frederic Weisbecker274343a2012-01-12 17:20:44 -080043
Shuah Khanddddda92014-07-02 09:51:38 -060044TARGETS_HOTPLUG = cpu-hotplug
45TARGETS_HOTPLUG += memory-hotplug
46
Shuah Khan67d87122015-03-18 11:57:39 -060047# 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.
50ifeq (1,$(MAKELEVEL))
Arnaldo Carvalho de Melo60df4642015-05-14 16:55:18 -030051override LDFLAGS =
Shuah Khan67d87122015-03-18 11:57:39 -060052override MAKEFLAGS =
53endif
54
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080055BUILD := $(O)
56ifndef BUILD
57 BUILD := $(KBUILD_OUTPUT)
58endif
59ifndef BUILD
60 BUILD := $(shell pwd)
61endif
62
63export BUILD
Frederic Weisbecker274343a2012-01-12 17:20:44 -080064all:
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080065 for TARGET in $(TARGETS); do \
66 BUILD_TARGET=$$BUILD/$$TARGET; \
67 mkdir $$BUILD_TARGET -p; \
68 make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
Frederic Weisbecker274343a2012-01-12 17:20:44 -080069 done;
70
Andrew Mortoncab6b052012-03-28 14:42:54 -070071run_tests: all
Frederic Weisbeckerf467f712012-03-28 14:42:54 -070072 for TARGET in $(TARGETS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080073 BUILD_TARGET=$$BUILD/$$TARGET; \
74 make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
Frederic Weisbeckerf467f712012-03-28 14:42:54 -070075 done;
76
Shuah Khanddddda92014-07-02 09:51:38 -060077hotplug:
78 for TARGET in $(TARGETS_HOTPLUG); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080079 BUILD_TARGET=$$BUILD/$$TARGET; \
80 make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
Shuah Khanddddda92014-07-02 09:51:38 -060081 done;
82
83run_hotplug: hotplug
84 for TARGET in $(TARGETS_HOTPLUG); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080085 BUILD_TARGET=$$BUILD/$$TARGET; \
86 make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
Shuah Khanddddda92014-07-02 09:51:38 -060087 done;
88
89clean_hotplug:
90 for TARGET in $(TARGETS_HOTPLUG); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080091 BUILD_TARGET=$$BUILD/$$TARGET; \
92 make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
Shuah Khanddddda92014-07-02 09:51:38 -060093 done;
94
Hiraku Toyookaf615e2b2015-10-02 20:46:41 +090095run_pstore_crash:
96 make -C pstore run_crash
97
Michael Ellerman32dcfba2015-03-11 15:06:00 +110098INSTALL_PATH ?= install
99INSTALL_PATH := $(abspath $(INSTALL_PATH))
100ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
101
102install:
103ifdef INSTALL_PATH
104 @# Ask all targets to install their files
105 mkdir -p $(INSTALL_PATH)
106 for TARGET in $(TARGETS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +0800107 BUILD_TARGET=$$BUILD/$$TARGET; \
108 make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
Michael Ellerman32dcfba2015-03-11 15:06:00 +1100109 done;
110
111 @# Ask all targets to emit their test scripts
Rolf Eike Beera2b1e8a2016-12-14 11:59:34 +0100112 echo "#!/bin/sh" > $(ALL_SCRIPT)
Michael Ellerman32dcfba2015-03-11 15:06:00 +1100113 echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
114 echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
115
116 for TARGET in $(TARGETS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +0800117 BUILD_TARGET=$$BUILD/$$TARGET; \
Michael Ellerman32dcfba2015-03-11 15:06:00 +1100118 echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
119 echo "echo ========================================" >> $(ALL_SCRIPT); \
120 echo "cd $$TARGET" >> $(ALL_SCRIPT); \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +0800121 make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
Michael Ellerman32dcfba2015-03-11 15:06:00 +1100122 echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
123 done;
124
125 chmod u+x $(ALL_SCRIPT)
126else
127 $(error Error: set INSTALL_PATH to use install)
128endif
129
Frederic Weisbecker274343a2012-01-12 17:20:44 -0800130clean:
131 for TARGET in $(TARGETS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +0800132 BUILD_TARGET=$$BUILD/$$TARGET; \
133 make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
Frederic Weisbecker274343a2012-01-12 17:20:44 -0800134 done;
Michael Ellerman32dcfba2015-03-11 15:06:00 +1100135
136.PHONY: install