mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
build: integrate building ruby bindings into notmuch build process
Because ruby generates a Makefile, we have to use recursive make. Because mkmf.rb hardcodes the name Makefile, put our Makefile{.local} in the parent directory.
This commit is contained in:
parent
32fd74b7aa
commit
d038b93209
6 changed files with 51 additions and 2 deletions
|
@ -59,7 +59,7 @@ endif
|
||||||
FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
|
FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: notmuch notmuch-shared build-man
|
all: notmuch notmuch-shared build-man ruby-bindings
|
||||||
ifeq ($(MAKECMDGOALS),)
|
ifeq ($(MAKECMDGOALS),)
|
||||||
ifeq ($(shell cat .first-build-message 2>/dev/null),)
|
ifeq ($(shell cat .first-build-message 2>/dev/null),)
|
||||||
@NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
|
@NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
|
||||||
|
|
7
bindings/Makefile
Normal file
7
bindings/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# See Makefile.local for the list of files to be compiled in this
|
||||||
|
# directory.
|
||||||
|
all:
|
||||||
|
$(MAKE) -C .. all
|
||||||
|
|
||||||
|
.DEFAULT:
|
||||||
|
$(MAKE) -C .. $@
|
18
bindings/Makefile.local
Normal file
18
bindings/Makefile.local
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
dir := bindings
|
||||||
|
|
||||||
|
# force the shared library to be built
|
||||||
|
ruby-bindings: lib/libnotmuch.so
|
||||||
|
ifeq ($(HAVE_RUBY_DEV),1)
|
||||||
|
cd $(dir)/ruby && ruby extconf.rb --vendor
|
||||||
|
$(MAKE) -C $(dir)/ruby
|
||||||
|
else
|
||||||
|
@echo Missing dependency, skipping ruby bindings
|
||||||
|
endif
|
||||||
|
|
||||||
|
CLEAN += $(patsubst %,$(dir)/ruby/%, \
|
||||||
|
.RUBYARCHDIR.time \
|
||||||
|
Makefile database.o directory.o filenames.o\
|
||||||
|
init.o message.o messages.o mkmf.log notmuch.so query.o \
|
||||||
|
status.o tags.o thread.o threads.o)
|
7
bindings/ruby/README
Normal file
7
bindings/ruby/README
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
To build the the notmuch ruby extension, run the following commands
|
||||||
|
from the *top level* notmuch source directory:
|
||||||
|
|
||||||
|
% ./configure
|
||||||
|
% make ruby-bindings
|
||||||
|
|
||||||
|
The generic documentation about building notmuch also applies.
|
18
configure
vendored
18
configure
vendored
|
@ -21,6 +21,7 @@ srcdir=$(dirname "$0")
|
||||||
|
|
||||||
subdirs="util compat lib parse-time-string completion doc emacs"
|
subdirs="util compat lib parse-time-string completion doc emacs"
|
||||||
subdirs="${subdirs} performance-test test test/test-databases"
|
subdirs="${subdirs} performance-test test test/test-databases"
|
||||||
|
subdirs="${subdirs} bindings"
|
||||||
|
|
||||||
# For a non-srcdir configure invocation (such as ../configure), create
|
# For a non-srcdir configure invocation (such as ../configure), create
|
||||||
# the directory structure and copy Makefiles.
|
# the directory structure and copy Makefiles.
|
||||||
|
@ -474,6 +475,15 @@ else
|
||||||
have_doxygen=0
|
have_doxygen=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "Checking for ruby development files... "
|
||||||
|
if ruby -e "require 'mkmf'"> /dev/null 2>&1; then
|
||||||
|
printf "Yes.\n"
|
||||||
|
have_ruby_dev=1
|
||||||
|
else
|
||||||
|
printf "No (skipping ruby bindings)\n"
|
||||||
|
have_ruby_dev=0
|
||||||
|
fi
|
||||||
|
|
||||||
printf "Checking if sphinx is available and supports nroff output... "
|
printf "Checking if sphinx is available and supports nroff output... "
|
||||||
if command -v sphinx-build > /dev/null && ${python} -m sphinx.writers.manpage > /dev/null 2>&1 ; then
|
if command -v sphinx-build > /dev/null && ${python} -m sphinx.writers.manpage > /dev/null 2>&1 ; then
|
||||||
printf "Yes.\n"
|
printf "Yes.\n"
|
||||||
|
@ -887,6 +897,10 @@ HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name}
|
||||||
# build its own version)
|
# build its own version)
|
||||||
HAVE_GETLINE = ${have_getline}
|
HAVE_GETLINE = ${have_getline}
|
||||||
|
|
||||||
|
# Are the ruby development files (and ruby) available? If not skip
|
||||||
|
# building/testing ruby bindings.
|
||||||
|
HAVE_RUBY_DEV = ${have_ruby_dev}
|
||||||
|
|
||||||
# Whether the strcasestr function is available (if not, then notmuch will
|
# Whether the strcasestr function is available (if not, then notmuch will
|
||||||
# build its own version)
|
# build its own version)
|
||||||
HAVE_STRCASESTR = ${have_strcasestr}
|
HAVE_STRCASESTR = ${have_strcasestr}
|
||||||
|
@ -999,6 +1013,10 @@ NOTMUCH_HAVE_MAN=$((have_sphinx))
|
||||||
|
|
||||||
# Name of python interpreter
|
# Name of python interpreter
|
||||||
NOTMUCH_PYTHON=${python}
|
NOTMUCH_PYTHON=${python}
|
||||||
|
|
||||||
|
# Are the ruby development files (and ruby) available? If not skip
|
||||||
|
# building/testing ruby bindings.
|
||||||
|
NOTMUCH_HAVE_RUBY_DEV=${have_ruby_dev}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Finally, after everything configured, inform the user how to continue.
|
# Finally, after everything configured, inform the user how to continue.
|
||||||
|
|
1
debian/rules
vendored
1
debian/rules
vendored
|
@ -19,7 +19,6 @@ override_dh_auto_build:
|
||||||
dh_auto_build -- V=1
|
dh_auto_build -- V=1
|
||||||
dh_auto_build --sourcedirectory bindings/python
|
dh_auto_build --sourcedirectory bindings/python
|
||||||
cd bindings/python && $(python3_all) setup.py build
|
cd bindings/python && $(python3_all) setup.py build
|
||||||
cd bindings/ruby && ruby extconf.rb --vendor && make
|
|
||||||
$(MAKE) -C contrib/notmuch-mutt
|
$(MAKE) -C contrib/notmuch-mutt
|
||||||
|
|
||||||
override_dh_auto_clean:
|
override_dh_auto_clean:
|
||||||
|
|
Loading…
Reference in a new issue