lib.mk 2.0 KB
Newer Older
1 2 3 4
# This mimics the top-level Makefile. We do it explicitly here so that this
# Makefile can operate with or without the kbuild infrastructure.
CC := $(CROSS_COMPILE)gcc

5 6 7 8
ifeq (0,$(MAKELEVEL))
OUTPUT := $(shell pwd)
endif

9 10 11 12 13
TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))

all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)

14
define RUN_TESTS
15
	@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
16 17
		BASENAME_TEST=`basename $$TEST`;	\
		cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests:  $$BASENAME_TEST [FAIL]"; cd -;\
18 19 20 21 22 23
	done;
endef

run_tests: all
	$(RUN_TESTS)

M
Michael Ellerman 已提交
24
define INSTALL_RULE
25 26
	@if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then					\
		mkdir -p ${INSTALL_PATH};										\
27 28
		echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/";	\
		rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/;		\
29 30 31 32 33
	fi
	@if [ "X$(TEST_GEN_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then					\
		mkdir -p ${INSTALL_PATH};										\
		echo "rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/";	\
		rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/;		\
34
	fi
M
Michael Ellerman 已提交
35 36 37 38 39 40 41 42 43 44
endef

install: all
ifdef INSTALL_PATH
	$(INSTALL_RULE)
else
	$(error Error: set INSTALL_PATH to use install)
endif

define EMIT_TESTS
45
	@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
46 47
		BASENAME_TEST=`basename $$TEST`;	\
		echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
M
Michael Ellerman 已提交
48 49 50 51 52 53
	done;
endef

emit_tests:
	$(EMIT_TESTS)

54
clean:
55
	$(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
56

57
$(OUTPUT)/%:%.c
58
	$(LINK.c) $^ $(LDLIBS) -o $@
59 60

$(OUTPUT)/%.o:%.S
61
	$(COMPILE.S) $^ -o $@
62 63

$(OUTPUT)/%:%.S
64
	$(LINK.S) $^ $(LDLIBS) -o $@
65

M
Michael Ellerman 已提交
66
.PHONY: run_tests all clean install emit_tests