escript.mk 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. `cat $(ERLANG_MK_TMP)/deps.log | sed 's/^$(subst /,\/,$(DEPS_DIR))\///' | sed 's/$$/\/ebin\/\*/'`
  27. endif
  28. escript:: escript-zip
  29. $(gen_verbose) printf "%s\n" \
  30. "#!$(ESCRIPT_SHEBANG)" \
  31. "%% $(ESCRIPT_COMMENT)" \
  32. "%%! $(ESCRIPT_EMU_ARGS)" > $(ESCRIPT_FILE)
  33. $(verbose) cat $(ESCRIPT_ZIP_FILE) >> $(ESCRIPT_FILE)
  34. $(verbose) chmod +x $(ESCRIPT_FILE)
  35. distclean-escript:
  36. $(gen_verbose) rm -f $(ESCRIPT_FILE)