GNU Linux-libre 4.9.309-gnu1
[releases.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 ifneq ($(LLVM),)
4 CC := clang
5 else
6 CC := $(CROSS_COMPILE)gcc
7 endif
8
9 define RUN_TESTS
10         @for TEST in $(TEST_PROGS); do \
11                 (./$$TEST && echo "selftests: $$TEST [PASS]") || echo "selftests: $$TEST [FAIL]"; \
12         done;
13 endef
14
15 run_tests: all
16         $(RUN_TESTS)
17
18 define INSTALL_RULE
19         @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then                                        \
20                 mkdir -p ${INSTALL_PATH};                                                                               \
21                 echo "rsync -a $(TEST_DIRS) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/";       \
22                 rsync -a $(TEST_DIRS) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/;              \
23         fi
24 endef
25
26 install: all
27 ifdef INSTALL_PATH
28         $(INSTALL_RULE)
29 else
30         $(error Error: set INSTALL_PATH to use install)
31 endif
32
33 define EMIT_TESTS
34         @for TEST in $(TEST_PROGS); do \
35                 echo "(./$$TEST && echo \"selftests: $$TEST [PASS]\") || echo \"selftests: $$TEST [FAIL]\""; \
36         done;
37 endef
38
39 emit_tests:
40         $(EMIT_TESTS)
41
42 .PHONY: run_tests all clean install emit_tests