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. 3CC := $(CROSS_COMPILE)gcc 4 5TEST_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 10define RUN_TESTS 11 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ 12 BASENAME_TEST=`basename $$TEST`; \ 13 cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests: $$BASENAME_TEST [FAIL]"; cd -;\ 14 done; 15endef 16 17run_tests: all 18 $(RUN_TESTS) 19 20define INSTALL_RULE 21 @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ 22 mkdir -p ${INSTALL_PATH}; \ 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)/; \ 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)/; \ 30 fi 31endef 32 33install: all 34ifdef INSTALL_PATH 35 $(INSTALL_RULE) 36else 37 $(error Error: set INSTALL_PATH to use install) 38endif 39 40define EMIT_TESTS 41 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ 42 BASENAME_TEST=`basename $$TEST`; \ 43 echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \ 44 done; 45endef 46 47emit_tests: 48 $(EMIT_TESTS) 49 50clean: 51 $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) 52 53$(OUTPUT)/%:%.c 54 $(LINK.c) $^ $(LDLIBS) -o $@ 55 56$(OUTPUT)/%.o:%.S 57 $(COMPILE.S) $^ -o $@ 58 59$(OUTPUT)/%:%.S 60 $(LINK.S) $^ $(LDLIBS) -o $@ 61 62.PHONY: run_tests all clean install emit_tests 63