1# First generated 2005/12/14 20:48:47 SGT
2
3AC_PREREQ(2.50)
4AC_INIT(pinot, 1.20, [fabrice.colin@gmail.com])
5AM_INIT_AUTOMAKE([subdir-objects])
6AC_CONFIG_HEADERS(config.h)
7
8AC_ISC_POSIX
9AC_PROG_CC
10AC_HEADER_STDC
11AC_PROG_CPP
12AC_PROG_CXX
13AC_PROG_CXXCPP
14AM_PROG_LIBTOOL
15
16dnl An index with a version older than this should be upgraded
17AC_DEFINE_UNQUOTED(PINOT_INDEX_MIN_VERSION,"0.92",
18    [Minimum index version])
19
20dnl gettext support
21GETTEXT_PACKAGE=pinot
22AC_SUBST(GETTEXT_PACKAGE)
23AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
24		[the gettext domain])
25
26dnl Add the languages which your application supports here.
27ALL_LINGUAS="cs de es fr he it ja nl pt pt_BR ru sv zh_CN zh_TW"
28#AM_GNU_GETTEXT([external])
29AM_GLIB_GNU_GETTEXT
30
31dnl Set PACKAGE_LOCALE_DIR in config.h.
32if test "x${prefix}" = "xNONE"; then
33  AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale",
34		[Define to the location of locale files.])
35else
36  AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale",
37		[Define to the location of locale files.])
38fi
39dnl And set PREFIX in config.h.
40if test "x${prefix}" = "xNONE"; then
41  AC_DEFINE_UNQUOTED(PREFIX, "${ac_default_prefix}",
42		[Define to the package prefix.])
43else
44  AC_DEFINE_UNQUOTED(PREFIX, "${prefix}",
45		[Define to the package prefix.])
46fi
47
48AS_AC_EXPAND(DATADIR, $datadir)
49AS_AC_EXPAND(BINDIR, $bindir)
50
51dnl Location of system directories
52AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
53AC_DEFINE_UNQUOTED(SYSCONFDIR, "$SYSCONFDIR",
54		[Define to the system configuration directory.])
55AS_AC_EXPAND(LIBDIR, $libdir)
56AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR",
57		[Define to the libraries directory.])
58
59dnl Set DBUS_SERVICES_DIR in com.github.fabricecolin.Pinot.service.
60DBUS_SERVICES_DIR="$DATADIR/dbus-1/services"
61AC_SUBST(BINDIR)
62AC_SUBST(DBUS_SERVICES_DIR)
63AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR",
64		[Define to the DBUS services directory.])
65
66AC_LANG_CPLUSPLUS
67
68PKG_PROG_PKG_CONFIG
69AC_PATH_PROG(DESKTOP_INSTALL, desktop-file-install, no)
70
71dnl DEBUG mode
72CXXFLAGS="-fPIC $CXXFLAGS"
73AC_MSG_CHECKING(whether to enable DEBUG mode)
74AC_ARG_ENABLE(debug,
75   [AS_HELP_STRING([--enable-debug], [enable debug [default=no]])],
76   ,[enable_debug=no])
77if test "x$enable_debug" = "xyes"; then
78   if test "x$GCC" = "xyes"; then
79      CXXFLAGS="$CXXFLAGS -ggdb3 -O0 -DDEBUG"
80   fi
81else
82   CXXFLAGS="$CXXFLAGS -DNDEBUG"
83   enable_debug="no"
84fi
85AC_MSG_RESULT($enable_debug)
86
87dnl Set compiler specific flags
88VISIB_CFLAGS=""
89if test "x$GCC" = "xyes"; then
90gxx_version=`$CXX --version 2>&1 | head -1 | sed 's/^[[^ ]]* (GCC) //;s/ .*//'`
91case $gxx_version in
924.*)
93VISIB_CFLAGS="-fvisibility=hidden"
94;;
95*)
96dnl Other versions
97;;
98esac
99fi
100
101dnl DBus
102AC_MSG_CHECKING(whether to enable DBus support)
103AC_ARG_ENABLE(dbus,
104   [AS_HELP_STRING([--enable-dbus], [enable DBus support [default=yes]])],
105   ,[enable_dbus=yes])
106if test "x$enable_dbus" != "xyes"; then
107   enable_dbus=no
108fi
109AC_MSG_RESULT($enable_dbus)
110AM_CONDITIONAL(HAVE_DBUS, false)
111if test "x$enable_dbus" = "xyes"; then
112   AM_CONDITIONAL(HAVE_DBUS, true)
113fi
114
115dnl Neon or Curl ?
116AC_MSG_CHECKING(which HTTP library to use)
117AC_ARG_WITH(http,
118   [AS_HELP_STRING([--with-http=@<:@neon|curl@:>@], [which HTTP library to use [default=curl]])])
119httplibrary=$with_http
120if test "x$httplibrary" = "x"; then
121   httplibrary="curl"
122fi
123AC_MSG_RESULT($httplibrary)
124
125testforssl="no"
126case "$httplibrary" in
127neon)
128PKG_CHECK_MODULES(NEON, neon >= 0.24 )
129testforssl="yes"
130EXTRA_HTTP_CFLAGS="-DUSE_NEON -DUSE_SSL"
131HTTP_DOWNLOADER="NeonDownloader"
132;;
133curl)
134AC_PATH_PROG(CURL_CONFIG, curl-config, no)
135if test "$CURL_CONFIG" = "no" ; then
136   AC_MSG_ERROR([Can't find curl-config in $PATH.])
137   exit 1
138fi
139CURL_CFLAGS=`$CURL_CONFIG --cflags`
140CURL_LIBS=`$CURL_CONFIG --libs`
141AC_MSG_CHECKING(whether curl needs OpenSSL)
142CURL_SSL_FEATURE=`$CURL_CONFIG --features | grep -i SSL`
143if test "x$CURL_SSL_FEATURE" = "x"; then
144   EXTRA_HTTP_CFLAGS="-DUSE_CURL"
145   AC_MSG_RESULT(no)
146else
147   EXTRA_HTTP_CFLAGS="-DUSE_CURL -DUSE_SSL"
148   AC_MSG_RESULT(yes)
149   testforssl="yes"
150fi
151HTTP_DOWNLOADER="CurlDownloader"
152;;
153esac
154AC_SUBST(HTTP_DOWNLOADER)
155
156dnl OpenSSL
157dnl If no path is provided, fall back on pkg-config
158if test "$testforssl" = "yes" ; then
159   AC_ARG_WITH(ssl,
160   [AS_HELP_STRING([--with-ssl=PATH], [where to look for OpenSSL [default=/usr/local/ssl]])])
161   sslpath=$with_ssl
162   dnl We want a prefix, not yes or no
163   case "$sslpath" in
164   yes)
165   sslpath="/usr/local/ssl"
166   ;;
167   no)
168   sslpath="/usr/local/ssl"
169   ;;
170   esac
171
172   if test "x$sslpath" = "x"; then
173      PKG_CHECK_MODULES(SSL, openssl >= 0.9.7 )
174   else
175      SSL_CFLAGS="-I$sslpath/include -I$sslpath/include/openssl"
176      SSL_LIBS="-L$sslpath/lib -lssl -lcrypto"
177   fi
178fi
179
180dnl Xapian
181AC_PATH_PROG(XAPIAN_CONFIG, xapian-config, no)
182if test "$XAPIAN_CONFIG" = "no" ; then
183   AC_MSG_ERROR([Can't find xapian-config in $PATH.])
184   exit 1
185fi
186XAPIAN_CFLAGS=`$XAPIAN_CONFIG --cxxflags`
187XAPIAN_LIBS=`$XAPIAN_CONFIG --libs`
188XAPIAN_NUM_VERSION=`$XAPIAN_CONFIG --version | sed -e "s/xapian-config - xapian-core //g" | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
189AC_DEFINE_UNQUOTED(XAPIAN_NUM_VERSION,$XAPIAN_NUM_VERSION,
190    [Xapian version number])
191AC_MSG_CHECKING(for Xapian >= 1.4.10)
192if test $XAPIAN_NUM_VERSION -gt 1004010; then
193   AC_MSG_RESULT(yes)
194else
195   AC_MSG_RESULT(no)
196   AC_MSG_ERROR([You need at least Xapian 1.4.10])
197   exit 1
198fi
199
200dnl inotify
201AM_CONDITIONAL(HAVE_LINUX_INOTIFY, false)
202AC_MSG_CHECKING(whether to enable libnotify support)
203AC_ARG_ENABLE(libnotify,
204   [AS_HELP_STRING([--enable-libnotify], [enable libnotify support [default=no]])],
205   ,[enable_libnotify=no])
206if test "x$enable_libnotify" != "xyes"; then
207   enable_libnotify="no"
208fi
209AC_MSG_RESULT($enable_libnotify)
210if test "x$enable_libnotify" = "xno"; then
211   AC_CHECK_HEADERS([sys/inotify.h],
212      [AM_CONDITIONAL(HAVE_LINUX_INOTIFY, true)
213      ])
214    NOTIFY_CFLAGS=""
215    NOTIFY_LIBS=""
216else
217   PKG_CHECK_MODULES(NOTIFY, libnotify >= 0.2.2 )
218fi
219
220dnl boost
221BOOST_LIBS=""
222AM_CONDITIONAL(HAVE_BOOST_SPIRIT, false)
223AC_CHECK_HEADERS([boost/spirit/core.hpp],
224   [AM_CONDITIONAL(HAVE_BOOST_SPIRIT, true)],
225   [AC_CHECK_HEADERS([boost/spirit/include/classic.hpp],
226       [AM_CONDITIONAL(HAVE_BOOST_SPIRIT, true)],
227       [AC_CHECK_HEADERS([boost/spirit.hpp],[AM_CONDITIONAL(HAVE_BOOST_SPIRIT, true)])
228       ])
229   ])
230AC_MSG_CHECKING(whether to enable the memory pool)
231AC_ARG_ENABLE(mempool,
232   [AS_HELP_STRING([--enable-mempool], [enable memory pool [default=no]])],
233   ,[enable_mempool=no])
234if test "x$enable_mempool" != "xyes"; then
235   enable_mempool="no"
236fi
237AC_MSG_RESULT($enable_mempool)
238if test "x$enable_mempool" = "xyes"; then
239   AC_CHECK_HEADERS([boost/pool/poolfwd.hpp])
240fi
241
242dnl Allocators
243AC_CHECK_HEADERS([ext/malloc_allocator.h])
244
245dnl TextCat
246AC_CHECK_HEADERS([textcat.h],[is_libexttextcat=no],
247   [AC_CHECK_HEADERS([libtextcat/textcat.h],[is_libexttextcat=no],
248    AC_CHECK_HEADERS([libexttextcat/textcat.h],[is_libexttextcat=yes],[is_libexttextcat=no]))
249   ])
250if test "x$is_libexttextcat" != "xyes"; then
251   is_libexttextcat="no"
252fi
253if test "x$is_libexttextcat" = "xno"; then
254   dnl libtextcat 2.* has textcat_Cat()
255   AC_CHECK_LIB(textcat, textcat_Cat,
256      [AM_CONDITIONAL(HAVE_TEXTCAT_CAT, true)],
257      [AM_CONDITIONAL(HAVE_TEXTCAT_CAT, false)]
258      )
259   TEXTCAT_LIBS="-ltextcat"
260else
261   dnl libexttextcat has textcat_Classify()
262   AM_CONDITIONAL(HAVE_TEXTCAT_CAT, false)
263   PKG_CHECK_MODULES(TEXTCAT, libexttextcat)
264fi
265
266dnl libarchive
267AC_MSG_CHECKING(whether to enable the libarchive filter)
268AC_ARG_ENABLE(libarchive,
269   [AS_HELP_STRING([--enable-libarchive], [enable the libarchive filter [default=no]])],
270   ,[enable_libarchive=no])
271if test "x$enable_libarchive" != "xyes"; then
272   enable_libarchive=no
273   AM_CONDITIONAL(HAVE_LIBARCHIVE, false)
274else
275   AM_CONDITIONAL(HAVE_LIBARCHIVE, true)
276fi
277AC_MSG_RESULT($enable_libarchive)
278
279dnl chmlib
280AC_MSG_CHECKING(whether to enable the chmlib filter)
281AC_ARG_ENABLE(chmlib,
282   [AS_HELP_STRING([--enable-chmlib], [enable the chmlib filter [default=no]])],
283   ,[enable_chmlib=no])
284if test "x$enable_chmlib" != "xyes"; then
285   enable_chmlib=no
286   AM_CONDITIONAL(HAVE_CHMLIB, false)
287else
288   AM_CONDITIONAL(HAVE_CHMLIB, true)
289fi
290AC_MSG_RESULT($enable_chmlib)
291
292dnl pthreads
293pthreadlib=""
294AC_SUBST(PTHREAD_LIBS)
295AC_MSG_CHECKING(if pthreads is available)
296ORIG_LIBS="$LIBS"
297for candidatelib in '' '-pthread' '-lc_r' '-lthr'; do
298   if test -z "$use_posix_mutex" ; then
299      LIBS="$candidatelib $ORIG_LIBS"
300      AC_TRY_LINK([#include <pthread.h>],
301         [pthread_mutex_t lck;
302         pthread_mutex_init(&lck, 0);
303         pthread_mutex_lock(&lck);
304         pthread_mutex_unlock(&lck);
305         pthread_mutex_destroy(&lck);],
306         [PTHREAD_LIBS="$candidatelib"
307         pthreadlib=candidatelib]
308      )
309   fi
310done
311LIBS="$ORIG_LIBS"
312if test "$pthreadlib" ; then
313   if test -z "$PTHREAD_LIBS" ; then
314      AC_MSG_RESULT(yes)
315   else
316      AC_MSG_RESULT([yes with $PTHREAD_LIBS])
317   fi
318else
319   AC_MSG_RESULT(no)
320   AC_CHECK_LIB(pthreadGCE2, pthread_mutex_lock,
321      [PTHREAD_CFLAGS="-Ipthread"
322       PTHREAD_LIBS="-lpthreadGCE2"])
323
324   if test -z "$PTHREAD_LIBS" ; then
325      AC_MSG_ERROR([Can't find pthreads.])
326      exit 1
327   fi
328fi
329
330dnl dlopen() in libdl or libc ?
331AC_SUBST(DL_LIBS)
332AC_CHECK_LIB(dl, dlopen,
333   [DL_LIBS="-ldl"],
334   [AC_CHECK_LIB(c, dlopen,
335      [DL_LIBS=""],
336      [AC_MSG_ERROR([Can't find the library providing dlopen])]
337   ])
338)
339
340dnl Other libraries
341MISC_CFLAGS="$NOTIFY_CFLAGS $PTHREAD_CFLAGS $VISIB_CFLAGS -D_FILE_OFFSET_BITS=64 -std=c++11"
342MISC_LIBS="$NOTIFY_LIBS $PTHREAD_LIBS $DL_LIBS $BOOST_LIBS"
343AC_SUBST(MISC_CFLAGS)
344AC_SUBST(MISC_LIBS)
345AC_CHECK_HEADERS([sys/vfs.h sys/statfs.h sys/mount.h sys/statvfs.h sys/xattr.h dlfcn.h regex.h fnmatch.h pwd.h])
346PKG_CHECK_MODULES(MIMEINFO, shared-mime-info )
347SHARED_MIME_INFO_PREFIX=`$PKG_CONFIG --variable=prefix shared-mime-info`
348AC_SUBST(SHARED_MIME_INFO_PREFIX)
349AC_DEFINE_UNQUOTED(SHARED_MIME_INFO_PREFIX,"$SHARED_MIME_INFO_PREFIX",
350    [the shared-mime-info prefix])
351PKG_CHECK_MODULES(EXIV2, exiv2 >= 0.18 )
352AC_CHECK_HEADERS([exiv2/xmp_exiv2.hpp])
353AC_SUBST(EXIV2_CFLAGS)
354AC_SUBST(EXIV2_LIBS)
355PKG_CHECK_MODULES(TAGLIB, taglib >= 1.4 )
356AC_SUBST(TAGLIB_CFLAGS)
357AC_SUBST(TAGLIB_LIBS)
358PKG_CHECK_MODULES(SQL, sqlite3 >= 3.1 )
359AC_SUBST(SQL_CFLAGS)
360AC_SUBST(SQL_LIBS)
361MIN_HTTP_CFLAGS="$NEON_CFLAGS $CURL_CFLAGS $EXTRA_HTTP_CFLAGS"
362MIN_HTTP_LIBS="$NEON_LIBS $CURL_LIBS"
363AC_SUBST(MIN_HTTP_CFLAGS)
364AC_SUBST(MIN_HTTP_LIBS)
365HTTP_CFLAGS="$MIN_HTTP_CFLAGS $SSL_CFLAGS"
366HTTP_LIBS="$MIN_HTTP_LIBS $SSL_LIBS"
367AC_SUBST(HTTP_CFLAGS)
368AC_SUBST(HTTP_LIBS)
369PKG_CHECK_MODULES(GMIME, gmime-3.0 >= 3.0,
370    [],[PKG_CHECK_MODULES(GMIME, gmime-2.6 >= 2.5 )] )
371AC_SUBST(GMIME_CFLAGS)
372AC_SUBST(GMIME_LIBS)
373PKG_CHECK_MODULES(XML, libxml++-2.6 >= 2.12 )
374AC_SUBST(XML_CFLAGS)
375AC_SUBST(XML_LIBS)
376INDEX_CFLAGS="$XAPIAN_CFLAGS"
377INDEX_LIBS="$XAPIAN_LIBS $TEXTCAT_LIBS"
378AC_SUBST(INDEX_CFLAGS)
379AC_SUBST(INDEX_LIBS)
380PKG_CHECK_MODULES(SIGCPP, sigc++-2.0 >= 2.0 )
381AC_SUBST(SIGCPP_CFLAGS)
382AC_SUBST(SIGCPP_LIBS)
383PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.6 )
384AC_SUBST(GTHREAD_CFLAGS)
385AC_SUBST(GTHREAD_LIBS)
386dnl GLibmm and friends
387PKG_CHECK_MODULES(GLIBMM, glibmm-2.4 >= 2.6 )
388AC_SUBST(GLIBMM_CFLAGS)
389AC_SUBST(GLIBMM_LIBS)
390PKG_CHECK_MODULES(GIOMM, giomm-2.4 >= 2.6 )
391AC_SUBST(GIOMM_CFLAGS)
392AC_SUBST(GIOMM_LIBS)
393dnl GTKmm
394PKG_CHECK_MODULES(GTKMM, gtkmm-3.0 >= 3.24 )
395AC_SUBST(GTKMM_CFLAGS)
396AC_SUBST(GTKMM_LIBS)
397dnl GIO
398PKG_CHECK_MODULES(GIO, gio-2.0)
399GLIBMM_CFLAGS=" $GIO_CFLAGS $GLIBMM_CFLAGS"
400GLIBMM_LIBS="$GIO_LIBS $GLIBMM_LIBS"
401GTKMM_CFLAGS=" $GIO_CFLAGS $GTKMM_CFLAGS"
402GTKMM_LIBS="$GIO_LIBS $GTKMM_LIBS"
403
404dnl Check for specific functions
405AC_CHECK_FUNCS(fork)
406AC_CHECK_FUNCS(getloadavg)
407AC_CHECK_FUNCS(gettimeofday)
408AC_CHECK_FUNCS(gmtime_r)
409AC_CHECK_FUNCS(kill)
410AC_CHECK_FUNCS(localtime_r)
411AC_CHECK_FUNCS(lstat)
412AC_CHECK_FUNCS(madvise)
413AC_CHECK_FUNCS(mallinfo)
414AC_CHECK_FUNCS(malloc_trim)
415AC_CHECK_FUNCS(mkstemp)
416AC_CHECK_FUNCS(mmap)
417AC_CHECK_FUNCS(pipe)
418AC_CHECK_FUNCS(setrlimit)
419AC_CHECK_FUNCS(sigaction)
420AC_CHECK_FUNCS(socketpair)
421AC_CHECK_FUNCS(statfs)
422AC_CHECK_FUNCS(statvfs)
423AC_CHECK_FUNCS(strptime)
424AC_CHECK_FUNCS(sysconf)
425AC_CHECK_FUNCS(sysctlbyname)
426AC_CHECK_FUNCS(timegm)
427AC_CHECK_FUNCS(vsnprintf)
428
429AC_OUTPUT( pinot.spec Core/com.github.fabricecolin.Pinot.service Makefile \
430	Utils/Makefile Tokenize/Makefile SQL/Makefile po/Makefile.in Collect/Makefile \
431	IndexSearch/Xapian/Makefile IndexSearch/Makefile \
432	Monitor/Makefile Core/Makefile UI/GTK3/src/Makefile )
433
434