mirror of
git://git.gnupg.org/gnupg.git
synced 2024-10-31 20:08:43 +01:00
96bcd4220f
* configure.ac (USE_GPG2_HACK): New ac_define am_conditional. * common/homedir.c (gnupg_module_name): Replace use of macro NAME_OF_INSTALLED_GPG. * g10/keygen.c (generate_keypair): Ditto. * g10/Makefile.am (bin_PROGRAMS): Remove. (noinst_PROGRAMS): Add gpg or gpg2 and gpgv or gpg2. (gpg2_hack_list): New. (use_gpg2_hack): New. (gpg2_SOURCES): Rename to gpg_SOURCES. (gpgv2_SOURCES): Rename to gpgv_SOURCES. (gpg2_LDADD): Rename to gpg_LDADD. (gpgv2_LDADD): Rename to gpgv_LDADD. (gpg2_LDFLAGS): Rename to gpg_LDFLAGS. (gpgv2_LDFLAGS): Rename to gpgv2_LDFLAGS. (install-exec-hook): Remove WinCE specific rules and add new rules. (uninstall-local): Uninstall gpg/gpg2 and gpgv/gpgv2. * tests/openpgp/Makefile.am (required_pgms): s/gpg2/gpg/. * tests/openpgp/defs.inc: Ditto. * tests/openpgp/gpgtar.test: Ditto. * tests/openpgp/mkdemodirs: Ditto. * tests/openpgp/signdemokey: Ditto. * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Remove obsolete --enable-mailto, add --enable-gpg2-is-gpg. -- Although we need to duplicate some automake generated code this method allows to easily switch the name of the installed target using the configure option "--enable-gpg2-is-gpg". Signed-off-by: Werner Koch <wk@gnupg.org>
1953 lines
59 KiB
Plaintext
1953 lines
59 KiB
Plaintext
# configure.ac - for GnuPG 2.1
|
|
# Copyright (C) 1998-2012 Free Software Foundation, Inc.
|
|
# Copyright (C) 1998-2015 Werner Koch
|
|
#
|
|
# This file is part of GnuPG.
|
|
#
|
|
# GnuPG is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# GnuPG is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# 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/>.
|
|
|
|
# Process this file with autoconf to produce a configure script.
|
|
AC_PREREQ(2.61)
|
|
min_automake_version="1.14"
|
|
|
|
# To build a release you need to create a tag with the version number
|
|
# (git tag -s gnupg-2.n.m) and run "./autogen.sh --force". Please
|
|
# bump the version number immediately *after* the release and do
|
|
# another commit and push so that the git magic is able to work.
|
|
m4_define([mym4_package],[gnupg])
|
|
m4_define([mym4_major], [2])
|
|
m4_define([mym4_minor], [1])
|
|
m4_define([mym4_micro], [12])
|
|
|
|
# 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
|
|
# with an annotated tag. For example the 2.1 branch starts off with
|
|
# the tag "gnupg-2.1-base". This is used as the base for counting
|
|
# beta numbers before the first release of a series.
|
|
|
|
# Below is m4 magic to extract and compute the git revision number,
|
|
# the decimalized short revision number, a beta version string and a
|
|
# flag indicating a development version (mym4_isbeta). Note that the
|
|
# m4 processing is done by autoconf and not during the configure run.
|
|
m4_define([mym4_verslist], m4_split(m4_esyscmd([./autogen.sh --find-version] \
|
|
mym4_package mym4_major mym4_minor mym4_micro),[:]))
|
|
m4_define([mym4_isbeta], m4_argn(2, mym4_verslist))
|
|
m4_define([mym4_version], m4_argn(4, mym4_verslist))
|
|
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])
|
|
|
|
NEED_GPG_ERROR_VERSION=1.21
|
|
|
|
NEED_LIBGCRYPT_API=1
|
|
NEED_LIBGCRYPT_VERSION=1.6.0
|
|
|
|
NEED_LIBASSUAN_API=2
|
|
NEED_LIBASSUAN_VERSION=2.4.1
|
|
|
|
NEED_KSBA_API=1
|
|
NEED_KSBA_VERSION=1.2.0
|
|
|
|
NEED_NTBTLS_API=1
|
|
NEED_NTBTLS_VERSION=0.1.0
|
|
|
|
NEED_NPTH_API=1
|
|
NEED_NPTH_VERSION=0.91
|
|
|
|
|
|
NEED_GNUTLS_VERSION=3.0
|
|
|
|
NEED_SQLITE_VERSION=3.7
|
|
|
|
development_version=mym4_isbeta
|
|
PACKAGE=$PACKAGE_NAME
|
|
PACKAGE_GT=${PACKAGE_NAME}2
|
|
VERSION=$PACKAGE_VERSION
|
|
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
|
AC_CONFIG_SRCDIR([sm/gpgsm.c])
|
|
AC_CONFIG_HEADER([config.h])
|
|
AM_INIT_AUTOMAKE([serial-tests dist-bzip2 no-dist-gzip])
|
|
AC_CANONICAL_HOST
|
|
AB_INIT
|
|
|
|
AC_GNU_SOURCE
|
|
|
|
# Before we do anything with the C compiler, we first save the user's
|
|
# CFLAGS (they are restored at the end of the configure script). This
|
|
# is because some configure checks don't work with -Werror, but we'd
|
|
# like to use -Werror with our build.
|
|
CFLAGS_orig=$CFLAGS
|
|
CFLAGS=
|
|
|
|
# Some status variables.
|
|
have_gpg_error=no
|
|
have_libgcrypt=no
|
|
have_libassuan=no
|
|
have_ksba=no
|
|
have_ntbtls=no
|
|
have_gnutls=no
|
|
have_sqlite=no
|
|
have_npth=no
|
|
have_libusb=no
|
|
have_adns=no
|
|
gnupg_have_ldap="n/a"
|
|
|
|
use_zip=yes
|
|
use_bzip2=yes
|
|
use_exec=yes
|
|
use_trust_models=yes
|
|
use_tofu=yes
|
|
card_support=yes
|
|
use_ccid_driver=auto
|
|
dirmngr_auto_start=yes
|
|
use_tls_library=no
|
|
large_secmem=no
|
|
show_tor_support=no
|
|
|
|
|
|
GNUPG_BUILD_PROGRAM(gpg, yes)
|
|
GNUPG_BUILD_PROGRAM(gpgsm, yes)
|
|
# The agent is a required part and can't be disabled anymore.
|
|
build_agent=yes
|
|
GNUPG_BUILD_PROGRAM(scdaemon, yes)
|
|
GNUPG_BUILD_PROGRAM(g13, no)
|
|
GNUPG_BUILD_PROGRAM(dirmngr, yes)
|
|
GNUPG_BUILD_PROGRAM(tools, yes)
|
|
GNUPG_BUILD_PROGRAM(doc, yes)
|
|
GNUPG_BUILD_PROGRAM(symcryptrun, no)
|
|
GNUPG_BUILD_PROGRAM(gpgtar, yes)
|
|
|
|
AC_SUBST(PACKAGE)
|
|
AC_SUBST(PACKAGE_GT)
|
|
AC_SUBST(VERSION)
|
|
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
|
|
AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
|
|
[Name of this package for gettext])
|
|
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
|
|
AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
|
|
[Bug report address])
|
|
AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
|
|
[Required version of Libgcrypt])
|
|
AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
|
|
[Required version of Libksba])
|
|
AC_DEFINE_UNQUOTED(NEED_NTBTLS_VERSION, "$NEED_NTBTLS_VERSION",
|
|
[Required version of NTBTLS])
|
|
|
|
|
|
|
|
# The default is to use the modules from this package and the few
|
|
# other packages in a standard place; i.e where this package gets
|
|
# installed. With these options it is possible to override these
|
|
# ${prefix} depended values with fixed paths, which can't be replaced
|
|
# at make time. See also am/cmacros.am and the defaults in AH_BOTTOM.
|
|
AC_ARG_WITH(agent-pgm,
|
|
[ --with-agent-pgm=PATH Use PATH as the default for the agent)],
|
|
GNUPG_AGENT_PGM="$withval", GNUPG_AGENT_PGM="" )
|
|
AC_SUBST(GNUPG_AGENT_PGM)
|
|
AM_CONDITIONAL(GNUPG_AGENT_PGM, test -n "$GNUPG_AGENT_PGM")
|
|
show_gnupg_agent_pgm="(default)"
|
|
test -n "$GNUPG_AGENT_PGM" && show_gnupg_agent_pgm="$GNUPG_AGENT_PGM"
|
|
|
|
AC_ARG_WITH(pinentry-pgm,
|
|
[ --with-pinentry-pgm=PATH Use PATH as the default for the pinentry)],
|
|
GNUPG_PINENTRY_PGM="$withval", GNUPG_PINENTRY_PGM="" )
|
|
AC_SUBST(GNUPG_PINENTRY_PGM)
|
|
AM_CONDITIONAL(GNUPG_PINENTRY_PGM, test -n "$GNUPG_PINENTRY_PGM")
|
|
show_gnupg_pinentry_pgm="(default)"
|
|
test -n "$GNUPG_PINENTRY_PGM" && show_gnupg_pinentry_pgm="$GNUPG_PINENTRY_PGM"
|
|
|
|
|
|
AC_ARG_WITH(scdaemon-pgm,
|
|
[ --with-scdaemon-pgm=PATH Use PATH as the default for the scdaemon)],
|
|
GNUPG_SCDAEMON_PGM="$withval", GNUPG_SCDAEMON_PGM="" )
|
|
AC_SUBST(GNUPG_SCDAEMON_PGM)
|
|
AM_CONDITIONAL(GNUPG_SCDAEMON_PGM, test -n "$GNUPG_SCDAEMON_PGM")
|
|
show_gnupg_scdaemon_pgm="(default)"
|
|
test -n "$GNUPG_SCDAEMON_PGM" && show_gnupg_scdaemon_pgm="$GNUPG_SCDAEMON_PGM"
|
|
|
|
|
|
AC_ARG_WITH(dirmngr-pgm,
|
|
[ --with-dirmngr-pgm=PATH Use PATH as the default for the dirmngr)],
|
|
GNUPG_DIRMNGR_PGM="$withval", GNUPG_DIRMNGR_PGM="" )
|
|
AC_SUBST(GNUPG_DIRMNGR_PGM)
|
|
AM_CONDITIONAL(GNUPG_DIRMNGR_PGM, test -n "$GNUPG_DIRMNGR_PGM")
|
|
show_gnupg_dirmngr_pgm="(default)"
|
|
test -n "$GNUPG_DIRMNGR_PGM" && show_gnupg_dirmngr_pgm="$GNUPG_DIRMNGR_PGM"
|
|
|
|
AC_ARG_WITH(protect-tool-pgm,
|
|
[ --with-protect-tool-pgm=PATH Use PATH as the default for the protect-tool)],
|
|
GNUPG_PROTECT_TOOL_PGM="$withval", GNUPG_PROTECT_TOOL_PGM="" )
|
|
AC_SUBST(GNUPG_PROTECT_TOOL_PGM)
|
|
AM_CONDITIONAL(GNUPG_PROTECT_TOOL_PGM, test -n "$GNUPG_PROTECT_TOOL_PGM")
|
|
show_gnupg_protect_tool_pgm="(default)"
|
|
test -n "$GNUPG_PROTECT_TOOL_PGM" \
|
|
&& 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)],
|
|
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")
|
|
show_gnupg_dirmngr_ldap_pgm="(default)"
|
|
test -n "$GNUPG_DIRMNGR_LDAP_PGM" \
|
|
&& show_gnupg_dirmngr_ldap_pgm="$GNUPG_DIRMNGR_LDAP_PGM"
|
|
|
|
#
|
|
# On some platforms gpg2 is usually installed as gpg without using a
|
|
# symlink. For correct operation of gpgconf it needs to know the
|
|
# installed name of gpg. This option sets "gpg2"'s installed name to
|
|
# just "gpg". Note that it might be required to rename gpg2 to gpg
|
|
# manually after the build process.
|
|
#
|
|
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
|
|
AC_DEFINE(USE_GPG2_HACK, 1, [Define to install gpg as gpg2])
|
|
fi
|
|
AM_CONDITIONAL(USE_GPG2_HACK, test "$gpg2_is_gpg" != "yes")
|
|
|
|
|
|
# SELinux support includes tracking of sensitive files to avoid
|
|
# leaking their contents through processing these files by gpg itself
|
|
AC_MSG_CHECKING([whether SELinux support is requested])
|
|
AC_ARG_ENABLE(selinux-support,
|
|
AC_HELP_STRING([--enable-selinux-support],
|
|
[enable SELinux support]),
|
|
selinux_support=$enableval, selinux_support=no)
|
|
AC_MSG_RESULT($selinux_support)
|
|
|
|
|
|
AC_MSG_CHECKING([whether to allocate extra secure memory])
|
|
AC_ARG_ENABLE(large-secmem,
|
|
AC_HELP_STRING([--enable-large-secmem],
|
|
[allocate extra secure memory]),
|
|
large_secmem=$enableval, large_secmem=no)
|
|
AC_MSG_RESULT($large_secmem)
|
|
if test "$large_secmem" = yes ; then
|
|
SECMEM_BUFFER_SIZE=65536
|
|
else
|
|
SECMEM_BUFFER_SIZE=32768
|
|
fi
|
|
AC_DEFINE_UNQUOTED(SECMEM_BUFFER_SIZE,$SECMEM_BUFFER_SIZE,
|
|
[Size of secure memory buffer])
|
|
|
|
AC_MSG_CHECKING([whether to enable trust models])
|
|
AC_ARG_ENABLE(trust-models,
|
|
AC_HELP_STRING([--disable-trust-models],
|
|
[disable all trust models except "always"]),
|
|
use_trust_models=$enableval)
|
|
AC_MSG_RESULT($use_trust_models)
|
|
if test "$use_trust_models" = no ; then
|
|
AC_DEFINE(NO_TRUST_MODELS, 1,
|
|
[Define to include only trust-model always])
|
|
fi
|
|
|
|
AC_MSG_CHECKING([whether to enable TOFU])
|
|
AC_ARG_ENABLE(tofu,
|
|
AC_HELP_STRING([--disable-tofu],
|
|
[disable the TOFU trust model]),
|
|
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
|
|
|
|
|
|
|
|
#
|
|
# Options to disable algorithm
|
|
#
|
|
|
|
GNUPG_GPG_DISABLE_ALGO([rsa],[RSA public key])
|
|
# Elgamal is a MUST algorithm
|
|
# DSA is a MUST algorithm
|
|
GNUPG_GPG_DISABLE_ALGO([ecdh],[ECDH public key])
|
|
GNUPG_GPG_DISABLE_ALGO([ecdsa],[ECDSA public key])
|
|
GNUPG_GPG_DISABLE_ALGO([eddsa],[EdDSA public key])
|
|
|
|
GNUPG_GPG_DISABLE_ALGO([idea],[IDEA cipher])
|
|
# 3DES is a MUST algorithm
|
|
GNUPG_GPG_DISABLE_ALGO([cast5],[CAST5 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([blowfish],[BLOWFISH cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([aes128],[AES128 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([aes192],[AES192 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([aes256],[AES256 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([twofish],[TWOFISH cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([camellia128],[CAMELLIA128 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([camellia192],[CAMELLIA192 cipher])
|
|
GNUPG_GPG_DISABLE_ALGO([camellia256],[CAMELLIA256 cipher])
|
|
|
|
GNUPG_GPG_DISABLE_ALGO([md5],[MD5 hash])
|
|
# SHA1 is a MUST algorithm
|
|
GNUPG_GPG_DISABLE_ALGO([rmd160],[RIPE-MD160 hash])
|
|
GNUPG_GPG_DISABLE_ALGO([sha224],[SHA-224 hash])
|
|
# SHA256 is a MUST algorithm for GnuPG.
|
|
GNUPG_GPG_DISABLE_ALGO([sha384],[SHA-384 hash])
|
|
GNUPG_GPG_DISABLE_ALGO([sha512],[SHA-512 hash])
|
|
|
|
|
|
# Allow disabling of zip support.
|
|
# This is in general not a good idea because according to rfc4880 OpenPGP
|
|
# implementations SHOULD support ZLIB.
|
|
AC_MSG_CHECKING([whether to enable the ZIP and ZLIB compression algorithm])
|
|
AC_ARG_ENABLE(zip,
|
|
AC_HELP_STRING([--disable-zip],
|
|
[disable the ZIP and ZLIB compression algorithm]),
|
|
use_zip=$enableval)
|
|
AC_MSG_RESULT($use_zip)
|
|
|
|
# Allow disabling of bzib2 support.
|
|
# It is defined only after we confirm the library is available later
|
|
AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
|
|
AC_ARG_ENABLE(bzip2,
|
|
AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
|
|
use_bzip2=$enableval)
|
|
AC_MSG_RESULT($use_bzip2)
|
|
|
|
# Configure option to allow or disallow execution of external
|
|
# programs, like a photo viewer.
|
|
AC_MSG_CHECKING([whether to enable external program execution])
|
|
AC_ARG_ENABLE(exec,
|
|
AC_HELP_STRING([--disable-exec],[disable all external program execution]),
|
|
use_exec=$enableval)
|
|
AC_MSG_RESULT($use_exec)
|
|
if test "$use_exec" = no ; then
|
|
AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
|
|
fi
|
|
|
|
if test "$use_exec" = yes ; then
|
|
AC_MSG_CHECKING([whether to enable photo ID viewing])
|
|
AC_ARG_ENABLE(photo-viewers,
|
|
[ --disable-photo-viewers disable photo ID viewers],
|
|
[if test "$enableval" = no ; then
|
|
AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
|
|
fi],enableval=yes)
|
|
gnupg_cv_enable_photo_viewers=$enableval
|
|
AC_MSG_RESULT($enableval)
|
|
|
|
if test "$gnupg_cv_enable_photo_viewers" = yes ; then
|
|
AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
|
|
AC_ARG_WITH(photo-viewer,
|
|
[ --with-photo-viewer=FIXED_VIEWER set a fixed photo ID viewer],
|
|
[if test "$withval" = yes ; then
|
|
withval=no
|
|
elif test "$withval" != no ; then
|
|
AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
|
|
[if set, restrict photo-viewer to this])
|
|
fi],withval=no)
|
|
AC_MSG_RESULT($withval)
|
|
fi
|
|
fi
|
|
|
|
|
|
#
|
|
# Check for the key/uid cache size. This can't be zero, but can be
|
|
# pretty small on embedded systems. This is used for the gpg part.
|
|
#
|
|
AC_MSG_CHECKING([for the size of the key and uid cache])
|
|
AC_ARG_ENABLE(key-cache,
|
|
AC_HELP_STRING([--enable-key-cache=SIZE],
|
|
[Set key cache to SIZE (default 4096)]),,enableval=4096)
|
|
if test "$enableval" = "no"; then
|
|
enableval=5
|
|
elif test "$enableval" = "yes" || test "$enableval" = ""; then
|
|
enableval=4096
|
|
fi
|
|
changequote(,)dnl
|
|
key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
|
|
changequote([,])dnl
|
|
if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
|
|
AC_MSG_ERROR([invalid key-cache size])
|
|
fi
|
|
AC_MSG_RESULT($key_cache_size)
|
|
AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,
|
|
[Size of the key and UID caches])
|
|
|
|
|
|
|
|
#
|
|
# Check whether we want to use Linux capabilities
|
|
#
|
|
AC_MSG_CHECKING([whether use of capabilities is requested])
|
|
AC_ARG_WITH(capabilities,
|
|
[ --with-capabilities use linux capabilities [default=no]],
|
|
[use_capabilities="$withval"],[use_capabilities=no])
|
|
AC_MSG_RESULT($use_capabilities)
|
|
|
|
#
|
|
# Check whether to disable the card support
|
|
AC_MSG_CHECKING([whether smartcard support is requested])
|
|
AC_ARG_ENABLE(card-support,
|
|
AC_HELP_STRING([--disable-card-support],
|
|
[disable smartcard support]),
|
|
card_support=$enableval)
|
|
AC_MSG_RESULT($card_support)
|
|
if test "$card_support" = yes ; then
|
|
AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include smartcard support])
|
|
else
|
|
build_scdaemon=no
|
|
fi
|
|
|
|
#
|
|
# Allow disabling of internal CCID support.
|
|
# It is defined only after we confirm the library is available later
|
|
#
|
|
AC_MSG_CHECKING([whether to enable the internal CCID driver])
|
|
AC_ARG_ENABLE(ccid-driver,
|
|
AC_HELP_STRING([--disable-ccid-driver],
|
|
[disable the internal CCID driver]),
|
|
use_ccid_driver=$enableval)
|
|
AC_MSG_RESULT($use_ccid_driver)
|
|
|
|
AC_MSG_CHECKING([whether to auto start dirmngr])
|
|
AC_ARG_ENABLE(dirmngr-auto-start,
|
|
AC_HELP_STRING([--disable-dirmngr-auto-start],
|
|
[disable auto starting of the dirmngr]),
|
|
dirmngr_auto_start=$enableval)
|
|
AC_MSG_RESULT($dirmngr_auto_start)
|
|
if test "$dirmngr_auto_start" = yes ; then
|
|
AC_DEFINE(USE_DIRMNGR_AUTO_START,1,
|
|
[Define to enable auto starting of the dirmngr])
|
|
fi
|
|
|
|
|
|
#
|
|
# To avoid double inclusion of config.h which might happen at some
|
|
# places, we add the usual double inclusion protection at the top of
|
|
# config.h.
|
|
#
|
|
AH_TOP([
|
|
#ifndef GNUPG_CONFIG_H_INCLUDED
|
|
#define GNUPG_CONFIG_H_INCLUDED
|
|
])
|
|
|
|
#
|
|
# Stuff which goes at the bottom of config.h.
|
|
#
|
|
AH_BOTTOM([
|
|
/* This is the major version number of GnuPG so that
|
|
source included files can test for this. Note, that
|
|
we use 2 here even for GnuPG 1.9.x. */
|
|
#define GNUPG_MAJOR_VERSION 2
|
|
|
|
/* Now to separate file name parts.
|
|
Please note that the string version must not contain more
|
|
than one character because the code assumes strlen()==1 */
|
|
#ifdef HAVE_DOSISH_SYSTEM
|
|
#define DIRSEP_C '\\'
|
|
#define DIRSEP_S "\\"
|
|
#define EXTSEP_C '.'
|
|
#define EXTSEP_S "."
|
|
#define PATHSEP_C ';'
|
|
#define PATHSEP_S ";"
|
|
#define EXEEXT_S ".exe"
|
|
#else
|
|
#define DIRSEP_C '/'
|
|
#define DIRSEP_S "/"
|
|
#define EXTSEP_C '.'
|
|
#define EXTSEP_S "."
|
|
#define PATHSEP_C ':'
|
|
#define PATHSEP_S ":"
|
|
#define EXEEXT_S ""
|
|
#endif
|
|
|
|
/* This is the same as VERSION, but should be overridden if the
|
|
platform cannot handle things like dots '.' in filenames. Set
|
|
SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
|
|
uses for dots and dashes. */
|
|
#define SAFE_VERSION VERSION
|
|
#define SAFE_VERSION_DOT '.'
|
|
#define SAFE_VERSION_DASH '-'
|
|
|
|
/* Some global constants. */
|
|
#ifdef HAVE_DOSISH_SYSTEM
|
|
# ifdef HAVE_DRIVE_LETTERS
|
|
# define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
|
|
# else
|
|
# define GNUPG_DEFAULT_HOMEDIR "/gnupg"
|
|
# endif
|
|
#elif defined(__VMS)
|
|
#define GNUPG_DEFAULT_HOMEDIR "/SYS$LOGIN/gnupg"
|
|
#else
|
|
#define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
|
|
#endif
|
|
#define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
|
|
#define GNUPG_OPENPGP_REVOC_DIR "openpgp-revocs.d"
|
|
|
|
/* For some systems (DOS currently), we hardcode the path here. For
|
|
POSIX systems the values are constructed by the Makefiles, so that
|
|
the values may be overridden by the make invocations; this is to
|
|
comply with the GNU coding standards. Note that these values are
|
|
only defaults. */
|
|
#ifdef HAVE_DOSISH_SYSTEM
|
|
# ifdef HAVE_DRIVE_LETTERS
|
|
# define GNUPG_BINDIR "c:\\gnupg"
|
|
# define GNUPG_LIBEXECDIR "c:\\gnupg"
|
|
# define GNUPG_LIBDIR "c:\\gnupg"
|
|
# define GNUPG_DATADIR "c:\\gnupg"
|
|
# define GNUPG_SYSCONFDIR "c:\\gnupg"
|
|
# else
|
|
# define GNUPG_BINDIR "\\gnupg"
|
|
# define GNUPG_LIBEXECDIR "\\gnupg"
|
|
# define GNUPG_LIBDIR "\\gnupg"
|
|
# define GNUPG_DATADIR "\\gnupg"
|
|
# define GNUPG_SYSCONFDIR "\\gnupg"
|
|
# endif
|
|
#endif
|
|
|
|
/* Derive some other constants. */
|
|
#if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
|
|
#define EXEC_TEMPFILE_ONLY
|
|
#endif
|
|
|
|
|
|
/* We didn't define endianness above, so get it from OS macros. This
|
|
is intended for making fat binary builds on OS X. */
|
|
#if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
|
|
#if defined(__BIG_ENDIAN__)
|
|
#define BIG_ENDIAN_HOST 1
|
|
#elif defined(__LITTLE_ENDIAN__)
|
|
#define LITTLE_ENDIAN_HOST 1
|
|
#else
|
|
#error "No endianness found"
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* Hack used for W32: ldap.m4 also tests for the ASCII version of
|
|
ldap_start_tls_s because that is the actual symbol used in the
|
|
library. winldap.h redefines it to our commonly used value,
|
|
thus we define our usual macro here. */
|
|
#ifdef HAVE_LDAP_START_TLS_SA
|
|
# ifndef HAVE_LDAP_START_TLS_S
|
|
# define HAVE_LDAP_START_TLS_S 1
|
|
# endif
|
|
#endif
|
|
|
|
/* Provide the es_ macro for estream. */
|
|
#define GPGRT_ENABLE_ES_MACROS 1
|
|
|
|
/* Tell libgcrypt not to use its own libgpg-error implementation. */
|
|
#define USE_LIBGPG_ERROR 1
|
|
|
|
/* Tell Libgcrypt not to include deprecated definitions. */
|
|
#define GCRYPT_NO_DEPRECATED 1
|
|
|
|
/* Our HTTP code is used in estream mode. */
|
|
#define HTTP_USE_ESTREAM 1
|
|
|
|
/* Under W32 we do an explicit socket initialization, thus we need to
|
|
avoid the on-demand initialization which would also install an atexit
|
|
handler. */
|
|
#define HTTP_NO_WSASTARTUP
|
|
|
|
/* Under Windows we use the gettext code from libgpg-error. */
|
|
#define GPG_ERR_ENABLE_GETTEXT_MACROS
|
|
|
|
/* Under WindowsCE we use the strerror replacement from libgpg-error. */
|
|
#define GPG_ERR_ENABLE_ERRNO_MACROS
|
|
|
|
#endif /*GNUPG_CONFIG_H_INCLUDED*/
|
|
])
|
|
|
|
|
|
AM_MAINTAINER_MODE
|
|
AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory])
|
|
|
|
# Checks for programs.
|
|
AC_MSG_NOTICE([checking for programs])
|
|
AC_PROG_MAKE_SET
|
|
AM_SANITY_CHECK
|
|
missing_dir=`cd $ac_aux_dir && pwd`
|
|
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
|
|
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
|
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
|
|
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
|
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
|
AM_SILENT_RULES
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
AC_PROG_CPP
|
|
AM_PROG_CC_C_O
|
|
if test "x$ac_cv_prog_cc_c89" = "xno" ; then
|
|
AC_MSG_ERROR([[No C-89 compiler found]])
|
|
fi
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_RANLIB
|
|
AC_CHECK_TOOL(AR, ar, :)
|
|
AC_PATH_PROG(PERL,"perl")
|
|
AC_CHECK_TOOL(WINDRES, windres, :)
|
|
AC_ISC_POSIX
|
|
AC_SYS_LARGEFILE
|
|
GNUPG_CHECK_USTAR
|
|
|
|
|
|
# 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])
|
|
|
|
# We need to call this macro because other pkg-config macros are
|
|
# not always used.
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
|
|
try_gettext=yes
|
|
require_iconv=yes
|
|
have_dosish_system=no
|
|
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
|
|
case "${host}" in
|
|
*-mingw32*)
|
|
# special stuff for Windoze NT
|
|
ac_cv_have_dev_random=no
|
|
AC_DEFINE(USE_ONLY_8DOT3,1,
|
|
[Set this to limit filenames to the 8.3 format])
|
|
AC_DEFINE(USE_SIMPLE_GETTEXT,1,
|
|
[Because the Unix gettext has too much overhead on
|
|
MingW32 systems and these systems lack Posix functions,
|
|
we use a simplified version of gettext])
|
|
have_dosish_system=yes
|
|
have_w32_system=yes
|
|
run_tests=no
|
|
use_ldapwrapper=no # Fixme: Do this only for CE.
|
|
case "${host}" in
|
|
*-mingw32ce*)
|
|
have_w32ce_system=yes
|
|
;;
|
|
*)
|
|
AC_DEFINE(HAVE_DRIVE_LETTERS,1,
|
|
[Defined if the OS supports drive letters.])
|
|
;;
|
|
esac
|
|
try_gettext="no"
|
|
use_simple_gettext=yes
|
|
mmap_needed=no
|
|
;;
|
|
i?86-emx-os2 | i?86-*-os2*emx )
|
|
# OS/2 with the EMX environment
|
|
ac_cv_have_dev_random=no
|
|
AC_DEFINE(HAVE_DRIVE_LETTERS)
|
|
have_dosish_system=yes
|
|
try_gettext="no"
|
|
;;
|
|
|
|
i?86-*-msdosdjgpp*)
|
|
# DOS with the DJGPP environment
|
|
ac_cv_have_dev_random=no
|
|
AC_DEFINE(HAVE_DRIVE_LETTERS)
|
|
have_dosish_system=yes
|
|
try_gettext="no"
|
|
;;
|
|
|
|
*-*-hpux*)
|
|
if test -z "$GCC" ; then
|
|
CFLAGS="-Ae -D_HPUX_SOURCE $CFLAGS"
|
|
fi
|
|
;;
|
|
*-dec-osf4*)
|
|
if test -z "$GCC" ; then
|
|
# Suppress all warnings
|
|
# to get rid of the unsigned/signed char mismatch warnings.
|
|
CFLAGS="-w $CFLAGS"
|
|
fi
|
|
;;
|
|
*-dec-osf5*)
|
|
if test -z "$GCC" ; then
|
|
# Use the newer compiler `-msg_disable ptrmismatch1' to
|
|
# get rid of the unsigned/signed char mismatch warnings.
|
|
# Using this may hide other pointer mismatch warnings, but
|
|
# it at least lets other warning classes through
|
|
CFLAGS="-msg_disable ptrmismatch1 $CFLAGS"
|
|
fi
|
|
;;
|
|
m68k-atari-mint)
|
|
;;
|
|
*-linux-androideabi)
|
|
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
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
if test "$have_dosish_system" = yes; then
|
|
AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
|
|
[Defined if we run on some of the PCDOS like systems
|
|
(DOS, Windoze. OS/2) with special properties like
|
|
no file modes, case insensitive file names and preferred
|
|
use of backslashes as directory name separators.])
|
|
fi
|
|
AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
|
|
|
|
AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
|
|
|
|
if test "$have_w32_system" = yes; then
|
|
AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
|
|
if test "$have_w32ce_system" = yes; then
|
|
AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
|
|
AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
|
|
|
|
if test "$have_android_system" = yes; then
|
|
AC_DEFINE(HAVE_ANDROID_SYSTEM,1, [Defined if we build for an Android system])
|
|
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])
|
|
|
|
|
|
#
|
|
# Checks for libraries.
|
|
#
|
|
AC_MSG_NOTICE([checking for libraries])
|
|
|
|
|
|
#
|
|
# libgpg-error is a library with error codes shared between GnuPG
|
|
# related projects.
|
|
#
|
|
AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
|
|
have_gpg_error=yes,have_gpg_error=no)
|
|
|
|
|
|
#
|
|
# Libgcrypt is our generic crypto library
|
|
#
|
|
AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
|
|
have_libgcrypt=yes,have_libgcrypt=no)
|
|
|
|
|
|
#
|
|
# libassuan is used for IPC
|
|
#
|
|
AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
|
|
have_libassuan=yes,have_libassuan=no)
|
|
if test "$have_libassuan" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(GNUPG_LIBASSUAN_VERSION, "$libassuan_version",
|
|
[version of the libassuan library])
|
|
show_tor_support="only .onion"
|
|
fi
|
|
|
|
|
|
#
|
|
# libksba is our X.509 support library
|
|
#
|
|
AM_PATH_KSBA("$NEED_KSBA_API:$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
|
|
|
|
|
|
#
|
|
# 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" = auto || test "$use_ccid_driver" = yes; then
|
|
case "${host}" in
|
|
*-mingw32*)
|
|
LIBUSB_LIBS=
|
|
LIBUSB_CPPFLAGS=
|
|
;;
|
|
*-*-darwin*)
|
|
LIBUSB_LIBS="-lusb-1.0 -Wl,-framework,CoreFoundation -Wl,-framework,IOKit"
|
|
;;
|
|
*-*-freebsd*)
|
|
# FreeBSD has a native 1.0 compatible library by -lusb.
|
|
LIBUSB_LIBS="-lusb"
|
|
;;
|
|
*)
|
|
LIBUSB_LIBS="-lusb-1.0"
|
|
;;
|
|
esac
|
|
fi
|
|
if test x"$LIBUSB_LIBS" != x ; then
|
|
AC_CHECK_LIB(usb-1.0, libusb_init,
|
|
[ LIBUSB_LIBS="$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.
|
|
# (For example to load libpcsclite)
|
|
#
|
|
gnupg_dlopen_save_libs="$LIBS"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dlopen, c dl,,,)
|
|
DL_LIBS=$LIBS
|
|
AC_SUBST(DL_LIBS)
|
|
LIBS="$gnupg_dlopen_save_libs"
|
|
|
|
|
|
# Checks for g10
|
|
|
|
AC_ARG_ENABLE(sqlite,
|
|
AC_HELP_STRING([--disable-sqlite],
|
|
[disable the use of SQLITE]),
|
|
try_sqlite=$enableval, try_sqlite=yes)
|
|
|
|
if test x"$use_tofu" = xyes ; then
|
|
if test x"$try_sqlite" = xyes ; then
|
|
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $NEED_SQLITE_VERSION],
|
|
[have_sqlite=yes],
|
|
[have_sqlite=no])
|
|
fi
|
|
if test "$have_sqlite" = "yes"; then
|
|
:
|
|
AC_SUBST([SQLITE3_CFLAGS])
|
|
AC_SUBST([SQLITE3_LIBS])
|
|
else
|
|
use_tofu=no
|
|
tmp=$(echo "$SQLITE3_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
|
|
AC_MSG_WARN([[
|
|
***
|
|
*** Building without SQLite support - TOFU disabled
|
|
***
|
|
*** $tmp]])
|
|
fi
|
|
fi
|
|
|
|
AM_CONDITIONAL(SQLITE3, test "$have_sqlite" = "yes")
|
|
|
|
if test x"$use_tofu" = xyes ; then
|
|
AC_DEFINE(USE_TOFU, 1, [Enable to build the TOFU code])
|
|
fi
|
|
|
|
|
|
# Checks for g13
|
|
|
|
AC_PATH_PROG(ENCFS, encfs, /usr/bin/encfs)
|
|
AC_DEFINE_UNQUOTED(ENCFS,
|
|
"${ENCFS}", [defines the filename of the encfs program])
|
|
|
|
AC_PATH_PROG(FUSERMOUNT, fusermount, /usr/bin/fusermount)
|
|
AC_DEFINE_UNQUOTED(FUSERMOUNT,
|
|
"${FUSERMOUNT}", [defines the filename of the fusermount program])
|
|
|
|
|
|
# Checks for dirmngr
|
|
|
|
|
|
#
|
|
# Checks for symcryptrun:
|
|
#
|
|
|
|
# libutil has openpty() and login_tty().
|
|
AC_CHECK_LIB(util, openpty,
|
|
[ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
|
|
AC_DEFINE(HAVE_LIBUTIL,1,
|
|
[defined if libutil is available])
|
|
])
|
|
AC_SUBST(LIBUTIL_LIBS)
|
|
|
|
# shred is used to clean temporary plain text files.
|
|
AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
|
|
AC_DEFINE_UNQUOTED(SHRED,
|
|
"${SHRED}", [defines the filename of the shred program])
|
|
|
|
|
|
#
|
|
# Check whether the nPth library is available
|
|
#
|
|
AM_PATH_NPTH("$NEED_NPTH_API:$NEED_NPTH_VERSION",have_npth=yes,have_npth=no)
|
|
if test "$have_npth" = "yes"; then
|
|
AC_DEFINE(HAVE_NPTH, 1,
|
|
[Defined if the New Portable Thread Library is available])
|
|
AC_DEFINE(USE_NPTH, 1,
|
|
[Defined if support for nPth is requested and nPth is available])
|
|
else
|
|
AC_MSG_WARN([[
|
|
***
|
|
*** To support concurrent access for example in gpg-agent and the SCdaemon
|
|
*** we need the support of the New Portable Threads Library.
|
|
***]])
|
|
fi
|
|
|
|
|
|
#
|
|
# NTBTLS is our TLS library. If it is not available fallback to
|
|
# GNUTLS.
|
|
#
|
|
AC_ARG_ENABLE(ntbtls,
|
|
AC_HELP_STRING([--disable-ntbtls],
|
|
[disable the use of NTBTLS as TLS library]),
|
|
try_ntbtls=$enableval, try_ntbtls=yes)
|
|
if test x"$try_ntbtls" = xyes ; then
|
|
AM_PATH_NTBTLS("$NEED_NTBTLS_API:$NEED_NTBTLS_VERSION",
|
|
[have_ntbtls=yes],[have_ntbtls=no])
|
|
fi
|
|
if test "$have_ntbtls" = yes ; then
|
|
use_tls_library=ntbtls
|
|
AC_DEFINE(HTTP_USE_NTBTLS, 1, [Enable NTBTLS support in http.c])
|
|
else
|
|
AC_ARG_ENABLE(gnutls,
|
|
AC_HELP_STRING([--disable-gnutls],
|
|
[disable GNUTLS as fallback TLS library]),
|
|
try_gnutls=$enableval, try_gnutls=yes)
|
|
if test x"$try_gnutls" = xyes ; then
|
|
PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= $NEED_GNUTLS_VERSION],
|
|
[have_gnutls=yes],
|
|
[have_gnutls=no])
|
|
fi
|
|
if test "$have_gnutls" = "yes"; then
|
|
AC_SUBST([LIBGNUTLS_CFLAGS])
|
|
AC_SUBST([LIBGNUTLS_LIBS])
|
|
use_tls_library=gnutls
|
|
AC_DEFINE(HTTP_USE_GNUTLS, 1, [Enable GNUTLS support in http.c])
|
|
else
|
|
tmp=$(echo "$LIBGNUTLS_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
|
|
AC_MSG_WARN([[
|
|
***
|
|
*** Building without NTBTLS and GNUTLS - no TLS access to keyservers.
|
|
***
|
|
*** $tmp]])
|
|
fi
|
|
fi
|
|
|
|
|
|
AC_MSG_NOTICE([checking for networking options])
|
|
|
|
#
|
|
# Must check for network library requirements before doing link tests
|
|
# for ldap, for example. If ldap libs are static (or dynamic and without
|
|
# ELF runtime link paths), then link will fail and LDAP support won't
|
|
# be detected.
|
|
#
|
|
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
|
|
[NETLIBS="-lnsl $NETLIBS"]))
|
|
AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
|
|
[NETLIBS="-lsocket $NETLIBS"]))
|
|
|
|
|
|
#
|
|
# Check for ADNS.
|
|
#
|
|
_cppflags="${CPPFLAGS}"
|
|
_ldflags="${LDFLAGS}"
|
|
AC_ARG_WITH(adns,
|
|
AC_HELP_STRING([--with-adns=DIR],
|
|
[look for the adns library in DIR]),
|
|
[if test -d "$withval"; then
|
|
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
|
LDFLAGS="${LDFLAGS} -L$withval/lib"
|
|
fi])
|
|
if test "$with_adns" != "no"; then
|
|
AC_CHECK_HEADERS(adns.h,AC_CHECK_LIB(adns, adns_init_strcfg,[have_adns=yes]))
|
|
AC_CHECK_FUNCS(adns_free)
|
|
AC_MSG_CHECKING([if adns supports adns_if_tormode])
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <adns.h>
|
|
adns_initflags flags = adns_if_tormode;
|
|
]],[])],[adns_if_tormode=yes],[adns_if_tormode=no])
|
|
AC_MSG_RESULT($adns_if_tormode)
|
|
if test x"$adns_if_tormode" = xyes; then
|
|
AC_DEFINE(HAVE_ADNS_IF_TORMODE,1,[define if adns_if_tormode is available])
|
|
if test "$show_tor_support" != "no"; then
|
|
show_tor_support=yes
|
|
fi
|
|
fi
|
|
fi
|
|
CPPFLAGS=${_cppflags}
|
|
LDFLAGS=${_ldflags}
|
|
if test "$have_adns" = "yes"; then
|
|
ADNSLIBS="-ladns"
|
|
fi
|
|
|
|
|
|
#
|
|
# Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
|
|
#
|
|
AC_ARG_ENABLE(dns-srv,
|
|
AC_HELP_STRING([--disable-dns-srv],
|
|
[disable the use of DNS SRV in HKP and HTTP]),
|
|
use_dns_srv=$enableval,use_dns_srv=yes)
|
|
|
|
AC_ARG_ENABLE(dns-cert,
|
|
AC_HELP_STRING([--disable-dns-cert],
|
|
[disable the use of CERT records in DNS]),
|
|
use_dns_cert=$enableval,use_dns_cert=yes)
|
|
|
|
if test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
|
|
_dns_save_libs=$LIBS
|
|
LIBS=""
|
|
|
|
if test x"$have_adns" = xyes ; then
|
|
# We prefer ADNS.
|
|
DNSLIBS="$ADNSLIBS"
|
|
AC_DEFINE(USE_ADNS,1,[Use ADNS as resolver library.])
|
|
|
|
if test x"$use_dns_srv" = xyes ; then
|
|
AC_DEFINE(USE_DNS_SRV,1)
|
|
fi
|
|
|
|
if test x"$use_dns_cert" = xyes ; then
|
|
AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
|
|
fi
|
|
else
|
|
# With no ADNS find the system resolver.
|
|
|
|
# the double underscore thing is a glibc-ism?
|
|
AC_SEARCH_LIBS(res_query,resolv bind,,
|
|
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))
|
|
|
|
if test x"$have_resolver" != xno ; then
|
|
|
|
# Make sure that the BIND 4 resolver interface is workable before
|
|
# enabling any code that calls it. At some point I'll rewrite the
|
|
# code to use the BIND 8 resolver API.
|
|
# We might also want to use adns instead. Problem with ADNS is that
|
|
# it does not support v6.
|
|
|
|
AC_MSG_CHECKING([whether the resolver is usable])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/nameser.h>
|
|
#include <resolv.h>]],
|
|
[[unsigned char answer[PACKETSZ];
|
|
res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
|
|
dn_skipname(0,0);
|
|
dn_expand(0,0,0,0,0);
|
|
]])],have_resolver=yes,have_resolver=no)
|
|
AC_MSG_RESULT($have_resolver)
|
|
|
|
# This is Apple-specific and somewhat bizarre as they changed the
|
|
# define in bind 8 for some reason.
|
|
|
|
if test x"$have_resolver" != xyes ; then
|
|
AC_MSG_CHECKING(
|
|
[whether I can make the resolver usable with BIND_8_COMPAT])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define BIND_8_COMPAT
|
|
#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/nameser.h>
|
|
#include <resolv.h>]],
|
|
[[unsigned char answer[PACKETSZ];
|
|
res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
|
|
dn_skipname(0,0); dn_expand(0,0,0,0,0);
|
|
]])],[have_resolver=yes ; need_compat=yes])
|
|
AC_MSG_RESULT($have_resolver)
|
|
fi
|
|
fi
|
|
|
|
if test x"$have_resolver" = xyes ; then
|
|
DNSLIBS=$LIBS
|
|
|
|
if test x"$use_dns_srv" = xyes ; then
|
|
AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
|
|
fi
|
|
|
|
if test x"$use_dns_cert" = xyes ; then
|
|
AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
|
|
fi
|
|
|
|
if test x"$need_compat" = xyes ; then
|
|
AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
|
|
fi
|
|
else
|
|
use_dns_srv=no
|
|
use_dns_cert=no
|
|
fi
|
|
fi
|
|
|
|
LIBS=$_dns_save_libs
|
|
fi
|
|
|
|
AC_SUBST(DNSLIBS)
|
|
|
|
AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
|
|
|
|
|
|
#
|
|
# Check for LDAP
|
|
#
|
|
# Note that running the check changes the variable
|
|
# gnupg_have_ldap from "n/a" to "no" or "yes".
|
|
|
|
AC_ARG_ENABLE(ldap,
|
|
AC_HELP_STRING([--disable-ldap],[disable LDAP support]),
|
|
[if test "$enableval" = "no"; then gnupg_have_ldap=no; fi])
|
|
|
|
if test "$gnupg_have_ldap" != "no" ; then
|
|
if test "$build_dirmngr" = "yes" ; then
|
|
GNUPG_CHECK_LDAP($NETLIBS)
|
|
AC_CHECK_LIB(lber, ber_free,
|
|
[ LBER_LIBS="$LBER_LIBS -llber"
|
|
AC_DEFINE(HAVE_LBER,1,
|
|
[defined if liblber is available])
|
|
have_lber=yes
|
|
])
|
|
fi
|
|
fi
|
|
AC_SUBST(LBER_LIBS)
|
|
if test "$gnupg_have_ldap" = "no"; then
|
|
AC_MSG_WARN([[
|
|
***
|
|
*** Building without LDAP support.
|
|
*** No CRL access or X.509 certificate search available.
|
|
***]])
|
|
fi
|
|
|
|
AM_CONDITIONAL(USE_LDAP, [test "$gnupg_have_ldap" = yes])
|
|
if test "$gnupg_have_ldap" = yes ; then
|
|
AC_DEFINE(USE_LDAP,1,[Defined if LDAP is support])
|
|
else
|
|
use_ldapwrapper=no
|
|
fi
|
|
|
|
if test "$use_ldapwrapper" = yes; then
|
|
AC_DEFINE(USE_LDAPWRAPPER,1, [Build dirmngr with LDAP wrapper process])
|
|
fi
|
|
AM_CONDITIONAL(USE_LDAPWRAPPER, test "$use_ldapwrapper" = yes)
|
|
|
|
|
|
|
|
|
|
#
|
|
# Check for sendmail
|
|
#
|
|
# This isn't necessarily sendmail itself, but anything that gives a
|
|
# sendmail-ish interface to the outside world. That includes Exim,
|
|
# Postfix, etc. Basically, anything that can handle "sendmail -t".
|
|
AC_ARG_WITH(mailprog,
|
|
AC_HELP_STRING([--with-mailprog=NAME],
|
|
[use "NAME -t" for mail transport]),
|
|
,with_mailprog=yes)
|
|
if test x"$with_mailprog" = xyes ; then
|
|
AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
|
|
elif test x"$with_mailprog" != xno ; then
|
|
AC_MSG_CHECKING([for a mail transport program])
|
|
AC_SUBST(SENDMAIL,$with_mailprog)
|
|
AC_MSG_RESULT($with_mailprog)
|
|
fi
|
|
|
|
|
|
#
|
|
# Construct a printable name of the OS
|
|
#
|
|
case "${host}" in
|
|
*-mingw32ce*)
|
|
PRINTABLE_OS_NAME="W32CE"
|
|
;;
|
|
*-mingw32*)
|
|
PRINTABLE_OS_NAME="MingW32"
|
|
;;
|
|
*-*-cygwin*)
|
|
PRINTABLE_OS_NAME="Cygwin"
|
|
;;
|
|
i?86-emx-os2 | i?86-*-os2*emx )
|
|
PRINTABLE_OS_NAME="OS/2"
|
|
;;
|
|
i?86-*-msdosdjgpp*)
|
|
PRINTABLE_OS_NAME="MSDOS/DJGPP"
|
|
try_dynload=no
|
|
;;
|
|
*-linux*)
|
|
PRINTABLE_OS_NAME="GNU/Linux"
|
|
;;
|
|
*)
|
|
PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
|
|
;;
|
|
esac
|
|
AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
|
|
[A human readable text with the name of the OS])
|
|
|
|
|
|
#
|
|
# Checking for iconv
|
|
#
|
|
if test "$require_iconv" = yes; then
|
|
AM_ICONV
|
|
else
|
|
LIBICONV=
|
|
LTLIBICONV=
|
|
AC_SUBST(LIBICONV)
|
|
AC_SUBST(LTLIBICONV)
|
|
fi
|
|
|
|
|
|
#
|
|
# Check for gettext
|
|
#
|
|
# This is "GNU gnupg" - The project-id script from gettext
|
|
# needs this string
|
|
#
|
|
AC_MSG_NOTICE([checking for gettext])
|
|
AM_PO_SUBDIRS
|
|
AM_GNU_GETTEXT_VERSION([0.17])
|
|
if test "$try_gettext" = yes; then
|
|
AM_GNU_GETTEXT([external],[need-ngettext])
|
|
|
|
# gettext requires some extra checks. These really should be part of
|
|
# the basic AM_GNU_GETTEXT macro. TODO: move other gettext-specific
|
|
# function checks to here.
|
|
|
|
AC_CHECK_FUNCS(strchr)
|
|
else
|
|
USE_NLS=no
|
|
USE_INCLUDED_LIBINTL=no
|
|
BUILD_INCLUDED_LIBINTL=no
|
|
POSUB=po
|
|
AC_SUBST(USE_NLS)
|
|
AC_SUBST(USE_INCLUDED_LIBINTL)
|
|
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
|
AC_SUBST(POSUB)
|
|
fi
|
|
|
|
# We use HAVE_LANGINFO_CODESET in a couple of places.
|
|
AM_LANGINFO_CODESET
|
|
|
|
# Checks required for our use of locales
|
|
gt_LC_MESSAGES
|
|
|
|
|
|
#
|
|
# SELinux support
|
|
#
|
|
if test "$selinux_support" = yes ; then
|
|
AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
|
|
fi
|
|
|
|
|
|
#
|
|
# Checks for header files.
|
|
#
|
|
AC_MSG_NOTICE([checking for header files])
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h \
|
|
pty.h utmp.h pwd.h inttypes.h signal.h sys/select.h \
|
|
signal.h])
|
|
AC_HEADER_TIME
|
|
|
|
|
|
#
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
#
|
|
AC_MSG_NOTICE([checking for system characteristics])
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_VOLATILE
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_SIGNAL
|
|
AC_DECL_SYS_SIGLIST
|
|
|
|
gl_HEADER_SYS_SOCKET
|
|
gl_TYPE_SOCKLEN_T
|
|
|
|
AC_SEARCH_LIBS([inet_addr], [nsl])
|
|
|
|
AC_ARG_ENABLE(endian-check,
|
|
AC_HELP_STRING([--disable-endian-check],
|
|
[disable the endian check and trust the OS provided macros]),
|
|
endiancheck=$enableval,endiancheck=yes)
|
|
|
|
if test x"$endiancheck" = xyes ; then
|
|
GNUPG_CHECK_ENDIAN
|
|
fi
|
|
|
|
# fixme: we should get rid of the byte type
|
|
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
|
|
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
|
|
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
|
|
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
|
|
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
|
|
|
|
AC_CHECK_SIZEOF(unsigned short)
|
|
AC_CHECK_SIZEOF(unsigned int)
|
|
AC_CHECK_SIZEOF(unsigned long)
|
|
AC_CHECK_SIZEOF(unsigned long long)
|
|
AC_HEADER_TIME
|
|
AC_CHECK_SIZEOF(time_t,,[[
|
|
#include <stdio.h>
|
|
#if TIME_WITH_SYS_TIME
|
|
# include <sys/time.h>
|
|
# include <time.h>
|
|
#else
|
|
# if HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
# else
|
|
# include <time.h>
|
|
# endif
|
|
#endif
|
|
]])
|
|
GNUPG_TIME_T_UNSIGNED
|
|
|
|
|
|
if test "$ac_cv_sizeof_unsigned_short" = "0" \
|
|
|| test "$ac_cv_sizeof_unsigned_int" = "0" \
|
|
|| test "$ac_cv_sizeof_unsigned_long" = "0"; then
|
|
AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
|
|
fi
|
|
|
|
|
|
#
|
|
# Checks for library functions.
|
|
#
|
|
AC_MSG_NOTICE([checking for library functions])
|
|
AC_CHECK_DECLS(getpagesize)
|
|
AC_FUNC_FSEEKO
|
|
AC_FUNC_VPRINTF
|
|
AC_FUNC_FORK
|
|
AC_CHECK_FUNCS([strerror strlwr tcgetattr mmap canonicalize_file_name])
|
|
AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times gmtime_r strtoull])
|
|
AC_CHECK_FUNCS([setenv unsetenv fcntl ftruncate inet_ntop])
|
|
AC_CHECK_FUNCS([canonicalize_file_name])
|
|
AC_CHECK_FUNCS([gettimeofday getrusage getrlimit setrlimit clock_gettime])
|
|
AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
|
|
AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe getaddrinfo])
|
|
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 \
|
|
getenv inet_pton strpbrk])
|
|
|
|
if test "$have_android_system" = yes; then
|
|
# On Android ttyname is a stub but prints an error message.
|
|
AC_DEFINE(HAVE_BROKEN_TTYNAME,1,
|
|
[Defined if ttyname does not work properly])
|
|
fi
|
|
|
|
AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
|
|
|
|
# Dirmngr requires mmap on Unix systems.
|
|
if test $ac_cv_func_mmap != yes -a $mmap_needed = yes; then
|
|
AC_MSG_ERROR([[Sorry, the current implemenation requires mmap.]])
|
|
fi
|
|
|
|
#
|
|
# W32 specific test
|
|
#
|
|
GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
|
|
|
|
#
|
|
# Sanity check regex. Tests adapted from mutt.
|
|
#
|
|
AC_MSG_CHECKING([whether regular expression support is requested])
|
|
AC_ARG_ENABLE(regex,
|
|
AC_HELP_STRING([--disable-regex],
|
|
[do not handle regular expressions in trust signatures]),
|
|
use_regex=$enableval, use_regex=yes)
|
|
AC_MSG_RESULT($use_regex)
|
|
|
|
if test "$use_regex" = yes ; then
|
|
_cppflags="${CPPFLAGS}"
|
|
_ldflags="${LDFLAGS}"
|
|
AC_ARG_WITH(regex,
|
|
AC_HELP_STRING([--with-regex=DIR],[look for regex in DIR]),
|
|
[
|
|
if test -d "$withval" ; then
|
|
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
|
LDFLAGS="${LDFLAGS} -L$withval/lib"
|
|
fi
|
|
],withval="")
|
|
|
|
# Does the system have regex functions at all?
|
|
AC_SEARCH_LIBS([regcomp], [regex])
|
|
AC_CHECK_FUNC(regcomp, gnupg_cv_have_regex=yes, gnupg_cv_have_regex=no)
|
|
|
|
if test $gnupg_cv_have_regex = no; then
|
|
use_regex=no
|
|
else
|
|
if test x"$cross_compiling" = xyes; then
|
|
AC_MSG_WARN([cross compiling; assuming regexp libray is not broken])
|
|
else
|
|
AC_CACHE_CHECK([whether your system's regexp library is broken],
|
|
[gnupg_cv_regex_broken],
|
|
AC_TRY_RUN([
|
|
#include <unistd.h>
|
|
#include <regex.h>
|
|
main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
|
|
gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
|
|
|
|
if test $gnupg_cv_regex_broken = yes; then
|
|
AC_MSG_WARN([your regex is broken - disabling regex use])
|
|
use_regex=no
|
|
fi
|
|
fi
|
|
fi
|
|
CPPFLAGS="${_cppflags}"
|
|
LDFLAGS="${_ldflags}"
|
|
fi
|
|
|
|
if test "$use_regex" != yes ; then
|
|
AC_DEFINE(DISABLE_REGEX,1, [Define to disable regular expression support])
|
|
fi
|
|
AM_CONDITIONAL(DISABLE_REGEX, test x"$use_regex" != xyes)
|
|
|
|
|
|
|
|
#
|
|
# Do we have zlib? Must do it here because Solaris failed
|
|
# when compiling a conftest (due to the "-lz" from LIBS).
|
|
# Note that we combine zlib and bzlib2 in ZLIBS.
|
|
#
|
|
if test "$use_zip" = yes ; then
|
|
_cppflags="${CPPFLAGS}"
|
|
_ldflags="${LDFLAGS}"
|
|
AC_ARG_WITH(zlib,
|
|
[ --with-zlib=DIR use libz in DIR],[
|
|
if test -d "$withval"; then
|
|
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
|
LDFLAGS="${LDFLAGS} -L$withval/lib"
|
|
fi
|
|
])
|
|
|
|
AC_CHECK_HEADER(zlib.h,
|
|
AC_CHECK_LIB(z, deflateInit2_,
|
|
[
|
|
ZLIBS="-lz"
|
|
AC_DEFINE(HAVE_ZIP,1, [Defined if ZIP and ZLIB are supported])
|
|
],
|
|
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
|
|
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
|
|
fi
|
|
|
|
|
|
#
|
|
# Check whether we can support bzip2
|
|
#
|
|
if test "$use_bzip2" = yes ; then
|
|
_cppflags="${CPPFLAGS}"
|
|
_ldflags="${LDFLAGS}"
|
|
AC_ARG_WITH(bzip2,
|
|
AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
|
|
[
|
|
if test -d "$withval" ; then
|
|
CPPFLAGS="${CPPFLAGS} -I$withval/include"
|
|
LDFLAGS="${LDFLAGS} -L$withval/lib"
|
|
fi
|
|
],withval="")
|
|
|
|
# Checking alongside stdio.h as an early version of bzip2 (1.0)
|
|
# required stdio.h to be included before bzlib.h, and Solaris 9 is
|
|
# woefully out of date.
|
|
if test "$withval" != no ; then
|
|
AC_CHECK_HEADER(bzlib.h,
|
|
AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
|
|
[
|
|
have_bz2=yes
|
|
ZLIBS="$ZLIBS -lbz2"
|
|
AC_DEFINE(HAVE_BZIP2,1,
|
|
[Defined if the bz2 compression library is available])
|
|
],
|
|
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
|
|
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
|
|
AC_SUBST(ZLIBS)
|
|
|
|
|
|
# Check for readline support
|
|
GNUPG_CHECK_READLINE
|
|
|
|
|
|
if test "$development_version" = yes; then
|
|
AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
|
|
[Defined if this is not a regular release])
|
|
fi
|
|
|
|
AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
|
|
|
|
GNUPG_CHECK_GNUMAKE
|
|
|
|
# Add some extra libs here so that previous tests don't fail for
|
|
# mysterious reasons - the final link step should bail out.
|
|
# W32SOCKLIBS is also defined so that if can be used for tools not
|
|
# requiring any network stuff but linking to code in libcommon which
|
|
# tracks in winsock stuff (e.g. init_common_subsystems).
|
|
if test "$have_w32_system" = yes; then
|
|
if test "$have_w32ce_system" = yes; then
|
|
W32SOCKLIBS="-lws2"
|
|
else
|
|
W32SOCKLIBS="-lws2_32"
|
|
fi
|
|
NETLIBS="${NETLIBS} ${W32SOCKLIBS}"
|
|
fi
|
|
|
|
AC_SUBST(NETLIBS)
|
|
AC_SUBST(W32SOCKLIBS)
|
|
|
|
#
|
|
# Setup gcc specific options
|
|
#
|
|
AC_MSG_NOTICE([checking for cc features])
|
|
if test "$GCC" = yes; then
|
|
mycflags=
|
|
mycflags_save=$CFLAGS
|
|
|
|
# Check whether gcc does not emit a diagnositc for unknow -Wno-*
|
|
# options. This is the case for gcc >= 4.6
|
|
AC_MSG_CHECKING([if gcc ignores unknown -Wno-* options])
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6 )
|
|
#kickerror
|
|
#endif]],[])],[_gcc_silent_wno=yes],[_gcc_silent_wno=no])
|
|
AC_MSG_RESULT($_gcc_silent_wno)
|
|
|
|
# Note that it is okay to use CFLAGS here because these are just
|
|
# warning options and the user should have a chance of overriding
|
|
# them.
|
|
if test "$USE_MAINTAINER_MODE" = "yes"; then
|
|
mycflags="$mycflags -O3 -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
|
|
mycflags="$mycflags -Wformat -Wno-format-y2k -Wformat-security"
|
|
if test x"$_gcc_silent_wno" = xyes ; then
|
|
_gcc_wopt=yes
|
|
else
|
|
AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
|
|
CFLAGS="-Wno-missing-field-initializers"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
|
|
[_gcc_wopt=yes],[_gcc_wopt=no])
|
|
AC_MSG_RESULT($_gcc_wopt)
|
|
fi
|
|
if test x"$_gcc_wopt" = xyes ; then
|
|
mycflags="$mycflags -W -Wno-sign-compare"
|
|
mycflags="$mycflags -Wno-missing-field-initializers"
|
|
fi
|
|
|
|
AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement])
|
|
CFLAGS="-Wdeclaration-after-statement"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
|
|
AC_MSG_RESULT($_gcc_wopt)
|
|
if test x"$_gcc_wopt" = xyes ; then
|
|
mycflags="$mycflags -Wdeclaration-after-statement"
|
|
fi
|
|
else
|
|
mycflags="$mycflags -Wall"
|
|
fi
|
|
|
|
if test x"$_gcc_silent_wno" = xyes ; then
|
|
_gcc_psign=yes
|
|
else
|
|
AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
|
|
CFLAGS="-Wno-pointer-sign"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
|
|
[_gcc_psign=yes],[_gcc_psign=no])
|
|
AC_MSG_RESULT($_gcc_psign)
|
|
fi
|
|
if test x"$_gcc_psign" = xyes ; then
|
|
mycflags="$mycflags -Wno-pointer-sign"
|
|
fi
|
|
|
|
AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
|
|
CFLAGS="-Wpointer-arith"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_psign=yes,_gcc_psign=no)
|
|
AC_MSG_RESULT($_gcc_psign)
|
|
if test x"$_gcc_psign" = xyes ; then
|
|
mycflags="$mycflags -Wpointer-arith"
|
|
fi
|
|
|
|
CFLAGS="$mycflags $mycflags_save"
|
|
fi
|
|
|
|
|
|
#
|
|
# This is handy for debugging so the compiler doesn't rearrange
|
|
# things and eliminate variables.
|
|
#
|
|
AC_ARG_ENABLE(optimization,
|
|
AC_HELP_STRING([--disable-optimization],
|
|
[disable compiler optimization]),
|
|
[if test $enableval = no ; then
|
|
CFLAGS=`echo $CFLAGS | sed s/-O[[1-9]]\ /-O0\ /g`
|
|
fi])
|
|
|
|
#
|
|
# Add user CFLAGS.
|
|
#
|
|
CFLAGS="$CFLAGS $CFLAGS_orig"
|
|
|
|
#
|
|
# Decide what to build
|
|
#
|
|
|
|
build_scdaemon_extra=""
|
|
if test "$build_scdaemon" = "yes"; then
|
|
if test $have_libusb = no; then
|
|
build_scdaemon_extra="without internal CCID driver"
|
|
fi
|
|
if test -n "$build_scdaemon_extra"; then
|
|
build_scdaemon_extra="(${build_scdaemon_extra})"
|
|
fi
|
|
fi
|
|
|
|
|
|
#
|
|
# Set variables for use by automake makefiles.
|
|
#
|
|
AM_CONDITIONAL(BUILD_GPG, test "$build_gpg" = "yes")
|
|
AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
|
|
AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
|
|
AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
|
|
AM_CONDITIONAL(BUILD_G13, test "$build_g13" = "yes")
|
|
AM_CONDITIONAL(BUILD_DIRMNGR, test "$build_dirmngr" = "yes")
|
|
AM_CONDITIONAL(BUILD_TOOLS, test "$build_tools" = "yes")
|
|
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(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.
|
|
#
|
|
if test "$build_gpg" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_GPG,1,[Defined if GPG is to be build])
|
|
fi
|
|
if test "$build_gpgsm" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_GPGSM,1,[Defined if GPGSM is to be build])
|
|
fi
|
|
if test "$build_agent" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_AGENT,1,[Defined if GPG-AGENT is to be build])
|
|
fi
|
|
if test "$build_scdaemon" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_SCDAEMON,1,[Defined if SCDAEMON is to be build])
|
|
fi
|
|
if test "$build_dirmngr" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_DIRMNGR,1,[Defined if SCDAEMON is to be build])
|
|
fi
|
|
if test "$build_g13" = yes ; then
|
|
AC_DEFINE(BUILD_WITH_G13,1,[Defined if G13 is to be build])
|
|
fi
|
|
|
|
|
|
#
|
|
# Define Name strings
|
|
#
|
|
AC_DEFINE_UNQUOTED(GNUPG_NAME, "GnuPG", [The name of the project])
|
|
|
|
AC_DEFINE_UNQUOTED(GPG_NAME, "gpg", [The name of the OpenPGP tool])
|
|
AC_DEFINE_UNQUOTED(GPG_DISP_NAME, "GnuPG", [The displayed name of gpg])
|
|
|
|
AC_DEFINE_UNQUOTED(GPGSM_NAME, "gpgsm", [The name of the S/MIME tool])
|
|
AC_DEFINE_UNQUOTED(GPGSM_DISP_NAME, "GPGSM", [The displayed name of gpgsm])
|
|
|
|
AC_DEFINE_UNQUOTED(GPG_AGENT_NAME, "gpg-agent", [The name of the agent])
|
|
AC_DEFINE_UNQUOTED(GPG_AGENT_DISP_NAME, "GPG Agent",
|
|
[The displayed name of gpg-agent])
|
|
|
|
AC_DEFINE_UNQUOTED(SCDAEMON_NAME, "scdaemon", [The name of the scdaemon])
|
|
AC_DEFINE_UNQUOTED(SCDAEMON_DISP_NAME, "SCDaemon",
|
|
[The displayed name of scdaemon])
|
|
|
|
AC_DEFINE_UNQUOTED(DIRMNGR_NAME, "dirmngr", [The name of the dirmngr])
|
|
AC_DEFINE_UNQUOTED(DIRMNGR_DISP_NAME, "DirMngr",
|
|
[The displayed name of dirmngr])
|
|
|
|
AC_DEFINE_UNQUOTED(G13_NAME, "g13", [The name of the g13 tool])
|
|
AC_DEFINE_UNQUOTED(G13_DISP_NAME, "G13", [The displayed name of g13])
|
|
|
|
AC_DEFINE_UNQUOTED(GPGCONF_NAME, "gpgconf", [The name of the gpgconf tool])
|
|
AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
|
|
[The displayed name of gpgconf])
|
|
|
|
AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
|
|
|
|
AC_DEFINE_UNQUOTED(GPG_AGENT_SOCK_NAME, "S.gpg-agent",
|
|
[The name of the agent socket])
|
|
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",
|
|
[The name of the dirmngr info envvar])
|
|
AC_DEFINE_UNQUOTED(SCDAEMON_SOCK_NAME, "S.scdaemon",
|
|
[The name of the SCdaemon socket])
|
|
AC_DEFINE_UNQUOTED(DIRMNGR_SOCK_NAME, "S.dirmngr",
|
|
[The name of the dirmngr socket])
|
|
|
|
AC_DEFINE_UNQUOTED(GPGEXT_GPG, "gpg", [The standard binary file suffix])
|
|
|
|
if test "$have_w32_system" = yes; then
|
|
AC_DEFINE_UNQUOTED(GNUPG_REGISTRY_DIR, "\\\\Software\\\\GNU\\\\GnuPG",
|
|
[The directory part of the W32 registry keys])
|
|
fi
|
|
|
|
|
|
#
|
|
# Provide information about the build.
|
|
#
|
|
BUILD_REVISION="mym4_revision"
|
|
AC_SUBST(BUILD_REVISION)
|
|
AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
|
|
[GIT commit id revision used to build this package])
|
|
|
|
changequote(,)dnl
|
|
BUILD_VERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
|
|
changequote([,])dnl
|
|
BUILD_VERSION="${BUILD_VERSION}mym4_revision_dec"
|
|
BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
|
|
AC_SUBST(BUILD_VERSION)
|
|
AC_SUBST(BUILD_FILEVERSION)
|
|
|
|
AC_ARG_ENABLE([build-timestamp],
|
|
AC_HELP_STRING([--enable-build-timestamp],
|
|
[set an explicit build timestamp for reproducibility.
|
|
(default is the current time in ISO-8601 format)]),
|
|
[if test "$enableval" = "yes"; then
|
|
BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
|
|
else
|
|
BUILD_TIMESTAMP="$enableval"
|
|
fi],
|
|
[BUILD_TIMESTAMP="<none>"])
|
|
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)
|
|
|
|
|
|
#
|
|
# Print errors here so that they are visible all
|
|
# together and the user can acquire them all together.
|
|
#
|
|
die=no
|
|
if test "$have_gpg_error" = "no"; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** You need libgpg-error to build this program.
|
|
** This library is for example available at
|
|
*** ftp://ftp.gnupg.org/gcrypt/libgpg-error
|
|
*** (at least version $NEED_GPG_ERROR_VERSION is required.)
|
|
***]])
|
|
fi
|
|
if test "$have_libgcrypt" = "no"; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** You need libgcrypt to build this program.
|
|
** This library is for example available at
|
|
*** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
|
|
*** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API) is required.)
|
|
***]])
|
|
fi
|
|
if test "$have_libassuan" = "no"; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** You need libassuan to build this program.
|
|
*** This library is for example available at
|
|
*** ftp://ftp.gnupg.org/gcrypt/libassuan/
|
|
*** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
|
|
***]])
|
|
fi
|
|
if test "$have_ksba" = "no"; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** You need libksba to build this program.
|
|
*** This library is for example available at
|
|
*** ftp://ftp.gnupg.org/gcrypt/libksba/
|
|
*** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
|
|
***]])
|
|
fi
|
|
if test "$gnupg_have_ldap" = yes; then
|
|
if test "$have_w32ce_system" = yes; then
|
|
AC_MSG_NOTICE([[
|
|
*** Note that CeGCC might be broken, a package fixing this is:
|
|
*** http://files.kolab.org/local/windows-ce/
|
|
*** source/wldap32_0.1-mingw32ce.orig.tar.gz
|
|
*** binary/wldap32-ce-arm-dev_0.1-1_all.deb
|
|
***]])
|
|
fi
|
|
fi
|
|
if test "$have_npth" = "no"; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** It is now required to build with support for the
|
|
*** New Portable Threads Library (nPth). Please install this
|
|
*** library first. The library is for example available at
|
|
*** ftp://ftp.gnupg.org/gcrypt/npth/
|
|
*** (at least version $NEED_NPTH_VERSION (API $NEED_NPTH_API) is required).
|
|
***]])
|
|
fi
|
|
|
|
if test "$require_iconv" = yes; then
|
|
if test "$am_func_iconv" != yes; then
|
|
die=yes
|
|
AC_MSG_NOTICE([[
|
|
***
|
|
*** The system does not provide a working iconv function. Please
|
|
*** install a suitable library; for example GNU Libiconv which is
|
|
*** available at:
|
|
*** http://ftp.gnu.org/gnu/libiconv/
|
|
***]])
|
|
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([[
|
|
***
|
|
*** Required libraries not found. Please consult the above messages
|
|
*** and install them before running configure again.
|
|
***]])
|
|
fi
|
|
|
|
|
|
|
|
AC_CONFIG_FILES([ m4/Makefile
|
|
Makefile
|
|
po/Makefile.in
|
|
common/Makefile
|
|
common/w32info-rc.h
|
|
kbx/Makefile
|
|
g10/Makefile
|
|
sm/Makefile
|
|
agent/Makefile
|
|
scd/Makefile
|
|
g13/Makefile
|
|
dirmngr/Makefile
|
|
tools/gpg-zip
|
|
tools/Makefile
|
|
doc/Makefile
|
|
tests/Makefile
|
|
tests/openpgp/Makefile
|
|
tests/pkits/Makefile
|
|
g10/gpg.w32-manifest
|
|
])
|
|
|
|
|
|
AC_OUTPUT
|
|
|
|
|
|
echo "
|
|
GnuPG v${VERSION} has been configured as follows:
|
|
|
|
Revision: mym4_revision (mym4_revision_dec)
|
|
Platform: $PRINTABLE_OS_NAME ($host)
|
|
|
|
OpenPGP: $build_gpg
|
|
S/MIME: $build_gpgsm
|
|
Agent: $build_agent
|
|
Smartcard: $build_scdaemon $build_scdaemon_extra
|
|
G13: $build_g13
|
|
Dirmngr: $build_dirmngr
|
|
Gpgtar: $build_gpgtar
|
|
|
|
Protect tool: $show_gnupg_protect_tool_pgm
|
|
LDAP wrapper: $show_gnupg_dirmngr_ldap_pgm
|
|
Default agent: $show_gnupg_agent_pgm
|
|
Default pinentry: $show_gnupg_pinentry_pgm
|
|
Default scdaemon: $show_gnupg_scdaemon_pgm
|
|
Default dirmngr: $show_gnupg_dirmngr_pgm
|
|
|
|
Dirmngr auto start: $dirmngr_auto_start
|
|
Readline support: $gnupg_cv_have_readline
|
|
LDAP support: $gnupg_have_ldap
|
|
DNS SRV support: $use_dns_srv
|
|
TLS support: $use_tls_library
|
|
TOFU support: $use_tofu
|
|
Tor support: $show_tor_support
|
|
"
|
|
if test x"$use_regex" != xyes ; then
|
|
echo "
|
|
Warning: No regular expression support available.
|
|
OpenPGP trust signatures won't work.
|
|
gpg-check-pattern will not be built.
|
|
"
|
|
fi
|
|
if test "x${gpg_config_script_warn}" != x; then
|
|
cat <<G10EOF
|
|
Warning: Mismatches between the target platform and the
|
|
to be used libraries have been detected for:
|
|
${gpg_config_script_warn}
|
|
Please check above for more warning messages.
|
|
|
|
G10EOF
|
|
fi
|