Makefile (2348B)
1 CASK = cask 2 EMACS ?= emacs 3 # Handle the mess when inside Emacs. 4 unexport INSIDE_EMACS #cask not like this. 5 ifeq ($(EMACS), t) 6 EMACS = emacs 7 endif 8 9 emacs = $(EMACS) 10 emacs_version = $(shell $(emacs) --batch --eval \ 11 '(princ (format "%s.%s" emacs-major-version emacs-minor-version))') 12 $(info Using Emacs $(emacs_version)) 13 14 version=$(shell sed -ne 's/^;\+ *Version: *\([0-9.]\)/\1/p' lisp/pdf-tools.el) 15 pkgname=pdf-tools-$(version) 16 pkgfile=$(pkgname).tar 17 18 .PHONY: all clean distclean bytecompile test check melpa 19 20 all: $(pkgfile) 21 22 # Create a elpa package including the server 23 $(pkgfile): .cask/$(emacs_version) server/epdfinfo lisp/*.el 24 $(CASK) package . 25 26 # Compile the Lisp sources 27 bytecompile: .cask/$(emacs_version) 28 $(CASK) exec $(emacs) --batch -L lisp -f batch-byte-compile lisp/*.el 29 30 # Run ERT tests 31 test: all 32 PACKAGE_TAR=$(pkgfile) $(CASK) exec ert-runner 33 34 check: test 35 36 # Run the autobuild script tests in docker 37 test-autobuild: server-test 38 39 # Run all tests 40 test-all: test test-autobuild 41 42 # Init cask 43 .cask/$(emacs_version): 44 $(CASK) install 45 46 # Run the autobuild script (installing depends and compiling) 47 autobuild: 48 cd server && ./autobuild 49 50 # Soon to be obsolete targets 51 melpa-build: autobuild 52 cp build/epdfinfo . 53 install-server-deps: ; 54 55 # Create a package like melpa would. 56 melpa-package: $(pkgfile) 57 cp $(pkgfile) $(pkgname)-melpa.tar 58 tar -u --transform='s/server/$(pkgname)\/build\/server/' \ 59 -f $(pkgname)-melpa.tar \ 60 $$(git ls-files server) 61 tar -u --transform='s/Makefile/$(pkgname)\/build\/Makefile/' \ 62 -f $(pkgname)-melpa.tar \ 63 Makefile 64 tar -u --transform='s/README\.org/$(pkgname)\/README/' \ 65 -f $(pkgname)-melpa.tar \ 66 README.org 67 -tar --delete $(pkgname)/epdfinfo \ 68 -f $(pkgname)-melpa.tar 69 70 # Various clean targets 71 clean: server-clean 72 rm -f -- $(pkgfile) 73 rm -f -- lisp/*.elc 74 rm -f -- pdf-tools-readme.txt 75 rm -f -- pdf-tools-$(version).entry 76 77 distclean: clean server-distclean 78 rm -rf -- .cask 79 80 # Server targets 81 server/epdfinfo: server/Makefile server/*.[ch] 82 $(MAKE) -C server 83 84 server/Makefile: server/configure 85 cd server && ./configure -q 86 87 server/configure: server/configure.ac 88 cd server && ./autogen.sh 89 90 server-test: server/Makefile 91 $(MAKE) -C server check 92 93 server-clean: 94 ! [ -f server/Makefile ] || $(MAKE) -C server clean 95 96 server-distclean: 97 ! [ -f server/Makefile ] || $(MAKE) -C server distclean