You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.8 KiB

BASE_PKG = tacc-pkg.el
DEFINE_PACKAGE = $(shell sed 's/"/\\"/g' $(BASE_PKG))
NAME_SCRIPT = "(princ (cadr '$(DEFINE_PACKAGE)))"
VERSION_SCRIPT = "(princ (caddr '$(DEFINE_PACKAGE)))"
EMACS := $(shell command -v emacs 2> /dev/null)
ifndef EMACS
EMACS = $(error "emacs installation not found in PATH")
endif
EMACS_BATCH = $(EMACS) --batch --eval
NAME = $(shell $(EMACS_BATCH) $(NAME_SCRIPT))
MAIN_EL = $(NAME).el
VERSION = $(shell $(EMACS_BATCH) $(VERSION_SCRIPT))
QUALIFIED_NAME = $(NAME)-$(VERSION)
PACKAGE = $(QUALIFIED_NAME).tar
SUPPLEMENTAL = chime.wav tick.wav tags-history
SUPPLEMENTAL_NESTED = $(SUPPLEMENTAL:%=$(QUALIFIED_NAME)/%)
INSTALL_SCRIPT = "(package-install-file \"./$(PACKAGE)\")"
DELETE_SCRIPT = "(progn (package-initialize) (package-delete \"$(NAME)\"))"
all: $(PACKAGE)
.PHONY: all load-test install uninstall cleanup clean
.SILENT:
$(QUALIFIED_NAME):
echo "Making package directory"
mkdir $(QUALIFIED_NAME)
$(QUALIFIED_NAME)/$(MAIN_EL) $(QUALIFIED_NAME)/$(BASE_PKG) $(SUPPLEMENTAL_NESTED): $(QUALIFIED_NAME)/%: % $(QUALIFIED_NAME)
cp -v $< $(QUALIFIED_NAME)
$(PACKAGE): load-test $(SUPPLEMENTAL_NESTED) $(QUALIFIED_NAME)/$(BASE_PKG) $(QUALIFIED_NAME)/$(MAIN_EL)
echo "Packing..."
tar -cf $(PACKAGE) $(QUALIFIED_NAME)
echo "Done. $(PACKAGE) is a portable emacs package"
load-test:
echo "Checking script correctness"
$(EMACS) -q -nw --script $(MAIN_EL)
install: $(PACKAGE)
echo "Installing..."
$(EMACS_BATCH) $(INSTALL_SCRIPT)
echo "$(PACKAGE) installed."
# There's no good uninstall?
uninstall:
echo "There is no good way to uninstall an emacs package from command line."
echo "You need to run M-x package-delete $(NAME) from inside emacs."
echo "Sorry :/"
# Cleanup gets rid intermediates and clutter, never the target
cleanup:
rm -rfv $(QUALIFIED_NAME)
rm -fv *~
# Clean leaves the source tree in it's base state
clean: cleanup
rm -fv $(PACKAGE)