# configure.ac - for GnuPG 2.1
# Copyright (C) 1998-2012 Free Software Foundation, Inc.
-# Copyright (C) 1998-2015 Werner Koch
+# Copyright (C) 1998-2016 Werner Koch
#
# This file is part of GnuPG.
#
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
m4_define([mym4_package],[gnupg])
m4_define([mym4_major], [2])
m4_define([mym4_minor], [1])
-m4_define([mym4_micro], [11])
+m4_define([mym4_micro], [16])
# To start a new development series, i.e a new major or minor number
# you need to mark an arbitrary commit before the first beta release
m4_define([mym4_revision], m4_argn(7, mym4_verslist))
m4_define([mym4_revision_dec], m4_argn(8, mym4_verslist))
m4_esyscmd([echo ]mym4_version[>VERSION])
-AC_INIT([mym4_package],[mym4_version], [http://bugs.gnupg.org])
+AC_INIT([mym4_package],[mym4_version], [https://bugs.gnupg.org])
-NEED_GPG_ERROR_VERSION=1.21
+NEED_GPG_ERROR_VERSION=1.24
NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.6.0
+NEED_LIBGCRYPT_VERSION=1.7.0
NEED_LIBASSUAN_API=2
-NEED_LIBASSUAN_VERSION=2.4.1
+NEED_LIBASSUAN_VERSION=2.4.3
NEED_KSBA_API=1
-NEED_KSBA_VERSION=1.2.0
+NEED_KSBA_VERSION=1.3.4
NEED_NTBTLS_API=1
NEED_NTBTLS_VERSION=0.1.0
NEED_NPTH_API=1
-NEED_NPTH_VERSION=0.91
+NEED_NPTH_VERSION=1.2
NEED_GNUTLS_VERSION=3.0
use_trust_models=yes
use_tofu=yes
card_support=yes
-use_ccid_driver=yes
+use_ccid_driver=auto
dirmngr_auto_start=yes
use_tls_library=no
large_secmem=no
GNUPG_BUILD_PROGRAM(tools, yes)
GNUPG_BUILD_PROGRAM(doc, yes)
GNUPG_BUILD_PROGRAM(symcryptrun, no)
+# We use gpgtar to unpack test data, hence we always build it. If the
+# user opts out, we simply don't install it.
GNUPG_BUILD_PROGRAM(gpgtar, yes)
+GNUPG_BUILD_PROGRAM(wks-tools, no)
AC_SUBST(PACKAGE)
AC_SUBST(PACKAGE_GT)
&& show_gnupg_protect_tool_pgm="$GNUPG_PROTECT_TOOL_PGM"
AC_ARG_WITH(dirmngr-ldap-pgm,
- [ --with-dirmngr-ldap-pgm=PATH Use PATH as the default for the dirmnge ldap wrapper)],
+ [ --with-dirmngr-ldap-pgm=PATH Use PATH as the default for the dirmngr ldap wrapper)],
GNUPG_DIRMNGR_LDAP_PGM="$withval", GNUPG_DIRMNGR_LDAP_PGM="" )
AC_SUBST(GNUPG_DIRMNGR_LDAP_PGM)
AM_CONDITIONAL(GNUPG_DIRMNGR_LDAP_PGM, test -n "$GNUPG_DIRMNGR_LDAP_PGM")
AC_ARG_ENABLE(gpg2-is-gpg,
AC_HELP_STRING([--enable-gpg2-is-gpg],[Set installed name of gpg2 to gpg]),
gpg2_is_gpg=$enableval)
-if test "$gpg2_is_gpg" = "yes"; then
- name_of_installed_gpg=gpg
-else
- name_of_installed_gpg=gpg2
+if test "$gpg2_is_gpg" != "yes"; then
+ AC_DEFINE(USE_GPG2_HACK, 1, [Define to install gpg as gpg2])
fi
-AC_DEFINE_UNQUOTED(NAME_OF_INSTALLED_GPG, "$name_of_installed_gpg",
- [The name of the installed GPG tool])
+AM_CONDITIONAL(USE_GPG2_HACK, test "$gpg2_is_gpg" != "yes")
# SELinux support includes tracking of sensitive files to avoid
AC_ARG_ENABLE(tofu,
AC_HELP_STRING([--disable-tofu],
[disable the TOFU trust model]),
- use_tofu=$enableval, use_tofu=yes)
+ use_tofu=$enableval, use_tofu=$use_trust_models)
AC_MSG_RESULT($use_tofu)
+if test "$use_trust_models" = no && test "$use_tofu" = yes; then
+ AC_MSG_ERROR([both --disable-trust-models and --enable-tofu given])
+fi
have_w32_system=no
have_w32ce_system=no
have_android_system=no
-run_tests=yes
use_simple_gettext=no
use_ldapwrapper=yes
mmap_needed=yes
we use a simplified version of gettext])
have_dosish_system=yes
have_w32_system=yes
- run_tests=no
+ require_iconv=no
use_ldapwrapper=no # Fixme: Do this only for CE.
case "${host}" in
*-mingw32ce*)
;;
m68k-atari-mint)
;;
- *-linux-androideabi)
+ *-linux-android*)
have_android_system=yes
# Android is fully utf-8 and we do not want to use iconv to
# keeps things simple
require_iconv=no
- run_tests=no
;;
*)
;;
fi
AM_CONDITIONAL(HAVE_ANDROID_SYSTEM, test "$have_android_system" = yes)
-if test "$run_tests" = yes; then
- AC_DEFINE(RUN_TESTS,1, [Defined if we should run the tests])
-fi
-AM_CONDITIONAL(RUN_TESTS, test "$run_tests" = yes)
-
# (These need to go after AC_PROG_CC so that $EXEEXT is defined)
AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
# libusb allows us to use the integrated CCID smartcard reader driver.
#
# FiXME: Use GNUPG_CHECK_LIBUSB and modify to use separate AC_SUBSTs.
-if test "$use_ccid_driver" = yes ; then
- AC_CHECK_LIB(usb, usb_bulk_write,
- [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
- AC_DEFINE(HAVE_LIBUSB,1,
- [defined if libusb is available])
- have_libusb=yes
- ])
- AC_CHECK_FUNCS(usb_create_match)
+if test "$use_ccid_driver" = auto || test "$use_ccid_driver" = yes; then
+ case "${host}" in
+ *-mingw32*)
+ LIBUSB_NAME=
+ LIBUSB_LIBS=
+ LIBUSB_CPPFLAGS=
+ ;;
+ *-*-darwin*)
+ LIBUSB_NAME=usb-1.0
+ LIBUSB_LIBS="-Wl,-framework,CoreFoundation -Wl,-framework,IOKit"
+ ;;
+ *-*-freebsd*)
+ # FreeBSD has a native 1.0 compatible library by -lusb.
+ LIBUSB_NAME=usb
+ LIBUSB_LIBS=
+ ;;
+ *)
+ LIBUSB_NAME=usb-1.0
+ LIBUSB_LIBS=
+ ;;
+ esac
+fi
+if test x"$LIBUSB_NAME" != x ; then
+ AC_CHECK_LIB($LIBUSB_NAME, libusb_init,
+ [ LIBUSB_LIBS="-l$LIBUSB_NAME $LIBUSB_LIBS"
+ have_libusb=yes ])
+ AC_MSG_CHECKING([libusb include dir])
+ usb_incdir_found="no"
+ for _incdir in "" "/usr/include/libusb-1.0" "/usr/local/include/libusb-1.0"; do
+ _libusb_save_cppflags=$CPPFLAGS
+ if test -n "${_incdir}"; then
+ CPPFLAGS="-I${_incdir} ${CPPFLAGS}"
+ fi
+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <libusb.h>]])],
+ [usb_incdir=${_incdir}; usb_incdir_found="yes"], [])
+ CPPFLAGS=${_libusb_save_cppflags}
+ if test "$usb_incdir_found" = "yes"; then
+ break
+ fi
+ done
+ if test "$usb_incdir_found" = "yes"; then
+ AC_MSG_RESULT([${usb_incdir}])
+ else
+ AC_MSG_RESULT([not found])
+ usb_incdir=""
+ have_libusb=no
+ if test "$use_ccid_driver" != yes; then
+ use_ccid_driver=no
+ fi
+ LIBUSB_LIBS=""
+ fi
+
+ if test "$have_libusb" = yes; then
+ AC_DEFINE(HAVE_LIBUSB,1, [defined if libusb is available])
+ fi
+ if test x"$usb_incdir" = x; then
+ LIBUSB_CPPFLAGS=""
+ else
+ LIBUSB_CPPFLAGS="-I${usb_incdir}"
+ fi
fi
AC_SUBST(LIBUSB_LIBS)
+AC_SUBST(LIBUSB_CPPFLAGS)
#
# Check wether it is necessary to link against libdl.
AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
AC_SEARCH_LIBS(dn_expand,resolv bind,,
AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
- AC_SEARCH_LIBS(dn_skipname,resolv bind,,
- AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
+
+ # macOS renames dn_skipname into res_9_dn_skipname in <resolv.h>,
+ # and for some reason fools us into believing we don't need
+ # -lresolv even if we do. Since the test program checking for the
+ # symbol does not include <resolv.h>, we need to check for the
+ # renamed symbol explicitly.
+ AC_SEARCH_LIBS(res_9_dn_skipname,resolv bind,,
+ AC_SEARCH_LIBS(dn_skipname,resolv bind,,
+ AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no)))
if test x"$have_resolver" != xno ; then
AC_CHECK_FUNCS([ttyname rand ftello fsync stat lstat])
AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol \
memrchr isascii timegm getrusage setrlimit stat setlocale \
- flockfile funlockfile fopencookie funopen getpwnam getpwuid \
+ flockfile funlockfile getpwnam getpwuid \
getenv inet_pton strpbrk])
+# On some systems (e.g. Solaris) nanosleep requires linking to librl.
+# Given that we use nanosleep only as an optimization over a select
+# based wait function we want it only if it is available in libc.
+_save_libs="$LIBS"
+AC_SEARCH_LIBS([nanosleep], [],
+ [AC_DEFINE(HAVE_NANOSLEEP,1,
+ [Define to 1 if you have the `nanosleep' function in libc.])])
+LIBS="$_save_libs"
+
+
+# See whether libc supports the Linux inotify interface
+case "${host}" in
+ *-*-linux*)
+ AC_CHECK_FUNCS([inotify_init])
+ ;;
+esac
+
+
if test "$have_android_system" = yes; then
# On Android ttyname is a stub but prints an error message.
AC_DEFINE(HAVE_BROKEN_TTYNAME,1,
AM_CONDITIONAL(BUILD_DOC, test "$build_doc" = "yes")
AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
AM_CONDITIONAL(BUILD_GPGTAR, test "$build_gpgtar" = "yes")
+AM_CONDITIONAL(BUILD_WKS_TOOLS, test "$build_wks_tools" = "yes")
AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
AM_CONDITIONAL(NO_TRUST_MODELS, test "$use_trust_models" = no)
AM_CONDITIONAL(USE_TOFU, test "$use_tofu" = yes)
-AM_CONDITIONAL(RUN_GPG_TESTS,
- test x$cross_compiling = xno -a "$build_gpg" = yes )
-
#
# Set some defines for use gpgconf.
#
AC_DEFINE_UNQUOTED(GPG_AGENT_SOCK_NAME, "S.gpg-agent",
[The name of the agent socket])
+AC_DEFINE_UNQUOTED(GPG_AGENT_EXTRA_SOCK_NAME, "S.gpg-agent.extra",
+ [The name of the agent socket for remote access])
+AC_DEFINE_UNQUOTED(GPG_AGENT_BROWSER_SOCK_NAME, "S.gpg-agent.browser",
+ [The name of the agent socket for browsers])
AC_DEFINE_UNQUOTED(GPG_AGENT_SSH_SOCK_NAME, "S.gpg-agent.ssh",
[The name of the agent socket for ssh])
AC_DEFINE_UNQUOTED(DIRMNGR_INFO_NAME, "DIRMNGR_INFO",
BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
else
BUILD_TIMESTAMP="$enableval"
- fi],
- [BUILD_TIMESTAMP="<none>"])
+ fi
+ BUILD_HOSTNAME="$ac_hostname"],
+ [BUILD_TIMESTAMP="<none>"
+ BUILD_HOSTNAME="<anon>"])
AC_SUBST(BUILD_TIMESTAMP)
AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
[The time this package was configured for a build])
-BUILD_HOSTNAME="$ac_hostname"
AC_SUBST(BUILD_HOSTNAME)
fi
fi
+if test "$use_ccid_driver" = yes; then
+ if test "$have_libusb" != yes; then
+ die=yes
+ AC_MSG_NOTICE([[
+***
+*** You need libusb to build the internal ccid driver. Please
+*** install a libusb suitable for your system.
+***]])
+ fi
+fi
+
if test "$die" = "yes"; then
AC_MSG_ERROR([[
***
tools/Makefile
doc/Makefile
tests/Makefile
+tests/gpgscm/Makefile
tests/openpgp/Makefile
+tests/migrations/Makefile
tests/pkits/Makefile
g10/gpg.w32-manifest
])
G13: $build_g13
Dirmngr: $build_dirmngr
Gpgtar: $build_gpgtar
+ WKS tools: $build_wks_tools
Protect tool: $show_gnupg_protect_tool_pgm
LDAP wrapper: $show_gnupg_dirmngr_ldap_pgm