Makefile 902 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. VERSION := 0.1.0
  2. BINOUT := .bin
  3. NAME := a
  4. MAIN_MODULE := ${NAME}/bin
  5. HAREFLAGS ?=
  6. RELEASE ?= 0
  7. ifeq (${RELEASE},1)
  8. HAREFLAGS += -R
  9. endif
  10. LOCAL_HARE := .hare
  11. LOCAL_BIN := ${LOCAL_HARE}/bin
  12. # QBE ?= qbe
  13. # HARE ?= hare
  14. # HAREC ?= harec
  15. SCDOC ?= scdoc
  16. QBE ?= ${LOCAL_BIN}/qbe
  17. HARE ?= ${LOCAL_BIN}/hare
  18. HAREC ?= ${LOCAL_BIN}/harec
  19. HARE_STDLIB ?= ${LOCAL_HARE}/stdlib
  20. rwildcard = $(foreach d,$(wildcard $1/*),$(call rwildcard,$d,$2) \
  21. $(filter $(subst *,%,$2),$d))
  22. .PHONY: all
  23. all: ${BINOUT}/${NAME}
  24. .PHONY: man
  25. man: man/a.1
  26. .SUFFIXES: .scd
  27. .scd:
  28. $(SCDOC) < ${<} > ${@}
  29. export QBE
  30. export HAREC
  31. .ENV_HAREPATH := ${HAREPATH}
  32. export HAREPATH = ${HARE_STDLIB}:${.ENV_HAREPATH}
  33. ${BINOUT}/${NAME}: $(call rwildcard,.,*.ha)
  34. @mkdir -p $(dir ${@})
  35. ${HARE} build -D'VERSION="${VERSION}"' ${LDFLAGS} ${HAREFLAGS} -o ${@} ${MAIN_MODULE}
  36. .PHONY: clean
  37. clean:
  38. rm -f ${BINOUT}/${NAME}
  39. rmdir ${BINOUT}