blob: 98841c54763a621bbc204701515d94ed7197d1e0 [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
Michael Ellermand83c3ba2017-02-09 19:56:26 +11005TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
6TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))
7
8all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
9
Michael Ellerman5e29a912015-03-11 15:05:59 +110010define RUN_TESTS
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080011 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080012 BASENAME_TEST=`basename $$TEST`; \
13 cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests: $$BASENAME_TEST [FAIL]"; cd -;\
Michael Ellerman5e29a912015-03-11 15:05:59 +110014 done;
15endef
16
17run_tests: all
18 $(RUN_TESTS)
19
Michael Ellerman32dcfba2015-03-11 15:06:00 +110020define INSTALL_RULE
Bamvor Jian Zhang900d65e2015-09-09 21:06:28 +080021 @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \
22 mkdir -p ${INSTALL_PATH}; \
bamvor.zhangjian@huawei.com5fe59792016-11-29 19:55:48 +080023 echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \
24 rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080025 fi
26 @if [ "X$(TEST_GEN_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \
27 mkdir -p ${INSTALL_PATH}; \
28 echo "rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \
29 rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \
Bamvor Jian Zhanga7d0f072015-08-14 21:43:35 +080030 fi
Michael Ellerman32dcfba2015-03-11 15:06:00 +110031endef
32
33install: all
34ifdef INSTALL_PATH
35 $(INSTALL_RULE)
36else
37 $(error Error: set INSTALL_PATH to use install)
38endif
39
40define EMIT_TESTS
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080041 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080042 BASENAME_TEST=`basename $$TEST`; \
43 echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
Michael Ellerman32dcfba2015-03-11 15:06:00 +110044 done;
45endef
46
47emit_tests:
48 $(EMIT_TESTS)
49
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080050clean:
bamvor.zhangjian@huawei.com80d443e82016-11-29 19:55:51 +080051 $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
bamvor.zhangjian@huawei.com88baa782016-11-29 19:55:47 +080052
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080053$(OUTPUT)/%:%.c
Michael Ellerman2047f1d2017-02-09 19:56:27 +110054 $(LINK.c) $^ $(LDLIBS) -o $@
bamvor.zhangjian@huawei.coma8ba7982016-11-29 19:55:52 +080055
56$(OUTPUT)/%.o:%.S
57 $(CC) $(ASFLAGS) -c $< -o $@
58
59$(OUTPUT)/%:%.S
60 $(CC) $(ASFLAGS) $< -o $@
bamvor.zhangjian@huawei.com7d758af2016-11-29 19:55:49 +080061
Michael Ellerman32dcfba2015-03-11 15:06:00 +110062.PHONY: run_tests all clean install emit_tests