diff options
author | Arun Isaac | 2024-08-20 23:27:13 +0100 |
---|---|---|
committer | Arun Isaac | 2024-08-20 23:45:53 +0100 |
commit | 49e4c75bcfc81380c0e055c0d4f13c6f226b92ad (patch) | |
tree | a80fd742deef82ce187261afd0d0edf4868ca039 /Makefile | |
download | ravanan-49e4c75bcfc81380c0e055c0d4f13c6f226b92ad.tar.gz ravanan-49e4c75bcfc81380c0e055c0d4f13c6f226b92ad.tar.lz ravanan-49e4c75bcfc81380c0e055c0d4f13c6f226b92ad.zip |
Initial commit
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ad99e81 --- /dev/null +++ b/Makefile @@ -0,0 +1,63 @@ +# ravanan --- High-reproducibility CWL runner powered by Guix +# Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net> +# +# This file is part of ravanan. +# +# ravanan 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. +# +# ravanan 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 ravanan. If not, see <https://www.gnu.org/licenses/>. + +project = ravanan + +GUILD ?= guild +NODE ?= node +SED ?= sed + +prefix ?= /usr/local +bindir ?= $(prefix)/bin +datarootdir ?= $(prefix)/share +libdir ?= $(prefix)/lib + +guile_effective_version = 3.0 + +top_level_module_dir = $(project) +config_file = $(top_level_module_dir)/config.scm +sources = $(wildcard $(top_level_module_dir)/*.scm) \ + $(wildcard $(top_level_module_dir)/work/*.scm) \ + $(config_file) +objects = $(sources:.scm=.go) +scripts = $(wildcard bin/*) + +scmdir = $(datarootdir)/guile/site/$(guile_effective_version) +godir = $(libdir)/guile/$(guile_effective_version)/site-ccache + +.PHONY: all clean install + +all: $(objects) $(config_file) + +%.scm: %.scm.in + $(SED) 's|@NODE@|$(NODE)|' $< > $@ + +%.go: %.scm $(config_file) + GUILE_AUTO_COMPILE=0 $(GUILD) compile -L . -o $@ $< + +install: $(sources) $(objects) $(scripts) + 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 + +clean: + rm -f $(objects) $(config_file) |