xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/arm64/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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