fix lintian autotools-pkg-config-macro-not-cross-compilation-safe warning
[claws.git] / configure.ac
index 99cb4482c88b390e02ca429207d3f5ec2baa5d39..edf77674d9296fa92b5695478a57ec78aeca5adb 100644 (file)
@@ -21,8 +21,13 @@ if test \( -d .git \); then
        echo "echo ${GIT_VERSION}" > ./version
     fi
 else
-    GIT_VERSION=`sh -c ". ./$srcdir/version"`
+    GIT_VERSION=`sh -c ". $srcdir/version"`
 fi
+
+if test \( -z "$GIT_VERSION" \); then
+       AC_MSG_ERROR([*** could not determine program version])
+fi
+
 MAJOR_VERSION=${GIT_VERSION%%.*}
 MINOR_VERSION=${GIT_VERSION#*.}
 MINOR_VERSION=${MINOR_VERSION%%.*}
@@ -60,10 +65,7 @@ AC_SUBST(GIT_VERSION)
 AC_CHECK_PROG(HAVE_GTK_ICON_CACHE, gtk-update-icon-cache, yes, no)
 AM_CONDITIONAL(UPDATE_GTK_ICON_CACHE, test x"$HAVE_GTK_ICON_CACHE" = xyes)
 
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test x$PKG_CONFIG = xno ; then
-  AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
-fi
+PKG_PROG_PKG_CONFIG
 
 dnl libtool versioning
 LT_RELEASE=$MAJOR_VERSION.$MINOR_VERSION
@@ -210,7 +212,7 @@ AC_CHECK_FUNCS(bind_textdomain_codeset)
 LIBS=$syl_save_LIBS
 
 dnl for gettext
-ALL_LINGUAS="ca cs da de en_GB es fi fr he hu id_ID it nb nl pt_BR ru sk sv tr zh_TW"
+ALL_LINGUAS="ca cs da de en_GB es fi fr hu id_ID it ja nb nl pl pt_BR ro ru sk sv tr zh_TW"
 GETTEXT_PACKAGE=claws-mail
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define text domain.])
@@ -294,10 +296,6 @@ AC_ARG_ENABLE(svg,
         [  --disable-svg                   Do not build SVG support],
         [enable_svg=$enableval], [enable_svg=yes])
 
-AC_ARG_ENABLE(deprecated,
-               [  --disable-deprecated            Disable deprecated GTK functions],
-               [GTK_CFLAGS="$GTK_CFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"], [])
-
 manualdir='${docdir}/manual'
 AC_ARG_WITH(manualdir,
        [  --with-manualdir=DIR    Manual directory],
@@ -424,9 +422,9 @@ dnl ** common code **
 dnl *****************
 
 dnl check for glib
-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.20 gmodule-2.0 >= 2.20 gobject-2.0 >= 2.20 gthread-2.0 >= 2.20)
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28 gmodule-2.0 >= 2.28 gobject-2.0 >= 2.28 gthread-2.0 >= 2.28)
 
-GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
+GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
 AC_SUBST(GLIB_GENMARSHAL)
 
 AC_SUBST(GLIB_CFLAGS)
@@ -490,29 +488,17 @@ if test "x$enable_gnutls" != "xno"; then
                ])
         ],
         [
-                echo "Building without gnutls"
-               enable_gnutls=no
+                echo "Building without GnuTLS"
+               AC_MSG_RESULT([*** GnuTLS support is recommended ])
+               AC_MSG_RESULT([*** You can use --disable-gnutls if you don't need it.])
+               AC_MSG_ERROR([GnuTLS not found])
         ])
         AC_SUBST(GNUTLS_LIBS)
         AC_SUBST(GNUTLS_CFLAGS)
 fi
 
-dnl password encryption
-OLDLIBS=$LIBS
-LIBS=
-case $host_os in
-       *dragonfly*)
-               AC_SEARCH_LIBS(encrypt, cipher, [], AC_MSG_ERROR(['encrypt'-function not found.]))
-       ;;
-       *freebsd*)
-       ;; # not used
-       *)
-               AC_SEARCH_LIBS(encrypt, crypt, [], AC_MSG_ERROR(['encrypt'-function not found.]))
-       ;;
-esac
-CRYPT_LIBS=$LIBS
-AC_SUBST(CRYPT_LIBS)
-LIBS=$OLDLIBS
+PKG_CHECK_MODULES(NETTLE, nettle)
+AC_SUBST(NETTLE_LIBS)
 
 AC_ARG_WITH(passcrypt-key, [  --with-passcrypt-key=KEY     Key used to encode passwords (8 byte string)],
            with_passcrypt_key="$withval", with_passcrypt_key="passkey0")
@@ -577,8 +563,15 @@ if test x"$enable_gtk3" = x"yes"; then
        AM_CONDITIONAL(GTK3, true)
        AM_CONDITIONAL(GTK2, false)
 else
-       PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.16)
+       PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.24)
 fi
+AC_ARG_ENABLE(deprecated,
+               [  --disable-deprecated            Disable deprecated GTK functions],
+               [GTK_CFLAGS="$GTK_CFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"], [])
+
+dnl Make sure the code does not regress to using deprecated GTK stuff...
+GTK_CFLAGS="$GTK_CFLAGS -DGTK_DISABLE_SINGLE_INCLUDES -DGSEAL_ENABLE"
+
 AC_SUBST(GTK_CFLAGS)
 AC_SUBST(GTK_LIBS)
 
@@ -586,16 +579,23 @@ dnl enchant is used for spell checking
 AC_MSG_CHECKING([whether to use enchant])
 AC_MSG_RESULT($enable_enchant)
 if test $enable_enchant = yes; then
-       PKG_CHECK_MODULES(ENCHANT, enchant >= 1.0.0,
+       PKG_CHECK_MODULES(ENCHANT, enchant >= 1.4.0,
        [
                AC_DEFINE(USE_ENCHANT, 1, enchant)
                echo "Building with enchant"
                enable_enchant=yes
-               CFLAGS="$CFLAGS `$PKG_CONFIG --cflags enchant`"
        ],
        [
-               echo "Building without enchant-notification"
-               enable_enchant=no
+               PKG_CHECK_MODULES(ENCHANT, enchant-2 >= 2.0.0,
+               [
+                       AC_DEFINE(USE_ENCHANT, 1, enchant-2)
+                       echo "Building with enchant-2"
+                       enable_enchant=yes
+               ],
+               [
+                       echo "Building without enchant-notification"
+                       enable_enchant=no
+               ])
        ])
        AC_SUBST(ENCHANT_CFLAGS)
        AC_SUBST(ENCHANT_LIBS)
@@ -718,11 +718,11 @@ if test "x$enable_dbus" = "xyes"; then
        PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60, dbus-glib-1 >= 0.60],
        [
                AC_DEFINE(HAVE_DBUS_GLIB, 1, [Define if glib bindings of D-Bus are available])
-               enable_dbus_glib=yes
+               enable_dbus=yes
        ],
        [
                echo "D-Bus requirements not met. D-Bus support not activated."
-               enable_dbus_glib=no
+               enable_dbus=no
        ])
        AC_SUBST(DBUS_CFLAGS)
        AC_SUBST(DBUS_LIBS)
@@ -736,7 +736,7 @@ dnl #######################################################################
 dnl # Check for alternate address book support
 dnl #######################################################################
 AC_MSG_CHECKING([whether DBUS support for alternate address book is present])
-if test x"$enable_dbus_glib" = xyes; then
+if test x"$enable_dbus" = xyes; then
        AC_MSG_RESULT([yes])
        AC_MSG_CHECKING([whether to enable alternate address book])
        if test x"$enable_alternate_addressbook" = xyes; then
@@ -874,9 +874,9 @@ AM_CONDITIONAL(BUILD_ALTADDRBOOK, test x"$enable_alternate_addressbook" = x"yes"
 dnl #######################################################################
 dnl # Check for NetworkManager support
 dnl #######################################################################
-if test x"$enable_dbus_glib" = xyes; then
+if test x"$enable_dbus" = xyes; then
        if test x"$enable_networkmanager" = xyes; then
-               PKG_CHECK_MODULES(NETWORKMANAGER_SUPPORT, NetworkManager >= 0.6.2,
+               PKG_CHECK_MODULES(NETWORKMANAGER_SUPPORT, libnm,
                [
                        AC_DEFINE(HAVE_NETWORKMANAGER_SUPPORT, 1, [Define if NetworkManager support is to be included.])
                        echo "Building with NetworkManager support"
@@ -935,7 +935,7 @@ dnl librsvg
 AC_MSG_CHECKING([whether to use librsvg])
 if test x"$enable_svg" = xyes; then
        AC_MSG_RESULT(yes)
-    PKG_CHECK_MODULES([SVG], [librsvg-2.0 >= 2.36.0 cairo >= 1.0.0],
+    PKG_CHECK_MODULES([SVG], [librsvg-2.0 >= 2.39.0 cairo >= 1.0.0],
     [
         AC_SUBST(SVG_CFLAGS)
         AC_SUBST(SVG_LIBS)
@@ -943,7 +943,7 @@ if test x"$enable_svg" = xyes; then
                enable_svg=yes
        ],
        [
-               AC_MSG_NOTICE([SVG support deactivated as librsvg2 >= 2.36 was not found])
+               AC_MSG_NOTICE([SVG support deactivated as librsvg2 >= 2.39.0 was not found])
                enable_svg=no
        ])
 else
@@ -1102,7 +1102,7 @@ AC_ARG_ENABLE(demo-plugin,
 
 
 dnl Then we check (unconditionnaly) for plugins dependencies
-dnl Some dependencies are optional, some mandatories. This is taken care of
+dnl Some dependencies are optional, some mandatory. This is taken care of
 dnl later.
 dnl
 dnl During this dependancy check we do the checks themselves, define HAVE_X to
@@ -1124,6 +1124,7 @@ dnl Python:               Python
 dnl RSSyl:             expat libcurl
 dnl SpamReport:                libcurl
 dnl vCalendar:         libcurl, libical
+dnl tnef_parse:        libytnef
 
 dnl libcurl ********************************************************************
 PKG_CHECK_MODULES(CURL, libcurl, HAVE_CURL=yes, HAVE_CURL=no)
@@ -1174,7 +1175,7 @@ AC_SUBST(ARCHIVE_CFLAGS)
 AC_CHECK_LIB([archive], [archive_read_new],
                       ARCHIVE_LIBS=-larchive
                       HAVE_ARCHIVE=yes
-                      AC_SUBST(ARCHIVE_LIBS,ARCHIVE_CFLAGS),
+                      AC_SUBST(ARCHIVE_LIBS,$ARCHIVE_CFLAGS),
                       HAVE_ARCHIVE=no
                       )
 
@@ -1222,10 +1223,10 @@ if test x"$HAVE_PERL" = xyes; then
        AC_MSG_CHECKING(for Perl compile flags)
        PERL_CFLAGS=`perl -MExtUtils::Embed -e ccopts`
        PERL_CFLAGS=`echo $PERL_CFLAGS | sed 's/-D_FILE_OFFSET_BITS=[[0-9]]*//'`
-       PERL_LDFLAGS=`perl -MExtUtils::Embed -e ldopts |sed 's/-lgdbm//'`
-       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-ldb//'`
-       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-lndbm//'`
-       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-lc//'`
+       PERL_LDFLAGS=`perl -MExtUtils::Embed -e ldopts |sed 's/-lgdbm\>//'`
+       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-ldb\>//'`
+       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-lndbm\>//'`
+       PERL_LDFLAGS=`echo $PERL_LDFLAGS |sed 's/-lc\>//'`
        AC_MSG_RESULT(ok)
        AC_MSG_NOTICE([Adding perl LIBS ${PERL_CFLAGS}])
        
@@ -1342,6 +1343,51 @@ fi
 AC_SUBST(CM_NP_HOTKEY_CFLAGS)
 AC_SUBST(CM_NP_HOTKEY_LIBS)
 
+dnl libytnef *******************************************************************
+YTNEF_CFLAGS=""
+YTNEF_LIBS=""
+have_ytnef=0
+# Check both ytnef.h and libytnef/ytnef.h, and adjust YTNEF_CFLAGS
+# accordingly
+AC_CHECK_HEADER(ytnef.h, [have_ytnef=1], [have_ytnef=0])
+if test $have_ytnef -eq 0; then
+       AC_CHECK_HEADER(libytnef/ytnef.h,
+                                                                       [have_ytnef=1;
+                                                                        YTNEF_CFLAGS="${YTNEF_CFLAGS} -DYTNEF_H_SUBDIR"],
+                                                                       [have_ytnef=0])
+fi
+if test $have_ytnef -eq 1; then
+       AC_MSG_CHECKING([how libytnef's SwapDDWord() should be called])
+       # Now we have to figure out which libytnef version we're using,
+       # based on whether SwapDDWord takes one argument or two.
+       if test "x${YTNEF_CFLAGS}" = "x"; then
+               ytnef_include="#include <ytnef.h>"
+       else
+               ytnef_include="#include <libytnef/ytnef.h>"
+       fi
+       AC_TRY_COMPILE([#include <stdio.h>
+                                                                       ${ytnef_include}],
+                                                                       [SwapDDWord(0, 0);],
+                                                                       [have_ytnef=1],
+                                                                       [have_ytnef=0])
+       if test $have_ytnef -eq 0; then
+               AC_TRY_COMPILE([#include <stdio.h>
+                                                                               ${ytnef_include}],
+                                                                               [SwapDDWord(0);],
+                                                                               [have_ytnef=1;
+                                                                                YTNEF_CFLAGS="${YTNEF_CFLAGS} -DYTNEF_OLD_SWAPDDWORD"],
+                                                                               [have_ytnef=0])
+       fi
+       if test $have_ytnef -eq 1; then
+               YTNEF_LIBS="-lytnef"
+               AC_MSG_RESULT(ok)
+       else
+               AC_MSG_RESULT(no idea, unsupported libytnef version?)
+       fi
+fi
+AC_SUBST(YTNEF_CFLAGS)
+AC_SUBST(YTNEF_LIBS)
+
 dnl Third, we now cross the requested plugins and the available dependencies
 dnl If some dependencies are missing and the plugin was explicitely enabled,
 dnl we error out, else we only inform.
@@ -1797,6 +1843,28 @@ if test x"$enable_spamassassin_plugin" != xno; then
        PLUGINS="$PLUGINS spamassassin"
        AC_MSG_RESULT(yes)
        AC_SPAMASSASSIN
+
+       dnl check for zlib (optional)
+       spamassassin_zlib=0
+       SPAMASSASSIN_CFLAGS=""
+       SPAMASSASSIN_LIBS=""
+       AC_CHECK_HEADER([zlib.h],
+                       [AC_DEFINE(HAVE_ZLIB_H,1,[optional zlib support for spamassassin plugin])]
+                       [spamassassin_zlib=1],
+                       [spamassassin_zlib=0])
+       if test $spamassassin_zlib -eq 1; then
+               AC_CHECK_LIB(z, deflate, [spamassassin_zlib=1], [spamassassin_zlib=0])
+               AC_MSG_CHECKING([whether to build spamassassin plugin with zlib support])
+               if test $spamassassin_zlib -eq 1; then
+                       AC_MSG_RESULT(yes)
+                       SPAMASSASSIN_CFLAGS="-DHAVE_LIBZ"
+                       SPAMASSASSIN_LIBS="-lz"
+               else
+                       AC_MSG_RESULT(no)
+               fi
+       fi
+       AC_SUBST(SPAMASSASSIN_CFLAGS)
+       AC_SUBST(SPAMASSASSIN_LIBS)
 else
        DISABLED_PLUGINS="$DISABLED_PLUGINS spamassassin"
        AC_MSG_RESULT(no)
@@ -1857,13 +1925,30 @@ fi
 
 AC_MSG_CHECKING([whether to build tnef_parse plugin])
 if test x"$enable_tnef_parse_plugin" != xno; then
-       PLUGINS="$PLUGINS tnef_parse"
-       AC_MSG_RESULT(yes)
+       dependencies_missing=""
+
+       if test $have_ytnef -eq 0; then
+               dependencies_missing="libytnef"
+       fi
+
+       if test x"$dependencies_missing" = x; then
+               PLUGINS="$PLUGINS tnef_parse"
+               AC_MSG_RESULT(yes)
+       elif test x"$enable_tnef_parse_plugin" = xauto; then
+               AC_MSG_RESULT(no)
+               AC_MSG_WARN(Plugin tnef_parse will not be built; missing $dependencies_missing")
+               enable_tnef_parse_plugin=no
+               MISSING_DEPS_PLUGINS="$MISSING_DEPS_PLUGINS tnef_parse"
+       else
+               AC_MSG_RESULT(no)
+               AC_MSG_ERROR(Plugin tnef_parse will not be built; missing $dependencies_missing")
+       fi
 else
        DISABLED_PLUGINS="$DISABLED_PLUGINS tnef_parse"
        AC_MSG_RESULT(no)
 fi
 
+
 AC_MSG_CHECKING([whether to build vcalendar plugin])
 if test x"$enable_vcalendar_plugin" != xno; then
        dependencies_missing=""