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
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)
|