escript.mk 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # Copyright (c) 2016, Loïc Hoguin <essen@ninenines.eu>
  2. # Copyright (c) 2014, Dave Cottlehuber <dch@skunkwerks.at>
  3. # This file is part of erlang.mk and subject to the terms of the ISC License.
  4. .PHONY: distclean-escript escript escript-zip
  5. # Configuration.
  6. ESCRIPT_NAME ?= $(PROJECT)
  7. ESCRIPT_FILE ?= $(ESCRIPT_NAME)
  8. ESCRIPT_SHEBANG ?= /usr/bin/env escript
  9. ESCRIPT_COMMENT ?= This is an -*- erlang -*- file
  10. ESCRIPT_EMU_ARGS ?= -escript main $(ESCRIPT_NAME)
  11. ESCRIPT_ZIP ?= 7z a -tzip -mx=9 -mtc=off $(if $(filter-out 0,$(V)),,> /dev/null)
  12. ESCRIPT_ZIP_FILE ?= $(ERLANG_MK_TMP)/escript.zip
  13. # Core targets.
  14. distclean:: distclean-escript
  15. help::
  16. $(verbose) printf "%s\n" "" \
  17. "Escript targets:" \
  18. " escript Build an executable escript archive" \
  19. # Plugin-specific targets.
  20. escript-zip:: deps app
  21. $(verbose) mkdir -p $(dir $(ESCRIPT_ZIP))
  22. $(verbose) rm -f $(ESCRIPT_ZIP_FILE)
  23. $(gen_verbose) cd .. && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) $(PROJECT)/ebin/*
  24. ifneq ($(DEPS),)
  25. $(verbose) cd $(DEPS_DIR) && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) \
  26. $(subst $(DEPS_DIR)/,,$(addsuffix /*,$(wildcard \
  27. $(addsuffix /ebin,$(shell cat $(ERLANG_MK_TMP)/deps.log)))))
  28. endif
  29. escript:: escript-zip
  30. $(gen_verbose) printf "%s\n" \
  31. "#!$(ESCRIPT_SHEBANG)" \
  32. "%% $(ESCRIPT_COMMENT)" \
  33. "%%! $(ESCRIPT_EMU_ARGS)" > $(ESCRIPT_FILE)
  34. $(verbose) cat $(ESCRIPT_ZIP_FILE) >> $(ESCRIPT_FILE)
  35. $(verbose) chmod +x $(ESCRIPT_FILE)
  36. distclean-escript:
  37. $(gen_verbose) rm -f $(ESCRIPT_FILE)