-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
96 lines (77 loc) · 2.74 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Copyright (C) 2021-2024 Free Software Foundation, Inc.
# This file is NOT part of GNU Emacs.
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
PACKAGE_NAME := urgrep
PACKAGE_MAIN := $(PACKAGE_NAME).el
AUTOLOADS := $(PACKAGE_NAME)-autoloads.el
PKG_FILE := $(PACKAGE_NAME)-pkg.el
TESTS := $(wildcard *-tests.el)
TEST_OBJS := $(patsubst %.el,%.elc,$(TESTS))
SRCS := $(filter-out $(AUTOLOADS) $(PKG_FILE) $(TESTS), $(wildcard *.el))
OBJS := $(patsubst %.el,%.elc,$(SRCS))
EMACS ?= emacs
export DEPS_DIR = $(shell realpath .deps)
define INSTALL_SCRIPT
(progn
(setq package-user-dir (getenv "DEPS_DIR"))
(package-refresh-contents)
(if-let ((reqs (package-desc-reqs (package-buffer-info)))
(transaction (package-compute-transaction nil reqs)))
(progn
(message "Installing %s..."
(mapconcat (quote package-desc-full-name) transaction ", "))
(package-download-transaction transaction))
(message "Nothing to install")))
endef
export INSTALL_SCRIPT
EMACS_DEPS := $(EMACS) \
--eval '(setq package-user-dir (getenv "DEPS_DIR"))' \
--eval '(package-activate-all)'
.PHONY: all
all: compile autoloads
.PHONY: compile
compile: $(OBJS)
.PHONY: compile-tests
compile-tests: $(TEST_OBJS)
.PHONY: autoloads
autoloads: $(AUTOLOADS)
.PHONY: install-deps
install-deps:
@$(EMACS) -Q --batch $(PACKAGE_MAIN) --eval "$$INSTALL_SCRIPT"
$(AUTOLOADS): GENERATE_AUTOLOADS = '$\
(package-generate-autoloads "$(PACKAGE_NAME)" default-directory)'
$(AUTOLOADS): $(SRCS)
@echo AUTOLOAD $@
@$(EMACS) -Q --batch \
--eval '(package-initialize)' \
--eval $(GENERATE_AUTOLOADS)
%.elc: %.el
@echo ELC $@
@$(EMACS_DEPS) -Q --batch \
$(if $(STRICT),--eval '(setq byte-compile-error-on-warn t)') \
-L . --funcall batch-byte-compile $<
.PHONY: run
run: all
$(EMACS_DEPS) -Q -L . \
--eval '(load "$(AUTOLOADS)")'
.PHONY: lint
lint:
@$(MAKE) --always-make STRICT=1 compile compile-tests
.PHONY: check
check: $(if $(NO_COMPILE),,$(OBJS) $(TEST_OBJS))
@echo TEST $(patsubst %.el,%,$(TESTS))
@$(EMACS_DEPS) -Q --batch \
-L . $(patsubst %.el,-l %,$(TESTS)) \
--eval '(ert-run-tests-batch-and-exit t)'
.PHONY: clean
clean:
rm -f *.elc $(AUTOLOADS) $(PKG_FILE)