dnl # NTVFS Server subsystem ################################################# # check for sendfile support with_sendfile_support=yes AC_MSG_CHECKING(whether to check to support sendfile) AC_ARG_WITH(sendfile-support, [ --with-sendfile-support Check for sendfile support (default=yes)], [ case "$withval" in yes) AC_MSG_RESULT(yes); case "$host_os" in *linux*) AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[ AC_TRY_LINK([#include ], [\ int tofd, fromfd; off64_t offset; size_t total; ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total); ], samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)]) AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[ AC_TRY_LINK([#include ], [\ int tofd, fromfd; off_t offset; size_t total; ssize_t nwritten = sendfile(tofd, fromfd, &offset, total); ], samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) # Try and cope with broken Linux sendfile.... AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[ AC_TRY_LINK([\ #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) #undef _FILE_OFFSET_BITS #endif #include ], [\ int tofd, fromfd; off_t offset; size_t total; ssize_t nwritten = sendfile(tofd, fromfd, &offset, total); ], samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)]) if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available]) AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used]) else AC_MSG_RESULT(no); fi ;; *freebsd*) AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[ AC_TRY_LINK([\ #include #include #include #include ], [\ int fromfd, tofd, ret, total=0; off_t offset, nwritten; struct sf_hdtr hdr; struct iovec hdtrl; hdr.headers = &hdtrl; hdr.hdr_cnt = 1; hdr.trailers = NULL; hdr.trl_cnt = 0; hdtrl.iov_base = NULL; hdtrl.iov_len = 0; ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0); ], samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available]) AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) else AC_MSG_RESULT(no); fi ;; *hpux*) AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[ AC_TRY_LINK([\ #include #include ], [\ int fromfd, tofd; size_t total=0; struct iovec hdtrl[2]; ssize_t nwritten; off64_t offset; hdtrl[0].iov_base = 0; hdtrl[0].iov_len = 0; nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0); ], samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)]) if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available]) AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) else AC_MSG_RESULT(no); fi AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[ AC_TRY_LINK([\ #include #include ], [\ int fromfd, tofd; size_t total=0; struct iovec hdtrl[2]; ssize_t nwritten; off_t offset; hdtrl[0].iov_base = 0; hdtrl[0].iov_len = 0; nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0); ], samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) else AC_MSG_RESULT(no); fi ;; *solaris*) AC_CHECK_LIB(sendfile,sendfilev) AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[ AC_TRY_LINK([\ #include ], [\ int sfvcnt; size_t xferred; struct sendfilevec vec[2]; ssize_t nwritten; int tofd; sfvcnt = 2; vec[0].sfv_fd = SFV_FD_SELF; vec[0].sfv_flag = 0; vec[0].sfv_off = 0; vec[0].sfv_len = 0; vec[1].sfv_fd = 0; vec[1].sfv_flag = 0; vec[1].sfv_off = 0; vec[1].sfv_len = 0; nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred); ], samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)]) if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available]) AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) else AC_MSG_RESULT(no); fi AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[ AC_TRY_LINK([\ #include ], [\ int sfvcnt; size_t xferred; struct sendfilevec vec[2]; ssize_t nwritten; int tofd; sfvcnt = 2; vec[0].sfv_fd = SFV_FD_SELF; vec[0].sfv_flag = 0; vec[0].sfv_off = 0; vec[0].sfv_len = 0; vec[1].sfv_fd = 0; vec[1].sfv_flag = 0; vec[1].sfv_off = 0; vec[1].sfv_len = 0; nwritten = sendfilev(tofd, vec, sfvcnt, &xferred); ], samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)]) if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available]) AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available]) AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support]) else AC_MSG_RESULT(no); fi ;; *) ;; esac ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(yes) ) # end check for sendfile support ################################################# SMB_MODULE(ntvfs_cifs, NTVFS, STATIC, [ntvfs/cifs/vfs_cifs.o]) SMB_MODULE(ntvfs_simple, NTVFS, STATIC, [ntvfs/simple/vfs_simple.o], [ntvfs/simple/svfs_util.o]) SMB_MODULE(ntvfs_print, NTVFS, STATIC, [ntvfs/print/vfs_print.o]) SMB_MODULE(ntvfs_ipc, NTVFS, STATIC, [ntvfs/ipc/vfs_ipc.o]) SMB_MODULE(ntvfs_posix, NTVFS, STATIC, [ntvfs/posix/vfs_posix.o]) SMB_MODULE(ntvfs_nbench, NTVFS, STATIC, [ntvfs/nbench/vfs_nbench.o]) SMB_SUBSYSTEM(NTVFS,ntvfs/ntvfs_base.o, [ntvfs/ntvfs_generic.o ntvfs/ntvfs_util.o])