summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile52
1 files changed, 42 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index 2bc955c..5f59c31 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,6 @@
# tissue --- Text based issue tracker
-# Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
+# Copyright © 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
+# Copyright © 2023 Morgan Smith <Morgan.J.Smith@outlook.com>
#
# This file is part of tissue.
#
@@ -17,44 +18,75 @@
# along with tissue. If not, see <https://www.gnu.org/licenses/>.
project = tissue
+version = $(subst v,,$(shell git describe --abbrev=0))
# FIXME: Do not hardcode the effective version.
guile_effective_version = 3.0
+GIT ?= git
+GPG ?= gpg
GUILD ?= guild
GUILE ?= guile
+LZIP ?= lzip
+SKRIBILO ?= skribilo
prefix ?= /usr/local
exec_prefix ?= $(prefix)
bindir ?= $(exec_prefix)/bin
libdir ?= $(exec_prefix)/lib
datarootdir ?= $(prefix)/share
+infodir ?= $(datarootdir)/info
top_level_module_dir = $(project)
-sources = $(wildcard $(top_level_module_dir)/*.scm) $(wildcard $(top_level_module_dir)/web/*.scm)
+sources = $(wildcard $(top_level_module_dir)/*.scm) \
+ $(wildcard $(top_level_module_dir)/web/*.scm) \
+ $(wildcard $(top_level_module_dir)/web/themes/*.scm)
objects = $(sources:.scm=.go)
scripts = $(wildcard bin/*)
-tests = $(wildcard tests/*)
+tests = $(wildcard tests/*.scm tests/web/*.scm)
+documentation = doc/tissue.skb
+info = $(documentation:.skb=.info)
+distribute_files = $(sources) $(scripts) $(tests) \
+ $(documentation) doc/skribilo.scm \
+ COPYING guix.scm Makefile
scmdir = $(datarootdir)/guile/site/$(guile_effective_version)
godir = $(libdir)/guile/$(guile_effective_version)/site-ccache
-.PHONY: all check install clean
+.PHONY: all check install clean dist
-all: $(objects)
+all: $(objects) $(info)
+
+%.info: %.skb doc/skribilo.scm
+ GUILE_AUTO_COMPILE=0 $(SKRIBILO) --eval='(add-to-load-path ".")' --target=info --output=$@ $<
%.go: %.scm
GUILE_AUTO_COMPILE=0 $(GUILD) compile -L . -o $@ $<
check:
for test in $(tests); do \
- ./pre-inst-env $(GUILE) $$test; \
+ $(GUILE) --no-auto-compile -L . $$test; \
done
+dist_archive = $(project)-$(version).tar.lz
+
+dist: $(dist_archive) $(dist_archive).asc
+
+$(dist_archive): .git/refs/heads/main
+ $(GIT) archive --prefix $(basename $(basename $@))/ --format=tar main $(distribute_files) \
+ | $(LZIP) --force --output $@
+
+%.asc: %
+ $(GPG) --detach-sign --armor $<
+
install:
install -D $(scripts) --target-directory $(bindir)
- mkdir -p $(scmdir) $(godir)
- cp --parents -vr $(sources) $(scmdir)
- cp --parents -vr $(objects) $(godir)
+ for source in $(sources); do \
+ install -D $$source $(scmdir)/$$source; \
+ done
+ for object in $(objects); do \
+ install -D $$object $(godir)/$$object; \
+ done
+ install -D $(info) --target-directory $(infodir)
clean:
- rm -f $(objects)
+ rm -f $(objects) $(info)