acsfs.m4
来自「基于DHT的对等协议」· M4 代码 · 共 2,148 行 · 第 1/4 页
M4
2,148 行
fi)if test $sfs_cv_accrights = yes; then AC_DEFINE(HAVE_ACCRIGHTS, 1, Define if msghdr has msg_accrights field for passing file descriptors.)fiif test $sfs_cv_cmsghdr = yes; then AC_DEFINE(HAVE_CMSGHDR, 1, Define if system has cmsghdr structure for passing file descriptors.)fi])dnldnl Check for sa_len in struct sockaddrsdnlAC_DEFUN([SFS_CHECK_SA_LEN],[AC_CACHE_CHECK(for sa_len in struct sockaddr, sfs_cv_sa_len,AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct sockaddr sa;sa.sa_len = 0;], sfs_cv_sa_len=yes, sfs_cv_sa_len=no))if test $sfs_cv_sa_len = yes; then AC_DEFINE(HAVE_SA_LEN, 1, Define if struct sockaddr has sa_len field.)fi])dnldnl Check for sockaddr_storagednlAC_DEFUN([SFS_CHECK_SOCKADDR_STORAGE],[SFS_CHECK_TYPE(struct sockaddr_storage)AC_CACHE_CHECK(for __ss_len in sockaddr_storage, sfs_cv_ss_len_underscores,AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct sockaddr_storage ss;ss.__ss_len = 0;], sfs_cv_ss_len_underscores=yes, sfs_cv_ss_len_underscores=no))if test $sfs_cv_ss_len_underscores = yes; then AC_DEFINE(HAVE_SS_LEN_UNDERSCORES, 1, Define if struct sockaddr_storage has __ss_len field, not ss_len)fi])dnldnl Check something about the nfs_args fielddnlAC_DEFUN([SFS_TRY_NFSARG_FIELD],[AC_TRY_COMPILE([#include "${srcdir}/nfsconf.h"],[struct nfs_args na;$1;], $2, $3)])dnldnl Check a particular field in nfs_argsdnlAC_DEFUN([SFS_CHECK_NFSMNT_FIELD],[AC_CACHE_CHECK(for $1 in nfs_args structure, sfs_cv_nfsmnt_$1,SFS_TRY_NFSARG_FIELD(na.$1, sfs_cv_nfsmnt_$1=yes, sfs_cv_nfsmnt_$1=no))if test $sfs_cv_nfsmnt_$1 = yes; then AC_DEFINE(HAVE_NFSMNT_[]translit($1, [a-z], [A-Z]), 1, Define if the nfs_args structure has a $1 field.)fi])dnldnl Check if nfs_args hostname field is an arraydnlAC_DEFUN([SFS_CHECK_NFSARG_HOSTNAME_ARRAY],[AC_CACHE_CHECK(if nfs_args hostname field is an array, sfs_cv_nfs_hostarray, SFS_TRY_NFSARG_FIELD(na.hostname = 0, sfs_cv_nfs_hostarray=no, sfs_cv_nfs_hostarray=yes))if test $sfs_cv_nfs_hostarray = yes; then AC_DEFINE(HAVE_NFSARG_HOSTNAME_ARRAY, 1, [The hostname field of nfs_arg is an array])fi])dnldnl Check if addr field is a pointer or notdnlAC_DEFUN([SFS_CHECK_NFSARG_ADDR_PTR],[AC_CHECK_HEADERS(tiuser.h)AC_CACHE_CHECK(if nfs_args addr field is a pointer, sfs_cv_nfsmnt_addr_ptr, SFS_TRY_NFSARG_FIELD(na.addr = (void *) 0, sfs_cv_nfsmnt_addr_ptr=yes, sfs_cv_nfsmnt_addr_ptr=no))if test $sfs_cv_nfsmnt_addr_ptr = yes; then AC_DEFINE(HAVE_NFSARG_ADDR_PTR, 1, [The addr field of nfs_arg is a pointer]) AC_CACHE_CHECK(if nfs_args addr is a netbuf *, sfs_cv_nfsmnt_addr_netbuf, SFS_TRY_NFSARG_FIELD(struct netbuf nb; *na.addr = nb, sfs_cv_nfsmnt_addr_netbuf=yes, sfs_cv_nfsmnt_addr_netbuf=no)) if test $sfs_cv_nfsmnt_addr_netbuf = yes; then AC_DEFINE(HAVE_NFSARG_ADDR_NETBUF, 1, [If the nfs_arg addr field is a netbuf pointer]) fifi])dnldnl Check for SVR4-like nfs_fh3 structurednlAC_DEFUN([SFS_CHECK_FH3_SVR4],[if test "$sfs_cv_nfsmnt_fhsize" != yes; then AC_CACHE_CHECK(for SVR4-like struct nfs_fh3, sfs_cv_fh3_svr4, AC_TRY_COMPILE([#include "${srcdir}/nfsconf.h"], [ struct nfs_fh3 fh; switch (0) case 0: case sizeof (fh.fh3_u.data) == 64:; ], sfs_cv_fh3_svr4=yes, sfs_cv_fh3_svr4=no)) if test $sfs_cv_fh3_svr4 = yes; then AC_DEFINE(HAVE_SVR4_FH3, 1, [The the fh field of the nfs_arg structure points to an SVR4 nfs_fh3]) fifi])dnldnl Check for 2 argument unmountdnlAC_DEFUN([SFS_CHECK_UNMOUNT_FLAGS],[AC_CACHE_CHECK(for a 2 argument unmount, sfs_cv_umount_flags,AC_TRY_COMPILE([#include <sys/param.h>#include <sys/mount.h>],[#ifdef HAVE_UNMOUNTunmount#else /* !HAVE_UNMOUNT */umount#endif /* !HAVE_UNMOUNT */ (0);], sfs_cv_umount_flags=no, sfs_cv_umount_flags=yes))if test $sfs_cv_umount_flags = yes; then AC_DEFINE(UNMOUNT_FLAGS, 1, Define if the unmount system call has 2 arguments.)else AC_CHECK_FUNCS(umount2)fi])dnldnl Check if we can find the nfs_args structurednlAC_DEFUN([SFS_CHECK_NFSMNT],[AC_CHECK_FUNCS(vfsmount unmount)AC_CHECK_HEADERS(nfs/nfsproto.h, [], [],[#include <sys/types.h>#include <sys/param.h>#include <sys/mount.h>])need_nfs_nfs_h=noAC_EGREP_HEADER(nfs_args, sys/mount.h,, AC_EGREP_HEADER(nfs_args, nfs/mount.h, AC_DEFINE(NEED_NFS_MOUNT_H, 1, [The nfs_args structure is in <nfs/mount.h>])) AC_EGREP_HEADER(nfs_args, nfs/nfsmount.h, AC_DEFINE(NEED_NFS_NFSMOUNT_H, 1, [The nfs_args structure is in <nfs/nfsmount.h])) AC_EGREP_HEADER(nfs_args, nfsclient/nfs.h, AC_DEFINE(NEED_NFSCLIENT_NFS_H, 1, [The nfs_args structure is in <nfsclient/nfs.h>])) AC_EGREP_HEADER(nfs_args, nfsclient/nfsargs.h, AC_DEFINE(NEED_NFSCLIENT_NFSARGS_H, 1, [The nfs_args structure is in <nfsclient/nfsargs.h>])) AC_EGREP_HEADER(nfs_args, nfs/nfs.h, AC_DEFINE(NEED_NFS_NFS_H, 1, [The nfs_args structure is in <nfs/nfs.h>]) need_nfs_nfs_h=yes))AC_CACHE_CHECK(for nfs_args mount structure, sfs_cv_nfsmnt_ok, SFS_TRY_NFSARG_FIELD(, sfs_cv_nfsmnt_ok=yes, sfs_cv_nfsmnt_ok=no))if test $sfs_cv_nfsmnt_ok = no; then AC_MSG_ERROR([Could not find NFS mount argument structure!])fiif test "$need_nfs_nfs_h" = no; then AC_EGREP_HEADER(nfs_fh3, nfs/nfs.h, AC_DEFINE(NEED_NFS_NFS_H, 1, [The nfs_args structure is in <nfs/nfs.h>]) need_nfs_nfs_h=yes)fiAC_CHECK_HEADERS(linux/nfs2.h)SFS_CHECK_NFSMNT_FIELD(addrlen)SFS_CHECK_NFSMNT_FIELD(sotype)SFS_CHECK_NFSMNT_FIELD(proto)SFS_CHECK_NFSMNT_FIELD(fhsize)SFS_CHECK_NFSMNT_FIELD(fd)dnl Check whether we have Linux 2.2 NFS V3 mount structureSFS_CHECK_NFSMNT_FIELD(old_root)dnl Check whether file handle is named "root" or "fh"SFS_CHECK_NFSMNT_FIELD(root)SFS_CHECK_NFSMNT_FIELD(fh)dnl ksh apparently cannot handle this as a compound test.if test "$sfs_cv_nfsmnt_root" = "no"; then if test "$sfs_cv_nfsmnt_fh" = "no"; then AC_MSG_ERROR([Could not find the nfs_args file handle field!]) fifiAC_CHECK_HEADERS(sys/mntent.h)SFS_CHECK_FH3_SVR4if test "$sfs_cv_nfsmnt_fh" = yes; then if test "$sfs_cv_fh3_svr4" = yes -o "$sfs_cv_nfsmnt_fhsize" = yes; then AC_DEFINE(HAVE_NFS_V3, 1, [If the system supports NFS 3]) fielif test "$sfs_cv_nfsmnt_old_root" = yes; then AC_DEFINE(HAVE_NFS_V3, 1, [If the system supports NFS 3])fiSFS_CHECK_NFSARG_HOSTNAME_ARRAYSFS_CHECK_NFSARG_ADDR_PTRSFS_CHECK_UNMOUNT_FLAGS])dnldnl Use -ldb only if we need it.dnlAC_DEFUN([SFS_FIND_DB],[AC_CHECK_FUNC(dbopen)if test $ac_cv_func_dbopen = no; then AC_CHECK_LIB(db, dbopen) if test $ac_cv_lib_db_dbopen = no; then AC_MSG_ERROR([Could not find library for dbopen!]) fifi])dnldnl Check something about the stat structurednlAC_DEFUN([SFS_TRY_STAT_FIELD],[AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat s;$1;], $2, $3)])dnldnl Check for a particular field in statdnlAC_DEFUN([SFS_CHECK_STAT_FIELD],[AC_CACHE_CHECK(for $1 in stat structure, sfs_cv_stat_$1,SFS_TRY_STAT_FIELD(s.$1, sfs_cv_stat_$1=yes, sfs_cv_stat_$1=no))if test $sfs_cv_stat_$1 = yes; then AC_DEFINE(SFS_HAVE_STAT_[]translit($1, [a-z], [A-Z]), 1, Define if the stat structure has a $1 field.)fi])dnldnl Check whether we can get away with large socket buffers.dnlAC_DEFUN([SFS_CHECK_SOCK_BUF],[AC_CACHE_CHECK(whether socket buffers > 64k are allowed, sfs_cv_large_sock_buf, AC_TRY_RUN([#include <sys/types.h>#include <sys/socket.h>intmain() { int bigbuf = 0x11000; int s = socket(AF_INET, SOCK_STREAM, 0); if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *)&bigbuf, sizeof(bigbuf))<0) exit(1); exit(0);}], sfs_cv_large_sock_buf=yes, sfs_cv_large_sock_buf=no, sfs_cv_large_sock_buf=no))if test $sfs_cv_large_sock_buf = yes; then AC_DEFINE(SFS_ALLOW_LARGE_BUFFER, 1, Define if SO_SNDBUF/SO_RCVBUF can exceed 64K.)fi])dnldnl Test to see if we can bind a port with SO_REUSEADDR whendnl there is a connected TCP socket using the same port number,dnl but the connected socket does not have SO_REUSEADDR set.dnlAC_DEFUN([SFS_CHECK_BSD_REUSEADDR],[AC_CACHE_CHECK(for BSD SO_REUSEADDR semantics, sfs_cv_bsd_reuseaddr,[AC_RUN_IFELSE([changequote changequote([[,]])[[#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include "confdefs.h"#ifndef HAVE_SOCKLEN_T# define socklen_t int#endif /* !HAVE_SOCKLEN_T */#ifndef bzero# define bzero(a,b) memset((a), 0, (b))#endif /* !bzero */intinetsocket (unsigned long addr, int port, int *portp){ int s; struct sockaddr_in sin; int n = 1; bzero (&sin, sizeof (sin)); sin.sin_family = AF_INET; sin.sin_port = htons (port); sin.sin_addr.s_addr = htonl (addr); s = socket (AF_INET, SOCK_STREAM, 0); if (s < 0) { perror ("socket"); exit (2); } if (port && setsockopt (s,SOL_SOCKET, SO_REUSEADDR, &n, sizeof n) < 0) { perror ("SO_REUSEADDR"); exit (2); } if (bind (s, (struct sockaddr *) &sin, sizeof (sin)) < 0) return -1; if (portp) { socklen_t sinlen = sizeof (sin); getsockname (s, (struct sockaddr *) &sin, &sinlen); *portp = ntohs (sin.sin_port); } return s;}intconnectlocal (int s, int dport){ struct sockaddr_in sin; bzero (&sin, sizeof (sin)); sin.sin_family = AF_INET; sin.sin_port = htons (dport); sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK); return connect (s, (struct sockaddr *) &sin, sizeof (sin));}voidmake_async (int s){ int n; if ((n = fcntl (s, F_GETFL)) < 0 || fcntl (s, F_SETFL, n | O_NONBLOCK) < 0) { perror ("fcntl"); exit (2); }}intmain (int argc, char **argv){ int s1, s1p; int c1, c1p; int c2; s1 = inetsocket (INADDR_LOOPBACK, 0, &s1p); listen (s1, 5); c1 = inetsocket (INADDR_LOOPBACK, 0, &c1p); make_async (c1); if (connectlocal (c1, s1p) < 0) { if (errno == EINPROGRESS) { struct sockaddr_in sin; socklen_t sinlen = sizeof (sin); sin.sin_family = AF_INET; accept (s1, (struct sockaddr *) &sin, &sinlen); } else { perror ("connect"); exit (2); } } c2 = inetsocket (INADDR_ANY, c1p, NULL); exit (c2 < 0);}]]changequote([,])], sfs_cv_bsd_reuseaddr=yes, sfs_cv_bsd_reuseaddr=no, sfs_cv_bsd_reuseaddr=no)])if test "$sfs_cv_bsd_reuseaddr" = yes; then AC_DEFINE(HAVE_BSD_REUSEADDR, 1, Define if SO_REUSEADDR allows same user to bind non-SO_REUSEADDR port)fi])dnldnl Find pthreadsdnlAC_DEFUN([SFS_FIND_PTHREADS],[AC_ARG_WITH(pthreads,--with-pthreads=DIR Specify location of pthreads)ac_save_CFLAGS=$CFLAGSac_save_LIBS=$LIBSdirs="$with_pthreads ${prefix} ${prefix}/pthreads"dirs="$dirs /usr/local /usr/local/pthreads"AC_CACHE_CHECK(for pthread.h, sfs_cv_pthread_h,[for dir in " " $dirs; do iflags="-I${dir}/include" CFLAGS="${ac_save_CFLAGS} $iflags" AC_TRY_COMPILE([#include <pthread.h>], 0, sfs_cv_pthread_h="${iflags}"; break)done])if test -z "${sfs_cv_pthread_h+set}"; then AC_MSG_ERROR("Can\'t find pthread.h anywhere")fiAC_CACHE_CHECK(for libpthread, sfs_cv_libpthread,[for dir in "" " " $dirs; do case $dir in "") lflags=" " ;; " ") lflags="-lpthread" ;; *) lflags="-L${dir}/lib -lpthread" ;; esac LIBS="$ac_save_LIBS $lflags" AC_TRY_LINK([#include <pthread.h>], pthread_create (0, 0, 0, 0);, sfs_cv_libpthread=$lflags; break)done])if test -z ${sfs_cv_libpthread+set}; then AC_MSG_ERROR("Can\'t find libpthread anywhere")fiCFLAGS=$ac_save_CFLAGSCPPFLAGS="$CPPFLAGS $sfs_cv_pthread_h"LIBS="$ac_save_LIBS $sfs_cv_libpthread"])dnldnl Find GMPdnlAC_DEFUN([SFS_GMP],[AC_ARG_WITH(gmp,--with-gmp[[[=/usr/local]]] specify path for gmp)AC_SUBST(GMP_DIR)AC_SUBST(LIBGMP)AC_MSG_CHECKING([for GMP library])if test "$with_gmp" != "no"; then ac_save_CPPFLAGS=$CPPFLAGS ac_save_LIBS=$LIBS cdirs="${with_gmp}/include ${prefix}/include" dirs="$cdirs /usr/local/include /usr/include" AC_CACHE_CHECK(for gmp.h, sfs_cv_gmp_h, [for dir in " " $dirs; do case $dir in " ") iflags=" " ;; *) iflags="-I${dir}" ;; esac CPPFLAGS="${ac_save_CPPFLAGS} $iflags" AC_TRY_COMPILE([#include "gmp.h"], 0, sfs_cv_gmp_h="${iflags}"; break) done if test "$sfs_cv_gmp_h" = " "; then sfs_cv_gmp_h="yes" fi ]) if test "$sfs_cv_gmp_h" = "yes"; then sfs_cv_gmp_h=" " fi if test "${sfs_cv_gmp_h+set}"; then cdirs="${with_gmp}/lib ${prefix}/lib" dirs="$cdirs /usr/local/lib /usr/lib" AC_CACHE_CHECK(for libgmp, sfs_cv_libgmp, [for dir in "" " " $dirs; do case $dir in "") lflags=" "; Lflags="" ;; " ") lflags="-lgmp"; Lflags="" ;; *) Lflags="-L$dir"; lflags="-lgmp" ;; esac LIBS="$ac_save_LIBS $Lflags $lflags" AC_TRY_LINK([#include "gmp.h"], MP_INT i; mpz_init (&i);, sfs_cv_libgmp=$lflags; \ LDFLAGS="$LDFLAGS $Lflags" ; \ LIBGMP="$lflags" ; break) done if test -z ${sfs_cv_libgmp+set}; then AC_MSG_ERROR([Could not find gmp library]) sfs_cv_libgmp="no" fi ]) LIBS="$ac_save_LIBS" else AC_MSG_ERROR([Could not find gmp.h header]) fifiac_save_CFLAGS="$CFLAGS"AC_CACHE_CHECK(for overloaded C++ operators in gmp.h, sfs_cv_gmp_cxx_ops, AC_EGREP_CPP(operator<<,[#define __cplusplus 1#include <gmp.h>], sfs_cv_gmp_cxx_ops=yes, sfs_cv_gmp_cxx_ops=no) )test "$sfs_cv_gmp_cxx_ops" = "yes" && AC_DEFINE([HAVE_GMP_CXX_OPS], 1, [Define if gmp.h overloads C++ operators])AC_CACHE_CHECK(for mpz_xor, sfs_cv_have_mpz_xor,unset sfs_cv_have_mpz_xorAC_EGREP_HEADER(mpz_xor, [gmp.h], sfs_cv_have_mpz_xor=yes))test "$sfs_cv_have_mpz_xor" && AC_DEFINE([HAVE_MPZ_XOR], 1, [Define if you have mpz_xor in your GMP library.])AC_CACHE_CHECK(size of GMP mp_limb_t, sfs_cv_mp_limb_t_size,sfs_cv_mp_limb_t_size=nofor size in 2 4 8; do AC_TRY_COMPILE([#include <gmp.h>], [switch (0) case 0: case (sizeof (mp_limb_t) == $size):;], sfs_cv_mp_limb_t_size=$size; break)done)CFLAGS="$ac_save_CFLAGS"test "$sfs_cv_mp_limb_t_size" = no \ && AC_MSG_ERROR(Could not determine size of mp_limb_t.)AC_DEFINE_UNQUOTED(GMP_LIMB_SIZE, $sfs_cv_mp_limb_t_size, Define to be the size of GMP's mp_limb_t type.)])dnl dnldnl dnl Find BekeleyDB 3dnl dnldnl ac_defun(SFS_DB3,dnl [AC_ARG_WITH(db3,dnl --with-db3[[=/usr/local]] specify path for BerkeleyDB-3)dnl AC_SUBST(DB3_DIR)dnl AC_CONFIG_SUBDIRS($DB3_DIR)dnl AC_SUBST(DB3_LIB)dnl unset DB3_LIBdnl dnl DB3_DIR=`cd $srcdir && echo db-3.*/dist/`dnl if test -d "$srcdir/$DB3_DIR"; thendnl DB3_DIR=`echo $DB3_DIR | sed -e 's!/$!!'`dnl elsednl unset DB3_DIRdnl fidnl dnl if test ! "${with_db3+set}"; thendnl if test "$DB3_DIR"; thendnl with_db3=yesdnl elsednl with_db3=nodnl fidnl fidnl dnl if test "$with_db3" != no; thendnl AC_MSG_CHECKING([for DB3 library])dnl if test "$DB3_DIR" -a "$with_db3" = yes; thendnl CPPFLAGS="$CPPFLAGS "'-I$(top_builddir)/'"$DB3_DIR"dnl DB3_LIB='-L$(top_builddir)/'"$DB3_DIR -ldb"dnl AC_MSG_RESULT([using distribution in $DB3_DIR subdirectory])
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?