lib.mk 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. ifeq (0,$(MAKELEVEL))
  5. OUTPUT := $(shell pwd)
  6. endif
  7. TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
  8. TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))
  9. all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
  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. run_tests: all
  17. $(RUN_TESTS)
  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_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \
  22. rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \
  23. fi
  24. @if [ "X$(TEST_GEN_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \
  25. mkdir -p ${INSTALL_PATH}; \
  26. echo "rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \
  27. rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \
  28. fi
  29. endef
  30. install: all
  31. ifdef INSTALL_PATH
  32. $(INSTALL_RULE)
  33. else
  34. $(error Error: set INSTALL_PATH to use install)
  35. endif
  36. define EMIT_TESTS
  37. @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
  38. BASENAME_TEST=`basename $$TEST`; \
  39. echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
  40. done;
  41. endef
  42. emit_tests:
  43. $(EMIT_TESTS)
  44. define CLEAN
  45. $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
  46. endef
  47. clean:
  48. $(CLEAN)
  49. $(OUTPUT)/%:%.c
  50. $(LINK.c) $^ $(LDLIBS) -o $@
  51. $(OUTPUT)/%.o:%.S
  52. $(COMPILE.S) $^ -o $@
  53. $(OUTPUT)/%:%.S
  54. $(LINK.S) $^ $(LDLIBS) -o $@
  55. .PHONY: run_tests all clean install emit_tests