aboutsummaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 6417ce9652484f933feeb64578f1d50d0195f726 (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
# guile-xapian --- Guile bindings for Xapian
# Copyright © 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
#
# This file is part of guile-xapian.
#
# guile-xapian 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 2 of the License, or
# (at your option) any later version.
#
# guile-xapian 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 guile-xapian.  If not, see
# <https://www.gnu.org/licenses/>.

# Prefix variables for silencing various commands. See "(automake)
# Automake Silent Rules" for details.

EMACS_GEN = $(EMACS_GEN_$(V))
EMACS_GEN_ = $(EMACS_GEN_$(AM_DEFAULT_VERBOSITY))
EMACS_GEN_0 = @echo "  EMACS" $@;
EMACS_GEN_1 =

# Xapian wrapper

lib_LTLIBRARIES = libguilexapian.la

BUILT_SOURCES = xapian_wrap.cc
libguilexapian_la_SOURCES = xapian_wrap.cc
libguilexapian_la_CXXFLAGS = $(GUILE_CFLAGS) $(XAPIAN_CFLAGS)
libguilexapian_la_LDFLAGS = $(GUILE_LIBS) $(XAPIAN_LIBS)

xapian.i: xapian.i.in Makefile
	sed 's|@libdir[@]|$(libdir)|g' $< > $@

xapian_wrap.cc: xapian.i xapian-head.i xapian-headers.i
	$(SWIG) $(SWIG_FLAGS) -scmstub -o $@ -guile -package xapian -c++ $<

xapian_wrap.scm: xapian_wrap.cc

# Guile code

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

SOURCES = xapian/wrap.scm xapian/xapian.scm
GOBJECTS = $(SOURCES:%.scm=%.go)

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

CLEANFILES = $(GOBJECTS)

GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
SUFFIXES = .scm .go
.scm.go:
	$(AM_V_GEN)$(top_builddir)/pre-inst-env $(GUILD) compile $(GUILE_WARNINGS) -o "$@" "$<"

# Building xapian/xapian.scm additionally requires the libguilexapian
# shared library.
xapian/xapian.go: xapian/xapian.scm libguilexapian.la

# Tests

TEST_EXTENSIONS = .scm
SCM_TESTS = tests/xapian.scm
TESTS = $(SCM_TESTS)

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

# Distribution

EXTRA_DIST = $(TESTS) $(SOURCES)

# Build website

website: website/index.html

CLEANFILES += website/index.html
website/index.html: README.org
	$(EMACS_GEN)$(EMACS) -Q --batch --load build-aux/build-home-page.el --funcall build-website