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