1 dnl aclocal.m4 -- custom autoconf macros for various purposes
2 dnl Updated for Autoconf v2
4 dnl ******** save/restore stuff **********
9 save_CXXFLAGS=$CXXFLAGS
12 define(AC_KNFSD_RESTORE,
13 [LDFLAGS=$save_LDFLAGS
15 CXXFLAGS=$save_CXXFLAGS
19 dnl *********** GNU libc 2 ***************
21 [AC_MSG_CHECKING(for GNU libc2)
22 AC_CACHE_VAL(knfsd_cv_glibc2,
25 #if !defined(__GLIBC__)
27 #endif], knfsd_cv_glibc2=yes, knfsd_cv_glibc2=no)])
28 AC_MSG_RESULT($knfsd_cv_glibc2)
29 if test $knfsd_cv_glibc2 = yes; then
30 CFLAGS="$CFLAGS -D_GNU_SOURCE"
31 CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE"
35 dnl ************* egcs *******************
37 [AC_MSG_CHECKING(for egcs)
38 AC_CACHE_VAL(knfsd_cv_prog_EGCS,
39 [case `$CC --version 2>/dev/null` in
41 knfsd_cv_prog_EGCS=yes;;
43 knfsd_cv_prog_EGCS=no;;
46 AC_MSG_RESULT($knfsd_cv_prog_EGCS)
47 test $knfsd_cv_prog_EGCS = yes && AC_DEFINE(HAVE_EGCS)
49 dnl *********** sizeof(dev_t) **************
50 dnl ** We have to kludge this rather than use AC_CHECK_SIZEOF because
51 dnl ** we have to include sys/types.h. Ugh.
53 [AC_MSG_CHECKING(size of dev_t)
54 AC_CACHE_VAL(ac_cv_sizeof_dev_t,
57 #include <sys/types.h>
60 FILE *f=fopen("conftestval", "w");
62 fprintf(f, "%d\n", sizeof(dev_t));
64 }], ac_cv_sizeof_dev_t=`cat conftestval`, ac_cv_sizeof_dev_t=0)])
65 AC_MSG_RESULT($ac_cv_sizeof_dev_t)
66 AC_DEFINE(SIZEOF_DEV_T,$ac_cv_sizeof_dev_t)
68 dnl *********** sizeof(xxx_t) **************
69 dnl ** Overwrite the AC_CHECK_SIZEOF macro as we must include sys/types.h
70 define([AC_CHECK_SIZEOF],
71 [changequote(<<, >>)dnl
72 define(<<AC_TYPE_NAME>>,translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
73 define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
75 AC_MSG_CHECKING(size of $1)
76 AC_CACHE_VAL(AC_CV_NAME,
79 #include <sys/types.h>
82 FILE *f=fopen("conftestval", "w");
84 fprintf(f, "%d\n", sizeof($1));
86 }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0)])
87 AC_MSG_RESULT($AC_CV_NAME)
88 AC_DEFINE_UNQUOTED(AC_TYPE_NAME,$AC_CV_NAME)
89 undefine([AC_TYPE_NAME])dnl
90 undefine([AC_CV_NAME])dnl
92 dnl *********** BSD vs. POSIX signal handling **************
93 define([AC_BSD_SIGNALS],
94 [AC_MSG_CHECKING(for BSD signal semantics)
95 AC_CACHE_VAL(knfsd_cv_bsd_signals,
101 static int counter = 0;
102 static RETSIGTYPE handler(int num) { counter++; }
107 if ((s = fork()) < 0) return 1;
109 if (wait(&s) < 0) return 1;
110 return WIFSIGNALED(s)? 1 : 0;
113 signal(SIGHUP, handler);
114 kill(getpid(), SIGHUP); kill(getpid(), SIGHUP);
115 return (counter == 2)? 0 : 1;
117 ], knfsd_cv_bsd_signals=yes, knfsd_cv_bsd_signals=no)]) dnl
118 AC_MSG_RESULT($knfsd_cv_bsd_signals)
119 test $knfsd_cv_bsd_signals = yes && AC_DEFINE(HAVE_BSD_SIGNALS)