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