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 5ifeq (0,$(MAKELEVEL)) 6OUTPUT := $(shell pwd) 7endif 8 9TEST_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 14define RUN_TESTS 15 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ 16 BASENAME_TEST=`basename $$TEST`; \ 17 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; \ 23 done; 24endef 25 26run_tests: all 27 $(RUN_TESTS) 28 29define INSTALL_RULE 30 @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ 31 mkdir -p ${INSTALL_PATH}; \ 32 echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \ 33 rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \ 34 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)/; \ 39 fi 40endef 41 42install: all 43ifdef INSTALL_PATH 44 $(INSTALL_RULE) 45else 46 $(error Error: set INSTALL_PATH to use install) 47endif 48 49define EMIT_TESTS 50 @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ 51 BASENAME_TEST=`basename $$TEST`; \ 52 echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \ 53 done; 54endef 55 56emit_tests: 57 $(EMIT_TESTS) 58 59define CLEAN 60 $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) 61endef 62 63clean: 64 $(CLEAN) 65 66$(OUTPUT)/%:%.c 67 $(LINK.c) $^ $(LDLIBS) -o $@ 68 69$(OUTPUT)/%.o:%.S 70 $(COMPILE.S) $^ -o $@ 71 72$(OUTPUT)/%:%.S 73 $(LINK.S) $^ $(LDLIBS) -o $@ 74 75.PHONY: run_tests all clean install emit_tests 76