Michael Ellerman | 84f887b | 2015-03-04 21:41:31 +1100 | [diff] [blame] | 1 | # This mimics the top-level Makefile. We do it explicitly here so that this |
| 2 | # Makefile can operate with or without the kbuild infrastructure. |
| 3 | CC := $(CROSS_COMPILE)gcc |
| 4 | |
Michael Ellerman | d83c3ba | 2017-02-09 19:56:26 +1100 | [diff] [blame] | 5 | TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS)) |
| 6 | TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES)) |
| 7 | |
| 8 | all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) |
| 9 | |
Michael Ellerman | 5e29a91 | 2015-03-11 15:05:59 +1100 | [diff] [blame] | 10 | define RUN_TESTS |
bamvor.zhangjian@huawei.com | 88baa78 | 2016-11-29 19:55:47 +0800 | [diff] [blame] | 11 | @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ |
bamvor.zhangjian@huawei.com | a8ba798 | 2016-11-29 19:55:52 +0800 | [diff] [blame] | 12 | BASENAME_TEST=`basename $$TEST`; \ |
| 13 | cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests: $$BASENAME_TEST [FAIL]"; cd -;\ |
Michael Ellerman | 5e29a91 | 2015-03-11 15:05:59 +1100 | [diff] [blame] | 14 | done; |
| 15 | endef |
| 16 | |
| 17 | run_tests: all |
| 18 | $(RUN_TESTS) |
| 19 | |
Michael Ellerman | 32dcfba | 2015-03-11 15:06:00 +1100 | [diff] [blame] | 20 | define INSTALL_RULE |
Bamvor Jian Zhang | 900d65e | 2015-09-09 21:06:28 +0800 | [diff] [blame] | 21 | @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ |
| 22 | mkdir -p ${INSTALL_PATH}; \ |
bamvor.zhangjian@huawei.com | 5fe5979 | 2016-11-29 19:55:48 +0800 | [diff] [blame] | 23 | 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.com | 88baa78 | 2016-11-29 19:55:47 +0800 | [diff] [blame] | 25 | 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 Zhang | a7d0f07 | 2015-08-14 21:43:35 +0800 | [diff] [blame] | 30 | fi |
Michael Ellerman | 32dcfba | 2015-03-11 15:06:00 +1100 | [diff] [blame] | 31 | endef |
| 32 | |
| 33 | install: all |
| 34 | ifdef INSTALL_PATH |
| 35 | $(INSTALL_RULE) |
| 36 | else |
| 37 | $(error Error: set INSTALL_PATH to use install) |
| 38 | endif |
| 39 | |
| 40 | define EMIT_TESTS |
bamvor.zhangjian@huawei.com | 88baa78 | 2016-11-29 19:55:47 +0800 | [diff] [blame] | 41 | @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ |
bamvor.zhangjian@huawei.com | a8ba798 | 2016-11-29 19:55:52 +0800 | [diff] [blame] | 42 | BASENAME_TEST=`basename $$TEST`; \ |
| 43 | echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \ |
Michael Ellerman | 32dcfba | 2015-03-11 15:06:00 +1100 | [diff] [blame] | 44 | done; |
| 45 | endef |
| 46 | |
| 47 | emit_tests: |
| 48 | $(EMIT_TESTS) |
| 49 | |
bamvor.zhangjian@huawei.com | 88baa78 | 2016-11-29 19:55:47 +0800 | [diff] [blame] | 50 | clean: |
bamvor.zhangjian@huawei.com | 80d443e8 | 2016-11-29 19:55:51 +0800 | [diff] [blame] | 51 | $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) |
bamvor.zhangjian@huawei.com | 88baa78 | 2016-11-29 19:55:47 +0800 | [diff] [blame] | 52 | |
bamvor.zhangjian@huawei.com | a8ba798 | 2016-11-29 19:55:52 +0800 | [diff] [blame] | 53 | $(OUTPUT)/%:%.c |
Michael Ellerman | 2047f1d | 2017-02-09 19:56:27 +1100 | [diff] [blame^] | 54 | $(LINK.c) $^ $(LDLIBS) -o $@ |
bamvor.zhangjian@huawei.com | a8ba798 | 2016-11-29 19:55:52 +0800 | [diff] [blame] | 55 | |
| 56 | $(OUTPUT)/%.o:%.S |
| 57 | $(CC) $(ASFLAGS) -c $< -o $@ |
| 58 | |
| 59 | $(OUTPUT)/%:%.S |
| 60 | $(CC) $(ASFLAGS) $< -o $@ |
bamvor.zhangjian@huawei.com | 7d758af | 2016-11-29 19:55:49 +0800 | [diff] [blame] | 61 | |
Michael Ellerman | 32dcfba | 2015-03-11 15:06:00 +1100 | [diff] [blame] | 62 | .PHONY: run_tests all clean install emit_tests |