| 1 |
|
| 2 | TARGETS += acct
|
| 3 | TARGETS += alloc_tag
|
| 4 | TARGETS += alsa
|
| 5 | TARGETS += amd-pstate
|
| 6 | TARGETS += arm64
|
| 7 | TARGETS += bpf
|
| 8 | TARGETS += breakpoints
|
| 9 | TARGETS += cachestat
|
| 10 | TARGETS += capabilities
|
| 11 | TARGETS += cgroup
|
| 12 | TARGETS += clone3
|
| 13 | TARGETS += connector
|
| 14 | TARGETS += core
|
| 15 | TARGETS += cpufreq
|
| 16 | TARGETS += cpu-hotplug
|
| 17 | TARGETS += damon
|
| 18 | TARGETS += dax
|
| 19 | TARGETS += devices/error_logs
|
| 20 | TARGETS += devices/probe
|
| 21 | TARGETS += dmabuf-heaps
|
| 22 | TARGETS += drivers/dma-buf
|
| 23 | TARGETS += drivers/ntsync
|
| 24 | TARGETS += drivers/s390x/uvdevice
|
| 25 | TARGETS += drivers/net
|
| 26 | TARGETS += drivers/net/bonding
|
| 27 | TARGETS += drivers/net/netconsole
|
| 28 | TARGETS += drivers/net/team
|
| 29 | TARGETS += drivers/net/virtio_net
|
| 30 | TARGETS += drivers/platform/x86/intel/ifs
|
| 31 | TARGETS += dt
|
| 32 | TARGETS += efivarfs
|
| 33 | TARGETS += exec
|
| 34 | TARGETS += fchmodat2
|
| 35 | TARGETS += filesystems
|
| 36 | TARGETS += filesystems/binderfs
|
| 37 | TARGETS += filesystems/configfs
|
| 38 | TARGETS += filesystems/epoll
|
| 39 | TARGETS += filesystems/eventfd
|
| 40 | TARGETS += filesystems/failfs
|
| 41 | TARGETS += filesystems/fat
|
| 42 | TARGETS += filesystems/file_stressor
|
| 43 | TARGETS += filesystems/openat2
|
| 44 | TARGETS += filesystems/open_tree_ns
|
| 45 | TARGETS += filesystems/overlayfs
|
| 46 | TARGETS += filesystems/statmount
|
| 47 | TARGETS += filesystems/mount-notify
|
| 48 | TARGETS += filesystems/mount_cycle
|
| 49 | TARGETS += filesystems/nsfs
|
| 50 | TARGETS += filesystems/fuse
|
| 51 | TARGETS += filesystems/move_mount
|
| 52 | TARGETS += filesystems/empty_mntns
|
| 53 | TARGETS += filesystems/fsmount_ns
|
| 54 | TARGETS += filesystems/fscontext_ns
|
| 55 | TARGETS += filesystems/xattr
|
| 56 | TARGETS += filesystems/mntns_unbindable
|
| 57 | TARGETS += filesystems/umount_propagation
|
| 58 | TARGETS += firmware
|
| 59 | TARGETS += fpu
|
| 60 | TARGETS += ftrace
|
| 61 | TARGETS += futex
|
| 62 | TARGETS += gpio
|
| 63 | TARGETS += hid
|
| 64 | TARGETS += intel_pstate
|
| 65 | TARGETS += iommu
|
| 66 | TARGETS += ipc
|
| 67 | TARGETS += ir
|
| 68 | TARGETS += kcmp
|
| 69 | TARGETS += kexec
|
| 70 | TARGETS += kselftest_harness
|
| 71 | TARGETS += kvm
|
| 72 | TARGETS += landlock
|
| 73 | TARGETS += lib
|
| 74 | TARGETS += livepatch
|
| 75 | TARGETS += liveupdate
|
| 76 | TARGETS += lkdtm
|
| 77 | TARGETS += lsm
|
| 78 | TARGETS += membarrier
|
| 79 | TARGETS += memfd
|
| 80 | TARGETS += memory-hotplug
|
| 81 | TARGETS += mincore
|
| 82 | TARGETS += mount
|
| 83 | TARGETS += mount_setattr
|
| 84 | TARGETS += move_mount_set_group
|
| 85 | TARGETS += mqueue
|
| 86 | TARGETS += mseal_system_mappings
|
| 87 | TARGETS += nci
|
| 88 | TARGETS += net
|
| 89 | TARGETS += net/af_unix
|
| 90 | TARGETS += net/can
|
| 91 | TARGETS += net/forwarding
|
| 92 | TARGETS += net/hsr
|
| 93 | TARGETS += net/mptcp
|
| 94 | TARGETS += net/netfilter
|
| 95 | TARGETS += net/openvswitch
|
| 96 | TARGETS += net/ovpn
|
| 97 | TARGETS += net/packetdrill
|
| 98 | TARGETS += net/ppp
|
| 99 | TARGETS += net/rds
|
| 100 | TARGETS += net/tcp_ao
|
| 101 | TARGETS += nolibc
|
| 102 | TARGETS += pci_endpoint
|
| 103 | TARGETS += pcie_bwctrl
|
| 104 | TARGETS += perf_events
|
| 105 | TARGETS += pidfd
|
| 106 | TARGETS += pid_namespace
|
| 107 | TARGETS += pipe
|
| 108 | TARGETS += power_supply
|
| 109 | TARGETS += powerpc
|
| 110 | TARGETS += prctl
|
| 111 | TARGETS += proc
|
| 112 | TARGETS += pstore
|
| 113 | TARGETS += ptrace
|
| 114 | TARGETS += rdma
|
| 115 | TARGETS += resctrl
|
| 116 | TARGETS += riscv
|
| 117 | TARGETS += rlimits
|
| 118 | TARGETS += rseq
|
| 119 | TARGETS += rtc
|
| 120 | TARGETS += rust
|
| 121 | TARGETS += sched_ext
|
| 122 | TARGETS += seccomp
|
| 123 | TARGETS += sgx
|
| 124 | TARGETS += signal
|
| 125 | TARGETS += size
|
| 126 | TARGETS += sparc64
|
| 127 | TARGETS += splice
|
| 128 | TARGETS += static_keys
|
| 129 | TARGETS += sync
|
| 130 | TARGETS += syscall_user_dispatch
|
| 131 | TARGETS += sysctl
|
| 132 | TARGETS += tc-testing
|
| 133 | TARGETS += tdx
|
| 134 | TARGETS += thermal/intel/power_floor
|
| 135 | TARGETS += thermal/intel/workload_hint
|
| 136 | TARGETS += timens
|
| 137 | ifneq (1, $(quicktest))
|
| 138 | TARGETS += timers
|
| 139 | endif
|
| 140 | TARGETS += tmpfs
|
| 141 | TARGETS += tpm2
|
| 142 | TARGETS += tty
|
| 143 | TARGETS += ublk
|
| 144 | TARGETS += uevent
|
| 145 | TARGETS += user_events
|
| 146 | TARGETS += vDSO
|
| 147 | TARGETS += mm
|
| 148 | TARGETS += vfio
|
| 149 | TARGETS += x86
|
| 150 | TARGETS += x86/bugs
|
| 151 | TARGETS += zram
|
| 152 |
|
| 153 |
|
| 154 |
|
| 155 |
|
| 156 | TARGETS_HOTPLUG = cpu-hotplug
|
| 157 | TARGETS_HOTPLUG += memory-hotplug
|
| 158 |
|
| 159 |
|
| 160 | ifneq ($(filter net drivers/net drivers/net/hw,$(TARGETS)),)
|
| 161 | ifeq ($(filter net/lib,$(TARGETS)),)
|
| 162 | INSTALL_DEP_TARGETS := net/lib
|
| 163 | endif
|
| 164 | endif
|
| 165 |
|
| 166 |
|
| 167 |
|
| 168 |
|
| 169 | SKIP_TARGETS ?= bpf sched_ext
|
| 170 | ifneq ($(SKIP_TARGETS),)
|
| 171 | TMP := $(filter-out $(SKIP_TARGETS), $(TARGETS))
|
| 172 | override TARGETS := $(TMP)
|
| 173 | endif
|
| 174 |
|
| 175 |
|
| 176 |
|
| 177 |
|
| 178 |
|
| 179 | FORCE_TARGETS ?=
|
| 180 |
|
| 181 |
|
| 182 |
|
| 183 |
|
| 184 | ifeq (,$(LINK.c))
|
| 185 | override LDFLAGS =
|
| 186 | override MAKEFLAGS =
|
| 187 | endif
|
| 188 |
|
| 189 |
|
| 190 |
|
| 191 |
|
| 192 | ifdef building_out_of_srctree
|
| 193 | override LDFLAGS =
|
| 194 | endif
|
| 195 |
|
| 196 | top_srcdir ?= ../../..
|
| 197 |
|
| 198 | ifeq ("$(origin O)", "command line")
|
| 199 | KBUILD_OUTPUT := $(O)
|
| 200 | endif
|
| 201 |
|
| 202 | ifneq ($(KBUILD_OUTPUT),)
|
| 203 |
|
| 204 |
|
| 205 | abs_objtree := $(shell cd $(top_srcdir) && mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) && pwd)
|
| 206 | $(if $(abs_objtree),, \
|
| 207 | $(error failed to create output directory "$(KBUILD_OUTPUT)"))
|
| 208 |
|
| 209 | abs_objtree := $(realpath $(abs_objtree))
|
| 210 | BUILD := $(abs_objtree)/kselftest
|
| 211 | KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include
|
| 212 | else
|
| 213 | BUILD := $(CURDIR)
|
| 214 | abs_srctree := $(shell cd $(top_srcdir) && pwd)
|
| 215 | KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include
|
| 216 | DEFAULT_INSTALL_HDR_PATH := 1
|
| 217 | endif
|
| 218 |
|
| 219 |
|
| 220 | include $(top_srcdir)/scripts/subarch.include
|
| 221 | ARCH ?= $(SUBARCH)
|
| 222 | export BUILD
|
| 223 | export KHDR_INCLUDES
|
| 224 |
|
| 225 |
|
| 226 |
|
| 227 | .DEFAULT_GOAL := all
|
| 228 |
|
| 229 | all:
|
| 230 | @ret=1; \
|
| 231 | for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
|
| 232 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 233 | mkdir $$BUILD_TARGET -p; \
|
| 234 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
|
| 235 | O=$(abs_objtree) \
|
| 236 | $(if $(FORCE_TARGETS),|| exit); \
|
| 237 | ret=$$((ret * $$?)); \
|
| 238 | done; exit $$ret;
|
| 239 |
|
| 240 | run_tests: all
|
| 241 | @for TARGET in $(TARGETS); do \
|
| 242 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 243 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \
|
| 244 | SRC_PATH=$(shell readlink -e $$(pwd)) \
|
| 245 | OBJ_PATH=$(BUILD) \
|
| 246 | O=$(abs_objtree); \
|
| 247 | done;
|
| 248 |
|
| 249 | hotplug:
|
| 250 | @for TARGET in $(TARGETS_HOTPLUG); do \
|
| 251 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 252 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET;\
|
| 253 | done;
|
| 254 |
|
| 255 | run_hotplug: hotplug
|
| 256 | @for TARGET in $(TARGETS_HOTPLUG); do \
|
| 257 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 258 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
|
| 259 | done;
|
| 260 |
|
| 261 | clean_hotplug:
|
| 262 | @for TARGET in $(TARGETS_HOTPLUG); do \
|
| 263 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 264 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
| 265 | done;
|
| 266 |
|
| 267 | run_pstore_crash:
|
| 268 | $(MAKE) -C pstore run_crash
|
| 269 |
|
| 270 |
|
| 271 |
|
| 272 |
|
| 273 |
|
| 274 |
|
| 275 |
|
| 276 |
|
| 277 | KSFT_INSTALL_PATH ?= $(BUILD)/kselftest_install
|
| 278 | KSFT_INSTALL_PATH := $(abspath $(KSFT_INSTALL_PATH))
|
| 279 |
|
| 280 | INSTALL_PATH := $(KSFT_INSTALL_PATH)
|
| 281 | ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
|
| 282 | TEST_LIST := $(INSTALL_PATH)/kselftest-list.txt
|
| 283 |
|
| 284 | install: all
|
| 285 | ifdef INSTALL_PATH
|
| 286 | @
|
| 287 | mkdir -p $(INSTALL_PATH)/kselftest
|
| 288 | install -m 744 kselftest/module.sh $(INSTALL_PATH)/kselftest/
|
| 289 | install -m 744 kselftest/runner.sh $(INSTALL_PATH)/kselftest/
|
| 290 | install -m 744 kselftest/prefix.pl $(INSTALL_PATH)/kselftest/
|
| 291 | install -m 744 kselftest/ktap_helpers.sh $(INSTALL_PATH)/kselftest/
|
| 292 | install -m 744 kselftest/ksft.py $(INSTALL_PATH)/kselftest/
|
| 293 | install -m 744 run_kselftest.sh $(INSTALL_PATH)/
|
| 294 | rm -f $(TEST_LIST)
|
| 295 | @ret=1; \
|
| 296 | for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
|
| 297 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 298 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \
|
| 299 | INSTALL_PATH=$(INSTALL_PATH)/$$TARGET \
|
| 300 | SRC_PATH=$(shell readlink -e $$(pwd)) \
|
| 301 | OBJ_PATH=$(INSTALL_PATH) \
|
| 302 | O=$(abs_objtree) \
|
| 303 | $(if $(FORCE_TARGETS),|| exit); \
|
| 304 | ret=$$((ret * $$?)); \
|
| 305 | done; exit $$ret;
|
| 306 |
|
| 307 |
|
| 308 | @
|
| 309 | @
|
| 310 | @
|
| 311 | @
|
| 312 | for TARGET in $(TARGETS); do \
|
| 313 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 314 | [ ! -d $(INSTALL_PATH)/$$TARGET ] && printf "Skipping non-existent dir: $$TARGET\n" && continue; \
|
| 315 | printf "Emit Tests for $$TARGET\n"; \
|
| 316 | $(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET COLLECTION=$$TARGET \
|
| 317 | -C $$TARGET emit_tests >> $(TEST_LIST); \
|
| 318 | done;
|
| 319 | @VERSION=$$(git describe HEAD 2>/dev/null); \
|
| 320 | if [ -n "$$VERSION" ]; then \
|
| 321 | echo "$$VERSION" > $(INSTALL_PATH)/VERSION; \
|
| 322 | printf "Version saved to $(INSTALL_PATH)/VERSION\n"; \
|
| 323 | else \
|
| 324 | printf "Unable to get version from git describe\n"; \
|
| 325 | fi
|
| 326 | @echo "**Kselftest Installation is complete: $(INSTALL_PATH)**"
|
| 327 | else
|
| 328 | $(error Error: set INSTALL_PATH to use install)
|
| 329 | endif
|
| 330 |
|
| 331 | FORMAT ?= .gz
|
| 332 | TAR_PATH = $(abspath ${INSTALL_PATH}/kselftest-packages/kselftest.tar${FORMAT})
|
| 333 | gen_tar: install
|
| 334 | @mkdir -p ${INSTALL_PATH}/kselftest-packages/
|
| 335 | @tar caf ${TAR_PATH} --exclude=kselftest-packages -C ${INSTALL_PATH} .
|
| 336 | @echo "Created ${TAR_PATH}"
|
| 337 |
|
| 338 | clean:
|
| 339 | @for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
|
| 340 | BUILD_TARGET=$$BUILD/$$TARGET; \
|
| 341 | $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
| 342 | done;
|
| 343 |
|
| 344 | .PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|