From db6f96c7c0ee74f0152aca95abf80040cc25c1b4 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Sun, 23 Feb 2020 18:47:06 +0530 Subject: Load libguilexapian with absolute path or through a search path. * xapian.i: Rename to xapian.i.in. * xapian.i.in: Try loading libguilexapian with absolute path first. If it fails, then try searching using LD_LIBRARY_PATH and other mechanisms. * Makefile.am: Generate xapian.i from xapian.i.in. --- Makefile.am | 3 +++ xapian.i | 31 ------------------------------- xapian.i.in | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 31 deletions(-) delete mode 100644 xapian.i create mode 100644 xapian.i.in diff --git a/Makefile.am b/Makefile.am index fa41918..71f83da 100644 --- a/Makefile.am +++ b/Makefile.am @@ -26,6 +26,9 @@ 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++ $< diff --git a/xapian.i b/xapian.i deleted file mode 100644 index 9c1a347..0000000 --- a/xapian.i +++ /dev/null @@ -1,31 +0,0 @@ -/* guile-xapian --- Guile bindings for Xapian - * Copyright © 2020 Arun Isaac - * - * 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 - * . - */ - -%module wrap -%{ -%} - -%scheme -%{ -(load-extension "libguilexapian" "SWIG_init") -%} - -%include xapian-head.i -%include xapian-headers.i diff --git a/xapian.i.in b/xapian.i.in new file mode 100644 index 0000000..1832786 --- /dev/null +++ b/xapian.i.in @@ -0,0 +1,38 @@ +/* guile-xapian --- Guile bindings for Xapian + * Copyright © 2020 Arun Isaac + * + * 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 + * . + */ + +%module wrap +%{ +%} + +%scheme +%{ +;; Try loading the shared library by absolute path. If that fails, try +;; searching for it using LD_LIBRARY_PATH and other mechanisms. We do this +;; so that guile-xapian finds libguilexapian both before and after installation. +(catch #t + (lambda () + (load-extension "@libdir@/libguilexapian" "SWIG_init")) + (lambda _ + (load-extension "libguilexapian" "SWIG_init"))) +%} + +%include xapian-head.i +%include xapian-headers.i -- cgit v1.2.3