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. --- bindings/Makefile | 7 +++++++ bindings/Makefile.local | 18 ++++++++++++++++++ configure | 18 ++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 bindings/Makefile create mode 100644 bindings/Makefile.local diff --git a/bindings/Makefile b/bindings/Makefile new file mode 100644 index 0000000..de492a7 --- /dev/null +++ b/bindings/Makefile @@ -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 .. $@ diff --git a/bindings/Makefile.local b/bindings/Makefile.local new file mode 100644 index 0000000..f395c81 --- /dev/null +++ b/bindings/Makefile.local @@ -0,0 +1,18 @@ +# -*- makefile -*- + +dir := bindings + +# force the shared library to be build +ruby-bindings: lib/libnotmuch.so +ifeq ($(HAVE_RUBY_DEV),1) + cd $(dir)/ruby && ruby extconf.rb + $(MAKE) -C $(dir)/ruby +else + @echo Missing dependency, skipping ruby bindings +endif + +CLEAN += $(patsubst %,$(dir)/ruby/%, \ + 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) + diff --git a/configure b/configure index d14e7d1..7df3b29 100755 --- a/configure +++ b/configure @@ -21,6 +21,7 @@ srcdir=$(dirname "$0") subdirs="util compat lib parse-time-string completion doc emacs" subdirs="${subdirs} performance-test test test/test-databases" +subdirs="${subdirs} bindings" # For a non-srcdir configure invocation (such as ../configure), create # the directory structure and copy Makefiles. @@ -426,6 +427,15 @@ else have_doxygen=0 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... " if hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then printf "Yes.\n" @@ -848,6 +858,10 @@ HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name} # build its own version) 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 # build its own version) HAVE_STRCASESTR = ${have_strcasestr} @@ -958,6 +972,10 @@ NOTMUCH_HAVE_XAPIAN_COMPACT=${have_xapian_compact} # Whether there's either sphinx or rst2man available for building # documentation NOTMUCH_HAVE_MAN=$((have_sphinx || have_rst2man)) + +# Are the ruby development files (and ruby) available? If not skip +# building/testing ruby bindings. +NOTMUCH_HAVE_RUBY_DEV=${have_ruby_dev} EOF # Finally, after everything configured, inform the user how to continue. -- 2.1.3