aboutsummaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 625f270b7ccb2aa43403a8c60906d596b3a544a3 (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
# guile-xapian --- Guile bindings for Xapian
# Copyright © 2020–2024 Arun Isaac <arunisaac@systemreboot.net>
# Copyright © 2022 Bob131 <bob@bob131.so>
#
# 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/>.

GPG = gpg

# 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 =

GUILD_GEN = $(GUILD_GEN_$(V))
GUILD_GEN_ = $(GUILD_GEN_$(AM_DEFAULT_VERBOSITY))
GUILD_GEN_0 = @echo "  GUILD   " $@;
GUILD_GEN_1 =

SWIG_GEN = $(SWIG_GEN_$(V))
SWIG_GEN_ = $(SWIG_GEN_$(AM_DEFAULT_VERBOSITY))
SWIG_GEN_0 = @echo "  SWIG    " $@;
SWIG_GEN_1 =

# Xapian wrapper

lib_LTLIBRARIES = libguilexapian-@GUILE_EFFECTIVE_VERSION@.la

BUILT_SOURCES = xapian_wrap.cc xapian/wrap.scm
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_SOURCES = xapian_wrap.cc
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_CXXFLAGS = $(GUILE_CFLAGS) $(XAPIAN_CFLAGS)
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_LDFLAGS = $(GUILE_LIBS) $(XAPIAN_LIBS)

CLEANFILES = xapian.i xapian_wrap.cc xapian/wrap.scm

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

xapian_wrap.cc xapian/wrap.scm &: xapian.i xapian-head.i xapian-headers.i except.i
	$(MKDIR_P) xapian
	$(SWIG_GEN)$(SWIG) $(SWIG_FLAGS) -I$(srcdir) -scmstub -o xapian_wrap.cc -guile -package xapian -c++ $<

# Guile code

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

SOURCES = xapian/error.scm 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
%.go: %.scm
	$(GUILD_GEN)$(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-@GUILE_EFFECTIVE_VERSION@.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) except.i xapian.i.in xapian-head.i xapian-headers.i

%.asc: %
	$(GPG) --detach-sign --armor $<

# 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