blob: e71f8e4633b1e70c2018a6102079ff56fa84cbc1 [file] [log] [blame]
Michael Ellerman84f887b2015-03-04 21:41:31 +11001# This mimics the top-level Makefile. We do it explicitly here so that this
2# Makefile can operate with or without the kbuild infrastructure.
3CC := $(CROSS_COMPILE)gcc
4
Shuah Khane53aff42017-03-01 15:15:07 -07005ifeq (0,$(MAKELEVEL))
6OUTPUT := $(shell pwd)
7endif
8
Michael Ellermand83c3ba2017-02-09 19:56:26 +11009TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
10TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))
11
12all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
13
Michael Ellerman5e29a912015-03-11 15:05:59 +110014define RUN_TESTS
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080015 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080016 BASENAME_TEST=`basename $$TEST`; \
Luis R. Rodriguez43c64372017-08-03 13:24:36 -070017 if [ ! -x $$BASENAME_TEST ]; then \
18 echo "selftests: Warning: file $$BASENAME_TEST is not executable, correct this.";\
19 echo "selftests: $$BASENAME_TEST [FAIL]"; \
20 else \
21 cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests: $$BASENAME_TEST [FAIL]"; cd -;\
22 fi; \
Michael Ellerman5e29a912015-03-11 15:05:59 +110023 done;
24endef
25
26run_tests: all
27 $(RUN_TESTS)
28
Michael Ellerman32dcfba2015-03-11 15:06:00 +110029define INSTALL_RULE
Bamvor Jian Zhang900d65e2015-09-09 21:06:28 +080030 @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \
31 mkdir -p ${INSTALL_PATH}; \
bamvor.zhangjian@huawei.com5fe59792016-11-29 19:55:48 +080032 echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \
33 rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080034 fi
35 @if [ "X$(TEST_GEN_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \
36 mkdir -p ${INSTALL_PATH}; \
37 echo "rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \
38 rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \
Bamvor Jian Zhanga7d0f072015-08-14 21:43:35 +080039 fi
Michael Ellerman32dcfba2015-03-11 15:06:00 +110040endef
41
42install: all
43ifdef INSTALL_PATH
44 $(INSTALL_RULE)
45else
46 $(error Error: set INSTALL_PATH to use install)
47endif
48
49define EMIT_TESTS
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080050 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080051 BASENAME_TEST=`basename $$TEST`; \
52 echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
Michael Ellerman32dcfba2015-03-11 15:06:00 +110053 done;
54endef
55
56emit_tests:
57 $(EMIT_TESTS)
58
Shuah Khandf6438f2017-04-21 16:07:51 -060059define CLEAN
bamvor.zhangjian@huawei.com80d443e82016-11-29 19:55:51 +080060 $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
Shuah Khandf6438f2017-04-21 16:07:51 -060061endef
62
63clean:
64 $(CLEAN)
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080065
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080066$(OUTPUT)/%:%.c
Michael Ellerman2047f1d2017-02-09 19:56:27 +110067 $(LINK.c) $^ $(LDLIBS) -o $@
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080068
69$(OUTPUT)/%.o:%.S
Michael Ellerman634ce972017-02-09 19:56:28 +110070 $(COMPILE.S) $^ -o $@
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080071
72$(OUTPUT)/%:%.S
Michael Ellerman634ce972017-02-09 19:56:28 +110073 $(LINK.S) $^ $(LDLIBS) -o $@
bamvor.zhangjian@huawei.com7d758af2016-11-29 19:55:49 +080074
Michael Ellerman32dcfba2015-03-11 15:06:00 +110075.PHONY: run_tests all clean install emit_tests