]> git.karo-electronics.de Git - karo-tx-linux.git/blob - tools/testing/selftests/lib.mk
selftests: Fix the .c linking rule
[karo-tx-linux.git] / tools / testing / selftests / lib.mk
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
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
10 define 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;
15 endef
16
17 run_tests: all
18         $(RUN_TESTS)
19
20 define 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
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
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;
45 endef
46
47 emit_tests:
48         $(EMIT_TESTS)
49
50 clean:
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         $(CC) $(ASFLAGS) -c $< -o $@
58
59 $(OUTPUT)/%:%.S
60         $(CC) $(ASFLAGS) $< -o $@
61
62 .PHONY: run_tests all clean install emit_tests