X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blobdiff_plain;f=acinclude.m4;h=7c264a41b1d4ab6c07c89ecea1e5b65803f30c3c;hp=9c1486c71328dba29456b8b5dab70358e23405a8;hb=ce11cc39ea7e011040debc9339a2310a714efe7e;hpb=d6fa02add60c1d9ef6c7c576de3beb0a5debfade
diff --git a/acinclude.m4 b/acinclude.m4
index 9c1486c71..7c264a41b 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,356 +1,349 @@
-dnl macros to configure g10
-
-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 Check NLS options
+dnl macros to configure gnupg
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GnuPG.
+dnl
+dnl GnuPG is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl GnuPG is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, see .
-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)
+dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
+dnl Check whether a typedef exists and create a #define $2 if it exists
+dnl
+AC_DEFUN([GNUPG_CHECK_TYPEDEF],
+ [ AC_MSG_CHECKING(for $1 typedef)
+ AC_CACHE_VAL(gnupg_cv_typedef_$1,
+ [AC_TRY_COMPILE([#define _GNU_SOURCE 1
+ #include
+ #include ], [
+ #undef $1
+ int a = sizeof($1);
+ ], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
+ AC_MSG_RESULT($gnupg_cv_typedef_$1)
+ if test "$gnupg_cv_typedef_$1" = yes; then
+ AC_DEFINE($2,1,[Defined if a `]$1[' is typedef'd])
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
+ ])
- dnl Debian 1.3.1 does not have libintl.h but libintl.a
- AC_CHECK_HEADER(libintl.h, [ AC_DEFINE(HAVE_LIBINTL_H) ])
- if test "$ac_cv_lib_intl_main" = yes \
- && test "$ac_cv_header_libintl_h" != "yes" ; then
- nls_cv_use_gnu_gettext=yes
- else
- 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
- if test "$ac_cv_lib_intl[_]main" = yes; then
- INTLLIBS=-lintl
- elif test "$ac_cv_lib_i[_]main" = yes; then
- INTLLIBS=-li
- fi
- 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="\${top_srcdir}/intl/libintl.a"
- INTLLIBS=$INTLDEPS
- LIBS=`echo $LIBS | sed -e 's/-lintl//'`
- nls_cv_header_intl=libintl.h
- nls_cv_header_libgt=intl/libgettext.h
- fi])
- fi
- fi
+dnl GNUPG_CHECK_GNUMAKE
+dnl
+AC_DEFUN([GNUPG_CHECK_GNUMAKE],
+ [
+ if ${MAKE-make} --version 2>/dev/null | grep '^GNU ' >/dev/null 2>&1; then
+ :
+ else
+ AC_MSG_WARN([[
+***
+*** It seems that you are not using GNU make. Some make tools have serious
+*** flaws and you may not be able to build this software at all. Before you
+*** complain, please try GNU make: GNU make is easy to build and available
+*** at all GNU archives. It is always available from ftp.gnu.org:/gnu/make.
+***]])
+ 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
+dnl GNUPG_CHECK_FAQPROG
+dnl
+AC_DEFUN([GNUPG_CHECK_FAQPROG],
+ [ AC_MSG_CHECKING(for faqprog.pl)
+ if faqprog.pl -V 2>/dev/null | grep '^faqprog.pl ' >/dev/null 2>&1; then
+ working_faqprog=yes
+ FAQPROG="faqprog.pl"
+ else
+ working_faqprog=no
+ FAQPROG=": "
+ fi
+ AC_MSG_RESULT($working_faqprog)
+ AC_SUBST(FAQPROG)
+ AM_CONDITIONAL(WORKING_FAQPROG, test "$working_faqprog" = "yes" )
+
+dnl if test $working_faqprog = no; then
+dnl AC_MSG_WARN([[
+dnl ***
+dnl *** It seems that the faqprog.pl program is not installed;
+dnl *** however it is only needed if you want to change the FAQ.
+dnl *** (faqprog.pl should be available at:
+dnl *** ftp://ftp.gnupg.org/gcrypt/contrib/faqprog.pl )
+dnl *** No need to worry about this warning.
+dnl ***]])
+dnl fi
+ ])
+
+dnl GNUPG_CHECK_DOCBOOK_TO_TEXI
+dnl
+AC_DEFUN([GNUPG_CHECK_DOCBOOK_TO_TEXI],
+ [
+ AC_CHECK_PROG(DOCBOOK_TO_TEXI, docbook2texi, yes, no)
+ AC_MSG_CHECKING(for sgml to texi tools)
+ working_sgmltotexi=no
+ if test "$ac_cv_prog_DOCBOOK_TO_TEXI" = yes; then
+ if sgml2xml -v /dev/null 2>&1 | grep 'SP version' >/dev/null 2>&1 ; then
+ working_sgmltotexi=yes
fi
+ fi
+ AC_MSG_RESULT($working_sgmltotexi)
+ AM_CONDITIONAL(HAVE_DOCBOOK_TO_TEXI, test "$working_sgmltotexi" = "yes" )
+ ])
+
- 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="\${top_srcdir}/intl/libintl.a"
- INTLLIBS=$INTLDEPS
- LIBS=`echo $LIBS | sed -e 's/-lintl//'`
- nls_cv_header_intl=libintl.h
- nls_cv_header_libgt=intl/libgettext.h
- fi
- # We need to process the intl/ and po/ directory.
- INTLSUB=intl
- POSUB=po
+dnl GNUPG_CHECK_ENDIAN
+dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
+dnl
+AC_DEFUN([GNUPG_CHECK_ENDIAN],
+ [
+ tmp_assumed_endian=big
+ tmp_assume_warn=""
+ if test "$cross_compiling" = yes; then
+ case "$host_cpu" in
+ i@<:@345678@:>@* )
+ tmp_assumed_endian=little
+ ;;
+ *)
+ ;;
+ esac
+ fi
+ AC_MSG_CHECKING(endianess)
+ AC_CACHE_VAL(gnupg_cv_c_endian,
+ [ gnupg_cv_c_endian=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], gnupg_cv_c_endian=big, gnupg_cv_c_endian=little)])
+ if test "$gnupg_cv_c_endian" = 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);
+ }],
+ gnupg_cv_c_endian=little,
+ gnupg_cv_c_endian=big,
+ gnupg_cv_c_endian=$tmp_assumed_endian
+ tmp_assumed_warn=" (assumed)"
+ )
+ fi
+ ])
+ AC_MSG_RESULT([${gnupg_cv_c_endian}${tmp_assumed_warn}])
+ if test "$gnupg_cv_c_endian" = little; then
+ AC_DEFINE(LITTLE_ENDIAN_HOST,1,
+ [Defined if the host has little endian byte ordering])
else
- DATADIRNAME=share
- nls_cv_header_intl=libintl.h
- nls_cv_header_libgt=intl/libgettext.h
+ AC_DEFINE(BIG_ENDIAN_HOST,1,
+ [Defined if the host has big endian byte ordering])
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(AM_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
+# GNUPG_BUILD_PROGRAM(NAME,DEFAULT)
+# Add a --enable-NAME option to configure an set the
+# shell variable build_NAME either to "yes" or "no". DEFAULT must
+# either be "yes" or "no" and decided on the default value for
+# build_NAME and whether --enable-NAME or --disable-NAME is shown with
+# ./configure --help
+AC_DEFUN([GNUPG_BUILD_PROGRAM],
+ [build_$1=$2
+ m4_if([$2],[yes],[
+ AC_ARG_ENABLE([$1], AC_HELP_STRING([--disable-$1],
+ [do not build the $1 program]),
+ build_$1=$enableval, build_$1=$2)
+ ],[
+ AC_ARG_ENABLE([$1], AC_HELP_STRING([--enable-$1],
+ [build the $1 program]),
+ build_$1=$enableval, build_$1=$2)
+ ])
+ case "$build_$1" in
+ no|yes)
+ ;;
+ *)
+ AC_MSG_ERROR([only yes or no allowed for feature --enable-$1])
+ ;;
+ esac
+ ])
- 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="../"
+# GNUPG_DISABLE_GPG_ALGO(NAME,DESCRIPTION)
+#
+# Add a --disable-gpg-NAME option and the corresponding ac_define
+# GPG_USE_.
+AC_DEFUN([GNUPG_GPG_DISABLE_ALGO],
+ [AC_MSG_CHECKING([whether to enable the $2 for gpg])
+ AC_ARG_ENABLE([gpg-$1], AC_HELP_STRING([--disable-gpg-$1],
+ [disable the $2 algorithm in gpg]),
+ , enableval=yes)
+ AC_MSG_RESULT($enableval)
+ if test x"$enableval" = xyes ; then
+ AC_DEFINE(GPG_USE_[]m4_toupper($1), 1, [Define to support the $2])
fi
- sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
- < $srcdir/po/POTFILES.in > po/POTFILES
])
-dnl --------------------------------------------------
-dnl G10 stuff
-dnl --------------------------------------------------
-
-dnl WK_MSG_PRINT(STRING)
-dnl print a message
+# Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
+# is not called from uid 0 (not tested whether uid 0 works)
+# For DECs Tru64 we have also to check whether mlock is in librt
+# mlock is there a macro using memlk()
+dnl GNUPG_CHECK_MLOCK
dnl
-define(WK_MSG_PRINT,
- [ echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG
- ])
-
-
-dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
-dnl Check wether a typedef exists and create a #define $2 if it exists
-dnl
-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)
+AC_DEFUN([GNUPG_CHECK_MLOCK],
+ [ AC_CHECK_FUNCS(mlock)
+ if test "$ac_cv_func_mlock" = "no"; then
+ AC_CHECK_HEADERS(sys/mman.h)
+ if test "$ac_cv_header_sys_mman_h" = "yes"; then
+ # Add librt to LIBS:
+ AC_CHECK_LIB(rt, memlk)
+ AC_CACHE_CHECK([whether mlock is in sys/mman.h],
+ gnupg_cv_mlock_is_in_sys_mman,
+ [AC_TRY_LINK([
+ #include
+ #ifdef HAVE_SYS_MMAN_H
+ #include
+ #endif
+ ], [
+ int i;
+
+ /* glibc defines this for functions which it implements
+ * to always fail with ENOSYS. Some functions are actually
+ * named something starting with __ and the normal name
+ * is an alias. */
+ #if defined (__stub_mlock) || defined (__stub___mlock)
+ choke me
+ #else
+ mlock(&i, 4);
+ #endif
+ ; return 0;
+ ],
+ gnupg_cv_mlock_is_in_sys_mman=yes,
+ gnupg_cv_mlock_is_in_sys_mman=no)])
+ if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then
+ AC_DEFINE(HAVE_MLOCK,1,
+ [Defined if the system supports an mlock() call])
+ fi
+ fi
fi
- ])
-
-
-
-dnl WK_LINK_FILES( SRC, DEST )
-dnl same as AC_LINK_FILES, but collect the files to link in
-dnl some special variables and do the link
-dnl when WK_DO_LINK_FILES is called
-dnl This is a workaround for AC_LINK_FILES, because it does not work
-dnl correct when using a caching scheme
-dnl
-define(WK_LINK_FILES,
- [ if test "x$wk_link_files_src" = "x"; then
- wk_link_files_src="$1"
- wk_link_files_dst="$2"
- else
- wk_link_files_src="$wk_link_files_src $1"
- wk_link_files_dst="$wk_link_files_dst $2"
+ if test "$ac_cv_func_mlock" = "yes"; then
+ AC_MSG_CHECKING(whether mlock is broken)
+ AC_CACHE_VAL(gnupg_cv_have_broken_mlock,
+ AC_TRY_RUN([
+ #include
+ #include
+ #include
+ #include
+ #include
+ #include
+
+ int main()
+ {
+ char *pool;
+ int err;
+ long int pgsize = getpagesize();
+
+ pool = malloc( 4096 + pgsize );
+ if( !pool )
+ return 2;
+ pool += (pgsize - ((long int)pool % pgsize));
+
+ err = mlock( pool, 4096 );
+ if( !err || errno == EPERM )
+ return 0; /* okay */
+
+ return 1; /* hmmm */
+ }
+
+ ],
+ gnupg_cv_have_broken_mlock="no",
+ gnupg_cv_have_broken_mlock="yes",
+ gnupg_cv_have_broken_mlock="assume-no"
+ )
+ )
+ if test "$gnupg_cv_have_broken_mlock" = "yes"; then
+ AC_DEFINE(HAVE_BROKEN_MLOCK,1,
+ [Defined if the mlock() call does not work])
+ AC_MSG_RESULT(yes)
+ AC_CHECK_FUNCS(plock)
+ else
+ if test "$gnupg_cv_have_broken_mlock" = "no"; then
+ AC_MSG_RESULT(no)
+ else
+ AC_MSG_RESULT(assuming no)
+ fi
+ fi
fi
])
-define(WK_DO_LINK_FILES,
- [ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst )
- ])
-dnl WK_CHECK_ENDIAN
-dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
-dnl
-define(WK_CHECK_ENDIAN,
- [ if test "$cross_compiling" = yes; then
- AC_MSG_WARN(cross compiling; assuming little endianess)
- fi
- AC_MSG_CHECKING(endianess)
- AC_CACHE_VAL(wk_cv_c_endian,
- [ wk_cv_c_endian=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], wk_cv_c_endian=big, wk_cv_c_endian=little)])
- if test "$wk_cv_c_endian" = 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);
- }],
- wk_cv_c_endian=little,
- wk_cv_c_endian=big,
- wk_cv_c_endian=little
- )
- fi
- ])
- AC_MSG_RESULT([$wk_cv_c_endian])
- if test "$wk_cv_c_endian" = little; then
- AC_DEFINE(LITTLE_ENDIAN_HOST)
- else
- AC_DEFINE(BIG_ENDIAN_HOST)
- fi
- ])
-
-dnl WK_CHECK_CACHE
-dnl
-define(WK_CHECK_CACHE,
- [ AC_MSG_CHECKING(cached information)
- wk_hostcheck="$target"
- AC_CACHE_VAL(wk_cv_hostcheck, [ wk_cv_hostcheck="$wk_hostcheck" ])
- if test "$wk_cv_hostcheck" != "$wk_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 Stolen from gcc
+dnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead
+dnl of the usual 2.
+AC_DEFUN([GNUPG_FUNC_MKDIR_TAKES_ONE_ARG],
+[AC_CHECK_HEADERS(sys/stat.h unistd.h direct.h)
+AC_CACHE_CHECK([if mkdir takes one argument], gnupg_cv_mkdir_takes_one_arg,
+[AC_TRY_COMPILE([
+#include
+#ifdef HAVE_SYS_STAT_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif
+#ifdef HAVE_DIRECT_H
+# include
+#endif], [mkdir ("foo", 0);],
+ gnupg_cv_mkdir_takes_one_arg=no, gnupg_cv_mkdir_takes_one_arg=yes)])
+if test $gnupg_cv_mkdir_takes_one_arg = yes ; then
+ AC_DEFINE(MKDIR_TAKES_ONE_ARG,1,
+ [Defined if mkdir() does not take permission flags])
+fi
+])
+# GNUPG_TIME_T_UNSIGNED
+# Check whether time_t is unsigned
+#
+AC_DEFUN([GNUPG_TIME_T_UNSIGNED],
+ [ AC_CACHE_CHECK(whether time_t is unsigned, gnupg_cv_time_t_unsigned,
+ [AC_REQUIRE([AC_HEADER_TIME])dnl
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY(
+ [AC_INCLUDES_DEFAULT([])
+#if TIME_WITH_SYS_TIME
+# include
+# include
+#else
+# if HAVE_SYS_TIME_H
+# include
+# else
+# include
+# endif
+#endif
+],
+ [((time_t)-1) < 0])],
+ gnupg_cv_time_t_unsigned=no, gnupg_cv_time_t_unsigned=yes)])
+ if test $gnupg_cv_time_t_unsigned = yes; then
+ AC_DEFINE(HAVE_UNSIGNED_TIME_T,1,[Defined if time_t is an unsigned type])
+ fi
+])# GNUPG_TIME_T_UNSIGNED