2
0

prereq.mk 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #
  2. # Copyright (C) 2006 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. $(TMP_DIR):
  8. mkdir -p $@
  9. prereq:
  10. if [ -f $(TMP_DIR)/.prereq-error ]; then \
  11. echo; \
  12. cat $(TMP_DIR)/.prereq-error; \
  13. echo; \
  14. rm -rf $(TMP_DIR); \
  15. false; \
  16. fi
  17. rm -rf $(TMP_DIR)
  18. mkdir -p $(TMP_DIR)
  19. .SILENT: $(TMP_DIR) prereq
  20. define Require
  21. export PREREQ_CHECK=1
  22. ifeq ($$(CHECK_$(1)),)
  23. prereq: prereq-$(1)
  24. prereq-$(1): $(TMP_DIR) FORCE
  25. echo -n "Checking '$(1)'... "
  26. if $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) >/dev/null 2>/dev/null; then \
  27. echo 'ok.'; \
  28. else \
  29. echo 'failed.'; \
  30. echo -e "$(strip $(2))" >> $(TMP_DIR)/.prereq-error; \
  31. fi
  32. check-$(1): FORCE
  33. $(call Require/$(1))
  34. CHECK_$(1):=1
  35. .SILENT: prereq-$(1) check-$(1)
  36. endif
  37. endef
  38. define RequireCommand
  39. define Require/$(1)
  40. which $(1)
  41. endef
  42. $$(eval $$(call Require,$(1),$(2)))
  43. endef