19ce12630SAndrey Konovalov# SPDX-License-Identifier: GPL-2.0 29ce12630SAndrey Konovalov 3*313a4db7SCristian Marussi# When ARCH not overridden for crosscompiling, lookup machine 49ce12630SAndrey KonovalovARCH ?= $(shell uname -m 2>/dev/null || echo not) 59ce12630SAndrey Konovalov 69ce12630SAndrey Konovalovifneq (,$(filter $(ARCH),aarch64 arm64)) 7*313a4db7SCristian MarussiARM64_SUBTARGETS ?= tags 8*313a4db7SCristian Marussielse 9*313a4db7SCristian MarussiARM64_SUBTARGETS := 109ce12630SAndrey Konovalovendif 119ce12630SAndrey Konovalov 12*313a4db7SCristian MarussiCFLAGS := -Wall -O2 -g 13*313a4db7SCristian Marussi 14*313a4db7SCristian Marussi# A proper top_srcdir is needed by KSFT(lib.mk) 15*313a4db7SCristian Marussitop_srcdir = $(realpath ../../../../) 16*313a4db7SCristian Marussi 17*313a4db7SCristian Marussi# Additional include paths needed by kselftest.h and local headers 18*313a4db7SCristian MarussiCFLAGS += -I$(top_srcdir)/tools/testing/selftests/ 19*313a4db7SCristian Marussi 20*313a4db7SCristian Marussi# Guessing where the Kernel headers could have been installed 21*313a4db7SCristian Marussi# depending on ENV config 22*313a4db7SCristian Marussiifeq ($(KBUILD_OUTPUT),) 23*313a4db7SCristian Marussikhdr_dir = $(top_srcdir)/usr/include 24*313a4db7SCristian Marussielse 25*313a4db7SCristian Marussi# the KSFT preferred location when KBUILD_OUTPUT is set 26*313a4db7SCristian Marussikhdr_dir = $(KBUILD_OUTPUT)/kselftest/usr/include 27*313a4db7SCristian Marussiendif 28*313a4db7SCristian Marussi 29*313a4db7SCristian MarussiCFLAGS += -I$(khdr_dir) 30*313a4db7SCristian Marussi 31*313a4db7SCristian Marussiexport CFLAGS 32*313a4db7SCristian Marussiexport top_srcdir 33*313a4db7SCristian Marussi 34*313a4db7SCristian Marussiall: 35*313a4db7SCristian Marussi @for DIR in $(ARM64_SUBTARGETS); do \ 36*313a4db7SCristian Marussi BUILD_TARGET=$(OUTPUT)/$$DIR; \ 37*313a4db7SCristian Marussi mkdir -p $$BUILD_TARGET; \ 38*313a4db7SCristian Marussi make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \ 39*313a4db7SCristian Marussi done 40*313a4db7SCristian Marussi 41*313a4db7SCristian Marussiinstall: all 42*313a4db7SCristian Marussi @for DIR in $(ARM64_SUBTARGETS); do \ 43*313a4db7SCristian Marussi BUILD_TARGET=$(OUTPUT)/$$DIR; \ 44*313a4db7SCristian Marussi make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \ 45*313a4db7SCristian Marussi done 46*313a4db7SCristian Marussi 47*313a4db7SCristian Marussirun_tests: all 48*313a4db7SCristian Marussi @for DIR in $(ARM64_SUBTARGETS); do \ 49*313a4db7SCristian Marussi BUILD_TARGET=$(OUTPUT)/$$DIR; \ 50*313a4db7SCristian Marussi make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \ 51*313a4db7SCristian Marussi done 52*313a4db7SCristian Marussi 53*313a4db7SCristian Marussi# Avoid any output on non arm64 on emit_tests 54*313a4db7SCristian Marussiemit_tests: all 55*313a4db7SCristian Marussi @for DIR in $(ARM64_SUBTARGETS); do \ 56*313a4db7SCristian Marussi BUILD_TARGET=$(OUTPUT)/$$DIR; \ 57*313a4db7SCristian Marussi make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \ 58*313a4db7SCristian Marussi done 59*313a4db7SCristian Marussi 60*313a4db7SCristian Marussiclean: 61*313a4db7SCristian Marussi @for DIR in $(ARM64_SUBTARGETS); do \ 62*313a4db7SCristian Marussi BUILD_TARGET=$(OUTPUT)/$$DIR; \ 63*313a4db7SCristian Marussi make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \ 64*313a4db7SCristian Marussi done 65*313a4db7SCristian Marussi 66*313a4db7SCristian Marussi.PHONY: all clean install run_tests emit_tests 67