summary refs log tree commit diff
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)