escript.mk 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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:: FULL=1
  21. escript-zip:: deps app
  22. $(verbose) mkdir -p $(dir $(ESCRIPT_ZIP))
  23. $(verbose) rm -f $(ESCRIPT_ZIP_FILE)
  24. $(gen_verbose) cd .. && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) $(PROJECT)/ebin/*
  25. ifneq ($(DEPS),)
  26. $(verbose) cd $(DEPS_DIR) && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) \
  27. $(subst $(DEPS_DIR)/,,$(addsuffix /*,$(wildcard \
  28. $(addsuffix /ebin,$(shell cat $(ERLANG_MK_TMP)/deps.log)))))
  29. endif
  30. escript:: escript-zip
  31. $(gen_verbose) printf "%s\n" \
  32. "#!$(ESCRIPT_SHEBANG)" \
  33. "%% $(ESCRIPT_COMMENT)" \
  34. "%%! $(ESCRIPT_EMU_ARGS)" > $(ESCRIPT_FILE)
  35. $(verbose) cat $(ESCRIPT_ZIP_FILE) >> $(ESCRIPT_FILE)
  36. $(verbose) chmod +x $(ESCRIPT_FILE)
  37. distclean-escript:
  38. $(gen_verbose) rm -f $(ESCRIPT_FILE)