# tissue --- Text based issue tracker # Copyright © 2022, 2023 Arun Isaac # Copyright © 2023 Morgan Smith # # This file is part of tissue. # # tissue 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. # # tissue 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 tissue. If not, see . 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) \ $(wildcard $(top_level_module_dir)/web/themes/*.scm) objects = $(sources:.scm=.go) scripts = $(wildcard bin/*) 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 dist 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 \ $(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) 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) $(info)