^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # When ARCH not overridden for crosscompiling, lookup machine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ARCH ?= $(shell uname -m 2>/dev/null || echo not)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ifneq (,$(filter $(ARCH),aarch64 arm64))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ARM64_SUBTARGETS ?= tags signal pauth fp mte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) ARM64_SUBTARGETS :=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) CFLAGS := -Wall -O2 -g
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) # A proper top_srcdir is needed by KSFT(lib.mk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) top_srcdir = $(realpath ../../../../)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # Additional include paths needed by kselftest.h and local headers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) CFLAGS += -I$(top_srcdir)/tools/testing/selftests/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # Guessing where the Kernel headers could have been installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # depending on ENV config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ifeq ($(KBUILD_OUTPUT),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) khdr_dir = $(top_srcdir)/usr/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) # the KSFT preferred location when KBUILD_OUTPUT is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) khdr_dir = $(KBUILD_OUTPUT)/kselftest/usr/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) CFLAGS += -I$(khdr_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) export CFLAGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) export top_srcdir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) all:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) @for DIR in $(ARM64_SUBTARGETS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) BUILD_TARGET=$(OUTPUT)/$$DIR; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) mkdir -p $$BUILD_TARGET; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) install: all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) @for DIR in $(ARM64_SUBTARGETS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) BUILD_TARGET=$(OUTPUT)/$$DIR; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) run_tests: all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) @for DIR in $(ARM64_SUBTARGETS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) BUILD_TARGET=$(OUTPUT)/$$DIR; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) # Avoid any output on non arm64 on emit_tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) emit_tests: all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) @for DIR in $(ARM64_SUBTARGETS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) BUILD_TARGET=$(OUTPUT)/$$DIR; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) @for DIR in $(ARM64_SUBTARGETS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) BUILD_TARGET=$(OUTPUT)/$$DIR; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) .PHONY: all clean install run_tests emit_tests