1# SPDX-License-Identifier: GPL-2.0
2# Makefile for powerpc selftests
3
4# ARCH can be overridden by the user for cross compiling
5ARCH ?= $(shell uname -m)
6ARCH := $(shell echo $(ARCH) | sed -e s/ppc.*/powerpc/)
7
8ifeq ($(ARCH),powerpc)
9
10GIT_VERSION = $(shell git describe --always --long --dirty || echo "unknown")
11
12CFLAGS := -std=gnu99 -O2 -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CURDIR)/include $(CFLAGS)
13
14export CFLAGS
15
16SUB_DIRS = alignment		\
17	   benchmarks		\
18	   cache_shape		\
19	   copyloops		\
20	   dexcr		\
21	   dscr			\
22	   mm			\
23	   nx-gzip		\
24	   pmu			\
25	   signal		\
26	   primitives		\
27	   stringloops		\
28	   switch_endian	\
29	   syscalls		\
30	   tm			\
31	   eeh			\
32	   vphn         \
33	   math		\
34	   papr_attributes	\
35	   papr_vpd		\
36	   ptrace	\
37	   security	\
38	   mce
39
40endif
41
42all: $(SUB_DIRS)
43
44$(SUB_DIRS):
45	BUILD_TARGET=$(OUTPUT)/$@; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $@ all
46
47include ../lib.mk
48
49override define RUN_TESTS
50	+@for TARGET in $(SUB_DIRS); do \
51		BUILD_TARGET=$(OUTPUT)/$$TARGET;	\
52		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
53	done;
54endef
55
56override define INSTALL_RULE
57	+@for TARGET in $(SUB_DIRS); do \
58		BUILD_TARGET=$(OUTPUT)/$$TARGET;	\
59		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install;\
60	done;
61endef
62
63emit_tests:
64	+@for TARGET in $(SUB_DIRS); do \
65		BUILD_TARGET=$(OUTPUT)/$$TARGET;	\
66		$(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET $@;\
67	done;
68
69override define CLEAN
70	+@for TARGET in $(SUB_DIRS); do \
71		BUILD_TARGET=$(OUTPUT)/$$TARGET;	\
72		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean; \
73	done;
74	rm -f tags
75endef
76
77tags:
78	find . -name '*.c' -o -name '*.h' | xargs ctags
79
80.PHONY: tags $(SUB_DIRS) emit_tests
81