cdrtools/autoconf/aclocal.m4

3501 lines
101 KiB
Plaintext
Raw Permalink Normal View History

2025-06-15 04:19:58 +08:00
dnl @(#)aclocal.m4 1.109 17/06/28 Copyright 1998-2015 J. Schilling
dnl Set VARIABLE to VALUE in C-string form, verbatim, or 1.
dnl AC_DEFINE_STRING(VARIABLE [, VALUE])
define(AC_DEFINE_STRING,
[cat >> confdefs.h <<\EOF
[#define] $1 ifelse($#, 2, "[$2]", $#, 3, "[$2]", 1)
EOF
])
dnl Similar, but perform shell substitutions $ ` \ once on VALUE.
define(AC_DEFINE_UNQUOTED_STRING,
[cat >> confdefs.h <<EOF
[#define] $1 ifelse($#, 2, "[$2]", $#, 3, "[$2]", 1)
EOF
])
dnl ==== Check if we have typedef
dnl AC_HAVE_TYPE(INCLUDES, TYPE)
AC_DEFUN(AC_HAVE_TYPE,
[AC_REQUIRE([AC_HEADER_STDC])dnl
AC_MSG_CHECKING(for $2)
AC_CACHE_VAL(ac_cv_have_type_$2,
[AC_EGREP_CPP(dnl
changequote(<<,>>)dnl
<<(^|[^a-zA-Z_0-9])$2[^a-zA-Z_0-9]>>dnl
changequote([,]), [#include <sys/types.h>
#if HAVE_STDLIB_H || STDC_HEADERS
#include <stdlib.h>
#endif
#if HAVE_STDDEF_H || STDC_HEADERS
#include <stddef.h>
#endif
$1], eval ac_cv_have_type_$2=yes, eval ac_cv_have_type_$2=no)])dnl
AC_MSG_RESULT($ac_cv_have_type_$2)
changequote(, )dnl
ac_tr_type=HAVE_TYPE_`echo $2 | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
changequote([, ])dnl
if test $ac_cv_have_type_$2 = yes; then
AC_DEFINE_UNQUOTED($ac_tr_type)
fi
])
AC_DEFUN(AC_ICONV_CONST,
[AC_CACHE_CHECK(whether iconv() uses const char **, ac_cv_iconv_const,
[cat > conftest.c <<EOF
#include <iconv.h>
EOF
if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | grep 'size_t.*iconv.*iconv_t.*const' >/dev/null 2>&1; then
ac_cv_iconv_const=yes
else
ac_cv_iconv_const=no
fi])
if test $ac_cv_iconv_const = yes; then
AC_DEFINE(HAVE_ICONV_CONST)
fi])
AC_DEFUN(AC_PROG_CPPX,
[AC_REQUIRE([AC_PROG_CPP])dnl
AC_MSG_CHECKING(how to run the C preprocessor for any type of file)
if test -z "$CPPX"; then
AC_CACHE_VAL(ac_cv_prog_CPPX,
[ # This must be in double quotes, not single quotes, because CPP may get
# substituted into the Makefile and "${CC-cc}" will confuse make.
CPPX="$CPP"
cat > conftestcpp << EOF
xxzzy
EOF
# gcc -E does not accept any file suffix, so we need to test
# and if $CC -E fails, we try to use dirname(which($CC))/cpp
# We cannot use AC_TRY_EVAL(CPPX conftestcpp | grep xxzzy) because
# of a bug in the parser from bash
ac_result=`(echo configure:1288: "$CPPX conftestcpp | grep xxzzy" 1>&5; eval $CPPX conftestcpp | grep xxzzy) 2>&5`
if test -z "$ac_result"; then
changequote(, )dnl
ac_file=`eval type ${CC-cc} 2>/dev/null | sed 's%[^/]*/%/%'`
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo "$ac_file" | sed 's%/[^/][^/]*$%%'`
changequote([, ])dnl
if test -f "$ac_dir"/cpp; then
CPPX="$ac_dir"/cpp
fi
fi
ac_cv_prog_CPPX="$CPPX"])dnl
CPPX="$ac_cv_prog_CPPX"
else
ac_cv_prog_CPPX="$CPPX"
fi
AC_MSG_RESULT($CPPX)
AC_SUBST(CPPX)dnl
])
dnl Checks if /bin/sh is bash
dnl Defines BIN_SHELL_IS_BASH on success.
AC_DEFUN([AC_BIN_SHELL_BASH],
[AC_CACHE_CHECK([if /bin/sh is bash], ac_cv_bin_shell_is_bash,
[
ac_err=`< /dev/null /bin/sh --version 2> /dev/null | egrep 'GNU sh|bash'`
if test -n "$ac_err"; then
ac_cv_bin_shell_is_bash=yes
else
ac_cv_bin_shell_is_bash=no
fi
])
if test $ac_cv_bin_shell_is_bash = yes; then
AC_DEFINE(BIN_SHELL_IS_BASH)
fi])
dnl Checks if sh is bash
dnl Defines SHELL_IS_BASH on success.
AC_DEFUN([AC_SHELL_BASH],
[AC_CACHE_CHECK([if sh is bash], ac_cv_shell_is_bash,
[
ac_err=`< /dev/null sh --version 2> /dev/null | egrep 'GNU sh|bash'`
if test -n "$ac_err"; then
ac_cv_shell_is_bash=yes
else
ac_cv_shell_is_bash=no
fi
])
if test $ac_cv_shell_is_bash = yes; then
AC_DEFINE(SHELL_IS_BASH)
fi])
dnl Checks if /bin/sh -ce is broken
dnl Defines BIN_SHELL_CE_IS_BROKEN on success.
AC_DEFUN([AC_BIN_SHELL_CE_BROKEN],
[AC_CACHE_CHECK([whether /bin/sh -ce is broken], ac_cv_bin_shell_ce_is_broken,
[
ac_err=`/bin/sh -ce 'for i in 1 2 3; do ( echo $i; if test -d . ; then (false; echo 4); fi ) ; done' | grep 2`
if test -n "$ac_err"; then
ac_cv_bin_shell_ce_is_broken=yes
else
ac_cv_bin_shell_ce_is_broken=no
fi
])
if test $ac_cv_bin_shell_ce_is_broken = yes; then
AC_DEFINE(BIN_SHELL_CE_IS_BROKEN)
fi])
dnl Checks if /bin/bosh is a working shell
dnl Defines BIN_SHELL_BOSH on success.
AC_DEFUN([AC_BIN_SHELL_BOSH],
[AC_CACHE_CHECK([whether /bin/bosh is a working shell], ac_cv_bin_shell_bosh,
[
ac_err=`< /dev/null /bin/bosh -c 'echo abc' 2> /dev/null | grep abc`
if test "$ac_err" != "abc"; then
ac_cv_bin_shell_bosh=no
else
ac_err=`/bin/bosh -ce 'for i in 1 2 3; do ( echo $i; if test -d . ; then (false; echo 4); fi ) ; done' | grep 2`
if test -z "$ac_err"; then
ac_cv_bin_shell_bosh=yes
else
ac_cv_bin_shell_bosh=no
fi
fi
])
if test $ac_cv_bin_shell_bosh = yes; then
AC_DEFINE(BIN_SHELL_BOSH)
fi])
dnl Checks if /opt/schily/bin/bosh is a working shell
dnl Defines OPT_SCHILY_BIN_SHELL_BOSH on success.
AC_DEFUN([AC_OPT_SCHILY_BIN_SHELL_BOSH],
[AC_CACHE_CHECK([whether /opt/schily/bin/bosh is a working shell], ac_cv_opt_schily_bin_shell_bosh,
[
ac_err=`< /dev/null /opt/schily/bin/bosh -c 'echo abc' 2> /dev/null | grep abc`
if test "$ac_err" != "abc"; then
ac_cv_opt_schily_bin_shell_bosh=no
else
ac_err=`/opt/schily/bin/bosh -ce 'for i in 1 2 3; do ( echo $i; if test -d . ; then (false; echo 4); fi ) ; done' | grep 2`
if test -z "$ac_err"; then
ac_cv_opt_schily_bin_shell_bosh=yes
else
ac_cv_opt_schily_bin_shell_bosh=no
fi
fi
])
if test $ac_cv_opt_schily_bin_shell_bosh = yes; then
AC_DEFINE(OPT_SCHILY_BIN_SHELL_BOSH)
fi])
dnl Checks if sh -ce is broken
dnl Defines SHELL_CE_IS_BROKEN on success.
AC_DEFUN([AC_SHELL_CE_BROKEN],
[AC_CACHE_CHECK([whether sh -ce is broken], ac_cv_shell_ce_is_broken,
[
ac_err=`sh -ce 'for i in 1 2 3; do ( echo $i; if test -d . ; then (false; echo 4); fi ) ; done' | grep 2`
if test -n "$ac_err"; then
ac_cv_shell_ce_is_broken=yes
else
ac_cv_shell_ce_is_broken=no
fi
])
if test $ac_cv_shell_ce_is_broken = yes; then
AC_DEFINE(SHELL_CE_IS_BROKEN)
fi])
dnl Checks if Sun cc supports -m64
dnl Defines sun_cc64_opt on success.
AC_DEFUN([AC_SUN_CC64_OPT],
[AC_CACHE_CHECK([if suncc/cc supports -m64], ac_cv_sun_cc64_opt,
[
sun_cc64=cc
sun_cc64_opt=''
ac_cv_sun_cc64_opt=no
if test "$GCC" != yes; then
if test "$CC" = suncc; then
sun_cc64=suncc
fi
ac_err=`< /dev/null eval $sun_cc64 -m64 -c 2>&1 | grep illegal`
if test -n "$ac_err"; then
ac_cv_sun_cc64_opt=no
else
ac_cv_sun_cc64_opt=yes
fi
fi
])
if test $ac_cv_sun_cc64_opt = yes; then
sun_cc64_opt='-m64'
fi])
dnl Checks if HP cc supports -Ae
dnl Defines hp_cc_ansi_opt on success.
AC_DEFUN([AC_HP_CC_ANSI_OPT],
[AC_CACHE_CHECK([if HP cc supports -Ae], ac_cv_hp_cc_ansi_opt,
[
hp_cc=cc
hp_cc_ansi_opt=''
ac_cv_hp_cc_ansi_opt=no
if test "$GCC" != yes; then
os_name=`(uname -s) 2> /dev/null`
if test ."$os_name" = .HP-UX ; then
ac_err=`< /dev/null eval $hp_cc -Ae -c 2>&1 | grep 'Bundled.*option is available only'`
if test -n "$ac_err"; then
ac_cv_hp_cc_ansi_opt=no
else
ac_cv_hp_cc_ansi_opt=yes
fi
fi
fi
])
if test $ac_cv_hp_cc_ansi_opt = yes; then
hp_cc_ansi_opt='-Ae'
fi])
dnl Checks if HP cc supports -O
dnl Defines hp_cc_opt_opt on success.
AC_DEFUN([AC_HP_CC_OPT_OPT],
[AC_CACHE_CHECK([if HP cc supports -O], ac_cv_hp_cc_opt_opt,
[
hp_cc=cc
hp_cc_opt_opt=''
ac_cv_hp_cc_opt_opt=no
if test "$GCC" != yes; then
os_name=`(uname -s) 2> /dev/null`
if test ."$os_name" = .HP-UX ; then
ac_err=`< /dev/null eval $hp_cc -O -c 2>&1 | grep 'Bundled.*option is available only'`
if test -n "$ac_err"; then
ac_cv_hp_cc_opt_opt=no
else
ac_cv_hp_cc_opt_opt=yes
fi
fi
fi
])
if test $ac_cv_hp_cc_opt_opt = yes; then
hp_cc_opt_opt='-O'
fi])
dnl Checks if HP cc supports -G
dnl Defines hp_cc_gprof_opt on success.
AC_DEFUN([AC_HP_CC_GPROF_OPT],
[AC_CACHE_CHECK([if HP cc supports -G], ac_cv_hp_cc_gprof_opt,
[
hp_cc=cc
hp_cc_gprof_opt=''
ac_cv_hp_cc_gprof_opt=no
if test "$GCC" != yes; then
os_name=`(uname -s) 2> /dev/null`
if test ."$os_name" = .HP-UX ; then
ac_err=`< /dev/null eval $hp_cc -O -c 2>&1 | grep 'Bundled.*option is available only'`
if test -n "$ac_err"; then
ac_cv_hp_cc_gprof_opt=no
else
ac_cv_hp_cc_gprof_opt=yes
fi
fi
fi
])
if test $ac_cv_hp_cc_gprof_opt = yes; then
hp_cc_gprof_opt='-G'
fi])
dnl XXX this used to be:
dnl #ifndef $2
dnl char *p = (char *) $2;
dnl #endif
dnl but we use this test in order to check whether we are able to get the
dnl address of a function from this name, so we did replace this by:
dnl char *p = (char *) $2;
dnl exit (p != (char *)0 && *p != 0); Prevent optimizer from removing previous line
dnl
dnl AC_CHECK_DECLARE(INCLUDES, SYMBOL)
dnl Checks if symbol is declared
dnl Defines HAVE_DECL_SYMBOL on success.
AC_DEFUN([AC_CHECK_DECLARE],
[AC_CACHE_CHECK([if $2 is declared], ac_cv_have_decl_$2,
[AC_TRY_COMPILE([$1],
[ char *p = (char *) $2; exit (p != (char *)0 && *p != 0); ],
[eval ac_cv_have_decl_$2=yes],
[eval ac_cv_have_decl_$2=no])])
changequote(, )dnl
ac_tr_decl=HAVE_DECL_`echo $2 | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
changequote([, ])dnl
if test $ac_cv_have_decl_$2 = yes; then
AC_DEFINE_UNQUOTED($ac_tr_decl)
fi])
dnl AC_CHECK_DFUNC(INCLUDES, SYMBOL)
dnl Checks if symbol is defined or a function
dnl Defines HAVE_SYMBOL on success.
AC_DEFUN([AC_CHECK_DFUNC],
[AC_CACHE_CHECK([if $2 is defined or function], ["ac_cv_have_$2"],
[AC_TRY_LINK([$1],
[
#ifndef $2
char *p = (char *) $2;
exit (p != (char *)0 && *p != 0);
#endif],
[eval ac_cv_have_$2=yes],
[eval ac_cv_have_$2=no])])
changequote(, )dnl
ac_tr_dfunc=HAVE_`echo $2 | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
changequote([, ])dnl
if eval "test \"`echo '$ac_cv_have_'$2`\" = yes"; then
AC_DEFINE_UNQUOTED($ac_tr_dfunc)
fi
])
dnl AC_CHECK_DFUNCS(INCLUDES, FUNCTION...)
AC_DEFUN(AC_CHECK_DFUNCS,
[for ac_func in [$2]
do
AC_CHECK_DFUNC([$1], $ac_func)dnl
done
])
dnl Checks whether symbol is defined or a function in a lib
dnl AC_CHECK_DLIB(INCLUDES, LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
dnl [, OTHER-LIBRARIES]]])
AC_DEFUN(AC_CHECK_DLIB,
[AC_MSG_CHECKING([for $3 in -l$2])
dnl Use a cache variable name containing both the library and function name,
dnl because the test really is for library $2 defining function $3, not
dnl just for library $2. Separate tests with the same $2 and different $3s
dnl may have different results.
ac_lib_var=`echo $2['_']$3 | sed 'y%./+-%__p_%'`
AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
[ac_save_LIBS="$LIBS"
LIBS="-l$2 $6 $LIBS"
AC_TRY_LINK([$1],
[
#ifndef $3
char *p = (char *) $3;
exit (p != (char *)0 && *p != 0);
#endif],
eval "ac_cv_lib_$ac_lib_var=yes",
eval "ac_cv_lib_$ac_lib_var=no")
LIBS="$ac_save_LIBS"
])dnl
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
AC_MSG_RESULT(yes)
ifelse([$4], ,
[changequote(, )dnl
ac_tr_lib=HAVE_LIB`echo $2 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
changequote([, ])dnl
AC_DEFINE_UNQUOTED($ac_tr_lib)
LIBS="-l$2 $LIBS"
], [$4])
else
AC_MSG_RESULT(no)
ifelse([$5], , , [$5
])dnl
fi
])
dnl Checks whether symbol is in a lib
dnl this does not work for void func()
dnl AC_CHECK_ILIB(INCLUDES, LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
dnl [, OTHER-LIBRARIES]]])
AC_DEFUN(AC_CHECK_ILIB,
[AC_MSG_CHECKING([for $3 in -l$2])
dnl Use a cache variable name containing both the library and function name,
dnl because the test really is for library $2 defining function $3, not
dnl just for library $2. Separate tests with the same $2 and different $3s
dnl may have different results.
ac_lib_var=`echo $2['_']$3 | sed 'y%./+-%__p_%'`
AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
[ac_save_LIBS="$LIBS"
LIBS="-l$2 $6 $LIBS"
AC_TRY_LINK([$1],
[
char *p = (char *) $3;
return ((int)p);
],
eval "ac_cv_lib_$ac_lib_var=yes",
eval "ac_cv_lib_$ac_lib_var=no")
LIBS="$ac_save_LIBS"
])dnl
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
AC_MSG_RESULT(yes)
ifelse([$4], ,
[changequote(, )dnl
ac_tr_lib=HAVE_LIB`echo $2 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
changequote([, ])dnl
AC_DEFINE_UNQUOTED($ac_tr_lib)
LIBS="-l$2 $LIBS"
], [$4])
else
AC_MSG_RESULT(no)
ifelse([$5], , , [$5
])dnl
fi
])
dnl getpagesize is a inline function in unistd.h on Android
AC_DEFUN([AC_FUNC_GETPAGESIZE],
[AC_CHECK_DFUNC([
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
], getpagesize)])
dnl Checks if structure 'stat' have field 'st_spare1'.
dnl Defines HAVE_ST_SPARE1 on success.
AC_DEFUN([AC_STRUCT_ST_SPARE1],
[AC_CACHE_CHECK([if struct stat contains st_spare1], ac_cv_struct_st_spare1,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_spare1 = 0;],
[ac_cv_struct_st_spare1=yes],
[ac_cv_struct_st_spare1=no])])
if test $ac_cv_struct_st_spare1 = yes; then
AC_DEFINE(HAVE_ST_SPARE1)
fi])
dnl Checks if structure 'stat' have field 'st_atimensec'.
dnl Defines HAVE_ST_ATIMENSEC on success.
AC_DEFUN([AC_STRUCT_ST_ATIMENSEC],
[AC_CACHE_CHECK([if struct stat contains st_atimensec], ac_cv_struct_st_atimensec,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_atimensec = 0;],
[ac_cv_struct_st_atimensec=yes],
[ac_cv_struct_st_atimensec=no])])
if test $ac_cv_struct_st_atimensec = yes; then
AC_DEFINE(HAVE_ST_ATIMENSEC)
fi])
dnl Checks if structure 'stat' have field 'st_atime_n'.
dnl Defines HAVE_ST_ATIME_N on success.
AC_DEFUN([AC_STRUCT_ST_ATIME_N],
[AC_CACHE_CHECK([if struct stat contains st_atime_n], ac_cv_struct_st_atime_n,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_atime_n = 0;],
[ac_cv_struct_st_atime_n=yes],
[ac_cv_struct_st_atime_n=no])])
if test $ac_cv_struct_st_atime_n = yes; then
AC_DEFINE(HAVE_ST_ATIME_N)
fi])
dnl Checks if structure 'stat' have field 'st_atim.tv_nsec'.
dnl Defines HAVE_ST_NSEC on success.
AC_DEFUN([AC_STRUCT_ST_NSEC],
[AC_CACHE_CHECK([if struct stat contains st_atim.tv_nsec], ac_cv_struct_st_nsec,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_atim.tv_nsec = 0;],
[ac_cv_struct_st_nsec=yes],
[ac_cv_struct_st_nsec=no])])
if test $ac_cv_struct_st_nsec = yes; then
AC_DEFINE(HAVE_ST_NSEC)
fi])
dnl Checks if structure 'stat' have field 'st_atim.st__tim.tv_nsec'.
dnl Defines HAVE_ST__TIM on success.
AC_DEFUN([AC_STRUCT_ST__TIM],
[AC_CACHE_CHECK([if struct stat contains st_atim.st__tim.tv_nsec], ac_cv_struct_st__tim,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_atim.st__tim.tv_nsec = 0;],
[ac_cv_struct_st__tim=yes],
[ac_cv_struct_st__tim=no])])
if test $ac_cv_struct_st__tim = yes; then
AC_DEFINE(HAVE_ST__TIM)
fi])
dnl Checks if structure 'stat' have field 'st_atimspec.tv_nsec'.
dnl Defines HAVE_ST_ATIMESPEC on success.
AC_DEFUN([AC_STRUCT_ST_ATIMESPEC],
[AC_CACHE_CHECK([if struct stat contains st_atimespec.tv_nsec], ac_cv_struct_st_atimespec,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_atimespec.tv_nsec = 0;],
[ac_cv_struct_st_atimespec=yes],
[ac_cv_struct_st_atimespec=no])])
if test $ac_cv_struct_st_atimespec = yes; then
AC_DEFINE(HAVE_ST_ATIMESPEC)
fi])
dnl Checks if structure 'stat' have field 'st_flag'.
dnl Defines HAVE_ST_FLAG on success.
AC_DEFUN([AC_STRUCT_ST_FLAG],
[AC_CACHE_CHECK([if struct stat contains st_flag], ac_cv_struct_st_flag,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_flag = 0;],
[ac_cv_struct_st_flag=yes],
[ac_cv_struct_st_flag=no])])
if test $ac_cv_struct_st_flag = yes; then
AC_DEFINE(HAVE_ST_FLAG)
fi])
dnl Checks if structure 'stat' have field 'st_flags'.
dnl Defines HAVE_ST_FLAGS on success.
AC_DEFUN([AC_STRUCT_ST_FLAGS],
[AC_CACHE_CHECK([if struct stat contains st_flags], ac_cv_struct_st_flags,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_flags = 0;],
[ac_cv_struct_st_flags=yes],
[ac_cv_struct_st_flags=no])])
if test $ac_cv_struct_st_flags = yes; then
AC_DEFINE(HAVE_ST_FLAGS)
fi])
dnl Checks if structure 'stat' have field 'st_fstype'.
dnl Defines HAVE_ST_FSTYPE on success.
AC_DEFUN([AC_STRUCT_ST_FSTYPE],
[AC_CACHE_CHECK([if struct stat contains st_fstype], ac_cv_struct_st_fstype,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_fstype[0] = 0;],
[ac_cv_struct_st_fstype=yes],
[ac_cv_struct_st_fstype=no])])
if test $ac_cv_struct_st_fstype = yes; then
AC_DEFINE(HAVE_ST_FSTYPE)
fi])
dnl Checks if structure 'stat' have field 'st_aclcnt'.
dnl Defines HAVE_ST_ACLCNT on success.
AC_DEFUN([AC_STRUCT_ST_ACLCNT],
[AC_CACHE_CHECK([if struct stat contains st_aclcnt], ac_cv_struct_st_aclcnt,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/stat.h>],
[struct stat s; s.st_aclcnt = 0;],
[ac_cv_struct_st_aclcnt=yes],
[ac_cv_struct_st_aclcnt=no])])
if test $ac_cv_struct_st_aclcnt = yes; then
AC_DEFINE(HAVE_ST_ACLCNT)
fi])
dnl Checks if structure 'utsname' have field 'arch'.
dnl Defines HAVE_UTSNAME_ARCH on success.
AC_DEFUN([AC_STRUCT_UTSNAME_ARCH],
[AC_CACHE_CHECK([if struct utsname contains arch], ac_cv_struct_utsname_arch,
[AC_TRY_COMPILE([#include <sys/utsname.h>],
[struct utsname u; u.arch[0] = 0;],
[ac_cv_struct_utsname_arch=yes],
[ac_cv_struct_utsname_arch=no])])
if test $ac_cv_struct_utsname_arch = yes; then
AC_DEFINE(HAVE_UTSNAME_ARCH)
fi])
dnl Checks if structure 'utsname' have field 'processor'.
dnl Defines HAVE_UTSNAME_PROCESSOR on success.
AC_DEFUN([AC_STRUCT_UTSNAME_PROCESSOR],
[AC_CACHE_CHECK([if struct utsname contains processor], ac_cv_struct_utsname_processor,
[AC_TRY_COMPILE([#include <sys/utsname.h>],
[struct utsname u; u.processor[0] = 0;],
[ac_cv_struct_utsname_processor=yes],
[ac_cv_struct_utsname_processor=no])])
if test $ac_cv_struct_utsname_processor = yes; then
AC_DEFINE(HAVE_UTSNAME_PROCESSOR)
fi])
dnl Checks if structure 'utsname' have field 'sysname_host'.
dnl Defines HAVE_UTSNAME_SYSNAME_HOST on success.
AC_DEFUN([AC_STRUCT_UTSNAME_SYSNAME_HOST],
[AC_CACHE_CHECK([if struct utsname contains sysname_host], ac_cv_struct_utsname_sysname_host,
[AC_TRY_COMPILE([#include <sys/utsname.h>],
[struct utsname u; u.sysname_host[0] = 0;],
[ac_cv_struct_utsname_sysname_host=yes],
[ac_cv_struct_utsname_sysname_host=no])])
if test $ac_cv_struct_utsname_sysname_host = yes; then
AC_DEFINE(HAVE_UTSNAME_SYSNAME_HOST)
fi])
dnl Checks if structure 'utsname' have field 'release_host'.
dnl Defines HAVE_UTSNAME_RELEASE_HOST on success.
AC_DEFUN([AC_STRUCT_UTSNAME_RELEASE_HOST],
[AC_CACHE_CHECK([if struct utsname contains release_host], ac_cv_struct_utsname_release_host,
[AC_TRY_COMPILE([#include <sys/utsname.h>],
[struct utsname u; u.release_host[0] = 0;],
[ac_cv_struct_utsname_release_host=yes],
[ac_cv_struct_utsname_release_host=no])])
if test $ac_cv_struct_utsname_release_host = yes; then
AC_DEFINE(HAVE_UTSNAME_RELEASE_HOST)
fi])
dnl Checks if structure 'utsname' have field 'version_host'.
dnl Defines HAVE_UTSNAME_VERSION_HOST on success.
AC_DEFUN([AC_STRUCT_UTSNAME_VERSION_HOST],
[AC_CACHE_CHECK([if struct utsname contains version_host], ac_cv_struct_utsname_version_host,
[AC_TRY_COMPILE([#include <sys/utsname.h>],
[struct utsname u; u.version_host[0] = 0;],
[ac_cv_struct_utsname_version_host=yes],
[ac_cv_struct_utsname_version_host=no])])
if test $ac_cv_struct_utsname_version_host = yes; then
AC_DEFINE(HAVE_UTSNAME_VERSION_HOST)
fi])
dnl Checks if structure 'mtget' have field 'mt_type'.
dnl Defines HAVE_MTGET_TYPE on success.
AC_DEFUN([AC_STRUCT_MTGET_TYPE],
[AC_CACHE_CHECK([if struct mtget contains mt_type], ac_cv_struct_mtget_type,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_type = 0;],
[ac_cv_struct_mtget_type=yes],
[ac_cv_struct_mtget_type=no])])
if test $ac_cv_struct_mtget_type = yes; then
AC_DEFINE(HAVE_MTGET_TYPE)
fi])
dnl Checks if structure 'mtget' have field 'mt_model'.
dnl Defines HAVE_MTGET_MODEL on success.
AC_DEFUN([AC_STRUCT_MTGET_MODEL],
[AC_CACHE_CHECK([if struct mtget contains mt_model], ac_cv_struct_mtget_model,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_model = 0;],
[ac_cv_struct_mtget_model=yes],
[ac_cv_struct_mtget_model=no])])
if test $ac_cv_struct_mtget_model = yes; then
AC_DEFINE(HAVE_MTGET_MODEL)
fi])
dnl Checks if structure 'mtget' have field 'mt_dsreg'.
dnl Defines HAVE_MTGET_DSREG on success.
AC_DEFUN([AC_STRUCT_MTGET_DSREG],
[AC_CACHE_CHECK([if struct mtget contains mt_dsreg], ac_cv_struct_mtget_dsreg,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_dsreg = 0;],
[ac_cv_struct_mtget_dsreg=yes],
[ac_cv_struct_mtget_dsreg=no])])
if test $ac_cv_struct_mtget_dsreg = yes; then
AC_DEFINE(HAVE_MTGET_DSREG)
fi])
dnl Checks if structure 'mtget' have field 'mt_dsreg1'.
dnl Defines HAVE_MTGET_DSREG on success.
AC_DEFUN([AC_STRUCT_MTGET_DSREG1],
[AC_CACHE_CHECK([if struct mtget contains mt_dsreg1], ac_cv_struct_mtget_dsreg1,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_dsreg1 = 0;],
[ac_cv_struct_mtget_dsreg1=yes],
[ac_cv_struct_mtget_dsreg1=no])])
if test $ac_cv_struct_mtget_dsreg1 = yes; then
AC_DEFINE(HAVE_MTGET_DSREG1)
fi])
dnl Checks if structure 'mtget' have field 'mt_dsreg2'.
dnl Defines HAVE_MTGET_DSREG2 on success.
AC_DEFUN([AC_STRUCT_MTGET_DSREG2],
[AC_CACHE_CHECK([if struct mtget contains mt_dsreg2], ac_cv_struct_mtget_dsreg2,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_dsreg2 = 0;],
[ac_cv_struct_mtget_dsreg2=yes],
[ac_cv_struct_mtget_dsreg2=no])])
if test $ac_cv_struct_mtget_dsreg2 = yes; then
AC_DEFINE(HAVE_MTGET_DSREG2)
fi])
dnl Checks if structure 'mtget' have field 'mt_gstat'.
dnl Defines HAVE_MTGET_GSTAT on success.
AC_DEFUN([AC_STRUCT_MTGET_GSTAT],
[AC_CACHE_CHECK([if struct mtget contains mt_gstat], ac_cv_struct_mtget_gstat,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_gstat = 0;],
[ac_cv_struct_mtget_gstat=yes],
[ac_cv_struct_mtget_gstat=no])])
if test $ac_cv_struct_mtget_gstat = yes; then
AC_DEFINE(HAVE_MTGET_GSTAT)
fi])
dnl Checks if structure 'mtget' have field 'mt_erreg'.
dnl Defines HAVE_MTGET_ERREG on success.
AC_DEFUN([AC_STRUCT_MTGET_ERREG],
[AC_CACHE_CHECK([if struct mtget contains mt_erreg], ac_cv_struct_mtget_erreg,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_erreg = 0;],
[ac_cv_struct_mtget_erreg=yes],
[ac_cv_struct_mtget_erreg=no])])
if test $ac_cv_struct_mtget_erreg = yes; then
AC_DEFINE(HAVE_MTGET_ERREG)
fi])
dnl Checks if structure 'mtget' have field 'mt_resid'.
dnl Defines HAVE_MTGET_RESID on success.
AC_DEFUN([AC_STRUCT_MTGET_RESID],
[AC_CACHE_CHECK([if struct mtget contains mt_resid], ac_cv_struct_mtget_resid,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_resid = 0;],
[ac_cv_struct_mtget_resid=yes],
[ac_cv_struct_mtget_resid=no])])
if test $ac_cv_struct_mtget_resid = yes; then
AC_DEFINE(HAVE_MTGET_RESID)
fi])
dnl Checks if structure 'mtget' have field 'mt_fileno'.
dnl Defines HAVE_MTGET_FILENO on success.
AC_DEFUN([AC_STRUCT_MTGET_FILENO],
[AC_CACHE_CHECK([if struct mtget contains mt_fileno],
ac_cv_struct_mtget_fileno,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_fileno = 0;],
[ac_cv_struct_mtget_fileno=yes],
[ac_cv_struct_mtget_fileno=no])])
if test $ac_cv_struct_mtget_fileno = yes; then
AC_DEFINE(HAVE_MTGET_FILENO)
fi])
dnl Checks if structure 'mtget' have field 'mt_blkno'.
dnl Defines HAVE_MTGET_BLKNO on success.
AC_DEFUN([AC_STRUCT_MTGET_BLKNO],
[AC_CACHE_CHECK([if struct mtget contains mt_blkno], ac_cv_struct_mtget_blkno,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_blkno = 0;],
[ac_cv_struct_mtget_blkno=yes],
[ac_cv_struct_mtget_blkno=no])])
if test $ac_cv_struct_mtget_blkno = yes; then
AC_DEFINE(HAVE_MTGET_BLKNO)
fi])
dnl Checks if structure 'mtget' have field 'mt_flags'.
dnl Defines HAVE_MTGET_FLAGS on success.
AC_DEFUN([AC_STRUCT_MTGET_FLAGS],
[AC_CACHE_CHECK([if struct mtget contains mt_flags], ac_cv_struct_mtget_flags,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_flags = 0;],
[ac_cv_struct_mtget_flags=yes],
[ac_cv_struct_mtget_flags=no])])
if test $ac_cv_struct_mtget_flags = yes; then
AC_DEFINE(HAVE_MTGET_FLAGS)
fi])
dnl Checks if structure 'mtget' have field 'mt_bf'.
dnl Defines HAVE_MTGET_BF on success.
AC_DEFUN([AC_STRUCT_MTGET_BF],
[AC_CACHE_CHECK([if struct mtget contains mt_bf], ac_cv_struct_mtget_bf,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mtio.h>],
[struct mtget t; t.mt_bf = 0;],
[ac_cv_struct_mtget_bf=yes],
[ac_cv_struct_mtget_bf=no])])
if test $ac_cv_struct_mtget_bf = yes; then
AC_DEFINE(HAVE_MTGET_BF)
fi])
dnl Checks for illegal declaration of 'union semun' in sys/sem.h.
dnl Defines HAVE_UNION_SEMUN on success.
AC_DEFUN([AC_STRUCT_UNION_SEMUN],
[AC_CACHE_CHECK([if an illegal declaration for union semun in sys/sem.h exists], ac_cv_struct_union_semun,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>], [union semun s;],
[ac_cv_struct_union_semun=yes],
[ac_cv_struct_union_semun=no])])
if test $ac_cv_struct_union_semun = yes; then
AC_DEFINE(HAVE_UNION_SEMUN)
fi])
dnl Checks if 'union wait' is declared in 'wait.h' or 'sys/wait.h'.
dnl Defines HAVE_UNION_WAIT on success.
AC_DEFUN([AC_STRUCT_UNION_WAIT],
[AC_CACHE_CHECK([if union wait is declared in wait.h or sys/wait.h], ac_cv_struct_union_wait,
[AC_TRY_COMPILE([#include <sys/types.h>
#if defined(HAVE_WAIT_H)
# include <wait.h>
#else
#include <sys/wait.h>
#endif], [union wait w;],
[ac_cv_struct_union_wait=yes],
[ac_cv_struct_union_wait=no])])
if test $ac_cv_struct_union_wait = yes; then
AC_DEFINE(HAVE_UNION_WAIT)
fi])
dnl Checks if union wait is used by default
dnl Defines USE_UNION_WAIT to int on failure.
AC_DEFUN([AC_USE_STRUCT_UNION_WAIT],
[AC_REQUIRE([AC_HEADER_STDC])dnl
AC_MSG_CHECKING(if union wait is used by default)
AC_CACHE_VAL(ac_cv_use_union_wait,
[AC_EGREP_CPP(dnl
changequote(<<,>>)dnl
<<xxzzy.*x_|xxzzy.*union>>dnl
changequote([,]), [#include <sys/types.h>
#if defined(HAVE_WAIT_H)
# include <wait.h>
#else
#include <sys/wait.h>
#endif
xxzzy WTERMSIG(status)
xxzzy WCOREDUMP(status)
xxzzy WEXITSTATUS(status)
xxzzy WSTOPSIG(status)
xxzzy WIFSTOPPED(status)
xxzzy WIFSIGNALED(status)
xxzzy WIFEXITED(status)], ac_cv_use_union_wait=yes, ac_cv_use_union_wait=no)])dnl
AC_MSG_RESULT($ac_cv_use_union_wait)
if test $ac_cv_use_union_wait = yes; then
AC_DEFINE(USE_UNION_WAIT)
fi])
dnl Checks if 'struct rusage' is declared in sys/resource.h.
dnl Defines HAVE_STRUCT_RUSAGE on success.
AC_DEFUN([AC_STRUCT_RUSAGE],
[AC_CACHE_CHECK([if struct rusage is declared in sys/resource.h], ac_cv_struct_rusage,
[AC_TRY_COMPILE([#include <sys/time.h>
#include <sys/resource.h>], [struct rusage r;],
[ac_cv_struct_rusage=yes],
[ac_cv_struct_rusage=no])])
if test $ac_cv_struct_rusage = yes; then
AC_DEFINE(HAVE_STRUCT_RUSAGE)
fi])
dnl Checks if structure 'siginfo' have field 'si_utime'.
dnl Defines HAVE_SI_UTIME on success.
AC_DEFUN([AC_STRUCT_SI_UTIME],
[AC_CACHE_CHECK([if struct siginfo contains si_utime], ac_cv_struct_si_utime,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/siginfo.h>],
[struct siginfo si; si.si_utime = 0;],
[ac_cv_struct_si_utime=yes],
[ac_cv_struct_si_utime=no])])
if test $ac_cv_struct_si_utime = yes; then
AC_DEFINE(HAVE_SI_UTIME)
fi])
dnl Checks if structure 'dirent' have field 'd_ino'.
dnl Defines HAVE_DIRENT_D_INO on success.
AC_DEFUN([AC_STRUCT_DIRENT_D_INO],
[AC_CACHE_CHECK([if struct dirent contains d_ino], ac_cv_struct_dirent_d_ino,
[AC_TRY_COMPILE([
/*
* This must be kept in sync with schily/dirent.h
*/
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
# ifdef HAVE_DIRENT_H /* This a POSIX compliant system */
# include <dirent.h>
# define _FOUND_DIR_
# else /* This is a Pre POSIX system */
# define dirent direct
# if defined(HAVE_SYS_DIR_H)
# include <sys/dir.h>
# define _FOUND_DIR_
# endif
# if defined(HAVE_NDIR_H) && !defined(_FOUND_DIR_)
# include <ndir.h>
# define _FOUND_DIR_
# endif
# if defined(HAVE_SYS_NDIR_H) && !defined(_FOUND_DIR_)
# include <sys/ndir.h>
# define _FOUND_DIR_
# endif
# endif /* HAVE_DIRENT_H */
],
[struct dirent d; d.d_ino = 0;],
[ac_cv_struct_dirent_d_ino=yes],
[ac_cv_struct_dirent_d_ino=no])])
if test $ac_cv_struct_dirent_d_ino = yes; then
AC_DEFINE(HAVE_DIRENT_D_INO)
fi])
dnl Checks if structure 'dirent' have field 'd_type'.
dnl Defines HAVE_DIRENT_D_TYPE on success.
AC_DEFUN([AC_STRUCT_DIRENT_D_TYPE],
[AC_CACHE_CHECK([if struct dirent contains d_type], ac_cv_struct_dirent_d_type,
[AC_TRY_COMPILE([
/*
* This must be kept in sync with schily/dirent.h
*/
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
# ifdef HAVE_DIRENT_H /* This a POSIX compliant system */
# include <dirent.h>
# define _FOUND_DIR_
# else /* This is a Pre POSIX system */
# define dirent direct
# if defined(HAVE_SYS_DIR_H)
# include <sys/dir.h>
# define _FOUND_DIR_
# endif
# if defined(HAVE_NDIR_H) && !defined(_FOUND_DIR_)
# include <ndir.h>
# define _FOUND_DIR_
# endif
# if defined(HAVE_SYS_NDIR_H) && !defined(_FOUND_DIR_)
# include <sys/ndir.h>
# define _FOUND_DIR_
# endif
# endif /* HAVE_DIRENT_H */
],
[struct dirent d; d.d_type = 0;],
[ac_cv_struct_dirent_d_type=yes],
[ac_cv_struct_dirent_d_type=no])])
if test $ac_cv_struct_dirent_d_type = yes; then
AC_DEFINE(HAVE_DIRENT_D_TYPE)
fi])
dnl Checks if structure 'DIR' have field 'dd_fd'.
dnl Defines HAVE_DIR_DD_FD on success.
AC_DEFUN([AC_STRUCT_DIR_DD_FD],
[AC_CACHE_CHECK([if DIR * contains dd_fd], ac_cv_struct_dir_dd_fd,
[AC_TRY_COMPILE([#include <dirent.h>],
[DIR d; d.dd_fd = 0; exit (d.dd_fd == 0);],
[ac_cv_struct_dir_dd_fd=yes],
[ac_cv_struct_dir_dd_fd=no])])
if test $ac_cv_struct_dir_dd_fd = yes; then
AC_DEFINE(HAVE_DIR_DD_FD)
fi])
dnl Checks wether major(), minor() and makedev() are defined in
dnl 'sys/mkdev.h' or in 'sys/sysmacros.h. Defines MAJOR_IN_MKDEV or
dnl MAJOR_IN_SYSMACROS or nothing.
AC_DEFUN([AC_HEADER_MAKEDEV],
[AC_CACHE_CHECK([for header file containing major(), minor() and makedev()],
ac_cv_header_makedev,
[ac_cv_header_makedev=none
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/mkdev.h>],
[int i = major(0); i = minor(0); i = makedev(0,0);],
[ac_cv_header_makedev=sys/mkdev.h])
if test $ac_cv_header_makedev = none; then
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/sysmacros.h>],
[int i = major(0); i = minor(0); i = makedev(0,0);],
[ac_cv_header_makedev=sys/sysmacros.h])
fi])
if test $ac_cv_header_makedev = sys/mkdev.h; then
AC_DEFINE(MAJOR_IN_MKDEV)
fi
if test $ac_cv_header_makedev = sys/sysmacros.h; then
AC_DEFINE(MAJOR_IN_SYSMACROS)
fi])
dnl Checks for USG derived STDIO that uses _filbuf()
dnl Defines HAVE__FILBUF on success.
AC_DEFUN([AC_HEADER__FILBUF],
[AC_CACHE_CHECK([for _filbuf()], ac_cv_func__filbuf,
[AC_TRY_LINK([#include <stdio.h>],
[FILE *f;
int flag;
int count;
char *ptr;
char c = 0;
f = fopen("confdefs.h", "r");
_filbuf(f);
_flsbuf(c, f);
flag = f->_flag & _IONBF;
flag |= f->_flag & _IOERR;
flag |= f->_flag & _IOEOF;
count = f->_cnt;
ptr = (char *)f->_ptr;
fclose(f);],
[ac_cv_func__filbuf=yes],
[ac_cv_func__filbuf=no])])
if test $ac_cv_func__filbuf = yes; then
AC_DEFINE(HAVE__FILBUF)
fi])
dnl Checks for USG derived STDIO that uses __filbuf()
dnl Defines HAVE___FILBUF on success.
AC_DEFUN([AC_HEADER___FILBUF],
[AC_CACHE_CHECK([for __filbuf()], ac_cv_func___filbuf,
[AC_TRY_LINK([#include <stdio.h>],
[FILE *f;
int flag;
int count;
char *ptr;
char c = 0;
f = fopen("confdefs.h", "r");
__filbuf(f);
__flsbuf(c, f);
flag = f->_flag & _IONBF;
flag |= f->_flag & _IOERR;
flag |= f->_flag & _IOEOF;
count = f->_cnt;
ptr = (char *)f->_ptr;
fclose(f);],
[ac_cv_func___filbuf=yes],
[ac_cv_func___filbuf=no])])
if test $ac_cv_func___filbuf = yes; then
AC_DEFINE(HAVE___FILBUF)
fi])
dnl Checks for USG derived STDIO
dnl Defines HAVE_USG_STDIO on success.
AC_DEFUN([AC_HEADER_USG_STDIO],
[AC_REQUIRE([AC_HEADER__FILBUF])AC_REQUIRE([AC_HEADER___FILBUF])dnl
AC_CACHE_CHECK([for USG derived STDIO], ac_cv_header_usg_stdio,
[AC_TRY_LINK([#include <stdio.h>],
[FILE *f;
int flag;
int count;
char *ptr;
char c = 0;
f = fopen("confdefs.h", "r");
#ifdef HAVE___FILBUF
__filbuf(f);
__flsbuf(c, f);
#else
# ifdef HAVE__FILBUF
_filbuf(f);
_flsbuf(c, f);
# else
no filbuf()
# endif
#endif
flag = f->_flag & _IONBF;
flag |= f->_flag & _IOERR;
flag |= f->_flag & _IOEOF;
count = f->_cnt;
ptr = (char *)f->_ptr;
fclose(f);],
[ac_cv_header_usg_stdio=yes],
[ac_cv_header_usg_stdio=no])])
if test $ac_cv_header_usg_stdio = yes; then
AC_DEFINE(HAVE_USG_STDIO)
fi])
dnl Checks for Linux stdio with f->_flags
dnl Defines HAVE_FILE__FLAGS on success.
AC_DEFUN([AC_HEADER_FILE__FLAGS],
[AC_CACHE_CHECK([for f->_flags in FILE *], ac_cv_file__flags,
[AC_TRY_LINK([#include <stdio.h>],
[FILE *f;
int flags;
f = fopen("confdefs.h", "r");
flags = f->_flags;
fclose(f);],
[ac_cv_file__flags=yes],
[ac_cv_file__flags=no])])
if test $ac_cv_file__flags = yes; then
AC_DEFINE(HAVE_FILE__FLAGS)
fi])
dnl Checks for Linux stdio with f->_IO_buf_base
dnl Defines HAVE_FILE__IO_BUF_BASE on success.
AC_DEFUN([AC_HEADER_FILE__IO_BUF_BASE],
[AC_CACHE_CHECK([for f->_IO_buf_base in FILE *], ac_cv_file__io_buf_base,
[AC_TRY_LINK([#include <stdio.h>],
[FILE *f;
char *ptr;
f = fopen("confdefs.h", "r");
ptr = f->_IO_buf_base;
fclose(f);],
[ac_cv_file__io_buf_base=yes],
[ac_cv_file__io_buf_base=no])])
if test $ac_cv_file__io_buf_base = yes; then
AC_DEFINE(HAVE_FILE__IO_BUF_BASE)
fi])
dnl Checks for errno definition in <errno.h>
dnl Defines HAVE_ERRNO_DEF on success.
AC_DEFUN([AC_HEADER_ERRNO_DEF],
[AC_CACHE_CHECK([for errno definition in errno.h], ac_cv_header_errno_def,
[AC_TRY_COMPILE([#include <errno.h>],
[errno = 0;],
[ac_cv_header_errno_def=yes],
[ac_cv_header_errno_def=no])])
if test $ac_cv_header_errno_def = yes; then
AC_DEFINE(HAVE_ERRNO_DEF)
fi])
dnl Checks for environ definition in <unistd.h>
dnl Defines HAVE_ENVIRON_DEF on success.
AC_DEFUN([AC_HEADER_ENVIRON_DEF],
[AC_CACHE_CHECK([for environ definition in unistd.h/stdlib.h], ac_cv_header_environ_def,
[AC_TRY_COMPILE([
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#else
#ifdef HAVE_STDLIB_H
#include <stdlib.h> /* MSC no unistd.h but environ in stdlib.h */
#endif
#endif
],
[environ = 0;],
[ac_cv_header_environ_def=yes],
[ac_cv_header_environ_def=no])])
if test $ac_cv_header_environ_def = yes; then
AC_DEFINE(HAVE_ENVIRON_DEF)
fi])
dnl Checks for sys_siglist definition in <signal.h>
dnl Defines HAVE_SYS_SIGLIST_DEF on success.
AC_DEFUN([AC_HEADER_SYS_SIGLIST_DEF],
[AC_CACHE_CHECK([for sys_siglist definition in signal.h], ac_cv_header_sys_siglist_def,
[AC_TRY_COMPILE([#include <signal.h>],
[char *cp = (char *)sys_siglist[0]; exit (cp != (char *)0 && *cp != 0);],
[ac_cv_header_sys_siglist_def=yes],
[ac_cv_header_sys_siglist_def=no])])
if test $ac_cv_header_sys_siglist_def = yes; then
AC_DEFINE(HAVE_SYS_SIGLIST_DEF)
fi])
dnl Checks for extern timezone in time.h or sys/time.h
dnl Defines HAVE_VAR_TIMEZONE_DEF on success.
AC_DEFUN([AC_VAR_TIMEZONE_DEF],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for extern timezone in time.h or sys/time.h], ac_cv_var_timezone_def,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif], [timezone = 1;],
[ac_cv_var_timezone_def=yes],
[ac_cv_var_timezone_def=no])])
if test $ac_cv_var_timezone_def = yes; then
AC_DEFINE(HAVE_VAR_TIMEZONE_DEF)
fi])
dnl Checks if extern long timezone exists in libc
dnl Defines HAVE_VAR_TIMEZONE on success.
AC_DEFUN([AC_VAR_TIMEZONE],
[AC_CACHE_CHECK([for working extern long timezone ], ac_cv_var_timezone,
[AC_TRY_RUN([
extern long timezone;
int
main()
{
exit(timezone != 0);
}],
[ac_cv_var_timezone=yes],
[ac_cv_var_timezone=no])])
if test $ac_cv_var_timezone = yes; then
AC_DEFINE(HAVE_VAR_TIMEZONE)
fi])
dnl Checks if extern char *__progname exists in libc
dnl Defines HAVE_VAR___PROGNAME on success.
AC_DEFUN([AC_VAR___PROGNAME],
[AC_CACHE_CHECK([for working extern char *__progname ], ac_cv_var___progname,
[AC_TRY_RUN([
extern char *__progname;
int
main()
{
exit (!(__progname != 0 && *__progname != '\0'));
}],
[ac_cv_var___progname=yes],
[ac_cv_var___progname=no])])
if test $ac_cv_var___progname = yes; then
AC_DEFINE(HAVE_VAR___PROGNAME)
fi])
dnl Checks if extern char *__progname_full exists in libc
dnl Defines HAVE_VAR___PROGNAME_FULL on success.
AC_DEFUN([AC_VAR___PROGNAME_FULL],
[AC_CACHE_CHECK([for working extern char *__progname_full ], ac_cv_var___progname_full,
[AC_TRY_RUN([
extern char *__progname_full;
int
main()
{
exit (!(__progname_full != 0 && *__progname_full != '\0'));
}],
[ac_cv_var___progname_full=yes],
[ac_cv_var___progname_full=no])])
if test $ac_cv_var___progname_full = yes; then
AC_DEFINE(HAVE_VAR___PROGNAME_FULL)
fi])
dnl Checks for UNIX-98 compliant <inttypes.h>
dnl Defines HAVE_INTTYPES_H on success.
AC_DEFUN([AC_HEADER_INTTYPES],
[AC_CACHE_CHECK([for UNIX-98 compliant inttypes.h], ac_cv_header_inttypes,
[AC_TRY_COMPILE([#include <inttypes.h>],
[int8_t c; uint8_t uc; int16_t s; uint16_t us; int32_t i; uint32_t ui;
int64_t ll; uint64_t ull;
intptr_t ip; uintptr_t uip;],
[ac_cv_header_inttypes=yes],
[ac_cv_header_inttypes=no])])
if test $ac_cv_header_inttypes = yes; then
AC_DEFINE(HAVE_INTTYPES_H)
fi])
dnl Checks for SUSv3 compliant <stdint.h>
dnl Defines HAVE_STDINT_H and HAVE_TYPE_INTMAX_T/HAVE_TYPE_UINTMAX_T on success.
AC_DEFUN([AC_HEADER_STDINT],
[AC_CACHE_CHECK([for SUSv3 compliant stdint.h], ac_cv_header_stdint,
[AC_TRY_COMPILE([#include <stdint.h>],
[int8_t c; uint8_t uc; int16_t s; uint16_t us; int32_t i; uint32_t ui;
int64_t ll; uint64_t ull;
intptr_t ip; uintptr_t uip;
intmax_t im; uintmax_t uim;],
[ac_cv_header_stdint=yes],
[ac_cv_header_stdint=no])])
if test $ac_cv_header_stdint = yes; then
AC_DEFINE(HAVE_STDINT_H)
AC_DEFINE(HAVE_TYPE_INTMAX_T)
AC_DEFINE(HAVE_TYPE_UINTMAX_T)
fi])
dnl Checks for struct timeval in time.h or sys/time.h
dnl Defines HAVE_STRUCT_TIMEVAL on success.
AC_DEFUN([AC_STRUCT_TIMEVAL],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for struct timeval in time.h or sys/time.h], ac_cv_struct_timeval,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif], [struct timeval tv;],
[ac_cv_struct_timeval=yes],
[ac_cv_struct_timeval=no])])
if test $ac_cv_struct_timeval = yes; then
AC_DEFINE(HAVE_STRUCT_TIMEVAL)
fi])
dnl Checks for struct timezone in time.h or sys/time.h
dnl Defines HAVE_STRUCT_TIMEZONE on success.
AC_DEFUN([AC_STRUCT_TIMEZONE],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for struct timezone in time.h or sys/time.h], ac_cv_struct_timezone,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif], [struct timezone tz;],
[ac_cv_struct_timezone=yes],
[ac_cv_struct_timezone=no])])
if test $ac_cv_struct_timezone = yes; then
AC_DEFINE(HAVE_STRUCT_TIMEZONE)
fi])
dnl Checks for struct timespec in time.h or sys/time.h
dnl Defines HAVE_STRUCT_TIMESPEC on success.
AC_DEFUN([AC_STRUCT_TIMESPEC],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for struct timespec in time.h or sys/time.h], ac_cv_struct_timespec,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif], [struct timespec ts;],
[ac_cv_struct_timespec=yes],
[ac_cv_struct_timespec=no])])
if test $ac_cv_struct_timespec = yes; then
AC_DEFINE(HAVE_STRUCT_TIMESPEC)
fi])
dnl Checks for type time_t
dnl Defines time_t to long on failure.
AC_DEFUN([AC_TYPE_TIME_T],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for time_t], ac_cv_type_time_t,
[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif], [time_t t;],
[ac_cv_type_time_t=yes],
[ac_cv_type_time_t=no])])
if test $ac_cv_type_time_t = no; then
AC_DEFINE(time_t, long)
fi])
dnl AC_CHECK_SIZE_TIME([CROSS-SIZE])
dnl This must be called past AC_CHECK_SIZEOF(long int)
AC_DEFUN(AC_CHECK_SIZE_TIME_T,
[changequote(<<, >>)dnl
dnl The name to #define.
define(<<AC_TYPE_NAME>>, translit(sizeof_time_t, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_time_t, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(size of time_t)
AC_CACHE_VAL(AC_CV_NAME,
[AC_TRY_RUN([#include <stdio.h>
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
#else
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#endif
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(time_t));
exit(0);
}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=SIZEOF_LONG_INT, ifelse([$1], , , AC_CV_NAME=$1))])dnl
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])
dnl AC_CHECK_SIZE_WCHAR([CROSS-SIZE])
AC_DEFUN(AC_CHECK_SIZE_WCHAR,
[changequote(<<, >>)dnl
dnl The name to #define.
define(<<AC_TYPE_NAME>>, translit(sizeof_wchar, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_wchar, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(size of wchar)
AC_CACHE_VAL(AC_CV_NAME,
[AC_TRY_RUN([#include <stdio.h>
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(L'a'));
exit(0);
}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$1], , , AC_CV_NAME=$1))])dnl
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])
dnl AC_CHECK_SIZE_WCHAR([CROSS-SIZE])
AC_DEFUN(AC_CHECK_SIZE_WCHAR_T,
[changequote(<<, >>)dnl
dnl The name to #define.
define(<<AC_TYPE_NAME>>, translit(sizeof_wchar_t, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_wchar_t, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(size of wchar_t)
AC_CACHE_VAL(AC_CV_NAME,
[AC_TRY_RUN([#include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_WCHAR_H
#include <wchar.h>
#endif
main()
{
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
fprintf(f, "%d\n", sizeof(wchar_t));
exit(0);
}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=SIZEOF_CHAR, ifelse([$1], , , AC_CV_NAME=$1))])dnl
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
])
dnl Checks for type clock_t
dnl Defines clock_t to long on failure.
dnl XXX we cannot check for AC_CHECK_HEADERS(sys/times.h)
AC_DEFUN([AC_TYPE_CLOCK_T],
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CACHE_CHECK([for clock_t], ac_cv_type_clock_t,
[AC_TRY_COMPILE([
#include <sys/types.h>
/*
* time.h is needed because of a bug in Next Step.
* Next Step needs time.h for clock_t
*/
#ifdef TIME_WITH_SYS_TIME
# ifndef _INCL_SYS_TIME_H
# include <sys/time.h>
# define _INCL_SYS_TIME_H
# endif
# ifndef _INCL_TIME_H
# include <time.h>
# define _INCL_TIME_H
# endif
#else
#ifdef HAVE_SYS_TIME_H
# ifndef _INCL_SYS_TIME_H
# include <sys/time.h>
# define _INCL_SYS_TIME_H
# endif
#else
# ifndef _INCL_TIME_H
# include <time.h>
# define _INCL_TIME_H
# endif
#endif
#endif
#ifdef HAVE_SYS_TIMES_H
#include <sys/times.h>
#endif
], [clock_t t;],
[ac_cv_type_clock_t=yes],
[ac_cv_type_clock_t=no])])
if test $ac_cv_type_clock_t = no; then
AC_DEFINE(clock_t, long)
fi])
dnl Checks for type socklen_t
dnl Defines socklen_t to int on failure.
AC_DEFUN([AC_TYPE_SOCKLEN_T],
[AC_REQUIRE([AC_HEADER_STDC])dnl
AC_MSG_CHECKING(for socklen_t)
AC_CACHE_VAL(ac_cv_type_socklen_t,
[AC_EGREP_CPP(dnl
changequote(<<,>>)dnl
<<(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]>>dnl
changequote([,]), [#include <sys/types.h>
#if HAVE_STDLIB_H || STDC_HEADERS
#include <stdlib.h>
#endif
#if HAVE_STDDEF_H || STDC_HEADERS
#include <stddef.h>
#endif
#include <sys/socket.h>], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no)])dnl
AC_MSG_RESULT($ac_cv_type_socklen_t)
if test $ac_cv_type_socklen_t = no; then
AC_DEFINE(socklen_t, int)
fi])
dnl Checks for type stack_t
dnl Defines HAVE_STACK_T on success.
AC_DEFUN([AC_TYPE_STACK_T],
[AC_CACHE_CHECK([if stack_t is declared in signal.h], ac_cv_stack_t,
[AC_TRY_COMPILE([#include <signal.h>],
[stack_t ss; ss.ss_size = 0; exit (ss.ss_size == 0);],
[ac_cv_stack_t=yes],
[ac_cv_stack_t=no])])
if test $ac_cv_stack_t = yes; then
AC_DEFINE(HAVE_STACK_T)
fi])
dnl Checks for type siginfo_t
dnl Defines HAVE_SIGINFO_T on success.
AC_DEFUN([AC_TYPE_SIGINFO_T],
[AC_CACHE_CHECK([if siginfo_t is declared in signal.h], ac_cv_siginfo_t,
[AC_TRY_COMPILE([#include <signal.h>
#ifdef HAVE_SIGINFO_H
#include <siginfo.h>
#else
#ifdef HAVE_SYS_SIGINFO_H
#include <sys/siginfo.h>
#endif
#endif],
[siginfo_t si; si.si_signo = 0; exit (si.si_signo == 0);],
[ac_cv_siginfo_t=yes],
[ac_cv_siginfo_t=no])])
if test $ac_cv_siginfo_t = yes; then
AC_DEFINE(HAVE_SIGINFO_T)
fi])
dnl Checks for type idtype_t
dnl Defines HAVE_TYPE_IDTYPE_T on success.
AC_DEFUN([AC_TYPE_IDTYPE_T],
[AC_CACHE_CHECK([if idtype_t is declared correctly in wait.h], ac_cv_have_type_idtype_t,
[AC_TRY_COMPILE([
#if defined(HAVE_WAIT_H)
# include <wait.h>
#else
#include <sys/wait.h>
#endif],
[idtype_t idt; idt = P_ALL; idt = P_PGID; idt = P_PID; exit (idt == P_PID);],
[ac_cv_have_type_idtype_t=yes],
[ac_cv_have_type_idtype_t=no])])
if test $ac_cv_have_type_idtype_t = yes; then
AC_DEFINE(HAVE_TYPE_IDTYPE_T)
fi])
dnl Checks for type struct sockaddr_storage
dnl Defines HAVE_SOCKADDR_STORAGE on success.
AC_DEFUN([AC_STRUCT_SOCKADDR_STORAGE],
[AC_CACHE_CHECK([if struct sockaddr_storage is declared in socket.h], ac_cv_struct_sockaddr_storage,
[AC_TRY_COMPILE([#include <sys/socket.h>],
[struct sockaddr_storage ss; ss.ss_family = 0; exit (ss.ss_family == 0);],
[ac_cv_struct_sockaddr_storage=yes],
[ac_cv_struct_sockaddr_storage=no])])
if test $ac_cv_struct_sockaddr_storage = yes; then
AC_DEFINE(HAVE_SOCKADDR_STORAGE)
fi])
dnl Checks for type long long
dnl Defines HAVE_LONGLONG on success.
AC_DEFUN([AC_TYPE_LONGLONG],
[AC_CACHE_CHECK([for type long long], ac_cv_type_longlong,
[AC_TRY_COMPILE([], [long long i;],
[ac_cv_type_longlong=yes],
[ac_cv_type_longlong=no])])
if test $ac_cv_type_longlong = yes; then
AC_DEFINE(HAVE_LONGLONG)
fi])
dnl Checks for type __int64
dnl Defines HAVE___INT64 on success.
AC_DEFUN([AC_TYPE___INT64],
[AC_CACHE_CHECK([for type __int64], ac_cv_type___int64,
[AC_TRY_COMPILE([], [__int64 i;],
[ac_cv_type___int64=yes],
[ac_cv_type___int64=no])])
if test $ac_cv_type___int64 = yes; then
AC_DEFINE(HAVE___INT64)
fi])
dnl Checks for type long double
dnl Defines HAVE_LONGDOUBLE on success.
AC_DEFUN([AC_TYPE_LONGDOUBLE],
[AC_CACHE_CHECK([for type long double], ac_cv_type_longdouble,
[AC_TRY_COMPILE([], [long double ld;],
[ac_cv_type_longdouble=yes],
[ac_cv_type_longdouble=no])])
if test $ac_cv_type_longdouble = yes; then
AC_DEFINE(HAVE_LONGDOUBLE)
fi])
dnl Checks if C-compiler orders bitfields htol
dnl Defines BITFIELDS_HTOL on success.
AC_DEFUN([AC_C_BITFIELDS],
[AC_CACHE_CHECK([whether bitorder in bitfields is htol], ac_cv_c_bitfields_htol,
[AC_TRY_RUN([
struct {
unsigned char x1:4;
unsigned char x2:4;
} a;
int
main()
{
char *cp;
cp = (char *)&a;
*cp = 0x12;
exit(a.x1 == 2);}],
[ac_cv_c_bitfields_htol=yes],
[ac_cv_c_bitfields_htol=no])])
if test $ac_cv_c_bitfields_htol = yes; then
AC_DEFINE(BITFIELDS_HTOL)
fi])
dnl Checks if C-compiler understands prototypes
dnl Defines PROTOTYPES on success.
AC_DEFUN([AC_TYPE_PROTOTYPES],
[AC_CACHE_CHECK([for prototypes], ac_cv_type_prototypes,
[AC_TRY_RUN([
doit(int i, ...)
{return 0;}
int
main(int ac, char *av[])
{ doit(1, 2, 3);
exit(0);}],
[ac_cv_type_prototypes=yes],
[ac_cv_type_prototypes=no])])
if test $ac_cv_type_prototypes = yes; then
AC_DEFINE(PROTOTYPES)
fi])
dnl Checks for type size_t
dnl Defines HAVE_SIZE_T_ on success.
AC_DEFUN([AC_TYPE_SIZE_T_],
[AC_CACHE_CHECK([for type size_t], ac_cv_type_size_t_,
[AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifdef HAVE_STDIO_H
#include <stdio.h>
#endif
], [size_t s;],
[ac_cv_type_size_t_=yes],
[ac_cv_type_size_t_=no])])
if test $ac_cv_type_size_t_ = yes; then
AC_DEFINE(HAVE_SIZE_T)
else
AC_DEFINE(NO_SIZE_T)
fi])
dnl Checks if type char is unsigned
dnl Defines CHAR_IS_UNSIGNED on success.
AC_DEFUN([AC_TYPE_CHAR],
[AC_CACHE_CHECK([if char is unsigned], ac_cv_type_char_unsigned,
[AC_TRY_RUN([
int
main()
{
char c;
c = -1;
exit(c < 0);}],
[ac_cv_type_char_unsigned=yes],
[ac_cv_type_char_unsigned=no],
[ac_cv_type_char_unsigned=no])])
if test $ac_cv_type_char_unsigned = yes; then
AC_DEFINE(CHAR_IS_UNSIGNED)
fi])
dnl Checks if function/macro va_copy() is available
dnl Defines HAVE_VA_COPY on success.
AC_DEFUN([AC_FUNC_VA_COPY],
[AC_CACHE_CHECK([for va_copy], ac_cv_func_va_copy,
[AC_TRY_LINK([
#ifdef HAVE_STDARG_H
# include <stdarg.h>
#else
# include <varargs.h>
#endif],
[
va_list a, b;
va_copy(a, b);],
[ac_cv_func_va_copy=yes],
[ac_cv_func_va_copy=no])])
if test $ac_cv_func_va_copy = yes; then
AC_DEFINE(HAVE_VA_COPY)
fi])
dnl Checks if function/macro __va_copy() is available
dnl Defines HAVE__VA_COPY on success.
AC_DEFUN([AC_FUNC__VA_COPY],
[AC_CACHE_CHECK([for __va_copy], ac_cv_func__va_copy,
[AC_TRY_LINK([
#ifdef HAVE_STDARG_H
# include <stdarg.h>
#else
# include <varargs.h>
#endif],
[
va_list a, b;
__va_copy(a, b);],
[ac_cv_func__va_copy=yes],
[ac_cv_func__va_copy=no])])
if test $ac_cv_func__va_copy = yes; then
AC_DEFINE(HAVE__VA_COPY)
fi])
dnl Checks if va_list is an array
dnl Defines VA_LIST_IS_ARRAY on success.
AC_DEFUN([AC_TYPE_VA_LIST],
[AC_CACHE_CHECK([if va_list is an array], ac_cv_type_va_list_array,
[AC_TRY_LINK([
#ifdef HAVE_STDARG_H
# include <stdarg.h>
#else
# include <varargs.h>
#endif
],
[
va_list a, b;
a = b;],
[ac_cv_type_va_list_array=no],
[ac_cv_type_va_list_array=yes])])
if test $ac_cv_type_va_list_array = yes; then
AC_DEFINE(VA_LIST_IS_ARRAY)
fi])
dnl Checks if quotactl is present as ioctl
dnl Defines HAVE_QUOTAIOCTL on success.
AC_DEFUN([AC_FUNC_QUOTAIOCTL],
[AC_CACHE_CHECK([if quotactl is an ioctl], ac_cv_func_quotaioctl,
[AC_TRY_LINK([#include <sys/types.h>
#include <sys/fs/ufs_quota.h>],
[struct quotctl q; ioctl(0, Q_QUOTACTL, &q)],
[ac_cv_func_quotaioctl=yes],
[ac_cv_func_quotaioctl=no])])
if test $ac_cv_func_quotaioctl = yes; then
AC_DEFINE(HAVE_QUOTAIOCTL)
fi])
dnl Checks if function __dtoa() is available
dnl Defines HAVE_DTOA on success.
AC_DEFUN([AC_FUNC_DTOA],
[AC_CACHE_CHECK([for __dtoa], ac_cv_func_dtoa,
[AC_TRY_LINK([extern char *__dtoa();],
[int decpt; int sign; char *ep; char *bp;
bp = __dtoa(0.0, 2, 6, &decpt, &sign, &ep);],
[ac_cv_func_dtoa=yes],
[ac_cv_func_dtoa=no])])
if test $ac_cv_func_dtoa = yes; then
AC_DEFINE(HAVE_DTOA)
fi])
dnl Checks if reentrant __dtoa() exists (needs a result prt)
dnl Defines HAVE_DTOA_R on success.
AC_DEFUN([AC_FUNC_DTOA_R],
[AC_REQUIRE([AC_FUNC_DTOA])dnl
AC_CACHE_CHECK([for __dtoa that needs result ptr], ac_cv_func_dtoa_r,
[AC_TRY_RUN([
extern char *__dtoa();
int
main()
{
#ifdef HAVE_DTOA
int decpt, sign;
char *bp;
char *ep;
char *result;
result = 0;
bp = __dtoa(1.9, 2, 5, &decpt, &sign, &ep, &result);
exit(result == 0);
#else
exit(1);
#endif
}],
[ac_cv_func_dtoa_r=yes],
[ac_cv_func_dtoa_r=no])])
if test $ac_cv_func_dtoa_r = yes; then
AC_DEFINE(HAVE_DTOA_R)
fi])
dnl Checks if working ecvt() exists
dnl Defines HAVE_ECVT on success.
AC_DEFUN([AC_FUNC_ECVT],
[AC_CACHE_CHECK([for working ecvt() ], ac_cv_func_ecvt,
[AC_TRY_RUN([
extern char *ecvt();
sprintf(s)
char *s;
{
strcpy(s, "DEAD");
}
int
main()
{
int a, b;
/* exit (strcmp("DEAD", ecvt(1.9, 2, &a, &b)) == 0);*/
exit (strcmp("19", ecvt(1.9, 2, &a, &b)) != 0);
}],
[ac_cv_func_ecvt=yes],
[ac_cv_func_ecvt=no])])
if test $ac_cv_func_ecvt = yes; then
AC_DEFINE(HAVE_ECVT)
fi])
dnl Checks if working fcvt() exists
dnl Defines HAVE_FCVT on success.
AC_DEFUN([AC_FUNC_FCVT],
[AC_CACHE_CHECK([for working fcvt() ], ac_cv_func_fcvt,
[AC_TRY_RUN([
extern char *fcvt();
sprintf(s)
char *s;
{
strcpy(s, "DEAD");
}
int
main()
{
int a, b;
/* exit (strcmp("DEAD", fcvt(1.9, 2, &a, &b)) == 0);*/
exit (strcmp("190", fcvt(1.9, 2, &a, &b)) != 0);
}],
[ac_cv_func_fcvt=yes],
[ac_cv_func_fcvt=no])])
if test $ac_cv_func_fcvt = yes; then
AC_DEFINE(HAVE_FCVT)
fi])
dnl Checks if working gcvt() exists
dnl Defines HAVE_GCVT on success.
AC_DEFUN([AC_FUNC_GCVT],
[AC_CACHE_CHECK([for working gcvt() ], ac_cv_func_gcvt,
[AC_TRY_RUN([
extern char *gcvt();
sprintf(s)
char *s;
{
strcpy(s, "DEAD");
}
int
main()
{
char buf[32];
/* exit (strcmp("DEAD", gcvt(1.9, 10, buf)) == 0);*/
exit (strcmp("1.9", gcvt(1.9, 10, buf)) != 0);
}],
[ac_cv_func_gcvt=yes],
[ac_cv_func_gcvt=no])])
if test $ac_cv_func_gcvt = yes; then
AC_DEFINE(HAVE_GCVT)
fi])
dnl Checks if function uname() is available
dnl Defines HAVE_UNAME on success.
AC_DEFUN([AC_FUNC_UNAME],
[AC_CACHE_CHECK([for uname], ac_cv_func_uname,
[AC_TRY_LINK([#include <sys/utsname.h>],
[struct utsname un;
uname(&un);],
[ac_cv_func_uname=yes],
[ac_cv_func_uname=no])])
if test $ac_cv_func_uname = yes; then
AC_DEFINE(HAVE_UNAME)
fi])
dnl Checks if function mlock() is available
dnl beware HP-UX 10.x it contains a bad mlock() in libc
dnl Defines HAVE_MLOCK on success.
AC_DEFUN([AC_FUNC_MLOCK],
[AC_REQUIRE([AC_HEADER_ERRNO_DEF])dnl
AC_CACHE_CHECK([for mlock], ac_cv_func_mlock,
[AC_TRY_RUN([
#include <sys/types.h>
#include <errno.h>
#ifndef HAVE_ERRNO_DEF
extern int errno;
#endif
main()
{
if (mlock(0, 0) < 0) {
if (errno == EINVAL || errno == ENOMEM ||
errno == EPERM || errno == EACCES)
exit(0);
exit(-1);
}
exit(0);
}],
[ac_cv_func_mlock=yes],
[ac_cv_func_mlock=no])
rm -f core core.* *.core])
if test $ac_cv_func_mlock = yes; then
AC_DEFINE(HAVE_MLOCK)
fi])
dnl Checks if function mlockall() is available
dnl beware HP-UX 10.x it contains a bad mlockall() in libc
dnl Defines HAVE_MLOCKALL on success.
AC_DEFUN([AC_FUNC_MLOCKALL],
[AC_REQUIRE([AC_HEADER_ERRNO_DEF])dnl
AC_CACHE_CHECK([for mlockall], ac_cv_func_mlockall,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/mman.h>
#include <errno.h>
#ifndef HAVE_ERRNO_DEF
extern int errno;
#endif
int
main()
{
if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) {
if (errno == EINVAL || errno == ENOMEM ||
errno == EPERM || errno == EACCES)
exit(0);
exit(-1);
}
exit(0);
}
],
[ac_cv_func_mlockall=yes],
[ac_cv_func_mlockall=no])
rm -f core core.* *.core])
if test $ac_cv_func_mlockall = yes; then
AC_DEFINE(HAVE_MLOCKALL)
fi])
AC_DEFUN([jsAC_FUNC_MMAP],
[AC_CHECK_HEADERS(unistd.h)dnl
AC_REQUIRE([AC_MMAP_SIZEP])dnl
AC_REQUIRE([AC_FUNC_GETPAGESIZE])dnl
AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped,
[AC_TRY_RUN([
/* Thanks to Mike Haertel and Jim Avera for this test.
Here is a matrix of mmap possibilities:
mmap private not fixed
mmap private fixed at somewhere currently unmapped
mmap private fixed at somewhere already mapped
mmap shared not fixed
mmap shared fixed at somewhere currently unmapped
mmap shared fixed at somewhere already mapped
For private mappings, we should verify that changes cannot be read()
back from the file, nor mmap's back from the file at a different
address. (There have been systems where private was not correctly
implemented like the infamous i386 svr4.0, and systems where the
VM page cache was not coherent with the filesystem buffer cache
like early versions of FreeBSD and possibly contemporary NetBSD.)
For shared mappings, we should conversely verify that changes get
propogated back to all the places they're supposed to be.
Grep wants private fixed already mapped.
The main things grep needs to know about mmap are:
* does it exist and is it safe to write into the mmap'd area
* how to use it (BSD variants) */
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
/*
* Needed for Apollo Domain/OS and may be for others?
*/
#ifdef _MMAP_WITH_SIZEP
# define mmap_sizeparm(s) (&(s))
#else
# define mmap_sizeparm(s) (s)
#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
# define HAVE_SYS_PARAM_H 1
# endif
# ifdef _SC_PAGESIZE
# define getpagesize() sysconf(_SC_PAGESIZE)
# else /* no _SC_PAGESIZE */
# ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
# ifdef EXEC_PAGESIZE
# define getpagesize() EXEC_PAGESIZE
# else /* no EXEC_PAGESIZE */
# ifdef NBPG
# define getpagesize() NBPG * CLSIZE
# ifndef CLSIZE
# define CLSIZE 1
# endif /* no CLSIZE */
# else /* no NBPG */
# ifdef NBPC
# define getpagesize() NBPC
# else /* no NBPC */
# ifdef PAGESIZE
# define getpagesize() PAGESIZE
# endif /* PAGESIZE */
# endif /* no NBPC */
# endif /* no NBPG */
# endif /* no EXEC_PAGESIZE */
# else /* no HAVE_SYS_PARAM_H */
# define getpagesize() 8192 /* punt totally */
# endif /* no HAVE_SYS_PARAM_H */
# endif /* no _SC_PAGESIZE */
#endif /* no HAVE_GETPAGESIZE */
#ifdef __cplusplus
extern "C" { void *malloc(unsigned); }
#else
char *malloc();
#endif
int
main()
{
char *data, *data2, *data3;
int i, pagesize;
int fd;
pagesize = getpagesize();
/*
* First, make a file with some known garbage in it.
*/
data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
*(data + i) = rand();
umask(0);
fd = creat("conftestmmap", 0600);
if (fd < 0)
exit(1);
if (write(fd, data, pagesize) != pagesize)
exit(1);
close(fd);
/*
* Next, try to mmap the file at a fixed address which
* already has something else allocated at it. If we can,
* also make sure that we see the same garbage.
*/
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
if (data2 != mmap(data2, mmap_sizeparm(pagesize), PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_FIXED, fd, 0L))
exit(1);
for (i = 0; i < pagesize; ++i)
if (*(data + i) != *(data2 + i))
exit(1);
/*
* Finally, make sure that changes to the mapped area
* do not percolate back to the file as seen by read().
* (This is a bug on some variants of i386 svr4.0.)
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
exit(1);
for (i = 0; i < pagesize; ++i)
if (*(data + i) != *(data3 + i))
exit(1);
close(fd);
unlink("conftestmmap");
exit(0);
}
], ac_cv_func_mmap_fixed_mapped=yes, ac_cv_func_mmap_fixed_mapped=no,
ac_cv_func_mmap_fixed_mapped=no)])
if test $ac_cv_func_mmap_fixed_mapped = yes; then
AC_DEFINE(HAVE_MMAP)
fi
])
AC_DEFUN([AC_MMAP_SIZEP],
[AC_CHECK_HEADERS(unistd.h)dnl
AC_REQUIRE([AC_FUNC_GETPAGESIZE])dnl
AC_CACHE_CHECK(for mmap that needs ptr to size, ac_cv_func_mmap_sizep,
[AC_TRY_RUN([
#include <sys/types.h>
#include <fcntl.h>
#include <signal.h>
#include <setjmp.h>
#include <sys/mman.h>
#ifndef MAP_FILE
#define MAP_FILE 0 /* Needed on Apollo Domain/OS */
#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
# define HAVE_SYS_PARAM_H 1
# endif
# ifdef _SC_PAGESIZE
# define getpagesize() sysconf(_SC_PAGESIZE)
# else /* no _SC_PAGESIZE */
# ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
# ifdef EXEC_PAGESIZE
# define getpagesize() EXEC_PAGESIZE
# else /* no EXEC_PAGESIZE */
# ifdef NBPG
# define getpagesize() NBPG * CLSIZE
# ifndef CLSIZE
# define CLSIZE 1
# endif /* no CLSIZE */
# else /* no NBPG */
# ifdef NBPC
# define getpagesize() NBPC
# else /* no NBPC */
# ifdef PAGESIZE
# define getpagesize() PAGESIZE
# endif /* PAGESIZE */
# endif /* no NBPC */
# endif /* no NBPG */
# endif /* no EXEC_PAGESIZE */
# else /* no HAVE_SYS_PARAM_H */
# define getpagesize() 8192 /* punt totally */
# endif /* no HAVE_SYS_PARAM_H */
# endif /* no _SC_PAGESIZE */
#endif /* no HAVE_GETPAGESIZE */
#ifdef __cplusplus
extern "C" { void *malloc(unsigned); }
#else
char *malloc();
#endif
jmp_buf jenv;
int
intr()
{
signal(SIGSEGV, intr);
longjmp(jenv, 1);
}
int
main()
{
char *data, *data2;
int i, pagesize, ps;
int fd;
pagesize = getpagesize();
/*
* First, make a file with some known garbage in it.
*/
data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
*(data + i) = rand();
umask(0);
fd = creat("conftestmmap", 0600);
if (fd < 0)
exit(1);
if (write(fd, data, pagesize) != pagesize)
exit(1);
close(fd);
/*
* Next, try to mmap the file at a fixed address which
* already has something else allocated at it. If we can,
* also make sure that we see the same garbage.
*/
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
/*
* Keep a copy, Apollo modifies the value...
*/
ps = pagesize;
/*
* Apollo mmap() is not a syscall but a library function and fails
* if it tries to dereference 'ps'. We must use setjmp in order to
* catch the failure.
*/
signal(SIGSEGV, intr);
if (setjmp(jenv) == 0) {
data2 = mmap(0, ps, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0L);
} else {
data2 = (char *)-1;
}
if (data2 != (char *)-1)
exit(1);
signal(SIGSEGV, intr);
if (setjmp(jenv) == 0) {
data2 = mmap(0, &ps, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0L);
} else {
data2 = (char *)-1;
}
if (data2 == (char *)-1)
exit(1);
for (i = 0; i < pagesize; ++i)
if (*(data + i) != *(data2 + i))
exit(1);
close(fd);
unlink("conftestmmap");
exit(0);
}
], ac_cv_func_mmap_sizep=yes, ac_cv_func_mmap_sizep=no,
ac_cv_func_mmap_sizep=no)])
if test $ac_cv_func_mmap_sizep = yes; then
AC_DEFINE(_MMAP_WITH_SIZEP)
fi
])
dnl Checks if mmap() works to get shared memory
dnl Defines HAVE_SMMAP on success.
AC_DEFUN([AC_FUNC_SMMAP],
[AC_CACHE_CHECK([if mmap works to get shared memory], ac_cv_func_smmap,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/mman.h>
#ifndef MAP_ANONYMOUS
# ifdef MAP_ANON
# define MAP_ANONYMOUS MAP_ANON
# endif
#endif
/*
* Needed for Apollo Domain/OS and may be for others?
*/
#ifdef _MMAP_WITH_SIZEP
# define mmap_sizeparm(s) (&(s))
#else
# define mmap_sizeparm(s) (s)
#endif
char *
mkshare()
{
int size = 8192;
int f;
char *addr;
#ifdef MAP_ANONYMOUS /* HP/UX */
f = -1;
addr = mmap(0, mmap_sizeparm(size), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, f, 0);
#else
if ((f = open("/dev/zero", 2)) < 0)
exit(1);
addr = mmap(0, mmap_sizeparm(size), PROT_READ|PROT_WRITE, MAP_SHARED, f, 0);
#endif
if (addr == (char *)-1)
exit(1);
close(f);
return (addr);
}
int
main()
{
char *addr;
addr = mkshare();
*addr = 'I';
switch (fork()) {
case -1:
printf("help\n"); exit(1);
case 0: /* child */
*addr = 'N';
_exit(0);
break;
default: /* parent */
wait(0);
sleep(1);
break;
}
if (*addr != 'N')
exit(1);
exit(0);
}
],
[ac_cv_func_smmap=yes],
[ac_cv_func_smmap=no],
[ac_cv_func_smmap=no])])
if test $ac_cv_func_smmap = yes; then
AC_DEFINE(HAVE_SMMAP)
fi])
dnl Checks if shmget() works to get shared memory
dnl Defines HAVE_SHMGET on success.
AC_DEFUN([AC_FUNC_SHMGET],
[AC_CACHE_CHECK([if shmget works to get shared memory], ac_cv_func_shmget,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int
main()
{
int id;
id = shmget(IPC_PRIVATE, 0x1, IPC_CREAT|0600);
if (id == -1)
exit(1);
shmctl(id, IPC_RMID, 0);
exit(0);
}
],
[ac_cv_func_shmget=yes],
[ac_cv_func_shmget=no],
[ac_cv_func_shmget=no])])
if test $ac_cv_func_shmget = yes; then
AC_DEFINE(HAVE_SHMGET)
fi])
dnl Checks if sys_siglist[] exists
dnl Defines HAVE_SYS_SIGLIST on success.
AC_DEFUN([AC_FUNC_SYS_SIGLIST],
[AC_CACHE_CHECK([for sys_siglist], ac_cv_func_sys_siglist,
[AC_TRY_RUN([
int
main()
{ extern char *sys_siglist[];
if (sys_siglist[1] == 0)
exit(1);
exit(0);}],
[ac_cv_func_sys_siglist=yes],
[ac_cv_func_sys_siglist=no])])
if test $ac_cv_func_sys_siglist = yes; then
AC_DEFINE(HAVE_SYS_SIGLIST)
fi])
dnl Checks for maximum number of bits in minor device number
AC_DEFUN([AC_CHECK_MINOR_BITS],
[AC_REQUIRE([AC_HEADER_MAKEDEV])dnl
changequote(<<, >>)dnl
define(<<AC_MACRO_NAME>>, DEV_MINOR_BITS)dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, ac_cv_dev_minor_bits)dnl
changequote([, ])dnl
AC_MSG_CHECKING(bits in minor device number)
AC_CACHE_VAL(AC_CV_NAME,
[AC_TRY_RUN([#include <stdio.h>
#include <sys/types.h>
#ifdef major
# define _FOUND_MAJOR_
#endif
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
# define _FOUND_MAJOR_
#endif
#ifndef _FOUND_MAJOR_
# ifdef MAJOR_IN_SYSMACROS
# include <sys/sysmacros.h>
# define _FOUND_MAJOR_
# endif
#endif
#ifndef _FOUND_MAJOR_
# if defined(hpux) || defined(__hpux__) || defined(__hpux)
# include <sys/mknod.h>
# define _FOUND_MAJOR_
# endif
#endif
#ifndef _FOUND_MAJOR_
# define major(dev) (((dev) >> 8) & 0xFF)
# define minor(dev) ((dev) & 0xFF)
# define makedev(majo, mino) (((majo) << 8) | (mino))
#endif
int
main()
{
long l = 1;
int i;
int m;
int c = 0;
FILE *f=fopen("conftestval", "w");
int maxloop = 32;
if (sizeof (long) > 4)
maxloop = 64;
if (!f) exit(1);
for (i=1, m=0; i <= maxloop; i++, l<<=1) {
if (minor(l) == 0 && c == 0)
c = m;
if (minor(l) != 0)
m = i;
}
fprintf(f, "%d\n", m);
exit(0);
}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_MACRO_NAME, $AC_CV_NAME)
undefine([AC_MACRO_NAME])dnl
undefine([AC_CV_NAME])dnl
])
dnl Checks for maximum number of bits in minor device numbers are non contiguous
dnl Defines DEV_MINOR_NONCONTIG on success.
AC_DEFUN([AC_CHECK_MINOR_NONCONTIG],
[AC_REQUIRE([AC_HEADER_MAKEDEV])dnl
AC_CACHE_CHECK([whether bits in minor device numbers are non contiguous], ac_cv_dev_minor_noncontig,
[AC_TRY_RUN([
#include <sys/types.h>
#ifdef major
# define _FOUND_MAJOR_
#endif
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
# define _FOUND_MAJOR_
#endif
#ifndef _FOUND_MAJOR_
# ifdef MAJOR_IN_SYSMACROS
# include <sys/sysmacros.h>
# define _FOUND_MAJOR_
# endif
#endif
#ifndef _FOUND_MAJOR_
# if defined(hpux) || defined(__hpux__) || defined(__hpux)
# include <sys/mknod.h>
# define _FOUND_MAJOR_
# endif
#endif
#ifndef _FOUND_MAJOR_
# define major(dev) (((dev) >> 8) & 0xFF)
# define minor(dev) ((dev) & 0xFF)
# define makedev(majo, mino) (((majo) << 8) | (mino))
#endif
int
main()
{
long l = 1;
int i;
int m;
int c = 0;
int maxloop = 32;
if (sizeof (long) > 4)
maxloop = 64;
for (i=1, m=0; i <= maxloop; i++, l<<=1) {
if (minor(l) == 0 && c == 0)
c = m;
if (minor(l) != 0)
m = i;
}
exit (m == c);}],
[ac_cv_dev_minor_noncontig=yes],
[ac_cv_dev_minor_noncontig=no])])
if test $ac_cv_dev_minor_noncontig = yes; then
AC_DEFINE(DEV_MINOR_NONCONTIG)
fi])
dnl Checks if we may not define our own malloc()
dnl Defines NO_USER_MALLOC if we cannot.
AC_DEFUN([AC_USER_MALLOC],
[AC_CACHE_CHECK([if we may not define our own malloc()], ac_cv_no_user_malloc,
[AC_TRY_RUN([
#if !defined(__CYGWIN32__) && !defined(__CYGWIN__)
static int mcalled;
char *
malloc(s)
int s;
{
extern char *sbrk();
/*
* Don't ask me why, but with Cygwin on 64 Bit Vista this hangs
* infinitely and is undebuggable unless we call write() here...
*/
write(2, "", 0);
mcalled++;
_exit(0);
return (sbrk(s));
}
free(p) char *p;{}
#endif /* !defined(__CYGWIN32__) && !defined(__CYGWIN__) */
main()
{
#if !defined(__CYGWIN32__) && !defined(__CYGWIN__)
#ifdef HAVE_STRDUP
strdup("aaa");
#else
exit(0);
#endif
#endif /* !defined(__CYGWIN32__) && !defined(__CYGWIN__) */
exit(1);}],
[ac_cv_no_user_malloc=no],
[ac_cv_no_user_malloc=yes])])
if test $ac_cv_no_user_malloc = yes; then
AC_DEFINE(NO_USER_MALLOC)
fi])
dnl Checks if ecvt()/fcvt()/gcvt() may be replaced by local implementations
dnl There are known problems on ATARI MINT and older Linux version and statical linking
dnl Defines NO_USER_XCVT on failure.
AC_DEFUN([AC_USER_XCVT],
[AC_CACHE_CHECK([if we may not define our own ecvt()/fcvt()/gcvt()], ac_cv_no_user_xcvt,
[AC_TRY_LINK([
#include <stdio.h>
char *
ecvt(value, ndig, decpt, sign)
double value;
int ndig;
int *decpt;
int *sign;
{
return ("ecvt-test");
}
char *
fcvt(value, ndig, decpt, sign)
double value;
int ndig;
int *decpt;
int *sign;
{
return ("fcvt-test");
}
char *
gcvt(value, ndig, bp)
double value;
int ndig;
char *bp;
{
return ("gcvt-test");
}
],
[
char buf[64];
printf("E: %e F: %f G: %g local gcvt: %s\n", 1.234, 1.234, 1.234, gcvt(1.234, 4, buf));
],
[ac_cv_no_user_xcvt=no],
[ac_cv_no_user_xcvt=yes])])
if test $ac_cv_no_user_xcvt = yes; then
AC_DEFINE(NO_USER_XCVT)
fi])
dnl Checks if BSD-4.2 compliant getpgrp() exists
dnl Defines HAVE_BSD_GETPGRP on success.
AC_DEFUN([AC_FUNC_BSD_GETPGRP],
[AC_CACHE_CHECK([for BSD compliant getpgrp], ac_cv_func_bsd_getpgrp,
[AC_TRY_RUN([
int
main()
{ long p;
/*
* POSIX getpgrp() has void parameter...
*/
p = getpgrp(-1);
if (p == getpgrp(1) && p == getpgrp(getpid()))
exit(1);
exit(0);}],
[ac_cv_func_bsd_getpgrp=yes],
[ac_cv_func_bsd_getpgrp=no])])
if test $ac_cv_func_bsd_getpgrp = yes; then
AC_DEFINE(HAVE_BSD_GETPGRP)
fi])
dnl Checks if BSD-4.2 compliant setpgrp() exists
dnl Defines HAVE_BSD_SETPGRP on success.
AC_DEFUN([AC_FUNC_BSD_SETPGRP],
[AC_REQUIRE([AC_HEADER_ERRNO_DEF])dnl
AC_CACHE_CHECK([for BSD compliant setpgrp], ac_cv_func_bsd_setpgrp,
[AC_TRY_RUN([
#include <errno.h>
#ifndef HAVE_ERRNO_DEF
extern int errno;
#endif
int
main()
{ errno = 0;
/*
* Force illegal pid on BSD
*/
if (setpgrp(-1, 100) < 0 && errno == ESRCH)
exit(0);
exit(1);}],
[ac_cv_func_bsd_setpgrp=yes],
[ac_cv_func_bsd_setpgrp=no])])
if test $ac_cv_func_bsd_setpgrp = yes; then
AC_DEFINE(HAVE_BSD_SETPGRP)
fi])
dnl Checks if *printf() supports %jd
dnl Defines HAVE_PRINTF_J on success.
AC_DEFUN([AC_FUNC_PRINTF_J],
[AC_CACHE_CHECK([whether *printf() supports %jd], ac_cv_func_printf_j,
[AC_TRY_RUN([
#include <inttypes.h>
int
main()
{ intmax_t m = 123456789012LL;
char buf[32];
sprintf(buf, "%jd", m);
if (strcmp(buf, "123456789012") == 0)
exit(0);
exit(1);}],
[ac_cv_func_printf_j=yes],
[ac_cv_func_printf_j=no])])
if test $ac_cv_func_printf_j = yes; then
AC_DEFINE(HAVE_PRINTF_J)
fi])
dnl Checks if *printf() supports %zd
dnl Defines HAVE_PRINTF_Z on success.
AC_DEFUN([AC_FUNC_PRINTF_Z],
[AC_CACHE_CHECK([whether *printf() supports %zd], ac_cv_func_printf_z,
[AC_TRY_RUN([
#include <sys/types.h>
int
main()
{ size_t m = 1234567890;
char buf[32];
sprintf(buf, "%zd", m);
if (strcmp(buf, "1234567890") == 0)
exit(0);
exit(1);}],
[ac_cv_func_printf_z=yes],
[ac_cv_func_printf_z=no])])
if test $ac_cv_func_printf_z = yes; then
AC_DEFINE(HAVE_PRINTF_Z)
fi])
dnl Checks if *printf() supports %lld
dnl Defines HAVE_PRINTF_LL on success.
AC_DEFUN([AC_FUNC_PRINTF_LL],
[AC_CACHE_CHECK([whether *printf() supports %lld], ac_cv_func_printf_ll,
[AC_TRY_RUN([
int
main()
{ long long ll = 123456789012LL;
char buf[32];
sprintf(buf, "%lld", ll);
if (strcmp(buf, "123456789012") == 0)
exit(0);
exit(1);}],
[ac_cv_func_printf_ll=yes],
[ac_cv_func_printf_ll=no])])
if test $ac_cv_func_printf_ll = yes; then
AC_DEFINE(HAVE_PRINTF_LL)
fi])
dnl Checks if C99 compliant isinf() exists
dnl Defines HAVE_C99_ISINF on success.
AC_DEFUN([AC_FUNC_C99_ISINF],
[AC_CACHE_CHECK([for C99 compliant isinf], ac_cv_func_c99_isinf,
[AC_TRY_LINK([#include <math.h>], [ double d;
#ifndef isinf
The isinf macro is not defined
#endif
return (isinf(d));
],
[ac_cv_func_c99_isinf=yes],
[ac_cv_func_c99_isinf=no])])
if test $ac_cv_func_c99_isinf = yes; then
AC_DEFINE(HAVE_C99_ISINF)
fi])
dnl Checks if C99 compliant isnan() exists
dnl Defines HAVE_C99_ISNAN on success.
AC_DEFUN([AC_FUNC_C99_ISNAN],
[AC_CACHE_CHECK([for C99 compliant isnan], ac_cv_func_c99_isnan,
[AC_TRY_LINK([#include <math.h>], [ double d;
#ifndef isnan
The isnan macro is not defined
#endif
return (isnan(d));
],
[ac_cv_func_c99_isnan=yes],
[ac_cv_func_c99_isnan=no])])
if test $ac_cv_func_c99_isnan = yes; then
AC_DEFINE(HAVE_C99_ISNAN)
fi])
dnl Checks if select() needs more than sys/time.h & sys/types.h
dnl Defines SELECT_NONSTD_HDR on success.
AC_DEFUN([AC_HEADER_SELECT_NONSTD],
[AC_CACHE_CHECK([if select needs nonstd include files], ac_cv_header_slect_nonstd_hdr,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/time.h>],
[fd_set rfd; FD_ZERO(&rfd); select(1, &rfd, 0, 0, 0);],
[ac_cv_header_slect_nonstd_hdr=no],
[ac_cv_header_slect_nonstd_hdr=yes])])
if test $ac_cv_header_slect_nonstd_hdr = yes; then
AC_DEFINE(SELECT_NONSTD_HDR)
fi])
dnl Checks if select() needs sys/select.h
dnl Defines NEED_SYS_SELECT_H on success.
AC_DEFUN([AC_HEADER_SYS_SELECT],
[AC_REQUIRE([AC_HEADER_SELECT_NONSTD])dnl
AC_CACHE_CHECK([if sys/select.h is needed for select], ac_cv_header_need_sys_select_h,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/time.h>
#include <sys/select.h>
#ifndef SELECT_NONSTD_HDR
do not compile if we do not need nonstandard headers
#endif],
[fd_set rfd; FD_ZERO(&rfd); select(1, &rfd, 0, 0, 0);],
[ac_cv_header_need_sys_select_h=yes],
[ac_cv_header_need_sys_select_h=no])])
if test $ac_cv_header_need_sys_select_h = yes; then
AC_DEFINE(NEED_SYS_SELECT_H)
fi])
dnl Checks if select() needs sys/socket.h
dnl Defines NEED_SYS_SOCKET_H on success.
AC_DEFUN([AC_HEADER_SELECT2],
[AC_REQUIRE([AC_HEADER_SELECT_NONSTD])dnl
AC_CACHE_CHECK([if sys/socket.h is needed for select], ac_cv_header_need_sys_socket_h,
[AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#ifndef SELECT_NONSTD_HDR
do not compile if we do not need nonstandard headers
#endif],
[fd_set rfd; FD_ZERO(&rfd); select(1, &rfd, 0, 0, 0);],
[ac_cv_header_need_sys_socket_h=yes],
[ac_cv_header_need_sys_socket_h=no])])
if test $ac_cv_header_need_sys_socket_h = yes; then
AC_DEFINE(NEED_SYS_SOCKET_H)
fi])
dnl Checks if file locking via fcntl() is available
dnl Defines HAVE_FCNTL_LOCKF on success.
AC_DEFUN([AC_FUNC_FCNTL_LOCKF],
[AC_CACHE_CHECK([for file locking via fcntl], ac_cv_func_fcntl_lock,
[AC_TRY_LINK([
#include <sys/types.h>
#include <fcntl.h>],
[
struct flock fl;
fcntl(0, F_SETLK, &fl);],
[ac_cv_func_fcntl_lock=yes],
[ac_cv_func_fcntl_lock=no])])
if test $ac_cv_func_fcntl_lock = yes; then
AC_DEFINE(HAVE_FCNTL_LOCKF)
fi])
dnl Checks if sigsetjmp() is available
dnl Defines HAVE_SIGSETJMP on success.
AC_DEFUN([AC_FUNC_SIGSETJMP],
[AC_CACHE_CHECK([for sigsetjmp], ac_cv_func_sigsetjmp,
[AC_TRY_LINK([
#include <setjmp.h>],
[
sigjmp_buf jb;
sigsetjmp(jb, 1);],
[ac_cv_func_sigsetjmp=yes],
[ac_cv_func_sigsetjmp=no])])
if test $ac_cv_func_sigsetjmp = yes; then
AC_DEFINE(HAVE_SIGSETJMP)
fi])
dnl Checks if siglongjmp() is available
dnl Defines HAVE_SIGLONGJMP on success.
AC_DEFUN([AC_FUNC_SIGLONGJMP],
[AC_CACHE_CHECK([for siglongjmp], ac_cv_func_siglongjmp,
[AC_TRY_LINK([
#include <setjmp.h>],
[
sigjmp_buf jb;
sigsetjmp(jb, 1);
siglongjmp(jb, 1);],
[ac_cv_func_siglongjmp=yes],
[ac_cv_func_siglongjmp=no])])
if test $ac_cv_func_siglongjmp = yes; then
AC_DEFINE(HAVE_SIGLONGJMP)
fi])
dnl Checks if link() allows hard links on symlinks
dnl Defines HAVE_HARD_SYMLINKS on success.
AC_DEFUN([AC_HARD_SYMLINKS],
[AC_CACHE_CHECK([if link() allows hard links on symlinks], ac_cv_hard_symlinks,
[AC_TRY_RUN([
main()
{
int ret = 0;
unlink("confdefs.f1");
unlink("confdefs.l1");
unlink("confdefs.h1");
if (symlink("confdefs.f1", "confdefs.l1") < 0)
ret = 1;
if (link("confdefs.l1", "confdefs.h1") < 0)
ret = 1;
unlink("confdefs.l1");
unlink("confdefs.h1");
exit(ret);
}],
[ac_cv_hard_symlinks=yes],
[ac_cv_hard_symlinks=no])])
if test $ac_cv_hard_symlinks = yes; then
AC_DEFINE(HAVE_HARD_SYMLINKS)
fi])
dnl Checks if link() does not follow symlinks
dnl Defines HAVE_LINK_NOFOLLOW on success.
AC_DEFUN([AC_LINK_NOFOLLOW],
[AC_CACHE_CHECK([if link() does not folow symlinks], ac_cv_link_nofollow,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/stat.h>
main()
{
int ret = 0;
int f;
struct stat sb;
unlink("confdefs.f1");
unlink("confdefs.l1");
unlink("confdefs.h1");
f = creat("confdefs.f1", 0666);
close(f);
if (symlink("confdefs.f1", "confdefs.l1") < 0)
ret = 1;
if (link("confdefs.l1", "confdefs.h1") < 0)
ret = 1;
stat("confdefs.f1", &sb);
if (sb.st_nlink == 2)
ret = 1;
unlink("confdefs.f1");
unlink("confdefs.l1");
unlink("confdefs.h1");
exit(ret);
}],
[ac_cv_link_nofollow=yes],
[ac_cv_link_nofollow=no])])
if test $ac_cv_link_nofollow = yes; then
AC_DEFINE(HAVE_LINK_NOFOLLOW)
fi])
dnl Checks if access() does implement E_OK (010) for effective UIDs
dnl Defines HAVE_ACCESS_E_OK on success.
AC_DEFUN([AC_ACCESS_E_OK],
[AC_REQUIRE([AC_HEADER_ERRNO_DEF])dnl
AC_CHECK_HEADERS(unistd.h)
AC_CACHE_CHECK([if access() does implement E_OK], ac_cv_access_e_ok,
[AC_TRY_RUN([
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
#ifndef R_OK
#define R_OK 4 /* Test for Read permission */
#define W_OK 2 /* Test for Write permission */
#define X_OK 1 /* Test for eXecute permission */
#define F_OK 0 /* Test for existence of File */
#endif
#ifndef E_OK
#ifdef EFF_ONLY_OK
#define E_OK EFF_ONLY_OK /* Irix */
#else
#ifdef EUID_OK
#define E_OK EUID_OK /* UNICOS (0400) */
#else
#define E_OK 010 /* Test effective uids */
#endif
#endif
#endif
#include <errno.h>
#ifndef HAVE_ERRNO_DEF
extern int errno;
#endif
main()
{
#ifdef _MSC_VER
/*
* If we use "cl" to compile and call access(".", E_OK|F_OK), the program will
* cause an exception that results in a popup window. For this reason, the test
* is disabled for "cl", it would not work anyway.
*/
int ret = 1;
#else
int ret = 0;
if (access(".", F_OK) != 0)
ret = 1;
else if (access(".", E_OK|F_OK) != 0)
ret = 1;
else if (access(".", (R_OK<<4)|F_OK) == 0)
ret = 1;
#endif
exit(ret);
}],
[ac_cv_access_e_ok=yes],
[ac_cv_access_e_ok=no])])
if test $ac_cv_access_e_ok = yes; then
AC_DEFINE(HAVE_ACCESS_E_OK)
fi])
dnl Checks if fnmatch() does implement FNM_IGNORECASE
dnl Defines HAVE_FNMATCH_IGNORECASE on success.
AC_DEFUN([AC_FNMATCH_IGNORECASE],
[AC_CHECK_HEADERS(fnmatch.h)
AC_CACHE_CHECK([if fnmatch() does implement FNM_IGNORECASE or FNM_CASEFOLD], ac_cv_fnmatch_igncase,
[AC_TRY_RUN([
#ifdef HAVE_FNMATCH
#include <fnmatch.h>
#endif
#ifndef FNM_IGNORECASE
#ifdef FNM_CASEFOLD
#define FNM_IGNORECASE FNM_CASEFOLD
#endif
#endif
main()
{
int ret;
ret = fnmatch("a", "A", FNM_IGNORECASE);
exit(ret);
}],
[ac_cv_fnmatch_igncase=yes],
[ac_cv_fnmatch_igncase=no])])
if test $ac_cv_fnmatch_igncase = yes; then
AC_DEFINE(HAVE_FNMATCH_IGNORECASE)
fi])
dnl Checks if realloc() does implement realloc(NULL, size)
dnl Defines HAVE_REALLOC_NULL on success.
AC_DEFUN([AC_FUNC_REALLOC_NULL],
[AC_CHECK_HEADERS(stdlib.h)
AC_TYPE_SIGNAL
AC_CACHE_CHECK([if realloc() does implement realloc(NULL, size)], ac_cv_realloc_null,
[AC_TRY_RUN([
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <signal.h>
RETSIGTYPE
sig(s)
int s;
{
exit(1);
}
int
main()
{
char *p;
signal(SIGSEGV, sig);
p = realloc((char *)0, 10);
if (p == (char *)0)
exit(1);
exit(0);
}],
[ac_cv_realloc_null=yes],
[ac_cv_realloc_null=no])])
if test $ac_cv_realloc_null = yes; then
AC_DEFINE(HAVE_REALLOC_NULL)
fi])
dnl Checks if waitid() is present and is at least minimally usable.
dnl Mac OS X is POSIX certified but definitely not POSIX compliant
dnl so we need to to implement a complex test for waitid().
dnl Defines HAVE_WAITID on success.
AC_DEFUN([AC_FUNC_WAITID],
[AC_CHECK_HEADERS(stdlib.h)
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS(wait.h)
AC_HEADER_SYS_WAIT
AC_CACHE_CHECK([for halfway POSIX compliant waitid()], ac_cv_func_waitid,
[AC_TRY_RUN([
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#if defined(HAVE_WAIT_H)
# include <wait.h>
#else
#include <sys/wait.h>
#endif
#include <signal.h>
/*
* Non-standard compliant platforms may need
* #include <signal.h> or something similar
* in addition to the include files above.
*/
int
main()
{
siginfo_t si;
pid_t pid;
int ret;
if ((pid = fork()) < 0)
exit(1);
if (pid == 0) {
_exit(1234567890);
}
ret = waitid(P_PID, pid, &si, WEXITED);
if (ret < 0)
exit(1);
if (pid != si.si_pid) /* Mac OS X has si.si_pid == 0 */
exit(2);
if (si.si_code != CLD_EXITED) /* Mac OS X has si.si_code == 0 */
exit(3);
if ((si.si_status & 0xFFFF) != (1234567890 & 0xFFFF))
exit(4); /* Should deliver more than 8 bits */
/* Linux only delivers 8 bits */
/* Mac OS X delivers 24 bits */
exit(0);
}],
[ac_cv_func_waitid=yes],
[ac_cv_func_waitid=no])])
if test $ac_cv_func_waitid = yes; then
AC_DEFINE(HAVE_WAITID)
fi])
dnl Checks whether waitpid() is present and supports WNOWAIT.
dnl SVr4 supports it but POSIX does not list it.
dnl Defines HAVE_WNOWAIT_WAITPID on success.
AC_DEFUN([AC_WNOWAIT_WAITPID],
[AC_CHECK_HEADERS(stdlib.h)
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS(wait.h)
AC_HEADER_SYS_WAIT
AC_HEADER_ERRNO_DEF
AC_CACHE_CHECK([for SVr4 compliant waitpid() with WNOWAIT support], ac_cv_wnowait_waitpid,
[AC_TRY_RUN([
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#if defined(HAVE_WAIT_H)
# include <wait.h>
#else
#include <sys/wait.h>
#endif
#include <errno.h>
#ifndef HAVE_ERRNO_DEF
extern int errno;
#endif
int
main()
{
int xstat;
pid_t pid = -1;
int ret;
ret = waitpid(pid, &xstat, WNOWAIT);
if (ret < 0 && errno == EINVAL)
exit(1);
exit(0);
}],
[ac_cv_wnowait_waitpid=yes],
[ac_cv_wnowait_waitpid=no])])
if test $ac_cv_wnowait_waitpid = yes; then
AC_DEFINE(HAVE_WNOWAIT_WAITPID)
fi])
dnl XXXXXXXXXXXXXXXXXX Begin Stolen (but modified) from GNU tar XXXXXXXXXXXXXXXXXXXXXXXXXXX
dnl Changes:
dnl One line has been changed to: [ac_save_CC="${CC-cc}" to default to "'cc"
dnl AC_SYS_LARGEFILE_MACRO_VALUE test moved from AC_FUNC_FSEEKO into AC_SYS_LARGEFILE
dnl Do not call AC_FUNC_FSEEKO because it does not check whether fseeko() is
dnl available on non Large File mode. There are additionoal tests for fseeko()/ftello()
dnl inside the AC_HAVE_LARGEFILES test.
dnl largefile_cc_opt definition added
#serial 18
dnl By default, many hosts won't let programs access large files;
dnl one must use special compiler options to get large-file access to work.
dnl For more details about this brain damage please see:
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
dnl Written by Paul Eggert <eggert@twinsun.com>.
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_TEST_INCLUDES
AC_DEFUN([AC_SYS_LARGEFILE_TEST_INCLUDES],
[[#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
We can't simply "#define LARGE_OFF_T 9223372036854775807",
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
# define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
]])
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY)
AC_DEFUN([AC_SYS_LARGEFILE_MACRO_VALUE],
[AC_CACHE_CHECK([for $1 value needed for large files], $3,
[$3=no
AC_TRY_COMPILE([$5],
[$6],
,
[AC_TRY_COMPILE([#define $1 $2]
[$5]
,
[$6],
[$3=$2])])])
if test "[$]$3" != no; then
AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
fi])
AC_DEFUN([AC_SYS_LARGEFILE],
[AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
AC_CACHE_CHECK([for special C compiler options needed for large files],
ac_cv_sys_largefile_CC,
[ac_cv_sys_largefile_CC=no
largefile_cc_opt=""
if test "$GCC" != yes; then
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
[ac_save_CC="${CC-cc}"
CC="$CC -n32"
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
ac_cv_sys_largefile_CC=' -n32')
CC="$ac_save_CC"])
fi])
if test "$ac_cv_sys_largefile_CC" != no; then
CC="$CC$ac_cv_sys_largefile_CC"
largefile_cc_opt="$ac_cv_sys_largefile_CC"
fi
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
ac_cv_sys_file_offset_bits,
[Number of bits in a file offset, on hosts where this is settable.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
ac_cv_sys_large_files,
[Define for large files, on AIX-style hosts.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
ac_cv_sys_largefile_source,
[Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
[#include <stdio.h>], [return !fseeko;])
fi
])
AC_DEFUN([AC_FUNC_FSEEKO],
[AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
ac_cv_sys_largefile_source,
[Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
[#include <stdio.h>], [return !fseeko;])
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
[ac_cv_func_fseeko=no
AC_TRY_LINK([#include <stdio.h>],
[return fseeko && fseeko (stdin, 0, 0);],
[ac_cv_func_fseeko=yes])])
if test $ac_cv_func_fseeko != no; then
AC_DEFINE(HAVE_FSEEKO, 1,
[Define if fseeko (and presumably ftello) exists and is declared.])
fi])
dnl XXXXXXXXXXXXXXXXXX End Stolen (but modified) from GNU tar XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AC_DEFUN([AC_HAVE_LARGEFILES],
[AC_CACHE_CHECK([if system supports Large Files at all], ac_cv_largefiles,
[AC_TRY_COMPILE([#include <stdio.h>
#include <sys/types.h>],
[
/*
* Check that off_t can represent 2**63 - 1 correctly.
* We can't simply "#define LARGE_OFF_T 9223372036854775807",
* since some C++ compilers masquerading as C compilers
* incorrectly reject 9223372036854775807.
*/
# define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
return !fseeko;
return !ftello;],
[ac_cv_largefiles=yes],
[ac_cv_largefiles=no])])
if test $ac_cv_largefiles = yes; then
AC_DEFINE(HAVE_LARGEFILES)
fi])
dnl Checks for whether fseeko() is available in non large file mode
dnl and whether there is a prototype for fseeko()
dnl Defines HAVE_FSEEKO on success.
AC_DEFUN([AC_SMALL_FSEEKO],
[AC_CACHE_CHECK([for fseeko()], ac_cv_func_fseeko,
[AC_TRY_LINK([#include <stdio.h>],
[return !fseeko;],
[ac_cv_func_fseeko=yes],
[ac_cv_func_fseeko=no])])
if test $ac_cv_func_fseeko = yes; then
AC_DEFINE(HAVE_FSEEKO)
fi])
dnl Checks for whether ftello() is available in non large file mode
dnl and whether there is a prototype for ftello()
dnl Defines HAVE_FTELLO on success.
AC_DEFUN([AC_SMALL_FTELLO],
[AC_CACHE_CHECK([for ftello()], ac_cv_func_ftello,
[AC_TRY_LINK([#include <stdio.h>],
[return !ftello;],
[ac_cv_func_ftello=yes],
[ac_cv_func_ftello=no])])
if test $ac_cv_func_ftello = yes; then
AC_DEFINE(HAVE_FTELLO)
fi])
dnl Checks if compiler allows dynamic arrays.
dnl Defines HAVE_DYN_ARRAYS on success.
AC_DEFUN([AC_DYN_ARRAYS],
[AC_CACHE_CHECK([if compiler allows dynamic arrays], ac_cv_dyn_arrays,
[AC_TRY_COMPILE([],
[extern int __aa(); int len = __aa(); char some_array[len];],
[ac_cv_dyn_arrays=yes],
[ac_cv_dyn_arrays=no])])
if test $ac_cv_dyn_arrays = yes; then
AC_DEFINE(HAVE_DYN_ARRAYS)
fi])
dnl Checks if the compiler allows #pragma weak
dnl Defines HAVE_PRAGMA_WEAK on success.
AC_DEFUN([AC_PRAGMA_WEAK],
[AC_CACHE_CHECK([if compiler allows pragma weak], ac_cv_pragma_weak,
[AC_TRY_LINK([extern int test2();
#pragma weak test2 = test1
int test1() {return 0;}],
[return test2();],
[ac_cv_pragma_weak=yes],
[ac_cv_pragma_weak=no])])
if test $ac_cv_pragma_weak = yes; then
AC_DEFINE(HAVE_PRAGMA_WEAK)
fi])
dnl Checks if Linux include file linux/ext2_fs.h is broken
dnl Defines HAVE_BROKEN_LINUX_EXT2_FS_H on success.
AC_DEFUN([AC_BROKEN_LINUX_EXT2_FS_H],
[AC_CACHE_CHECK([if Linux include file linux/ext2_fs.h is broken], ac_cv_broken_linux_ext2_fs_h,
[AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <linux/ext2_fs.h>
#endif],
[],
[ac_cv_broken_linux_ext2_fs_h=no],
[ac_cv_broken_linux_ext2_fs_h=yes])])
if test $ac_cv_broken_linux_ext2_fs_h = yes; then
AC_DEFINE(HAVE_BROKEN_LINUX_EXT2_FS_H)
fi])
dnl Checks if Linux include file /usr/src/linux/include/linux/ext2_fs.h is broken
dnl Defines HAVE_BROKEN_SRC_LINUX_EXT2_FS_H on success.
AC_DEFUN([AC_BROKEN_SRC_LINUX_EXT2_FS_H],
[AC_CACHE_CHECK([if Linux include file /usr/src/linux/include/linux/ext2_fs.h is broken], ac_cv_broken_src_linux_ext2_fs_h,
[___CPPFLAGS=$CPPFLAGS; CPPFLAGS="-I/usr/src/linux/include $CPPFLAGS"
AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <linux/ext2_fs.h>
#endif],
[],
[ac_cv_broken_src_linux_ext2_fs_h=no],
[ac_cv_broken_src_linux_ext2_fs_h=yes])])
CPPFLAGS=$___CPPFLAGS
if test $ac_cv_broken_src_linux_ext2_fs_h = yes; then
AC_DEFINE(HAVE_BROKEN_SRC_LINUX_EXT2_FS_H)
fi])
dnl Checks if Linux include file scsi/scsi.h is broken
dnl Defines HAVE_BROKEN_SCSI_SCSI_H on success.
AC_DEFUN([AC_BROKEN_SCSI_SCSI_H],
[AC_CACHE_CHECK([if Linux include file scsi/scsi.h is broken], ac_cv_broken_scsi_scsi_h,
[AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <scsi/scsi.h>
#endif],
[],
[ac_cv_broken_scsi_scsi_h=no],
[ac_cv_broken_scsi_scsi_h=yes])])
if test $ac_cv_broken_scsi_scsi_h = yes; then
AC_DEFINE(HAVE_BROKEN_SCSI_SCSI_H)
fi])
dnl Checks if Linux include file /usr/src/linux/include/scsi/scsi.h is broken
dnl Defines HAVE_BROKEN_SRC_SCSI_SCSI_H on success.
AC_DEFUN([AC_BROKEN_SRC_SCSI_SCSI_H],
[AC_CACHE_CHECK([if Linux include file /usr/src/linux/include/scsi/scsi.h is broken], ac_cv_broken_src_scsi_scsi_h,
[___CPPFLAGS=$CPPFLAGS; CPPFLAGS="-I/usr/src/linux/include $CPPFLAGS"
AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <scsi/scsi.h>
#endif],
[],
[ac_cv_broken_src_scsi_scsi_h=no],
[ac_cv_broken_src_scsi_scsi_h=yes])])
CPPFLAGS=$___CPPFLAGS
if test $ac_cv_broken_src_scsi_scsi_h = yes; then
AC_DEFINE(HAVE_BROKEN_SRC_SCSI_SCSI_H)
fi])
dnl Checks if Linux include file scsi/sg.h is broken
dnl Defines HAVE_BROKEN_SCSI_SG_H on success.
AC_DEFUN([AC_BROKEN_SCSI_SG_H],
[AC_CACHE_CHECK([if Linux include file scsi/sg.h is broken], ac_cv_broken_scsi_sg_h,
[AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <sys/types.h>
#include <scsi/sg.h>
#endif],
[],
[ac_cv_broken_scsi_sg_h=no],
[ac_cv_broken_scsi_sg_h=yes])])
if test $ac_cv_broken_scsi_sg_h = yes; then
AC_DEFINE(HAVE_BROKEN_SCSI_SG_H)
fi])
dnl Checks if Linux include file /usr/src/linux/include/scsi/sg.h is broken
dnl Defines HAVE_BROKEN_SRC_SCSI_SG_H on success.
AC_DEFUN([AC_BROKEN_SRC_SCSI_SG_H],
[AC_CACHE_CHECK([if Linux include file /usr/src/linux/include/scsi/sg.h is broken], ac_cv_broken_src_scsi_sg_h,
[___CPPFLAGS=$CPPFLAGS; CPPFLAGS="-I/usr/src/linux/include $CPPFLAGS"
AC_TRY_COMPILE([
#if defined(__linux__) || defined(__linux) || defined(linux)
#include <sys/types.h>
#include <scsi/sg.h>
#endif],
[],
[ac_cv_broken_src_scsi_sg_h=no],
[ac_cv_broken_src_scsi_sg_h=yes])])
CPPFLAGS=$___CPPFLAGS
if test $ac_cv_broken_src_scsi_sg_h = yes; then
AC_DEFINE(HAVE_BROKEN_SRC_SCSI_SG_H)
fi])
AC_DEFUN(AC_PROG_SHELL_BROKEN_E,
[AC_CACHE_CHECK(whether handling of /bin/sh -ce 'command' is broken, ac_cv_prog_shell_broken_e,
[if AC_TRY_COMMAND(/bin/sh -ce 'if false; true; then echo yes; else echo no; fi') | egrep yes >/dev/null 2>&1; then
ac_cv_prog_shell_broken_e=no
else
ac_cv_prog_shell_broken_e=yes
fi
if test $ac_cv_prog_shell_broken_e = yes; then
AC_DEFINE(HAVE_PROG_SHELL_BROKEN_E)
fi])])
dnl Checks if a file exists
dnl Do not use test -r <file> as bash on Haiku returns 0 for test -r /dev/stdin
dnl even though /dev/stdin does not exist.
dnl
dnl Defines HAVE_<PATH> on success.
dnl AC_STAT_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
AC_DEFUN([AC_STAT_FILE],
[AC_REQUIRE([AC_PROG_CC])
dnl Do the transliteration at runtime so arg 1 can be a shell variable.
ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(ac_cv_file_$ac_safe,
[AC_TRY_RUN([
#include <sys/types.h>
#include <sys/stat.h>
int
main()
{
struct stat sb;
exit(stat("$1", &sb) < 0);
}],
[eval ac_cv_file_$ac_safe=yes],
[eval ac_cv_file_$ac_safe=no])])
if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
ifelse([$3], , , [$3])
fi
])
dnl AC_STAT_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
AC_DEFUN(AC_STAT_FILES,
[for ac_file in $1
do
AC_STAT_FILE($ac_file,
[changequote(, )dnl
ac_tr_file=HAVE_`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
changequote([, ])dnl
AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
done
])