core: New function gpgme_op_tofu_policy
[gpgme.git] / configure.ac
index 335a33a..352ac8b 100644 (file)
@@ -28,8 +28,8 @@ min_automake_version="1.14"
 # commit and push so that the git magic is able to work.  See below
 # for the LT versions.
 m4_define(mym4_version_major, [1])
-m4_define(mym4_version_minor, [6])
-m4_define(mym4_version_micro, [1])
+m4_define(mym4_version_minor, [7])
+m4_define(mym4_version_micro, [0])
 
 # Below is m4 magic to extract and compute the revision number, the
 # decimalized short revision number, a beta version string, and a flag
@@ -127,6 +127,22 @@ VERSION_NUMBER=m4_esyscmd(printf "0x%02x%02x%02x" mym4_version_major \
                           mym4_version_minor mym4_version_micro)
 AC_SUBST(VERSION_NUMBER)
 
+# We need to compile and run a program on the build machine.  A
+# comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
+# the AC archive is broken for autoconf 2.57.  Given that there is no
+# newer version of that macro, we assume that it is also broken for
+# autoconf 2.61 and thus we use a simple but usually sufficient
+# approach.
+AC_MSG_CHECKING(for cc for build)
+if test "$cross_compiling" = "yes"; then
+  CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
+else
+  CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
+fi
+AC_MSG_RESULT($CC_FOR_BUILD)
+AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
+
+
 # Don't default to build static libs.
 LT_PREREQ([2.2.6])
 LT_INIT([win32-dll disable-static])
@@ -160,7 +176,7 @@ have_w32_system=no
 have_w64_system=no
 build_w32_glib=no
 build_w32_qt=no
-available_languages="cl cpp python qt"
+available_languages="cl cpp python python2 python3 qt"
 default_languages="cl cpp python qt"
 case "${host}" in
     x86_64-*mingw32*)
@@ -249,6 +265,9 @@ if test x$fixed_search_path != x ; then
                     [Locate binaries only via this PATH])
 fi
 
+
+# Note: You need to declare all possible langauges also in
+#       lang/Makefile.am's DIST_SUBDIRS.
 AC_ARG_ENABLE([languages],
               AC_HELP_STRING([--enable-languages=languages],
                              [enable only specific language bindings]),
@@ -350,8 +369,13 @@ fi
 AC_SUBST(HAVE_DOT)
 
 # Python bindings.
+LIST_MEMBER("python2", $enabled_languages)
+found_py2=$found
+LIST_MEMBER("python3", $enabled_languages)
+found_py3=$found
 LIST_MEMBER("python", $enabled_languages)
-if test "$found" = "1"; then
+found_py=$found
+if test "$found_py" = "1" -o "$found_py2" = "1" -o "$found_py3" = "1"; then
     AX_PKG_SWIG
     if test -z "$SWIG"; then
         if test "$explicit_languages" = "1"; then
@@ -363,11 +387,61 @@ if test "$found" = "1"; then
             enabled_languages=$(echo $enabled_languages | sed 's/python//')
         fi
     else
-        AM_PATH_PYTHON([3.3])
-        AX_SWIG_PYTHON
-       if test -z "$PYTHON_VERSION"; then
-           if test "$explicit_languages" = "1"; then
-              AC_MSG_ERROR([[
+        # Reset all the stuff, just to be sure.
+       PYTHONS=
+       PYTHON_VERSIONS=
+       unset PYTHON
+       unset PYTHON_VERSION
+       unset PYTHON_CPPFLAGS
+       unset PYTHON_LDFLAGS
+       unset PYTHON_SITE_PKG
+       unset PYTHON_EXTRA_LIBS
+       unset PYTHON_EXTRA_LDFLAGS
+       unset ac_cv_path_PYTHON
+       unset am_cv_pathless_PYTHON
+       unset am_cv_python_version
+       unset am_cv_python_platform
+       unset am_cv_python_pythondir
+       unset am_cv_python_pyexecdir
+
+       if test "$found_py" = "1" -o "$found_py2" = "1"; then
+           AM_PATH_PYTHON([2.7])
+           AX_PYTHON_DEVEL
+           if test "$PYTHON"; then
+               PYTHONS="$(echo $PYTHONS $PYTHON)"
+               PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+           fi
+       fi
+
+       if test "$found_py" = "1" -o "$found_py3" = "1"; then
+           # Reset everything, so that we can look for another Python.
+           unset PYTHON
+           unset PYTHON_VERSION
+           unset PYTHON_CPPFLAGS
+           unset PYTHON_LDFLAGS
+           unset PYTHON_SITE_PKG
+           unset PYTHON_EXTRA_LIBS
+           unset PYTHON_EXTRA_LDFLAGS
+           unset ac_cv_path_PYTHON
+           unset am_cv_pathless_PYTHON
+           unset am_cv_python_version
+           unset am_cv_python_platform
+           unset am_cv_python_pythondir
+           unset am_cv_python_pyexecdir
+           AM_PATH_PYTHON([3.4])
+           AX_PYTHON_DEVEL
+           if test "$PYTHON"; then
+               PYTHONS="$(echo $PYTHONS $PYTHON)"
+               PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+           fi
+       fi
+
+       if test "$PYTHON_VERSIONS"; then
+          enabled_languages_v=$(echo $enabled_languages | sed "s/python\([[23]]\)\?/python ($PYTHON_VERSIONS)/")
+          enabled_languages=$(echo $enabled_languages | sed "s/python\([[23]]\)\?/python/")
+       else
+            if test "$explicit_languages" = "1"; then
+                AC_MSG_ERROR([[
 ***
 *** Please install the python development packages.
 ***]])
@@ -375,6 +449,9 @@ if test "$found" = "1"; then
                 enabled_languages=$(echo $enabled_languages | sed 's/python//')
             fi
        fi
+
+       AC_SUBST(PYTHONS, $PYTHONS)
+       AC_SUBST(PYTHON_VERSIONS, $PYTHON_VERSIONS)
     fi
 fi
 
@@ -493,6 +570,35 @@ AM_SUBST_NOTMAKE(API__SSIZE_T)
 # Checks for compiler features.
 if test "$GCC" = yes; then
     CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
+    if test "$USE_MAINTAINER_MODE" = "yes"; then
+        CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
+
+        # If -Wno-missing-field-initializers is supported we can enable a
+        # a bunch of really useful warnings.
+        AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
+        _gcc_cflags_save=$CFLAGS
+        CFLAGS="-Wno-missing-field-initializers"
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
+        AC_MSG_RESULT($_gcc_wopt)
+        CFLAGS=$_gcc_cflags_save;
+        if test x"$_gcc_wopt" = xyes ; then
+          CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
+          CFLAGS="$CFLAGS -Wwrite-strings"
+          CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+          CFLAGS="$CFLAGS -Wno-missing-field-initializers"
+          CFLAGS="$CFLAGS -Wno-sign-compare"
+        fi
+
+        AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
+        _gcc_cflags_save=$CFLAGS
+        CFLAGS="-Wpointer-arith"
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
+        AC_MSG_RESULT($_gcc_wopt)
+        CFLAGS=$_gcc_cflags_save;
+        if test x"$_gcc_wopt" = xyes ; then
+          CFLAGS="$CFLAGS -Wpointer-arith"
+        fi
+    fi
     if test "$have_w32_system" = yes; then
        CFLAGS="$CFLAGS -mms-bitfields"
     fi
@@ -698,10 +804,12 @@ AH_BOTTOM([
 GPGME_CONFIG_LIBS="-lgpgme"
 GPGME_CONFIG_CFLAGS=""
 GPGME_CONFIG_HOST="$host"
+GPGME_CONFIG_AVAIL_LANG="$enabled_languages"
 AC_SUBST(GPGME_CONFIG_API_VERSION)
 AC_SUBST(GPGME_CONFIG_LIBS)
 AC_SUBST(GPGME_CONFIG_CFLAGS)
 AC_SUBST(GPGME_CONFIG_HOST)
+AC_SUBST(GPGME_CONFIG_AVAIL_LANG)
 
 # Frob'da Variables
 LTLIBOBJS=`echo "$LIB@&t@OBJS" |
@@ -768,10 +876,12 @@ AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
 AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
 AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
 AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
+AC_CONFIG_FILES(lang/cpp/src/gpgmepp_version.h)
 AC_CONFIG_FILES(lang/qt/Makefile lang/qt/src/Makefile)
 AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in)
 AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake)
 AC_CONFIG_FILES(lang/qt/tests/Makefile)
+AC_CONFIG_FILES(lang/qt/src/qgpgme_version.h)
 AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
 AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])])
 AC_CONFIG_FILES(lang/qt/doc/Makefile)
@@ -791,7 +901,7 @@ echo "
         FD Passing:        $use_descriptor_passing
         GPGME Pthread:     $have_pthread
 
-        Language bindings: $enabled_languages
+        Language bindings: ${enabled_languages_v:-$enabled_languages}
 "
 if test "x${gpg_config_script_warn}" != x; then
 cat <<G10EOF