diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 52 |
1 files changed, 42 insertions, 10 deletions
@@ -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) |