aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings
diff options
context:
space:
mode:
authorGravatar Felipe Contreras <felipe.contreras@gmail.com>2013-05-20 07:24:23 -0500
committerGravatar David Bremner <bremner@debian.org>2013-05-23 08:15:20 -0300
commit8c3d19313e590590db3ecfe0fb7177f4f6aee023 (patch)
tree2fdb1f960ed5390d34f1260312644a2eccbbea7a /bindings
parent68720286ebc5bf53c2b89a3486b7fcd691443783 (diff)
ruby: use in-tree notmuch library
Currently it simply finds any library available, and if notmuch is installed in the system, it would give priority to that library. Let's implement our own helper functions to link directly to the local library, and give priority to the local header file. Also, add an option to properly check if there are missing symbols. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Diffstat (limited to 'bindings')
-rw-r--r--bindings/ruby/extconf.rb23
1 files changed, 20 insertions, 3 deletions
diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb
index 7b9750f2..6160db26 100644
--- a/bindings/ruby/extconf.rb
+++ b/bindings/ruby/extconf.rb
@@ -5,9 +5,26 @@
require 'mkmf'
-# Notmuch Library
-find_header('notmuch.h', '../../lib')
-find_library('notmuch', 'notmuch_database_create', '../../lib')
+dir = File.join('..', '..', 'lib')
+
+# includes
+$INCFLAGS = "-I#{dir} #{$INCFLAGS}"
+
+# make sure there are no undefined symbols
+$LDFLAGS += ' -Wl,--no-undefined'
+
+def have_local_library(lib, path, func, headers = nil)
+ checking_for checking_message(func, lib) do
+ lib = File.join(path, lib)
+ if try_func(func, lib, headers)
+ $LOCAL_LIBS += lib
+ end
+ end
+end
+
+if not have_local_library('libnotmuch.so', dir, 'notmuch_database_create', 'notmuch.h')
+ exit 1
+end
# Create Makefile
dir_config('notmuch')