sfx.mk 934 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Copyright (c) 2016, Loïc Hoguin <essen@ninenines.eu>
  2. # This file is part of erlang.mk and subject to the terms of the ISC License.
  3. .PHONY: sfx
  4. ifdef RELX_RELEASE
  5. ifdef SFX
  6. # Configuration.
  7. SFX_OUTPUT = $(RELX_OUTPUT_DIR)/$(RELX_RELEASE).run
  8. # Core targets.
  9. rel:: sfx
  10. # Plugin-specific targets.
  11. define sfx_stub
  12. #!/bin/sh
  13. TMPDIR=`mktemp -d`
  14. ARCHIVE=`awk '/^__ARCHIVE_BELOW__$$/ {print NR + 1; exit 0;}' $$0`
  15. FILENAME=$$(basename $$0)
  16. REL=$${FILENAME%.*}
  17. tail -n+$$ARCHIVE $$0 | tar xz -C $$TMPDIR
  18. $$TMPDIR/$$REL/bin/$$REL console
  19. RET=$$?
  20. rm -rf $$TMPDIR
  21. exit $$RET
  22. __ARCHIVE_BELOW__
  23. endef
  24. sfx:
  25. $(call render_template,sfx_stub,$(SFX_OUTPUT))
  26. $(gen_verbose) tar -C $(RELX_OUTPUT_DIR) -czf $(RELX_OUTPUT_DIR)/$(RELX_RELEASE).tgz $(RELX_RELEASE)
  27. $(verbose) cat $(RELX_OUTPUT_DIR)/$(RELX_RELEASE).tgz >> $(SFX_OUTPUT)
  28. $(verbose) chmod +x $(SFX_OUTPUT)
  29. $(verbose) rm $(RELX_OUTPUT_DIR)/$(RELX_RELEASE).tgz
  30. endif
  31. endif