libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

configure.ac (25987B)


      1 # Process this file with autoconf to produce a configure script.
      2 #
      3 #  This file is part of GNU libextractor
      4 #  Copyright (C) 2003-2023 Christian Grothoff
      5 #
      6 #  GNU libextractor is free software; you can redistribute it and/or modify it under the
      7 #  terms of the GNU General Public License as published by the Free Software
      8 #  Foundation; either version 3, or (at your option) any later version.
      9 #
     10 #  GNU libextractor is distributed in the hope that it will be useful, but WITHOUT ANY
     11 #  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
     12 #  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
     13 #
     14 #  You should have received a copy of the GNU General Public License along with
     15 #  GNU libextractor; see the file COPYING.  If not, If not, see <http://www.gnu.org/license>
     16 #
     17 #
     18 AC_PREREQ([2.72])
     19 AC_INIT([libextractor],[1.14],[bug-libextractor@gnu.org])
     20 AC_CONFIG_AUX_DIR([build-aux])
     21 AC_CONFIG_HEADERS([config.h])
     22 AC_CONFIG_MACRO_DIR([m4])
     23 AH_TOP([#define _GNU_SOURCE  1])
     24 AC_CANONICAL_TARGET
     25 AC_CANONICAL_HOST
     26 AC_CANONICAL_TARGET
     27 
     28 LIB_VERSION_CURRENT=4
     29 LIB_VERSION_REVISION=9
     30 LIB_VERSION_AGE=1
     31 AC_SUBST(LIB_VERSION_CURRENT)
     32 AC_SUBST(LIB_VERSION_REVISION)
     33 AC_SUBST(LIB_VERSION_AGE)
     34 
     35 AM_INIT_AUTOMAKE([silent-rules])
     36 
     37 # Checks for programs.
     38 AC_USE_SYSTEM_EXTENSIONS
     39 AC_PROG_AWK
     40 AC_PROG_CC
     41 AM_PROG_CC_C_O
     42 AC_PROG_CPP
     43 AC_PROG_CXX
     44 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
     45 AC_PROG_INSTALL
     46 AC_PROG_LN_S
     47 AC_PROG_MAKE_SET
     48 AC_CANONICAL_HOST
     49 LT_INIT
     50 # save LIBS, libtool does a AC_SEARCH_LIBS(dlopen, dl), but plugins
     51 # need not have -ldl added
     52 LT_INIT([disable-static dlopen win32-dll])
     53 AC_SUBST(MKDIR_P)
     54 
     55 AC_CHECK_DECLS([_stati64])
     56 
     57 AS_CASE(["$target_os"],
     58   [*linux-gnu],[
     59      AC_DEFINE(GNU_LINUX,1,[This is a GNU/Linux system])
     60      AC_DEFINE_UNQUOTED(GNU_LINUX,1,[This is a GNU/Linux system])
     61      AM_CONDITIONAL(HAVE_GNU_LD, true)
     62      AM_CONDITIONAL(SOMEBSD, false)
     63      AM_CONDITIONAL(WINDOWS, false)
     64      XTRA_CPPLIBS=-lstdc++
     65      LIBEXT=.so
     66   ],
     67   [freebsd*],[
     68      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
     69      AC_CHECK_LIB(c_r, pthread_create)
     70      AM_CONDITIONAL(HAVE_GNU_LD, true)
     71      AM_CONDITIONAL(SOMEBSD, true)
     72      AM_CONDITIONAL(WINDOWS, false)
     73      XTRA_CPPLIBS=-lstdc++
     74      LIBEXT=.so
     75   ],
     76   [openbsd*],[
     77      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
     78      AC_CHECK_LIB(c_r, pthread_create)
     79      AM_CONDITIONAL(HAVE_GNU_LD, true)
     80      AM_CONDITIONAL(SOMEBSD, true)
     81      AM_CONDITIONAL(WINDOWS, false)
     82      XTRA_CPPLIBS=-lstdc++
     83      LIBEXT=.so
     84    ],
     85   [netbsd*],[
     86      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
     87      AC_CHECK_LIB(c_r, pthread_create)
     88      AM_CONDITIONAL(HAVE_GNU_LD, true)
     89      AM_CONDITIONAL(SOMEBSD, true)
     90      AM_CONDITIONAL(WINDOWS, false)
     91      XTRA_CPPLIBS=-lstdc++
     92      LIBEXT=.so
     93   ],
     94   [*solaris*],[
     95      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
     96      AC_CHECK_LIB(resolv, res_init)
     97      XTRA_CPPLIBS=-lstdc++
     98      AM_CONDITIONAL(HAVE_GNU_LD, false)
     99      AM_CONDITIONAL(SOMEBSD, false)
    100      AM_CONDITIONAL(WINDOWS, false)
    101      AM_CFLAGS="-D_POSIX_PTHREAD_SEMANTICS $AM_CFLAGS"
    102      LIBEXT=.so
    103    ],
    104   [darwin*],[
    105      AC_DEFINE_UNQUOTED(DARWIN,1,[This is a Darwin system])
    106      AM_CONDITIONAL(HAVE_GNU_LD, false)
    107      AM_CONDITIONAL(SOMEBSD, false)
    108      AM_CONDITIONAL(WINDOWS, false)
    109      AM_CFLAGS="-fno-common $AM_CFLAGS"
    110      LIBEXT=.so
    111   ],
    112   [cygwin*],[
    113      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a CYGWIN system])
    114      AM_CONDITIONAL(SOMEBSD, false)
    115      AM_CONDITIONAL(HAVE_GNU_LD, false)
    116      AM_CONDITIONAL(WINDOWS, false)
    117      LIBEXT=.dll
    118   ],
    119   [mingw*],[
    120      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
    121      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
    122      AC_CHECK_LIB(intl, gettext)
    123      # Sufficiently new Windows XP
    124      AM_CFLAGS="-D__MSVCRT_VERSION__=0x0601 $AM_CFLAGS"
    125      AM_CPPFLAGS="-DFTRUNCATE_DEFINED=1 $AM_CPPFLAGS"
    126 
    127     AC_MSG_CHECKING(for PlibC)
    128     plibc=0
    129     AC_ARG_WITH(plibc,
    130        [  --with-plibc=PFX    Base of PliBC installation],
    131        [AC_MSG_RESULT([$with_plibc])
    132         AS_CASE([$with_plibc],
    133           [no],[],
    134           [yes],[
    135             AC_CHECK_HEADERS([plibc.h],
    136               AC_CHECK_LIB([plibc], [plibc_init],
    137                 plibc=1))
    138           ],[
    139             AM_LDFLAGS="-L$with_plibc/lib $AM_LDFLAGS"
    140             AM_CPPFLAGS="-I$with_plibc/include $AM_CPPFLAGS"
    141             AC_CHECK_HEADERS([plibc.h],
    142               AC_CHECK_LIB([plibc], [plibc_init],
    143                 EXT_LIB_PATH="-L$with_plibc/lib $EXT_LIB_PATH"
    144                 plibc=1))
    145           ])
    146        ],
    147        [AC_MSG_RESULT([--with-plibc not specified])
    148         AM_LDFLAGS="-L/usr/lib $AM_LDFLAGS"
    149         AM_CPPFLAGS="-I/usr/include $AM_CPPFLAGS"
    150         AC_CHECK_HEADERS([plibc.h],
    151               AC_CHECK_LIB([plibc], [plibc_init],
    152                 EXT_LIB_PATH="-L$with_plibc/lib $EXT_LIB_PATH"
    153                 plibc=1))])
    154 
    155      AS_IF([test $plibc -ne 1],
    156            [AC_MSG_ERROR([libextractor requires PlibC])],
    157            [LIBS="$LIBS -lplibc"])
    158 
    159      AM_LDFLAGS="$AM_LDFLAGS -Wl,--export-all-symbols"
    160      AM_CONDITIONAL(HAVE_GNU_LD, true)
    161      AM_CONDITIONAL(SOMEBSD, false)
    162      AM_CONDITIONAL(WINDOWS, true)
    163      LIBEXT=.dll
    164    ],[
    165      AC_MSG_RESULT(Unrecognised OS $host_os)
    166      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
    167      AC_MSG_RESULT(otheros)
    168      AC_DEFINE(GNU_LINUX,1,[We hope this is a GNU/Linux-compatible system])
    169      AC_DEFINE_UNQUOTED(GNU_LINUX,1,[We hope this is a GNU/Linux-compatible system])
    170      AM_CONDITIONAL(HAVE_GNU_LD, false)
    171      AM_CONDITIONAL(SOMEBSD, false)
    172      AM_CONDITIONAL(WINDOWS, false)
    173      LIBEXT=.so
    174   ]
    175 )
    176 
    177 AM_ICONV
    178 
    179 PKG_PROG_PKG_CONFIG()
    180 
    181 # We define the paths here, because MinGW/GCC expands paths
    182 # passed through the command line ("-DLOCALEDIR=..."). This would
    183 # lead to hard-coded paths ("C:\mingw\mingw\bin...") that do
    184 # not contain the actual installation.
    185 AC_DEFINE_DIR([LOCALEDIR], [datarootdir/locale], [gettext catalogs])
    186 
    187 ISOPFX=`pkg-config --variable=prefix iso-codes`
    188 pkg-config --variable=prefix iso-codes 2> /dev/null || ISOPFX=/usr
    189 AC_DEFINE_DIR([ISOLOCALEDIR], [ISOPFX/share/locale], [iso-639 catalog])
    190 
    191 # relative plugin directory
    192 rplugindir="libextractor"
    193 AC_ARG_WITH(plugindirname,
    194 	AS_HELP_STRING([--with-plugindirname],[install directory for plugins (always relative to libdir)]),
    195 	[rplugindir=$withval])
    196 AC_SUBST(RPLUGINDIR, $rplugindir)
    197 
    198 # large file support
    199 AC_SYS_LARGEFILE
    200 AC_FUNC_FSEEKO
    201 
    202 AM_CONDITIONAL(CYGWIN, test "$build_os" = "cygwin")
    203 AM_CONDITIONAL(MINGW, test "$build_os" = "mingw32")
    204 
    205 
    206 # use '-fno-strict-aliasing', but only if the compiler can take it
    207 AS_IF([gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1],
    208       [AM_CFLAGS="-fno-strict-aliasing $AM_CFLAGS"])
    209 
    210 AM_CONDITIONAL(HAVE_CXX, test "x$HAVE_CXX" = "xyes")
    211 
    212 
    213 # Adam shostack suggests the following for Windows:
    214 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
    215 AC_ARG_ENABLE(gcc-hardening,
    216   [AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks)],
    217   [AS_IF([test x$enableval = xyes],
    218          [AM_CFLAGS="$AM_CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
    219           AM_CFLAGS="$AM_CFLAGS -fwrapv -fPIE -Wstack-protector"
    220           AM_CFLAGS="$AM_CFLAGS --param ssp-buffer-size=1"
    221           AM_LDFLAGS="$AM_LDFLAGS -pie"])])
    222 
    223 
    224 # Linker hardening options
    225 # Currently these options are ELF specific - you can't use this with MacOSX
    226 AC_ARG_ENABLE(linker-hardening,
    227   [AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups)],
    228   [AS_IF([x$enableval = xyes],
    229          [AM_LDFLAGS="$AM_LDFLAGS -z relro -z now"])])
    230 
    231 
    232 # Support for hiding non-public symbols
    233 HIDDEN_VISIBILITY_CFLAGS=""
    234 AS_CASE(["$host"],
    235  [*-*-mingw*],[
    236     # mingw32 we do -fvisibility=hidden and __declspec(dllexport)
    237     AC_DEFINE([_EXTRACTOR_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
    238               [defines how to decorate public symbols while building])
    239     HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
    240  ],[
    241     # other compilers, check if we can do -fvisibility=hidden
    242     AX_CHECK_LINK_FLAG([-fvisibility=hidden],
    243       [AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],
    244                            [AC_DEFINE([_EXTRACTOR_EXTERN], [__attribute__((visibility("default"))) extern],
    245                                        [defines how to decorate public symbols while building])
    246                             HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"])])
    247  ])
    248 AC_SUBST(HIDDEN_VISIBILITY_CFLAGS)
    249 
    250 
    251 
    252 # Checks for libraries.
    253 
    254 AC_CHECK_HEADERS([langinfo.h])
    255 
    256 # Check for libltdl header (#2999)
    257 ltdl=0
    258 AC_MSG_CHECKING(for libltdl)
    259 AC_ARG_WITH(ltdl,
    260    [  --with-ltdl=PFX    base of libltdl installation],
    261    [AC_MSG_RESULT([$with_ltdl])
    262     AS_CASE([$with_ltdl],
    263       [no],[],
    264       [yes],[
    265         AC_CHECK_HEADERS(ltdl.h,
    266           AC_CHECK_LIB([ltdl], [lt_dlopenext],
    267             ltdl=1))
    268       ],[
    269         OLD_LIBS="$LIBS"
    270         LIBS="-L$with_ltdl/lib $LIBS"
    271         AM_CPPFLAGS="-I$with_ltdl/include $AM_CPPFLAGS"
    272         AC_CHECK_HEADERS(ltdl.h,
    273           AC_CHECK_LIB([ltdl], [lt_dlopenext],
    274             EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
    275             ltdl=1))
    276         LIBS="$OLD_LIBS"
    277       ])
    278    ],
    279    [AC_MSG_RESULT([--with-ltdl not specified])
    280     AC_CHECK_HEADERS(ltdl.h,
    281      AC_CHECK_LIB([ltdl], [lt_dlopenext],
    282       ltdl=1))])
    283 AS_IF([test x$ltdl = x1],
    284       [AC_MSG_RESULT([libltdl found])],
    285       [AC_MSG_ERROR([libextractor requires libltdl (from GNU libtool), try installing libltdl-dev])])
    286 
    287 # check for apparmor
    288 AC_CHECK_LIB(apparmor, aa_change_profile,
    289         [AC_CHECK_HEADERS([sys/apparmor.h],
    290           AM_CONDITIONAL(HAVE_APPARMOR, true)
    291           AC_DEFINE(HAVE_APPARMOR,1,[Have apparmor]),
    292           AM_CONDITIONAL(HAVE_APPARMOR, false)
    293           AC_DEFINE(HAVE_APPARMOR,0,[lacking apparmor]))],
    294         AM_CONDITIONAL(HAVE_APPARMOR, false),
    295         -lapparmor)
    296 
    297 # FIXME: allow --with-oggvorbis=PFX
    298 
    299 # test if we have vorbisfile
    300 # prior versions had ov_open_callbacks in libvorbis, test that, too.
    301 AC_CHECK_LIB(vorbisfile, ov_open_callbacks,
    302         [AC_CHECK_HEADERS([vorbis/vorbisfile.h],
    303           AM_CONDITIONAL(HAVE_VORBISFILE, true)
    304           AC_DEFINE(HAVE_VORBISFILE,1,[Have vorbisfile]),
    305           AM_CONDITIONAL(HAVE_VORBISFILE, false)
    306           AC_DEFINE(HAVE_VORBISFILE,0,[lacking vorbisfile]))],
    307         AM_CONDITIONAL(HAVE_VORBISFILE, false),
    308         -lvorbis -logg)
    309 AC_CHECK_LIB(FLAC, FLAC__stream_decoder_init_stream,
    310         [AC_CHECK_HEADERS([FLAC/all.h],
    311          AM_CONDITIONAL(HAVE_FLAC, true)
    312           AC_DEFINE(HAVE_FLAC,1,[Have flac]),
    313          AM_CONDITIONAL(HAVE_FLAC, false))],
    314         AM_CONDITIONAL(HAVE_FLAC, false),
    315         -logg)
    316 # test without -logg to see whether we really need it (libflac can be without)
    317 AC_CHECK_LIB(FLAC, FLAC__stream_decoder_init_ogg_stream,
    318          AM_CONDITIONAL(HAVE_FLAC, true)
    319          AC_DEFINE(HAVE_FLAC,1,[Have flac])
    320          AM_CONDITIONAL(NEED_OGG, false),
    321         [AM_CONDITIONAL(NEED_OGG, true)])
    322 AC_CHECK_LIB(vorbisfile, vorbis_comment_query,
    323         AM_CONDITIONAL(NEED_VORBIS, false),
    324         AM_CONDITIONAL(NEED_VORBIS, true),
    325         -logg)
    326 
    327 AC_CHECK_LIB(z, inflate,
    328         [AC_CHECK_HEADERS([zlib.h],
    329          AM_CONDITIONAL(HAVE_ZLIB, true)
    330          AC_DEFINE(HAVE_ZLIB,1,[Have zlib]),
    331          AM_CONDITIONAL(HAVE_ZLIB, false))],
    332          AM_CONDITIONAL(HAVE_ZLIB, false))
    333 
    334 AC_CHECK_LIB(bz2, BZ2_bzDecompress,
    335         [AC_CHECK_HEADERS([bzlib.h],
    336           AM_CONDITIONAL(HAVE_BZ2, true)
    337           AC_DEFINE(HAVE_LIBBZ2,1,[Have libbz2]),
    338          AM_CONDITIONAL(HAVE_BZ2, false))],
    339          AM_CONDITIONAL(HAVE_BZ2, false))
    340 
    341 AC_CHECK_LIB(rpm, rpmReadPackageFile,
    342         [AC_CHECK_HEADERS([rpm/rpmlib.h],
    343           AM_CONDITIONAL(HAVE_LIBRPM, true)
    344           AC_DEFINE(HAVE_LIBRPM,1,[Have librpm]),
    345          AM_CONDITIONAL(HAVE_LIBRPM, false))],
    346          AM_CONDITIONAL(HAVE_LIBRPM, false))
    347 
    348 AC_CHECK_LIB(vlc, libvlc_media_player_play,
    349         [AC_CHECK_HEADERS([vlc/vlc.h],
    350           AM_CONDITIONAL(HAVE_LIBVLC, true)
    351           AC_DEFINE(HAVE_LIBVLC,1,[Have libvlc]),
    352          AM_CONDITIONAL(HAVE_LIBVLC, false))],
    353          AM_CONDITIONAL(HAVE_LIBVLC, false))
    354 
    355 AC_CHECK_LIB(mpeg2, mpeg2_init,
    356         [AC_CHECK_HEADERS([mpeg2dec/mpeg2.h],
    357            AM_CONDITIONAL(HAVE_MPEG2, true)
    358            AC_DEFINE(HAVE_MPEG2,1,[Have libmpeg2]),
    359          AM_CONDITIONAL(HAVE_MPEG2, false))],
    360          AM_CONDITIONAL(HAVE_MPEG2, false))
    361 
    362 AC_CHECK_LIB(jpeg, jpeg_mem_src,
    363         [AC_CHECK_HEADERS([jpeglib.h],
    364            AM_CONDITIONAL(HAVE_JPEG, true)
    365            AC_DEFINE(HAVE_JPEG,1,[Have libjpeg]),
    366          AM_CONDITIONAL(HAVE_JPEG, false))],
    367          AM_CONDITIONAL(HAVE_JPEG, false))
    368 
    369 AC_CHECK_LIB(tiff, TIFFClientOpen,
    370         [AC_CHECK_HEADERS([tiffio.h],
    371            AM_CONDITIONAL(HAVE_TIFF, true)
    372            AC_DEFINE(HAVE_TIFF,1,[Have libtiff]),
    373          AM_CONDITIONAL(HAVE_TIFF, false))],
    374          AM_CONDITIONAL(HAVE_TIFF, false))
    375 
    376 AC_CHECK_LIB(archive, archive_read_open,
    377         [AC_CHECK_HEADERS([archive.h],
    378            AM_CONDITIONAL(HAVE_ARCHIVE, true)
    379            AC_DEFINE(HAVE_ARCHIVE,1,[Have libarchive]),
    380          AM_CONDITIONAL(HAVE_ARCHIVE, false))],
    381          AM_CONDITIONAL(HAVE_ARCHIVE, false))
    382 
    383 # should experimental code be compiled (code that may not yet compile)?
    384 AC_MSG_CHECKING(whether to compile experimental code)
    385 AC_ARG_ENABLE([experimental],
    386    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
    387    [enable_experimental=${enableval}],
    388    [enable_experimental=no])
    389 AC_MSG_RESULT($enable_experimental)
    390 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
    391 
    392 
    393 AC_MSG_CHECKING(for ImageFactory::iptcData in -lexiv2)
    394 AC_LANG_PUSH(C++)
    395 SAVED_AM_LDFLAGS=$AM_LDFLAGS
    396 AM_LDFLAGS="$AM_LDFLAGS -lexiv2"
    397 AC_LINK_IFELSE(
    398   [AC_LANG_PROGRAM([[#include <iostream>
    399 #include <exiv2/exif.hpp>
    400 #include <exiv2/image.hpp>
    401 #include <exiv2/futils.hpp>]],
    402     [[Exiv2::Image *foo = NULL; foo->iptcData(); ]])],
    403   [AC_MSG_RESULT(yes)
    404    AM_CONDITIONAL(HAVE_EXIV2, true)
    405    AC_DEFINE(HAVE_EXIV2,1,[Have exifData in libexiv2])],
    406   [AC_MSG_RESULT(no)
    407    AM_CONDITIONAL(HAVE_EXIV2, false)])
    408 AM_LDFLAGS=$SAVED_AM_LDFLAGS
    409 AC_LANG_POP(C++)
    410 
    411 
    412 # poppler-cpp is poppler's stable C++ binding.  0.73.0 (2019) is
    413 # the first release with the non-deprecated time_t date accessors
    414 # that the PDF plugin relies on.
    415 PKG_CHECK_MODULES([POPPLER], [poppler-cpp >= 0.73.0],
    416   [AM_CONDITIONAL(HAVE_POPPLER, true)
    417    AC_DEFINE(HAVE_POPPLER, 1, [Have libpoppler-cpp])],
    418   [AM_CONDITIONAL(HAVE_POPPLER, false)])
    419 
    420 
    421 AC_MSG_CHECKING(for DGifOpen -lgif)
    422 SAVED_AM_LDFLAGS=$AM_LDFLAGS
    423 AC_CHECK_LIB(gif, DGifOpen,
    424   [AC_CHECK_HEADERS([gif_lib.h],
    425    AM_CONDITIONAL(HAVE_GIF, true)
    426    AC_DEFINE(HAVE_GIF,1,[Have libgif]),
    427    AM_CONDITIONAL(HAVE_GIF, false))],
    428   AM_CONDITIONAL(HAVE_GIF, false))
    429 
    430 AC_MSG_CHECKING(for magic_open -lmagic)
    431 SAVED_AM_LDFLAGS=$AM_LDFLAGS
    432 AC_CHECK_LIB(magic, magic_open,
    433   [AC_CHECK_HEADERS([magic.h],
    434    AM_CONDITIONAL(HAVE_MAGIC, true),
    435    AM_CONDITIONAL(HAVE_MAGIC, false))],
    436   AM_CONDITIONAL(HAVE_MAGIC, false))
    437 
    438 # tidyNodeGetValue was already available in 5.0.0, released in 2015.
    439 maybe_tidy=1
    440 PKG_CHECK_MODULES([TIDY], [tidy >= 5.0.0],
    441  [AC_DEFINE(HAVE_TIDY, 1, [Have tidy])
    442   AM_CONDITIONAL(HAVE_TIDY, true)],
    443  [maybe_tidy=0])
    444 CFLAGS="$CFLAGS $TIDY_CFLAGS"
    445 LIBS="$LIBS $TIDY_LIBS"
    446 
    447 AC_CHECK_HEADERS([tidy.h],,
    448   AC_CHECK_HEADERS([tidy/tidy.h],,[maybe_tidy=0]))
    449 
    450 AM_CONDITIONAL(HAVE_TIDY, test "x$maybe_tidy" = "x1")
    451 
    452 # should 'make check' run tests?
    453 AC_MSG_CHECKING(whether to run tests)
    454 AC_ARG_ENABLE([testruns],
    455    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
    456    [enable_tests_run=${enableval}],
    457    [enable_tests_run=yes])
    458 AC_MSG_RESULT($enable_test_run)
    459 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
    460 
    461 AC_HEADER_DIRENT
    462 AC_HEADER_STDBOOL
    463 AC_CHECK_HEADERS([iconv.h fcntl.h netinet/in.h stdlib.h string.h unistd.h libintl.h limits.h stddef.h zlib.h])
    464 
    465 # Checks for typedefs, structures, and compiler characteristics.
    466 AC_C_INLINE
    467 AC_TYPE_SIZE_T
    468 AC_TYPE_PID_T
    469 GNUPG_CHECK_ENDIAN
    470 
    471 # Checks for library functions.
    472 AC_FUNC_MEMCMP
    473 AC_FUNC_VPRINTF
    474 AC_FUNC_MMAP
    475 AC_FUNC_STAT
    476 AC_FUNC_ERROR_AT_LINE
    477 AC_SEARCH_LIBS(dlopen, dl)
    478 AC_SEARCH_LIBS(shm_open, rt)
    479 AC_CHECK_FUNCS([mkstemp strndup munmap strcasecmp strdup strncasecmp memmove memset strtoul floor getcwd pow setenv sqrt strchr strcspn strrchr strnlen strndup ftruncate shm_open shm_unlink lseek64])
    480 
    481 
    482 # is kind of tedious, but simple and straightforward
    483 sockets=no
    484 AC_MSG_CHECKING(for sockets)
    485 AC_LANG_PUSH(C)
    486 SAVED_LIBS="$LIBS"
    487 SOCKET_LIBS=
    488 AC_LINK_IFELSE(
    489   [
    490     AC_LANG_PROGRAM(
    491       [[#include <sys/socket.h>]],
    492       [[int s = socket (AF_INET, SOCK_STREAM, 6);]]
    493     )
    494   ],
    495   [
    496     sockets=yes
    497   ],
    498   [
    499     LIBS="$SAVED_LIBS -lsocket"
    500     AC_LINK_IFELSE(
    501       [
    502         AC_LANG_PROGRAM(
    503           [[#include <sys/socket.h>]],
    504           [[int s = socket (AF_INET, SOCK_STREAM, 6);]]
    505         )
    506       ],
    507       [
    508         sockets=yes
    509         SOCKET_LIBS="-lsocket"
    510       ],
    511       [
    512         AC_LINK_IFELSE(
    513           [
    514             AC_LANG_PROGRAM(
    515               [[#include <winsock2.h>]],
    516               [[int s = socket (AF_INET, SOCK_STREAM, 6);]]
    517             )
    518           ],
    519           [
    520             sockets=yes
    521           ],
    522           [
    523             LIBS="$SAVED_LIBS -lws2_32"
    524             AC_LINK_IFELSE(
    525               [
    526                 AC_LANG_PROGRAM(
    527                   [[#include <winsock2.h>]],
    528                   [[int s = socket (AF_INET, SOCK_STREAM, 6);]]
    529                 )
    530               ],
    531               [
    532                 sockets=yes
    533                 SOCKET_LIBS="-lws2_32"
    534               ],
    535               [
    536                 sockets=no
    537               ]
    538             )
    539           ]
    540         )
    541       ]
    542     )
    543   ]
    544 )
    545 LIBS="$SAVED_LIBS $SOCKET_LIBS"
    546 AC_LANG_POP(C)
    547 AC_MSG_RESULT([$sockets])
    548 AS_IF([test "x$sockets" = "xno"],
    549       [AC_MSG_ERROR([libextractor requires some kind of socket library])])
    550 AC_SUBST([SOCKET_LIBS],[$SOCKET_LIBS])
    551 
    552 LE_LIB_LIBS=$LIBS
    553 LIBS=$LIBSOLD
    554 
    555 AM_GNU_GETTEXT_VERSION([0.23.1])
    556 AM_GNU_GETTEXT([external])
    557 
    558 # check for GNU LD
    559 AC_LIB_PROG_LD_GNU
    560 
    561 # check for glib >= 2.0.0
    562 AC_MSG_CHECKING(for glib)
    563 AM_PATH_GLIB_2_0(2.0.0,
    564 	         without_glib=false,
    565                  without_glib=true)
    566 AC_MSG_CHECKING([whether glib is disabled])
    567 AC_ARG_ENABLE(glib,
    568   [AS_HELP_STRING([--disable-glib],[disable glib support])],
    569   [case "$enableval" in
    570    no)  AC_MSG_RESULT(disabled)
    571         without_glib=true
    572         ;;
    573    *)   AC_MSG_RESULT(allowed)
    574         ;;
    575    esac],
    576   AC_MSG_RESULT(allowed))
    577 
    578 AS_IF([test x$without_glib != xtrue],
    579       [AS_IF([test $with_gnu_ld = yes],
    580              [# We need both GNU LD and GLIB here!
    581               AM_CONDITIONAL(HAVE_GLIB,true)
    582               AC_DEFINE(HAVE_GLIB, 1, [Have glib])],
    583              [# We may have GLIB, but without GNU LD we must not use it!
    584               AM_CONDITIONAL(HAVE_GLIB,false)
    585               AC_DEFINE(HAVE_GLIB, 0, [Have glib, but not GNU LD])])],
    586      [AM_CONDITIONAL(HAVE_GLIB,false)
    587       AC_DEFINE(HAVE_GLIB, 0, [Have glib])])
    588 
    589 # smf requires glib.h
    590 CFLAGS_OLD="$CFLAGS"
    591 CPPFLAGS_OLD="$CPPFLAGS"
    592 CFLAGS="$AM_CFLAGS $GLIB_CFLAGS"
    593 CPPFLAGS="$AM_CPPFLAGS $GLIB_CFLAGS"
    594 
    595 AC_CHECK_LIB(smf, smf_load_from_memory,
    596         [AC_CHECK_HEADERS([smf.h],
    597            AM_CONDITIONAL(HAVE_SMF, true)
    598            AC_DEFINE(HAVE_MPEG2,1,[Have libsmf]),
    599          AM_CONDITIONAL(HAVE_SMF, false))],
    600          AM_CONDITIONAL(HAVE_SMF, false))
    601 
    602 # check for gdk-pixbuf >= 2.4
    603 AC_MSG_CHECKING(for gdk-pixbuf)
    604 PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0 >= 2.4], [have_gdk_pixbuf=yes], [have_gdk_pixbuf=no])
    605 
    606 AM_CONDITIONAL(HAVE_GDK_PIXBUF, test x$have_gdk_pixbuf != xno)
    607 AS_IF([test $have_gdk_pixbuf != no],
    608       [have_gdk_pixbuf=1],
    609       [have_gdk_pixbuf=0
    610       AC_MSG_NOTICE([Cannot find Gdk-pixbuf: Is pkg-config in path?])])
    611 AC_DEFINE_UNQUOTED([HAVE_GDK_PIXBUF], [$have_gdk_pixbuf], [We have Gdk-pixbuf])
    612 
    613 CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS"
    614 CPPFLAGS="$CPPFLAGS $GDK_PIXBUF_CFLAGS"
    615 LIBS="$LIBS $GDK_PIXBUF_LIBS"
    616 
    617 
    618 AC_ARG_WITH([gstreamer], AS_HELP_STRING([--with-gstreamer], [Build with the GStreamer plugin]), [], [with_gstreamer=yes])
    619 
    620 have_gstreamer=no
    621 have_gstreamer_pbutils=no
    622 have_gstreamer_tag=no
    623 have_gstreamer_app=no
    624 AS_IF([test "x$with_gstreamer" = "xyes"], [
    625    PKG_CHECK_MODULES([GSTREAMER], [gstreamer-1.0 >= 0.11.93], [have_gstreamer=yes], [have_gstreamer=no])
    626    PKG_CHECK_MODULES([GSTREAMER_PBUTILS], [gstreamer-pbutils-1.0 >= 0.11.93], [have_gstreamer_pbutils=yes], [have_gstreamer_pbutils=no])
    627    PKG_CHECK_MODULES([GSTREAMER_TAG], [gstreamer-tag-1.0 >= 0.11.93], [have_gstreamer_tag=yes], [have_gstreamer_tag=no])
    628    PKG_CHECK_MODULES([GSTREAMER_APP], [gstreamer-app-1.0 >= 0.11.93], [have_gstreamer_app=yes], [have_gstreamer_app=no])
    629 ])
    630 
    631 AM_CONDITIONAL(HAVE_GSTREAMER, test x$have_gstreamer = xyes -a x$have_gstreamer_pbutils = xyes -a x$have_gstreamer_tag = xyes -a x$have_gstreamer_app = xyes -a ! x$without_glib = xtrue)
    632 
    633 ABI_GSF
    634 
    635 AM_CONDITIONAL(HAVE_GSF, test "x$have_gsf" = "xtrue")
    636 
    637 # produce new line
    638 echo ""
    639 AC_CHECK_LIB(gsf-1, gsf_init, AC_DEFINE(HAVE_GSF_INIT,1,[gsf_init supported]))
    640 AC_CHECK_LIB(gsf-1, gsf_doc_meta_data_read_from_msole, AC_DEFINE(HAVE_GSF_DOC_META_DATA_READ_FROM_MSOLE,1,[gsf_doc_meta_data_read_from_msole supported]))
    641 
    642 
    643 CFLAGS="$CFLAGS_OLD"
    644 CPPFLAGS="$CPPFLAGS_OLD"
    645 
    646 
    647 AC_CHECK_PROG([HAVE_ZZUF],[zzuf], 1, 0)
    648 AM_CONDITIONAL(HAVE_ZZUF, test 0 != $HAVE_ZZUF)
    649 
    650 LE_INTLINCL=""
    651 LE_LIBINTL="$LTLIBINTL"
    652 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
    653 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
    654 AS_IF([test x$enable_framework_build = xyes],
    655  [AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
    656   LE_INTLINCL='-I$(top_srcdir)/src/intlemu'
    657   LE_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
    658   AC_LIB_APPENDTOVAR([AM_CPPFLAGS], [$LE_INTLINCL])
    659  ])
    660 
    661 LE_LIB_LDFLAGS="-export-dynamic -no-undefined"
    662 LE_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
    663 
    664 
    665 # TODO insert a proper check here
    666 AC_CACHE_CHECK([whether -export-symbols-regex works],
    667  gn_cv_export_symbols_regex_works,
    668  [AS_CASE(["$host_os"],
    669    [mingw*],[gn_cv_export_symbols_regex_works=no],
    670    [gn_cv_export_symbols_regex_works=yes])
    671  ])
    672 AS_IF([test "x$gn_cv_export_symbols_regex_works" = "xyes"],
    673  [LE_LIB_LDFLAGS="$LE_LIB_LDFLAGS -export-symbols-regex \"(EXTRACTOR|pl)_@<:@a-zA-Z0-9_@:>@*\""
    674  LE_PLUGIN_LDFLAGS="$LE_PLUGIN_LDFLAGS -export-symbols-regex \"(EXTRACTOR|pl)_@<:@a-zA-Z0-9_@:>@*_.......\""
    675  ])
    676 
    677 # restore LIBS
    678 LIBS=$LIBSOLD
    679 
    680 AC_SUBST(LE_LIB_LDFLAGS)
    681 AC_SUBST(LE_PLUGIN_LDFLAGS)
    682 AC_SUBST(LE_INTLINCL)
    683 AC_SUBST(LE_LIBINTL)
    684 AC_SUBST(LE_LIB_LIBS)
    685 
    686 AC_SUBST(QT_CPPFLAGS)
    687 AC_SUBST(QT_LDFLAGS)
    688 AC_SUBST(XTRA_CPPLIBS)
    689 AC_SUBST(LIBEXT)
    690 
    691 PACKAGE_VERSION_NOALPHA=`echo $PACKAGE_VERSION | sed "s/@<:@A-Za-z@:>@*//g;"`
    692 AC_SUBST(PACKAGE_VERSION_NOALPHA)
    693 
    694 # gcov compilation
    695 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
    696 AC_ARG_ENABLE([coverage],
    697               AS_HELP_STRING([--enable-coverage],
    698                              [compile the library with code coverage support]),
    699               [use_gcov=${enableval}],
    700               [use_gcov=no])
    701 AC_MSG_RESULT($use_gcov)
    702 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
    703 
    704 
    705 
    706 AC_CONFIG_FILES([Makefile
    707 po/Makefile.in
    708 m4/Makefile
    709 contrib/macosx/Info.plist
    710 contrib/macosx/Pkg-Info.plist
    711 doc/Makefile
    712 src/Makefile
    713 src/include/Makefile
    714 src/intlemu/Makefile
    715 src/common/Makefile
    716 src/main/Makefile
    717 src/plugins/Makefile
    718 ])
    719 
    720 AX_CREATE_PKGCONFIG_INFO([libextractor.pc],,[-lextractor],[Metadata extraction library],,)
    721 
    722 AC_OUTPUT
    723 
    724 AS_IF([test "x$HAVE_ZLIB_TRUE" = "x#"],
    725   [AC_MSG_NOTICE([NOTICE: zlib not found, zlib support disabled])])
    726 
    727 AS_IF([test "x$HAVE_BZ2_TRUE" = "x#"],
    728   [AC_MSG_NOTICE([NOTICE: libbz2 not found, bz2 support disabled])])
    729 
    730 AS_IF([test "x$HAVE_EXIV2_TRUE" = "x#"],
    731   [AC_MSG_NOTICE([NOTICE: libexiv2 not found, exiv2 disabled])])
    732 
    733 AS_IF([test "x$HAVE_POPPLER_TRUE" = "x#"],
    734   [AC_MSG_NOTICE([NOTICE: libpoppler-cpp not found, PDF support disabled])])
    735 
    736 AS_IF([test "x$HAVE_TIFF_TRUE" = "x#"],
    737   [AC_MSG_NOTICE([NOTICE: libtiff not found, tiff disabled])])
    738 
    739 AS_IF([test "x$HAVE_JPEG_TRUE" = "x#"],
    740   [AC_MSG_NOTICE([NOTICE: libjpeg not found, jpeg disabled])])
    741 
    742 AS_IF([test "x$HAVE_GIF_TRUE" = "x#"],
    743   [AC_MSG_NOTICE([NOTICE: libgif not found, gif disabled])])
    744 
    745 AS_IF([test "x$have_gsf" != "xtrue"],
    746   [AC_MSG_NOTICE([NOTICE: libgsf not found, no OLE2 (MS Office) support])])
    747 
    748 AS_IF([test "x$have_gdk_pixbuf" = "x0"],
    749   [AC_MSG_NOTICE([NOTICE: libgdk-pixbuf not found, gtk thumbnail support disabled])])
    750 
    751 AS_IF([test "x$HAVE_VORBISFILE_TRUE" = "x#"],
    752   [AC_MSG_NOTICE([NOTICE: libvorbis not found, vorbis support disabled])])
    753 
    754 AS_IF([test "x$HAVE_FLAC_TRUE" = "x#"],
    755   [AC_MSG_NOTICE([NOTICE: libflac not found, flac support disabled])])
    756 
    757 AS_IF([test "x$HAVE_SMF_TRUE" = "x#"],
    758   [AC_MSG_NOTICE([NOTICE: libsmf not found, midi support disabled])])
    759 
    760 AS_IF([test "x$HAVE_MPEG2_TRUE" = "x#"],
    761   [AC_MSG_NOTICE([NOTICE: libmpeg2 not found, mpeg2 support disabled])])
    762 
    763 AS_IF([test "x$HAVE_VLC_TRUE" = "x#"],
    764   [AC_MSG_NOTICE([NOTICE: libvlc not found, libvlc support disabled])])
    765 
    766 AS_IF([test "x$HAVE_RPM_TRUE" = "x#"],
    767   [AC_MSG_NOTICE([NOTICE: librpm not found, rpm support disabled])])
    768 
    769 AS_IF([test "x$HAVE_CXX" != "xyes"],
    770   [AC_MSG_NOTICE([NOTICE: no C++ compiler found (not compiling plugins that require C++)])])
    771 
    772 AS_IF([test x$have_gstreamer = xyes -a x$have_gstreamer_pbutils = xyes -a x$have_gstreamer_tag = xyes -a x$have_gstreamer_app = xyes -a ! x$without_glib = xtrue],
    773   [AS_IF([test x$enable_experimental = xyes],
    774     [AC_MSG_NOTICE([NOTICE: gstreamer enabled])])],
    775   [AC_MSG_NOTICE([NOTICE: gstreamer not found, gstreamer support disabled])])
    776 
    777 AS_IF([test "x$HAVE_APPARMOR_TRUE" = "x#"],
    778  [AC_MSG_NOTICE([NOTICE: libapparmor not found, apparmor support disabled])])