xref: /linux/tools/testing/selftests/arm64/Makefile (revision 313a4db7f3387608a3ab4531ac8c0509a3d7617f)
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