CASK = cask EMACS ?= emacs # Handle the mess when inside Emacs. unexport INSIDE_EMACS #cask not like this. ifeq ($(EMACS), t) EMACS = emacs endif emacs = $(EMACS) emacs_version = $(shell $(emacs) --batch --eval \ '(princ (format "%s.%s" emacs-major-version emacs-minor-version))') $(info Using Emacs $(emacs_version)) version=$(shell sed -ne 's/^;\+ *Version: *\([0-9.]\)/\1/p' lisp/pdf-tools.el) PKG=pdf-tools pkgname=$(PKG)-$(version) pkgfile=$(pkgname).tar .PHONY: all clean distclean bytecompile test check melpa all: $(pkgfile) # Create a elpa package including the server $(pkgfile): .cask/$(emacs_version) server/epdfinfo lisp/*.el loaddefs $(CASK) package . loaddefs: $(PKG)-autoloads.el # Compile the Lisp sources bytecompile: .cask/$(emacs_version) $(CASK) exec $(emacs) --batch -L lisp -f batch-byte-compile lisp/*.el # Clean bytecompiled sources byteclean: rm -f -- lisp/*.elc rm -f -- lisp/*.eln # Run ERT tests test: all PACKAGE_TAR=$(pkgfile) $(CASK) exec ert-runner check: test # Run the autobuild script tests in docker test-autobuild: server-test # Run all tests test-all: test test-autobuild # Init cask .cask/$(emacs_version): $(CASK) install # Run the autobuild script (installing depends and compiling) autobuild: cd server && ./autobuild # Soon to be obsolete targets melpa-build: autobuild cp build/epdfinfo . install-server-deps: ; # Create a package like melpa would. melpa-package: $(pkgfile) cp $(pkgfile) $(pkgname)-melpa.tar tar -u --transform='s/server/$(pkgname)\/build\/server/' \ -f $(pkgname)-melpa.tar \ $$(git ls-files server) tar -u --transform='s/Makefile/$(pkgname)\/build\/Makefile/' \ -f $(pkgname)-melpa.tar \ Makefile tar -u --transform='s/README\.org/$(pkgname)\/README/' \ -f $(pkgname)-melpa.tar \ README.org -tar --delete $(pkgname)/epdfinfo \ -f $(pkgname)-melpa.tar # Various clean targets clean: server-clean byteclean rm -f -- $(pkgfile) rm -f -- pdf-tools-readme.txt rm -f -- pdf-tools-$(version).entry distclean: clean server-distclean rm -rf -- .cask # Server targets server/epdfinfo: server/Makefile server/*.[ch] $(MAKE) -C server server/Makefile: server/configure cd server && ./configure -q server/configure: server/configure.ac cd server && ./autogen.sh server-test: server/Makefile $(MAKE) -C server check server-clean: ! [ -f server/Makefile ] || $(MAKE) -C server clean server-distclean: ! [ -f server/Makefile ] || $(MAKE) -C server distclean server-test-supported: server/test/Makefile $(MAKE) -C server/test print server-test-unsupported: server/test/Makefile $(MAKE) -C server/test print-failing $(PKG)-autoloads.el: lisp/*.el @printf " Creating $@\n" @cd lisp;$(EMACS) -Q --batch -l autoload -l cl-lib --eval "\ (let ((file (expand-file-name \"$@\"))\ (autoload-timestamps nil) \ (backup-inhibited t)\ (version-control 'never)\ (coding-system-for-write 'utf-8-emacs-unix))\ (write-region (autoload-rubric file \"package\" nil) nil file nil 'silent)\ (cl-letf (((symbol-function 'progress-reporter-do-update) (lambda (&rest _)))\ ((symbol-function 'progress-reporter-done) (lambda (_))))\ (let ((generated-autoload-file file))\ (update-directory-autoloads default-directory))))" \ 2>&1 | sed "/^Package autoload is deprecated$$/d"