dnl dnl Configure template for G10 dnl dnl (Process this file with autoconf to produce a configure script.) AC_INIT(g10/g10.c) AC_CONFIG_AUX_DIR(scripts) AC_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=g10 ALL_LINGUAS="de" G10_LOCALEDIR="$g10_prefix/share/locale" AC_SUBST(VERSION) AC_SUBST(PACKAGE) AC_SUBST(G10_LOCALEDIR) AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") AC_DEFINE_UNQUOTED(G10_LOCALEDIR, "$G10_LOCALEDIR") AC_ARG_ENABLE(m-debug, [ --enable-m-debug Enable debugging of memory allocation]) if test "$enableval" = y || test "$enableval" = yes; then AC_DEFINE(M_DEBUG) fi CFLAGS="-g -Wall" g10_ln_sources= g10_ln_dests= dnl BEGIN=========================== dnl FIXME: move this to aclocal.m4 AC_PREREQ(2.5) AC_DEFUN(md_TYPE_PTRDIFF_T, [AC_CACHE_CHECK([for ptrdiff_t], ac_cv_type_ptrdiff_t, [AC_TRY_COMPILE(stddef.h, [ptrdiff_t p], ac_cv_type_ptrdiff_t=yes, ac_cv_type_ptrdiff_t=no)]) if test $ac_cv_type_ptrdiff_t = yes; then AC_DEFINE(HAVE_PTRDIFF_T) fi ]) AC_DEFUN(md_PATH_PROG, [AC_PATH_PROG($1,$2,$3)dnl if echo $$1 | grep openwin > /dev/null; then echo "WARNING: Do not use OpenWin's $2. (Better remove it.) >&AC_FD_MSG" ac_cv_path_$1=$2 $1=$2 fi ]) dnl --------------------------------------------------------- ## dnl Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ## dnl substitution. ## dnl --------------------------------------------------------- ## AC_DEFUN(fp_PROG_INSTALL, [AC_PROG_INSTALL test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755' AC_SUBST(INSTALL_SCRIPT)dnl ]) dnl Check NLS options AC_DEFUN(ud_LC_MESSAGES, [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], ud_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], ud_cv_val_LC_MESSAGES=yes, ud_cv_val_LC_MESSAGES=no)]) if test $ud_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES) fi fi]) AC_DEFUN(ud_WITH_NLS, [AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], nls_cv_use_nls=$enableval, nls_cv_use_nls=yes) AC_MSG_RESULT($nls_cv_use_nls) dnl If we use NLS figure out what method if test "$nls_cv_use_nls" = "yes"; then AC_DEFINE(ENABLE_NLS) AC_MSG_CHECKING([for explicitly using GNU gettext]) AC_ARG_WITH(gnu-gettext, [ --with-gnu-gettext use the GNU gettext library], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) if test "$nls_cv_force_use_gnu_gettext" = "yes"; then nls_cv_use_gnu_gettext=yes else dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If gettext or catgets are available (in this order) we dnl use this. Else we have to fall back to GNU NLS library. AC_CHECK_LIB(intl, main) AC_CHECK_LIB(i, main) CATOBJEXT=NONE AC_CHECK_FUNC(gettext, [AC_DEFINE(HAVE_GETTEXT) md_PATH_PROG(MSGFMT, msgfmt, no)dnl if test "$MSGFMT" != "no"; then AC_CHECK_FUNCS(dcgettext) md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) md_PATH_PROG(XGETTEXT, xgettext, xgettext) CATOBJEXT=.mo INSTOBJEXT=.mo DATADIRNAME=lib fi]) if test "$CATOBJEXT" = "NONE"; then dnl No gettext in C library. Try catgets next. AC_CHECK_FUNC(catgets, [AC_DEFINE(HAVE_CATGETS) INTLOBJS="\$(CATOBJS)" AC_PATH_PROG(GENCAT, gencat, no)dnl if test "$GENCAT" != "no"; then AC_PATH_PROGS(GMSGFMT, [gmsgfmt msgfmt], msgfmt) md_PATH_PROG(XGETTEXT, xgettext, xgettext) CATOBJEXT=.cat INSTOBJEXT=.cat DATADIRNAME=lib INTLDEPS="../intl/libintl.a" INTLLIBS=$INTLDEPS LIBS=`echo $LIBS | sed -e 's/-lintl//'` nls_cv_header_intl=intl/libintl.h nls_cv_header_libgt=intl/libgettext.h fi]) fi if test "$CATOBJEXT" = "NONE"; then dnl Neither gettext nor catgets in included in the C library. dnl Fall back on GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. INTLOBJS="\$(GETTOBJS)" md_PATH_PROG(MSGFMT, msgfmt, msgfmt) md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) md_PATH_PROG(XGETTEXT, xgettext, xgettext) AC_SUBST(MSGFMT) CATOBJEXT=.gmo INSTOBJEXT=.mo DATADIRNAME=share INTLDEPS="../intl/libintl.a" INTLLIBS=$INTLDEPS LIBS=`echo $LIBS | sed -e 's/-lintl//'` nls_cv_header_intl=intl/libintl.h nls_cv_header_libgt=intl/libgettext.h fi # We need to process the intl/ and po/ directory. INTLSUB=intl POSUB=po else DATADIRNAME=share nls_cv_header_intl=intl/libintl.h nls_cv_header_libgt=intl/libgettext.h fi dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.in. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLDEPS) AC_SUBST(INTLLIBS) AC_SUBST(INTLOBJS) AC_SUBST(INTLSUB) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) AC_DEFUN(ud_GNU_GETTEXT, [AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_CHECK_HEADERS([limits.h locale.h nl_types.h malloc.h string.h unistd.h values.h]) AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp]) if test "${ac_cv_func_stpcpy+set}" != "set"; then AC_CHECK_FUNCS(stpcpy) fi if test "${ac_cv_func_stpcpy}" = "yes"; then AC_DEFINE(HAVE_STPCPY) fi ud_LC_MESSAGES ud_WITH_NLS if test "x$CATOBJEXT" != "x"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; esac done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl Determine which catalog format we have (if any is needed) dnl For now we know about two different formats: dnl Linux and the normal X/Open format test -d intl || mkdir intl if test "$CATOBJEXT" = ".cat"; then AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) dnl Transform the SED scripts while copying because some dumb SEDs dnl cannot handle comments. sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed fi dnl po2tbl.sed is always needed. sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) dnl END======================== dnl some additional macros dnl WK_MSG_PRINT(STRING) define(WK_MSG_PRINT, [echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG ]) dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME) AC_DEFUN(WK_CHECK_TYPEDEF, [AC_MSG_CHECKING(for $1 typedef) AC_CACHE_VAL(wk_cv_typedef_$1, [AC_TRY_COMPILE([#include #include ], [ #undef $1 int a = sizeof($1); ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )]) AC_MSG_RESULT($wk_cv_typedef_$1) if test "$wk_cv_typedef_$1" = yes; then AC_DEFINE($2) fi ]) dnl AC_CANONICAL_SYSTEM AC_MSG_CHECKING(cached information) hostcheck="$target" AC_CACHE_VAL(ac_cv_mpi_hostcheck, [ ac_cv_mpi_hostcheck="$hostcheck" ]) if test "$ac_cv_mpi_hostcheck" != "$hostcheck"; then AC_MSG_RESULT(changed) AC_MSG_WARN(config.cache exists!) AC_MSG_ERROR(you must do 'make distclean' first to compile for different target or different parameters.) else AC_MSG_RESULT(ok) fi dnl Checks for programs. AC_PROG_MAKE_SET 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_PROG_RANLIB AC_PROG_INSTALL AC_PROG_CC AC_PROG_CPP ;; esac AC_ARG_PROGRAM dnl Checks for libraries. dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(unistd.h) ud_GNU_GETTEXT dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T dnl autoconf doesn't support a default value for AC_C_BIGENDIAN dnl so here is the modified version if test "$cross_compiling" = yes; then AC_MSG_WARN(cross compiling; assuming little endianess) fi AC_CACHE_CHECK(for little endianess, ac_cv_c_littleendian, [ac_cv_c_littleendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. AC_TRY_COMPILE([#include #include ], [ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif], [# It does; now see whether it defined to BIG_ENDIAN or not. AC_TRY_COMPILE([#include #include ], [ #if BYTE_ORDER != BIG_ENDIAN not big endian #endif], ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)]) if test "$ac_cv_c_littleendian" = unknown; then AC_TRY_RUN([main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); }], ac_cv_c_littleendian=yes, ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes) fi]) if test "$ac_cv_c_littleendian" = yes; then AC_DEFINE(LITTLE_ENDIAN_HOST) else AC_DEFINE(BIG_ENDIAN_HOST) fi 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) dnl check wether we have a random device 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 dnl setup assembler stuff AC_MSG_CHECKING(for mpi assembler functions) mpi_config_done="no" AC_CACHE_VAL(ac_cv_mpi_config_done, [ ac_cv_mpi_config_done="$mpi_config_done" ]) if test "$ac_cv_mpi_config_done" = yes; then AC_MSG_RESULT(done) else ac_cv_mpi_config_done="" if test -f $srcdir/mpi/config.links ; then . $srcdir/mpi/config.links if test "x$g10_ln_sources" = "x"; then g10_ln_sources="$mpi_ln_src" g10_ln_dests="$mpi_ln_dst" else g10_ln_sources="$g10_ln_sources $mpi_ln_src" g10_ln_dests="$g10_ln_dests $mpi_ln_dst" fi 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 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). AC_CHECK_HEADERS(zlib.h, [LIBS="$LIBS -lz"], AC_MSG_WARN([zlib missing - creating without ZLIB support!]) ) dnl checking whether we have other cipher source files CIPHER_EXTRA_OBJS="" CIPHER_EXTRA_DIST="" AC_CACHE_CHECK(for extra cipher modules, ac_cv_have_rsa_cipher, [if test -f $srcdir/cipher/rsa.c && test -f $srcdir/cipher/rsa.h; then ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi]) if test $ac_cv_have_rsa_cipher = yes; then AC_DEFINE(HAVE_RSA_CIPHER) CIPHER_EXTRA_OBJS="rsa.o" CIPHER_EXTRA_DIST="rsa.c rsa.h" fi AC_SUBST(CIPHER_EXTRA_OBJS) AC_SUBST(CIPHER_EXTRA_DIST) if test "x$g10_ln_sources" = "x"; then g10_ln_sources="$nls_cv_header_libgt" g10_ln_dests="$nls_cv_header_intl" else g10_ln_sources="$g10_ln_sources $nls_cv_header_libgt" g10_ln_dests="$g10_ln_dests $nls_cv_header_intl" fi AC_LINK_FILES($g10_ln_sources,$g10_ln_dests) AC_OUTPUT([ Makefile intl/Makefile po/Makefile.in util/Makefile mpi/Makefile cipher/Makefile g10/Makefile tools/Makefile ],[echo timestamp >stamp-h; sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])