From d2f7f1171547a53ab606310e953e643aa237de17 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Sat, 29 Dec 2012 14:27:01 +0100 Subject: [PATCH] Use dynamic lib for shared recoll code --- .hgignore | 4 +- src/Makefile.in | 2 +- src/aspell/Makefile | 20 +---- src/bincimapmime/Makefile | 10 +-- src/common/Makefile | 23 +++--- src/common/rclconfig.cpp | 4 +- src/common/textsplit.cpp | 4 +- src/common/unacpp.cpp | 2 + src/configure | 5 +- src/configure.ac | 4 +- src/doc/user/usermanual.sgml | 2 +- src/index/Makefile | 31 +++----- src/internfile/Makefile | 16 +--- src/internfile/internfile.cpp | 3 +- src/kde/kioslave/kio_recoll/CMakeLists.txt | 2 +- src/lib/Makefile | 20 +++-- src/lib/mkMake | 24 +++--- src/mk/commondefs | 3 +- src/mk/commontargets | 14 ++++ src/mk/localdefs.in | 2 + src/php/recoll/config.m4 | 2 +- src/python/recoll/Makefile | 1 + src/python/recoll/setup.py.in | 6 +- src/qtgui/recoll.pro.in | 11 +-- src/query/Makefile | 39 ++++------ src/rcldb/Makefile | 19 ++--- src/recollinstall.in | 5 ++ src/utils/Makefile | 91 +++++++++++----------- 28 files changed, 173 insertions(+), 196 deletions(-) create mode 100644 src/mk/commontargets diff --git a/.hgignore b/.hgignore index f6b57d10..0f181a9e 100644 --- a/.hgignore +++ b/.hgignore @@ -75,10 +75,12 @@ src/index/alldeps.stamp src/index/recollindex src/kde/kioslave/kio_recoll/builddir src/lib/alldeps -src/lib/librcl.a +src/lib/librecoll.a +src/lib/librecoll.so* src/mk/localdefs src/mk/sysconf src/python/recoll/build +src/python/recoll/recoll/__init__.pyc src/python/recoll/setup.py src/python/samples/recollgui/rclmain.py src/python/samples/recollgui/rclmain.pyc diff --git a/src/Makefile.in b/src/Makefile.in index 10fbe865..6dc8de7a 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -17,7 +17,7 @@ all: mk/sysconf @NOQTMAKE@(cd $(QTGUI); ${QMAKE} recoll.pro) @NOQTMAKE@${MAKE} -C $(QTGUI) depth=.. @NOPYTHON@${MAKE} -C python/recoll - ${MAKE} -C query recollq + ${MAKE} -C query recollq xadump mk/sysconf: @echo "You need to run configure first" ; exit 1 diff --git a/src/aspell/Makefile b/src/aspell/Makefile index bdbe5cd7..554cd226 100644 --- a/src/aspell/Makefile +++ b/src/aspell/Makefile @@ -4,28 +4,16 @@ include $(depth)/mk/sysconf PROGS = rclaspell SRCS = rclaspell.cpp -all: depend $(BIGLIB) $(PROGS) +all: depend $(PROGS) librecoll -RCLASPELL_OBJS= trrclaspell.o $(BIGLIB) +RCLASPELL_OBJS= trrclaspell.o rclaspell : $(RCLASPELL_OBJS) $(CXX) $(ALL_CXXFLAGS) -o rclaspell $(RCLASPELL_OBJS) \ - $(LIBXAPIAN) $(LIBICONV) + $(LIBRECOLL) $(LIBXAPIAN) $(LIBICONV) trrclaspell.o : rclaspell.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_RCLASPELL -c -o trrclaspell.o \ rclaspell.cpp -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - -depend: alldeps.stamp -alldeps.stamp : $(SRCS) - $(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps - touch alldeps.stamp - -clean: - cp /dev/null alldeps - rm -f alldeps.stamp - rm -f *.o $(PROGS) +include $(depth)/mk/commontargets include alldeps diff --git a/src/bincimapmime/Makefile b/src/bincimapmime/Makefile index 485fadb4..1faa5898 100644 --- a/src/bincimapmime/Makefile +++ b/src/bincimapmime/Makefile @@ -26,14 +26,6 @@ TRBINCOBJS = trbinc.o trbinc: trbinc.o $(CXX) -o trbinc trbinc.o libmime.a -depend: alldeps.stamp -alldeps.stamp : $(SRCS) - $(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps - touch alldeps.stamp - -clean: - cp /dev/null alldeps - rm -f alldeps.stamp - rm -f ${LIBS} ${PROGS} ${OBJS} +include $(depth)/mk/commontargets include alldeps diff --git a/src/common/Makefile b/src/common/Makefile index fcc3a943..cd37018e 100644 --- a/src/common/Makefile +++ b/src/common/Makefile @@ -1,38 +1,33 @@ -# @(#$Id: Makefile,v 1.16 2008-12-17 14:26:49 dockes Exp $ (C) 2005 J.F.Dockes depth = .. include $(depth)/mk/sysconf # Only test executables get build in here PROGS = unacpp textsplit rclconfig -all: $(BIGLIB) $(PROGS) +all: librecoll $(PROGS) -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - -UNACPP_OBJS= trunacpp.o $(BIGLIB) +UNACPP_OBJS= trunacpp.o unacpp : $(UNACPP_OBJS) $(CXX) $(ALL_CXXFLAGS) -o unacpp $(UNACPP_OBJS) \ - $(LIBICONV) + $(LIBRECOLL) $(LIBICONV) trunacpp.o : unacpp.cpp unacpp.h $(CXX) $(ALL_CXXFLAGS) -DTEST_UNACPP -c -o trunacpp.o unacpp.cpp -TEXTSPLIT_OBJS= trtextsplit.o $(BIGLIB) +TEXTSPLIT_OBJS= trtextsplit.o textsplit : $(TEXTSPLIT_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o textsplit $(TEXTSPLIT_OBJS) $(LIBICONV) + $(CXX) $(ALL_CXXFLAGS) -o textsplit $(TEXTSPLIT_OBJS) \ + $(LIBRECOLL) $(LIBICONV) trtextsplit.o : textsplit.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_TEXTSPLIT -c -o trtextsplit.o \ textsplit.cpp -RCLCONFIG_OBJS= trrclconfig.o $(BIGLIB) +RCLCONFIG_OBJS= trrclconfig.o rclconfig : $(RCLCONFIG_OBJS) $(CXX) $(ALL_CXXFLAGS) -o rclconfig $(RCLCONFIG_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trrclconfig.o : rclconfig.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_RCLCONFIG -c -o trrclconfig.o \ rclconfig.cpp -clean: - rm -f *.o $(PROGS) +include $(depth)/mk/commontargets diff --git a/src/common/rclconfig.cpp b/src/common/rclconfig.cpp index cd71e412..22317580 100644 --- a/src/common/rclconfig.cpp +++ b/src/common/rclconfig.cpp @@ -1383,7 +1383,7 @@ int main(int argc, char **argv) // List mime types not in mimeview for (vector::const_iterator it = mtypes.begin(); it != mtypes.end(); it++) { - if (config->getMimeViewerDef(*it, "").empty()) { + if (config->getMimeViewerDef(*it, "", false).empty()) { cout << "No viewer: [" << *it << "]" << endl; } } @@ -1399,7 +1399,7 @@ int main(int argc, char **argv) // Check that each mime type has a defined icon for (vector::const_iterator it = mtypes.begin(); it != mtypes.end(); it++) { - if (config->getMimeIconName(*it) == "document") { + if (config->getMimeIconPath(*it, "") == "document") { cout << "No or generic icon: [" << *it << "]" << endl; } } diff --git a/src/common/textsplit.cpp b/src/common/textsplit.cpp index beee33bb..d5f9291c 100644 --- a/src/common/textsplit.cpp +++ b/src/common/textsplit.cpp @@ -837,10 +837,12 @@ bool TextSplit::stringToStrings(const string &s, vector &tokens) #else // TEST driver -> +#include +#include #include #include #include -#include +#include #include diff --git a/src/common/unacpp.cpp b/src/common/unacpp.cpp index 015752f8..837786de 100644 --- a/src/common/unacpp.cpp +++ b/src/common/unacpp.cpp @@ -121,6 +121,8 @@ bool unachasaccents(const string& in) #else // not testing +#include +#include #include #include #include diff --git a/src/configure b/src/configure index 378915f1..83da9090 100755 --- a/src/configure +++ b/src/configure @@ -621,6 +621,7 @@ ac_includes_default="\ ac_subst_vars='LTLIBOBJS LIBOBJS +RCLLIBVERSION RCLVERSION NOPYTHON NOTHREADS @@ -5719,6 +5720,8 @@ m_datadir=${m_prefix}/share QTRECOLL_DATADIR=${m_datadir}/recoll RCLVERSION=`cat VERSION` +RCLLIBVERSION=$RCLVERSION + @@ -5769,7 +5772,7 @@ do cp -f /dev/null $d/alldeps done -(cd lib;test -f Makefile && chmod +w Makefile;sh mkMake) +(cd lib;RCLLIBVERSION=$RCLLIBVERSION sh mkMake) cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure diff --git a/src/configure.ac b/src/configure.ac index 9a82d65f..e584b380 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -533,6 +533,7 @@ m_datadir=${m_prefix}/share QTRECOLL_DATADIR=${m_datadir}/recoll RCLVERSION=`cat VERSION` +RCLLIBVERSION=$RCLVERSION AC_SUBST(X_CFLAGS) AC_SUBST(X_PRE_LIBS) @@ -561,6 +562,7 @@ AC_SUBST(NOPIC) AC_SUBST(NOTHREADS) AC_SUBST(NOPYTHON) AC_SUBST(RCLVERSION) +AC_SUBST(RCLLIBVERSION) # All object files depend on localdefs which has the cc flags. Avoid # changing it unless necessary @@ -577,7 +579,7 @@ do cp -f /dev/null $d/alldeps done -(cd lib;test -f Makefile && chmod +w Makefile;sh mkMake) +(cd lib;RCLLIBVERSION=$RCLLIBVERSION sh mkMake) AC_OUTPUT diff --git a/src/doc/user/usermanual.sgml b/src/doc/user/usermanual.sgml index 666327eb..795dd0c3 100644 --- a/src/doc/user/usermanual.sgml +++ b/src/doc/user/usermanual.sgml @@ -2542,7 +2542,7 @@ text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/r dc:title:grandet The colon, if present, means "contains". Xesam defines other - relations, which are mostly supported for now (except in special + relations, which are mostly unsupported for now (except in special cases, described further down). All elements in the search entry are normally combined diff --git a/src/index/Makefile b/src/index/Makefile index e334521a..40f82ee3 100644 --- a/src/index/Makefile +++ b/src/index/Makefile @@ -4,12 +4,13 @@ include $(depth)/mk/sysconf PROGS = recollindex SRCS = recollindex.cpp rclmonrcv.cpp rclmonprc.cpp -all: depend $(PROGS) $(BIGLIB) +all: depend $(PROGS) librecoll -RECOLLINDEX_OBJS= recollindex.o rclmonrcv.o rclmonprc.o $(BIGLIB) -recollindex : $(RECOLLINDEX_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o recollindex $(RECOLLINDEX_OBJS) \ - $(BSTATIC) $(LIBXAPIAN) $(LIBXAPIANSTATICEXTRA) \ +RECOLLINDEX_OBJS= recollindex.o rclmonrcv.o rclmonprc.o +recollindex : $(RECOLLINDEX_OBJS) librecoll + $(CXX) $(ALL_CXXFLAGS) $(RECOLL_LDFLAGS) -o recollindex \ + $(RECOLLINDEX_OBJS) \ + $(BSTATIC) $(LIBRECOLL) $(LIBXAPIAN) $(LIBXAPIANSTATICEXTRA) \ $(LIBICONV) $(BDYNAMIC) \ $(LIBFAM) \ $(X_LIBS) $(X_PRE_LIBS) $(X_LIBX11) $(X_EXTRA_LIBS) \ @@ -21,33 +22,21 @@ rclmonrcv.o : rclmonrcv.cpp rclmonprc.o : rclmonprc.cpp $(CXX) $(ALL_CXXFLAGS) -c -o rclmonprc.o $< -SUBTREELIST_OBJS= subtreelist.o $(BIGLIB) +SUBTREELIST_OBJS= subtreelist.o subtreelist : $(SUBTREELIST_OBJS) $(CXX) $(ALL_CXXFLAGS) -o subtreelist $(SUBTREELIST_OBJS) \ - $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) subtreelist.o : subtreelist.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_SUBTREELIST -c subtreelist.cpp MIMETYPE_OBJS= trmimetype.o $(BIGLIB) mimetype : $(MIMETYPE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o mimetype $(MIMETYPE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trmimetype.o : mimetype.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_MIMETYPE -c -o trmimetype.o \ mimetype.cpp -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - -depend: alldeps.stamp -alldeps.stamp : $(SRCS) - $(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps - touch alldeps.stamp - -clean: - cp /dev/null alldeps - rm -f alldeps.stamp - rm -f *.o $(PROGS) +include $(depth)/mk/commontargets include alldeps diff --git a/src/internfile/Makefile b/src/internfile/Makefile index 49a6ab73..aa6cb90f 100644 --- a/src/internfile/Makefile +++ b/src/internfile/Makefile @@ -1,20 +1,15 @@ -# @(#$Id: Makefile,v 1.4 2008-11-24 15:47:40 dockes Exp $ (C) 2005 J.F.Dockes depth = .. include $(depth)/mk/sysconf # Only test executables get build in here PROGS = mh_mbox internfile -all: $(BIGLIB) $(PROGS) - -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: +all: librecoll $(PROGS) INTERNFILE_OBJS= trinternfile.o $(BIGLIB) internfile : $(INTERNFILE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o internfile $(INTERNFILE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trinternfile.o : internfile.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_INTERNFILE -c -o trinternfile.o \ internfile.cpp @@ -22,12 +17,9 @@ trinternfile.o : internfile.cpp MH_MBOX_OBJS= trmh_mbox.o $(BIGLIB) mh_mbox : $(MH_MBOX_OBJS) $(CXX) $(ALL_CXXFLAGS) -o mh_mbox $(MH_MBOX_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trmh_mbox.o : mh_mbox.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_MH_MBOX -c -o trmh_mbox.o \ mh_mbox.cpp - -clean: - rm -f *.o $(PROGS) - +include $(depth)/mk/commontargets diff --git a/src/internfile/internfile.cpp b/src/internfile/internfile.cpp index 2c20b0b6..5500c42a 100644 --- a/src/internfile/internfile.cpp +++ b/src/internfile/internfile.cpp @@ -1216,7 +1216,8 @@ int main(int argc, char **argv) perror("stat"); exit(1); } - FileInterner interner(fn, &st, config, "/tmp", 0); + TempDir tmp; + FileInterner interner(fn, &st, config, tmp, 0); Rcl::Doc doc; FileInterner::Status status = interner.internfile(doc, ipath); switch (status) { diff --git a/src/kde/kioslave/kio_recoll/CMakeLists.txt b/src/kde/kioslave/kio_recoll/CMakeLists.txt index 8e357ee8..bb452028 100644 --- a/src/kde/kioslave/kio_recoll/CMakeLists.txt +++ b/src/kde/kioslave/kio_recoll/CMakeLists.txt @@ -54,7 +54,7 @@ add_custom_target(rcllib ) add_dependencies(kio_recoll rcllib) -target_link_libraries(kio_recoll rcl xapian z ${EXTRA_LIBS} ${KDE4_KIO_LIBS}) +target_link_libraries(kio_recoll recoll xapian z ${EXTRA_LIBS} ${KDE4_KIO_LIBS}) install(TARGETS kio_recoll DESTINATION ${PLUGIN_INSTALL_DIR}) diff --git a/src/lib/Makefile b/src/lib/Makefile index 00172524..be46b2d5 100644 --- a/src/lib/Makefile +++ b/src/lib/Makefile @@ -2,21 +2,25 @@ depth = .. include $(depth)/mk/sysconf -LIBS = librcl.a +LIBRECOLL=librecoll.so.$(RCLLIBVERSION) +LIBS = librecoll.a $(LIBRECOLL) all: $(LIBS) OBJS = rclaspell.o beaglequeuecache.o cstr.o rclconfig.o rclinit.o textsplit.o unacpp.o beaglequeue.o bglfetcher.o fetcher.o fsfetcher.o fsindexer.o indexer.o mimetype.o subtreelist.o htmlparse.o internfile.o mh_exec.o mh_execm.o mh_html.o mh_mail.o mh_mbox.o mh_text.o mimehandler.o myhtmlparse.o txtdcode.o docseq.o docseqdb.o docseqhist.o filtseq.o dynconf.o plaintorich.o recollq.o reslistpager.o sortseq.o wasastringtoquery.o wasatorcl.o daterange.o expansiondbs.o rclabstract.o rcldb.o rcldoc.o rclquery.o searchdata.o searchdataxml.o stemdb.o stoplist.o synfamily.o unac.o base64.o circache.o closefrom.o conftree.o copyfile.o debuglog.o ecrontab.o execmd.o fstreewalk.o idfile.o fileudi.o md5.o mimeparse.o netcon.o pathut.o pxattr.o rclionice.o readfile.o smallut.o transcode.o wipedir.o x11mon.o mime-parsefull.o mime-parseonlyheader.o mime-printbody.o mime.o convert.o iodevice.o iofactory.o DEPS = rclaspell.dep.stamp beaglequeuecache.dep.stamp cstr.dep.stamp rclconfig.dep.stamp rclinit.dep.stamp textsplit.dep.stamp unacpp.dep.stamp beaglequeue.dep.stamp bglfetcher.dep.stamp fetcher.dep.stamp fsfetcher.dep.stamp fsindexer.dep.stamp indexer.dep.stamp mimetype.dep.stamp subtreelist.dep.stamp htmlparse.dep.stamp internfile.dep.stamp mh_exec.dep.stamp mh_execm.dep.stamp mh_html.dep.stamp mh_mail.dep.stamp mh_mbox.dep.stamp mh_text.dep.stamp mimehandler.dep.stamp myhtmlparse.dep.stamp txtdcode.dep.stamp docseq.dep.stamp docseqdb.dep.stamp docseqhist.dep.stamp filtseq.dep.stamp dynconf.dep.stamp plaintorich.dep.stamp recollq.dep.stamp reslistpager.dep.stamp sortseq.dep.stamp wasastringtoquery.dep.stamp wasatorcl.dep.stamp daterange.dep.stamp expansiondbs.dep.stamp rclabstract.dep.stamp rcldb.dep.stamp rcldoc.dep.stamp rclquery.dep.stamp searchdata.dep.stamp searchdataxml.dep.stamp stemdb.dep.stamp stoplist.dep.stamp synfamily.dep.stamp unac.dep.stamp base64.dep.stamp circache.dep.stamp closefrom.dep.stamp conftree.dep.stamp copyfile.dep.stamp debuglog.dep.stamp ecrontab.dep.stamp execmd.dep.stamp fstreewalk.dep.stamp idfile.dep.stamp fileudi.dep.stamp md5.dep.stamp mimeparse.dep.stamp netcon.dep.stamp pathut.dep.stamp pxattr.dep.stamp rclionice.dep.stamp readfile.dep.stamp smallut.dep.stamp transcode.dep.stamp wipedir.dep.stamp x11mon.dep.stamp mime-parsefull.dep.stamp mime-parseonlyheader.dep.stamp mime-printbody.dep.stamp mime.dep.stamp convert.dep.stamp iodevice.dep.stamp iofactory.dep.stamp -librcl.a : $(DEPS) $(OBJS) - ar ru librcl.a $(OBJS) - $(RANLIB) librcl.a +librecoll.a : $(DEPS) $(OBJS) + ar ru librecoll.a $(OBJS) + $(RANLIB) librecoll.a -# Future -#all: librecoll.so -#librecoll.so : $(DEPS) $(OBJS) -# g++ -shared -Wl,--no-undefined # -Wl,-soname=librecoll.so.1 -o librecoll.so $(OBJS) # -lxapian -lz -lX11 -lpthread -ldl +# Note that we are using the Recoll release number in the soname. There is +# no effort whatsoever to maintain any kind of ABI compat in this lib. Only +# programs or modules from the same Recoll release can be compatible. +$(LIBRECOLL): $(DEPS) $(OBJS) + g++ -shared -Wl,--no-undefined -Wl,-rpath=$(libdir) -Wl,-soname=$(LIBRECOLL) -o $(LIBRECOLL) $(OBJS) -lxapian -lz -lX11 -lpthread -ldl + rm -f librecoll.so + ln -s $(LIBRECOLL) librecoll.so rclaspell.o : ../aspell/rclaspell.cpp $(depth)/mk/localdefs $(CXX) $(ALL_CXXFLAGS) -c ../aspell/rclaspell.cpp diff --git a/src/lib/mkMake b/src/lib/mkMake index 3b6d55f7..1d471ad2 100755 --- a/src/lib/mkMake +++ b/src/lib/mkMake @@ -115,23 +115,27 @@ cat > $mk < alldeps + touch alldeps.stamp + +clean: + cp /dev/null alldeps + rm -f alldeps.stamp + rm -f *.o ${LIBS} ${PROGS} ${OBJS} + diff --git a/src/mk/localdefs.in b/src/mk/localdefs.in index e56c711c..be11f716 100644 --- a/src/mk/localdefs.in +++ b/src/mk/localdefs.in @@ -10,6 +10,8 @@ INCICONV=@INCICONV@ LIBFAM = @LIBFAM@ +RCLLIBVERSION=@RCLLIBVERSION@ + X_CFLAGS=@X_CFLAGS@ X_PRE_LIBS=@X_PRE_LIBS@ X_LIBS=@X_LIBS@ diff --git a/src/php/recoll/config.m4 b/src/php/recoll/config.m4 index 32301354..785e8866 100644 --- a/src/php/recoll/config.m4 +++ b/src/php/recoll/config.m4 @@ -11,7 +11,7 @@ if test $PHP_RECOLL != "no"; then PHP_ADD_INCLUDE(../../query) PHP_ADD_INCLUDE(../../unac) PHP_ADD_INCLUDE(../../internfile) - PHP_ADD_LIBRARY_WITH_PATH(rcl, ../../lib, RECOLL_SHARED_LIBADD) + PHP_ADD_LIBRARY_WITH_PATH(recoll, ../../lib, RECOLL_SHARED_LIBADD) PHP_ADD_LIBRARY(xapian, , RECOLL_SHARED_LIBADD) PHP_ADD_LIBRARY(stdc++, 1, RECOLL_SHARED_LIBADD) PHP_NEW_EXTENSION(recoll, recoll.cpp, $ext_shared) diff --git a/src/python/recoll/Makefile b/src/python/recoll/Makefile index 0f9c8a45..ed063bba 100644 --- a/src/python/recoll/Makefile +++ b/src/python/recoll/Makefile @@ -4,5 +4,6 @@ install: sudo python setup.py install clean: rm -rf build + rm -f recoll/__init__.pyc distclean: clean rm -f setup.py diff --git a/src/python/recoll/setup.py.in b/src/python/recoll/setup.py.in index 92ee076b..4c429848 100644 --- a/src/python/recoll/setup.py.in +++ b/src/python/recoll/setup.py.in @@ -8,9 +8,9 @@ top = os.path.join('..', '..') libiconv = "@LIBICONV@" if libiconv.find("-liconv") != -1: - libs = ['rcl', 'xapian', 'iconv'] + libs = ['recoll', 'xapian', 'iconv'] else: - libs = ['rcl', 'xapian'] + libs = ['recoll', 'xapian'] libxapiandir="@LIBXAPIANDIR@" if libxapiandir != "": @@ -50,6 +50,7 @@ module1 = Extension('recoll', ], libraries = libs, library_dirs = libdirs, + runtime_library_dirs = libdirs, sources = ['pyrecoll.cpp']) module2 = Extension('rclextract', @@ -66,6 +67,7 @@ module2 = Extension('rclextract', ], libraries = libs, library_dirs = libdirs, + runtime_library_dirs = libdirs, sources = ['pyrclextract.cpp']) setup (name = 'Recoll', diff --git a/src/qtgui/recoll.pro.in b/src/qtgui/recoll.pro.in index 7a6b5ce4..fa5bfa17 100644 --- a/src/qtgui/recoll.pro.in +++ b/src/qtgui/recoll.pro.in @@ -80,16 +80,17 @@ unix { UI_DIR = .ui MOC_DIR = .moc OBJECTS_DIR = .obj - - LIBS += ../lib/librcl.a \ - $(BSTATIC) @LIBXAPIAN@ $(LIBXAPIANSTATICEXTRA) @LIBICONV@ $(BDYNAMIC) \ - @LIBQZEITGEIST@ -lz + # Expanding prefix here is not good as it means that it can't be + # redefined at make time. + LIBS += $(BSTATIC) -L../lib -lrecoll -Wl,-rpath=@prefix@/lib \ + @LIBXAPIAN@ $(LIBXAPIANSTATICEXTRA) \ + @LIBICONV@ $(BDYNAMIC) @LIBQZEITGEIST@ -lz INCLUDEPATH += ../common ../index ../internfile ../query ../unac \ ../utils ../aspell ../rcldb ../qtgui \ confgui DEPENDPATH += $$INCLUDEPATH - POST_TARGETDEPS = ../lib/librcl.a + POST_TARGETDEPS = ../lib/librecoll.a } UNAME = $$system(uname -s) diff --git a/src/query/Makefile b/src/query/Makefile index 06d953e7..aa935816 100644 --- a/src/query/Makefile +++ b/src/query/Makefile @@ -2,22 +2,22 @@ depth = .. include $(depth)/mk/sysconf PROGS = xadump recollq #trhist qtry qxtry +SRCS = xadump.cpp -all: $(PROGS) +all: depend $(PROGS) librecoll -SRCS = xadump.cpp rclqlang.cpp -.cpp.o : - $(CXX) -c $(ALL_CXXFLAGS) -o $@ $< - -XADUMP_OBJS= xadump.o $(BIGLIB) +XADUMP_OBJS= xadump.o xadump : $(XADUMP_OBJS) $(CXX) $(ALL_CXXFLAGS) -o xadump $(XADUMP_OBJS) \ - $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) + $(depth)/lib/librecoll.a $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) +xadump.o : xadump.cpp + $(CXX) $(ALL_CXXFLAGS) -c xadump.cpp -RECOLLQ_OBJS= recollq.o $(BIGLIB) -recollq : $(RECOLLQ_OBJS) +RECOLLQ_OBJS= recollq.o +recollq : $(RECOLLQ_OBJS) librecoll $(CXX) $(ALL_CXXFLAGS) -o recollq $(RECOLLQ_OBJS) \ - $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) + $(BSTATIC) $(LIBRECOLL) $(LIBXAPIAN) $(LIBICONV) $(BDYNAMIC) \ + $(LIBSYS) recollq.o : recollq.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_RECOLLQ -c recollq.cpp @@ -28,27 +28,14 @@ trhist : $(HISTORY_OBJS) trhist.o : history.cpp history.h $(CXX) $(ALL_CXXFLAGS) -DTEST_HISTORY -c -o trhist.o history.cpp -WASASTRINGTOQUERY_OBJS= trwasastrtoq.o $(BIGLIB) +WASASTRINGTOQUERY_OBJS= trwasastrtoq.o trwasastrtoq : $(WASASTRINGTOQUERY_OBJS) $(CXX) $(ALL_CXXFLAGS) -o trwasastrtoq $(WASASTRINGTOQUERY_OBJS) \ - $(LIBICONV) $(LIBXAPIAN) + $(LIBRECOLL) $(LIBICONV) $(LIBXAPIAN) trwasastrtoq.o : wasastringtoquery.cpp wasastringtoquery.h $(CXX) $(ALL_CXXFLAGS) -DTEST_WASASTRINGTOQUERY -c \ -o trwasastrtoq.o wasastringtoquery.cpp -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - - -depend: alldeps.stamp -alldeps.stamp : $(SRCS) - $(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps - touch alldeps.stamp - -clean: - cp /dev/null alldeps - rm -f alldeps.stamp - rm -f *.o $(PROGS) +include $(depth)/mk/commontargets include alldeps diff --git a/src/rcldb/Makefile b/src/rcldb/Makefile index bee50bc5..bec225fa 100644 --- a/src/rcldb/Makefile +++ b/src/rcldb/Makefile @@ -1,32 +1,25 @@ -# @(#$Id: Makefile,v 1.1 2007-06-02 08:30:42 dockes Exp $ (C) 2005 J.F.Dockes depth = .. include $(depth)/mk/sysconf # Only test executables get build in here PROGS = synfamily stoplist -all: $(BIGLIB) $(PROGS) +all: librecoll $(PROGS) -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - -STOPLIST_OBJS= trstoplist.o $(BIGLIB) +STOPLIST_OBJS= trstoplist.o stoplist : $(STOPLIST_OBJS) $(CXX) $(ALL_CXXFLAGS) -o stoplist $(STOPLIST_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trstoplist.o : stoplist.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_STOPLIST -c -o trstoplist.o \ stoplist.cpp -SYNFAMILY_OBJS= trsynfamily.o $(BIGLIB) +SYNFAMILY_OBJS= trsynfamily.o synfamily : $(SYNFAMILY_OBJS) $(CXX) $(ALL_CXXFLAGS) -o synfamily $(SYNFAMILY_OBJS) \ - $(BIGLIB) $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBXAPIAN) $(LIBSYS) trsynfamily.o : synfamily.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_SYNFAMILY -c -o trsynfamily.o \ synfamily.cpp -clean: - rm -f *.o $(PROGS) - +include $(depth)/mk/commontargets diff --git a/src/recollinstall.in b/src/recollinstall.in index 7033baca..90c428f6 100755 --- a/src/recollinstall.in +++ b/src/recollinstall.in @@ -22,7 +22,10 @@ QTGUI=@QTGUI@ # The .qm files are in qtgui/i18n even if qt4 is used I18N=qtgui/i18n +RCLLIBVERSION=@RCLLIBVERSION@ + test -n "$bindir" || bindir=${PREFIX}/bin +test -n "$libdir" || libdir=${PREFIX}/lib test -n "$datadir" || datadir=${PREFIX}/share if test -z "$mandir" ; then if test -d ${PREFIX}/man ; then @@ -111,6 +114,8 @@ ${INSTALL} -m 0444 doc/man/recoll.conf.5 ${mandir}/man5/ ${INSTALL} -m 0755 index/recollindex ${bindir} || exit 1 ${STRIP} ${bindir}/recollindex +${INSTALL} -m 0644 lib/librecoll.so.${RCLLIBVERSION} ${libdir} || exit 1 + ${INSTALL} -m 0755 filters/rcl* ${datadir}/recoll/filters/ || exit 1 for f in rclexecm.py rcllatinstops.zip;do chmod 644 ${datadir}/recoll/filters/$f diff --git a/src/utils/Makefile b/src/utils/Makefile index acb29d8f..075fa74b 100644 --- a/src/utils/Makefile +++ b/src/utils/Makefile @@ -6,113 +6,112 @@ PROGS = trecrontab #trconftree wipedir smallut trfstreewalk trpathut transcode trbase64 \ #trmimeparse trexecmd utf8iter idfile -all: $(PROGS) $(BIGLIB) +all: librecoll $(PROGS) -$(BIGLIB): force - cd $(depth)/lib;$(MAKE) -force: - -ECRONTAB_OBJS= trecrontab.o $(BIGLIB) +ECRONTAB_OBJS= trecrontab.o trecrontab : $(ECRONTAB_OBJS) - $(CXX) -o trecrontab $(ECRONTAB_OBJS) $(LIBICONV) \ - $(LIBSYS) + $(CXX) -o trecrontab $(ECRONTAB_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trecrontab.o : ecrontab.cpp ecrontab.h $(CXX) -o trecrontab.o -c $(ALL_CXXFLAGS) \ -DTEST_ECRONTAB ecrontab.cpp -FSTREEWALK_OBJS= trfstreewalk.o $(BIGLIB) +FSTREEWALK_OBJS= trfstreewalk.o trfstreewalk : $(FSTREEWALK_OBJS) - $(CXX) -o trfstreewalk $(FSTREEWALK_OBJS) $(LIBICONV) \ - $(LIBSYS) + $(CXX) -o trfstreewalk $(FSTREEWALK_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trfstreewalk.o : fstreewalk.cpp fstreewalk.h $(CXX) -o trfstreewalk.o -c $(ALL_CXXFLAGS) \ -DTEST_FSTREEWALK fstreewalk.cpp -READFILE_OBJS= trreadfile.o $(BIGLIB) +READFILE_OBJS= trreadfile.o trreadfile : $(READFILE_OBJS) - $(CXX) -o trreadfile $(READFILE_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) -o trreadfile $(READFILE_OBJS) $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trreadfile.o : readfile.cpp readfile.h $(CXX) -o trreadfile.o -c $(ALL_CXXFLAGS) \ -DTEST_READFILE readfile.cpp -CIRCACHE_OBJS= trcircache.o $(BIGLIB) +CIRCACHE_OBJS= trcircache.o trcircache : $(CIRCACHE_OBJS) - $(CXX) -o trcircache $(CIRCACHE_OBJS) $(LIBICONV) $(LIBSYS) -lz + $(CXX) -o trcircache $(CIRCACHE_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) -lz trcircache.o : circache.cpp circache.h $(CXX) -o trcircache.o -c $(ALL_CXXFLAGS) \ -DTEST_CIRCACHE circache.cpp -COPYFILE_OBJS= trcopyfile.o $(BIGLIB) +COPYFILE_OBJS= trcopyfile.o trcopyfile : $(COPYFILE_OBJS) - $(CXX) -o trcopyfile $(COPYFILE_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) -o trcopyfile $(COPYFILE_OBJS) $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trcopyfile.o : copyfile.cpp copyfile.h $(CXX) -o trcopyfile.o -c $(ALL_CXXFLAGS) \ -DTEST_COPYFILE copyfile.cpp -MD5_OBJS= trmd5.o $(BIGLIB) +MD5_OBJS= trmd5.o trmd5 : $(MD5_OBJS) - $(CXX) -o trmd5 $(MD5_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) -o trmd5 $(MD5_OBJS) $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trmd5.o : md5.cpp md5.h $(CXX) -o trmd5.o -c $(ALL_CXXFLAGS) -DTEST_MD5 md5.cpp -PATHUT_OBJS= trpathut.o $(BIGLIB) +PATHUT_OBJS= trpathut.o trpathut : $(PATHUT_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o trpathut $(PATHUT_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) $(ALL_CXXFLAGS) -o trpathut $(PATHUT_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trpathut.o : pathut.cpp pathut.h $(CXX) -o trpathut.o -c $(ALL_CXXFLAGS) -DTEST_PATHUT pathut.cpp -NETCON_OBJS= trnetcon.o $(BIGLIB) +NETCON_OBJS= trnetcon.o trnetcon : $(NETCON_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o trnetcon $(NETCON_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) $(ALL_CXXFLAGS) -o trnetcon $(NETCON_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trnetcon.o : netcon.cpp netcon.h $(CXX) -o trnetcon.o -c $(ALL_CXXFLAGS) -DTEST_NETCON netcon.cpp -FILEUDI_OBJS= trfileudi.o $(BIGLIB) +FILEUDI_OBJS= trfileudi.o trfileudi : $(FILEUDI_OBJS) $(CXX) $(ALL_CXXFLAGS) -o trfileudi $(FILEUDI_OBJS) trfileudi.o : fileudi.cpp fileudi.h $(CXX) -o trfileudi.o -c $(ALL_CXXFLAGS) -DTEST_FILEUDI fileudi.cpp -EXECMD_OBJS= trexecmd.o $(BIGLIB) +EXECMD_OBJS= trexecmd.o trexecmd : $(EXECMD_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o trexecmd $(EXECMD_OBJS) $(LIBICONV) $(LIBSYS) + $(CXX) $(ALL_CXXFLAGS) -o trexecmd $(EXECMD_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trexecmd.o : execmd.cpp execmd.h $(CXX) -o trexecmd.o -c $(ALL_CXXFLAGS) -DTEST_EXECMD execmd.cpp -TRANSCODE_OBJS= trtranscode.o $(BIGLIB) +TRANSCODE_OBJS= trtranscode.o transcode : $(TRANSCODE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o transcode $(TRANSCODE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trtranscode.o : transcode.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_TRANSCODE -c -o trtranscode.o \ transcode.cpp -IDFILE_OBJS= tridfile.o $(BIGLIB) +IDFILE_OBJS= tridfile.o idfile : $(IDFILE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o idfile $(IDFILE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) tridfile.o : idfile.cpp - $(CXX) $(ALL_CXXFLAGS) -DTEST_IDFILE -c -o tridfile.o \ - idfile.cpp + $(CXX) $(ALL_CXXFLAGS) -DTEST_IDFILE -c -o tridfile.o idfile.cpp -MIMEPARSE_OBJS= trmimeparse.o $(BIGLIB) +MIMEPARSE_OBJS= trmimeparse.o trmimeparse : $(MIMEPARSE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o trmimeparse $(MIMEPARSE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trmimeparse.o : mimeparse.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_MIMEPARSE -c -o trmimeparse.o \ - mimeparse.cpp + mimeparse.cpp SMALLUT_OBJS= trsmallut.o ../lib/smallut.o smallut : $(SMALLUT_OBJS) smallut.h - $(CXX) $(ALL_CXXFLAGS) -o smallut $(SMALLUT_OBJS) $(LIBICONV) + $(CXX) $(ALL_CXXFLAGS) -o smallut $(SMALLUT_OBJS) \ + $(LIBRECOLL) $(LIBICONV) trsmallut.o : smallut.cpp smallut.h - $(CXX) $(ALL_CXXFLAGS) -DTEST_SMALLUT -c -o trsmallut.o \ - smallut.cpp + $(CXX) $(ALL_CXXFLAGS) -DTEST_SMALLUT -c -o trsmallut.o smallut.cpp ../lib/smallut.o: smallut.cpp smallut.h cd ../lib;make smallut.o -WIPEDIR_OBJS= trwipedir.o $(BIGLIB) +WIPEDIR_OBJS= trwipedir.o wipedir : $(WIPEDIR_OBJS) $(CXX) $(ALL_CXXFLAGS) -o wipedir $(WIPEDIR_OBJS) $(LIBICONV) $(LIBSYS) trwipedir.o : wipedir.cpp @@ -120,19 +119,19 @@ trwipedir.o : wipedir.cpp UTF8ITER_OBJS= trutf8iter.o utf8iter : $(UTF8ITER_OBJS) - $(CXX) $(ALL_CXXFLAGS) -o utf8iter $(UTF8ITER_OBJS) $(BIGLIB) \ - $(LIBICONV) $(LIBSYS) + $(CXX) $(ALL_CXXFLAGS) -o utf8iter $(UTF8ITER_OBJS) \ + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trutf8iter.o : utf8iter.cpp utf8iter.h $(CXX) $(ALL_CXXFLAGS) -DTEST_UTF8ITER -c -o trutf8iter.o utf8iter.cpp -CONFTREE_OBJS= trconftree.o $(BIGLIB) +CONFTREE_OBJS= trconftree.o trconftree : $(CONFTREE_OBJS) $(CXX) $(ALL_CXXFLAGS) -o trconftree $(CONFTREE_OBJS) \ - $(LIBICONV) $(LIBSYS) + $(LIBRECOLL) $(LIBICONV) $(LIBSYS) trconftree.o : conftree.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_CONFTREE -c -o trconftree.o conftree.cpp -BASE64_OBJS= trbase64.o $(BIGLIB) +BASE64_OBJS= trbase64.o trbase64 : $(BASE64_OBJS) $(CXX) $(ALL_CXXFLAGS) -o trbase64 $(BASE64_OBJS) trbase64.o : base64.cpp @@ -146,6 +145,4 @@ trx11mon.o : x11mon.cpp x11mon.h x11mon.o: x11mon.cpp $(CXX) -c -I/usr/X11R6/include $(ALL_CXXFLAGS) x11mon.cpp -clean: - rm -f *.o $(PROGS) - +include $(depth)/mk/commontargets