dnl
dnl Configure template for GNUPG
dnl
dnl (Process this file with autoconf to produce a configure script.)

AC_INIT(g10/g10.c)
AC_CONFIG_AUX_DIR(scripts)
AM_CONFIG_HEADER(config.h)


if test "x$exec_prefix" = xNONE ; then
    if test "x$prefix" = xNONE ; then
	g10_prefix="$ac_default_prefix"
    else
	g10_prefix="$prefix"
    fi
else
    g10_prefix="$exec_prefix"
fi


VERSION=`cat $srcdir/VERSION`
PACKAGE=gnupg
ALL_LINGUAS="en de it"
AC_SUBST(VERSION)
AC_SUBST(PACKAGE)
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")

AC_ARG_ENABLE(dev-random,
[  --disable-dev-random    disable the use of dev random],
    try_dev_random=$enableval, try_dev_random=yes)

AC_ARG_ENABLE(dynload,
[  --disable-dynload	   disable dynamic loading],
    try_dynload=$enableval, try_dynload=yes)

AC_MSG_CHECKING([whether memory debugging is requested])
AC_ARG_ENABLE(m-debug,
[  --enable-m-debug	   enable debugging of memory allocation],
use_m_debug=$enableval, use_m_debug=no)
AC_MSG_RESULT($use_m_debug)
if test "$use_m_debug" = yes; then
    AC_DEFINE(M_DEBUG)
    use_m_guard=yes
else
    AC_MSG_CHECKING([whether memory guard is requested])
    AC_ARG_ENABLE(m-guard,
    [  --disable-m-guard       disable memory guard facility],
    use_m_guard=$enableval, use_m_guard=yes)
    AC_MSG_RESULT($use_m_guard)
fi
if test "$use_m_guard" = yes ; then
    AC_DEFINE(M_GUARD)
    CFLAGS="-g -Wall"
else
    CFLAGS="-O2 -Wall"
fi


AC_MSG_CHECKING([whether included zlib is requested])
AC_ARG_WITH(included-zlib,
    [  --with-included-zlib    use the zlib code included here],
[g10_force_zlib=yes], [g10_force_zlib=no] )
AC_MSG_RESULT($g10_force_zlib)


AC_CANONICAL_SYSTEM
WK_CHECK_CACHE

dnl Checks for programs.

AC_PROG_MAKE_SET
AC_ARG_PROGRAM

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)
dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_ISC_POSIX

case "${target}" in
    i386--mingw32)
	# special stuff for Windoze NT
	cross_compiling=yes
	CC="i386--mingw32-gcc"
	CPP="i386--mingw32-gcc -E"
	RANLIB="i386--mingw32-ranlib"
	ac_cv_have_dev_random=no
	AC_DEFINE(USE_RAND_W32)
	GNUPG_LIBDIR="c:/lib/gnupg"
	;;
    *)
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PROG_CC
AC_PROG_CPP
	AC_DEFINE(USE_RAND_UNIX)
	GNUPG_LIBDIR="$g10_prefix/lib/gnupg"
       ;;
esac
AC_DEFINE_UNQUOTED(GNUPG_LIBDIR, "$GNUPG_LIBDIR")

case "${target}" in
    i386--mingw32)
	PRINTABLE_OS_NAME="MingW32"
	;;
    *-linux*)
	PRINTABLE_OS_NAME="GNU/Linux"
	;;
    *)
	PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
	;;
esac
AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME")

dnl Checks for libraries.


if test "$try_dynload" = yes ; then
AC_CHECK_LIB(dl,dlopen)
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
  AC_DEFINE(USE_DYNAMIC_LINKING)
  AC_DEFINE(HAVE_DL_DLOPEN)
  DYNLINK_LDFLAGS=-rdynamic
  use_gnupg_extensions=yes
else
AC_CHECK_LIB(dld,dld_link)
if test "$ac_cv_lib_dld_dld_link" = "yes"; then
  AC_DEFINE(USE_DYNAMIC_LINKING)
  AC_DEFINE(HAVE_DLD_DLD_LINK)
  DYNLINK_LDFLAGS=-rdynamic
  use_gnupg_extensions=yes
fi
fi
else
  AC_MSG_CHECKING(for dynamic loading)
  DYNLINK_LDFLAGS=
  use_gnupg_extensions=no
  AC_MSG_RESULT(has been disabled)
fi

AM_CONDITIONAL(ENABLE_GNUPG_EXTENSIONS, test "$use_gnupg_extensions" = yes )
AC_SUBST(DYNLINK_LDFLAGS)

dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(unistd.h)


dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_SIGNAL
AC_DECL_SYS_SIGLIST

WK_CHECK_ENDIAN


WK_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
WK_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
WK_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
WK_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
WK_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)

AC_CHECK_SIZEOF(unsigned short, 2)
AC_CHECK_SIZEOF(unsigned int, 4)
AC_CHECK_SIZEOF(unsigned long, 4)

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



dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr rand strtoul mlock mmap)
AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit)

WK_CHECK_IPC
if test "$ac_cv_header_sys_shm_h" = "yes"; then
  AC_DEFINE(USE_SHM_COPROCESSING)
fi

dnl check whether we have a random device
if test "$try_dev_random" = yes ; then
AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
[if test -c /dev/random && test -c /dev/urandom ; then
  ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
if test "$ac_cv_have_dev_random" = yes; then
    AC_DEFINE(HAVE_DEV_RANDOM)
fi
else
    AC_MSG_CHECKING(for random device)
    ac_cv_have_dev_random=no
    AC_MSG_RESULT(has been disabled)
fi




dnl setup assembler stuff
AC_MSG_CHECKING(for mpi assembler functions)
if test -f $srcdir/mpi/config.links ; then
    . $srcdir/mpi/config.links
    WK_LINK_FILES($mpi_ln_src, $mpi_ln_dst)
    ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
    ac_cv_mpi_config_done="yes"
    AC_MSG_RESULT(done)
else
    AC_MSG_RESULT(failed)
    AC_MSG_ERROR([mpi/config.links missing!])
fi
MPI_EXTRA_ASM_OBJS=""
if test "$ac_cv_mpi_extra_asm_modules" != ""; then
WK_MSG_PRINT([mpi extra asm functions:])
for i in $ac_cv_mpi_extra_asm_modules; do
    WK_MSG_PRINT([$i])
    MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
done
AC_MSG_RESULT()
fi
AC_SUBST(MPI_EXTRA_ASM_OBJS)

dnl Do we have zlib? Must do it here because Solaris failed
dnl when compiling a conftest (due to the "-lz" from LIBS).
if test "$g10_force_zlib" = "yes"; then
    ZLIBS="../zlib/libzlib.a"
    AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
    WK_LINK_FILES(zlib/zlib.h, zlib.h )
    WK_LINK_FILES(zlib/zconf.h, zconf.h )
else
AC_CHECK_HEADERS(zlib.h)
if test "$ac_cv_header_zlib_h" = yes ; then
    LIBS="$LIBS -lz"
    ZLIBS=
    AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
else
    ZLIBS="../zlib/libzlib.a"
    AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
    WK_LINK_FILES(zlib/zlib.h, zlib.h )
    WK_LINK_FILES(zlib/zconf.h, zconf.h )
fi
fi
AC_SUBST(ZLIBS)


AM_GNU_GETTEXT
G10_LOCALEDIR="$g10_prefix/$DATADIRNAME/locale"
AC_SUBST(G10_LOCALEDIR)
AC_DEFINE_UNQUOTED(G10_LOCALEDIR, "$G10_LOCALEDIR")
WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )

WK_DO_LINK_FILES

AC_OUTPUT([
Makefile
intl/Makefile
po/Makefile.in
util/Makefile
mpi/Makefile
cipher/Makefile
g10/Makefile
doc/Makefile
tools/Makefile
zlib/Makefile
checks/Makefile
],[echo timestamp >stamp-h; sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])