summaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 6cb3b85cc6ccb6861764341b77313cb14370acd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# ccwl --- Concise Common Workflow Language
# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
#
# This file is part of ccwl.
#
# ccwl 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.
#
# ccwl 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 ccwl.  If not, see <https://www.gnu.org/licenses/>.

GOBJECTS = $(SOURCES:%.scm=%.go)

nobase_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES)
nobase_go_DATA = $(GOBJECTS)

# Make sure source files are installed first, so that the mtime of
# installed compiled files is greater than that of installed source
# files.  See
# <http://lists.gnu.org/archive/html/guile-devel/2010-07/msg00125.html>
# for details.
guile_install_go_files = install-nobase_goDATA
$(guile_install_go_files): install-nobase_modDATA

CLEANFILES = $(GOBJECTS)
EXTRA_DIST = $(SOURCES) $(NOCOMP_SOURCES)
GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
%.go: %.scm
	$(AM_V_GEN)$(top_builddir)/pre-inst-env $(GUILD) compile $(GUILE_WARNINGS) -o "$@" "$<"

moddir = $(prefix)/share/guile/site/$(GUILE_EFFECTIVE_VERSION)
godir  = $(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache

bin_SCRIPTS = scripts/ccwl

SOURCES =			\
  ccwl/ccwl.scm 		\
  ccwl/yaml.scm		        \
  ccwl/utils.scm

TEST_EXTENSIONS = .scm

SCM_TESTS =			\
  tests/ccwl.scm                \
  tests/yaml.scm

TESTS = $(SCM_TESTS)

SCM_LOG_DRIVER =		\
  $(top_builddir)/pre-inst-env	\
  $(GUILE) --no-auto-compile -s \
  $(top_builddir)/build-aux/test-driver.scm

EXTRA_DIST +=			\
  $(TESTS)                      \
  COPYING			\
  README.org

# Build documentation

SKRIBILO_BUILD_DIR = $(srcdir)/doc/skribilo
DOC_IMAGES = $(addprefix $(SKRIBILO_BUILD_DIR)/, \
  checksum.svg \
  decompress-compile-run.svg)

$(SKRIBILO_BUILD_DIR)/%.cwl: doc/%.scm
	$(MKDIR_P) $(SKRIBILO_BUILD_DIR)
	$(AM_V_GEN)$(top_builddir)/pre-inst-env ccwl compile $< > $@

# Print out graph for graphviz's dot, but remove file path prefix from
# workflow step identifiers.
%.dot: %.cwl
	$(CWLTOOL) --print-dot $< | $(SED) 's/file:[^#]*#//g' > $@

%.svg: %.dot
	$(DOT) -Tsvg -o$@ $<

# The info and html targets depend on the info-local and html-local
# targets respectively. So, we use them to extend the info and html
# targets.
info-local: $(SKRIBILO_BUILD_DIR)/ccwl.info
html-local: $(SKRIBILO_BUILD_DIR)/ccwl.html

$(SKRIBILO_BUILD_DIR)/ccwl.info: doc/ccwl.skb ccwl/skribilo.scm $(DOC_IMAGES)
	$(MKDIR_P) $(SKRIBILO_BUILD_DIR)
	$(AM_V_GEN)$(top_builddir)/pre-inst-env $(SKRIBILO) -t info $< -o $@

$(SKRIBILO_BUILD_DIR)/ccwl.html: doc/ccwl.skb ccwl/skribilo.scm $(DOC_IMAGES)
	rm -rf $@
	$(MKDIR_P) $@
	$(AM_V_GEN)$(top_builddir)/pre-inst-env $(SKRIBILO) -t html $< -o $@/index.html
	cp -vr $(DOC_IMAGES) $@

install-data-local: install-info-local

install-info-local: $(SKRIBILO_BUILD_DIR)/ccwl.info
	$(MKDIR_P) $(DESTDIR)$(infodir)
	$(INSTALL_DATA) $(SKRIBILO_BUILD_DIR)/ccwl.info $(DESTDIR)$(infodir)

install-html-local: $(SKRIBILO_BUILD_DIR)/ccwl.html
	$(MKDIR_P) $(DESTDIR)$(htmldir)
	$(INSTALL_DATA) $(SKRIBILO_BUILD_DIR)/ccwl.html $(DESTDIR)$(htmldir)

uninstall-local:
	rm -f $(DESTDIR)$(infodir)/ccwl.info $(DESTDIR)$(htmldir)/ccwl.html

# Build website

website: website/index.html website/manual/dev/en

website/index.html: README.org
	$(MKDIR_P) $(dir $@)
	$(EMACS) -Q --script build-aux/build-home-page.el

website/manual/dev/en: $(SKRIBILO_BUILD_DIR)/ccwl.html
	rm -rf $@
	cp -vr $< $@

# The clean target depends on clean-local. We use clean-local to clean
# up the website and the skribilo build directory.
clean-local:
	rm -rf website/index.html website/manual/dev/en $(SKRIBILO_BUILD_DIR)