X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=macros%2Fnetatalk.m4;h=b88498aedd281e4a080a8d2d10ca7803bffad38e;hb=056d3ef4c88ba09eabb1fcbf06bdd9fe6e7af4cf;hp=f90603d0d37e20e4bf6c30cc2e0a764656398c68;hpb=313b5f94348618d65523c1d8bde1fba9988f040a;p=netatalk.git diff --git a/macros/netatalk.m4 b/macros/netatalk.m4 index f90603d0..b88498ae 100644 --- a/macros/netatalk.m4 +++ b/macros/netatalk.m4 @@ -145,16 +145,28 @@ AC_ARG_ENABLE(shell-check, dnl Check for optional sysv initscript install AC_DEFUN([AC_NETATALK_SYSV_STYLE], [ AC_ARG_WITH(sysv-style, - [ --with-sysv-style use OS specific sysv config [[redhat|suse|gentoo|netbsd|debian]]], + [ --with-sysv-style use OS specific sysv config [[redhat-sysv|redhat-systemd|suse-sysv|suse-systemd|gentoo|netbsd|debian|systemd]]], sysv_style="$withval", sysv_style=none ) case "$sysv_style" in "redhat") - AC_MSG_RESULT([enabling redhat-style sysv support]) + AC_MSG_ERROR([--enable-redhat is obsoleted. Use --enable-redhat-sysv or --enable-redhat-systemd.]) ;; + "redhat-sysv") + AC_MSG_RESULT([enabling redhat-style sysv (upstart) configuration]) + ;; + "redhat-systemd") + AC_MSG_RESULT([enabling redhat-style systemd support]) + ;; "suse") - AC_MSG_RESULT([enabling suse-style sysv support]) + AC_MSG_RESULT([--enable-suse is obsoleted. Use --enable-suse-sysv or --enable-suse-systemd]) ;; + "suse-sysv") + AC_MSG_RESULT([enabling suse-style sysv configuration]) + ;; + "suse-systemd") + AC_MSG_RESULT([enabling suse-style systemd support (>=openSUSE12.1)]) + ;; "gentoo") AC_MSG_RESULT([enabling gentoo-style sysv support]) ;; @@ -164,6 +176,9 @@ AC_DEFUN([AC_NETATALK_SYSV_STYLE], [ "debian") AC_MSG_RESULT([enabling debian-style sysv support]) ;; + "systemd") + AC_MSG_RESULT([use general systemd configuration]) + ;; *) AC_MSG_RESULT([disabling sysv support]) ;; @@ -193,6 +208,14 @@ case "$host_cpu" in powerpc|ppc) this_cpu=ppc ;; esac +dnl --------------------- GNU source +case "$this_os" in + linux) AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions]) + ;; + kfreebsd-gnu) AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions]) + ;; +esac + dnl --------------------- operating system specific flags (port from sys/*) dnl ----- FreeBSD specific ----- @@ -200,7 +223,14 @@ if test x"$this_os" = "xfreebsd"; then AC_MSG_RESULT([ * FreeBSD specific configuration]) AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro]) AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD]) - AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics]) + AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW) +fi + +dnl ----- GNU/kFreeBSD specific ----- +if test x"$this_os" = "xkfreebsd-gnu"; then + AC_MSG_RESULT([ * GNU/kFreeBSD specific configuration]) + AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro]) + AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD]) AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW) fi @@ -220,76 +250,9 @@ if test x"$this_os" = "xlinux"; then dnl ----- see etc/afpd/quota.c AC_DEFINE(HAVE_BROKEN_DBTOB, 1, [Define if dbtob is broken]) - netatalk_cv_linux_sendfile=yes - AC_MSG_CHECKING([use sendfile syscall]) - AC_ARG_ENABLE(sendfile, - [ --disable-sendfile disable linux sendfile syscall],[ - if test x"$enableval" = x"no"; then - netatalk_cv_linux_sendfile=no - AC_MSG_RESULT([no]) - else - AC_MSG_RESULT([yes]) - - fi - ],[ - AC_MSG_RESULT([yes]) - ] - - ) - - if test x"$netatalk_cv_linux_sendfile" = "xyes"; then - AC_CACHE_CHECK([for linux sendfile support],netatalk_cv_HAVE_SENDFILE,[ - AC_TRY_LINK([#include ], -[\ -int tofd, fromfd; -off_t offset; -size_t total; -ssize_t nwritten = sendfile(tofd, fromfd, &offset, total); -], -netatalk_cv_HAVE_SENDFILE=yes,netatalk_cv_HAVE_SENDFILE=no)]) - -# Try and cope with broken Linux sendfile.... - AC_CACHE_CHECK([for broken linux sendfile support],netatalk_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); -], -netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=no,netatalk_cv_HAVE_BROKEN_SENDFILE=cross)]) - - if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then - AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) - AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available]) - AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) - elif test x"$netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then - AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available]) - AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken]) - AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used]) - else - netatalk_cv_linux_sendfile=no - AC_MSG_RESULT(no); - fi - fi - need_dash_r=no fi -dnl ----- Mac OSX specific ----- -if test x"$this_os" = "xmacosx"; then - AC_MSG_RESULT([ * Mac OSX specific configuration]) - AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro]) - AC_DEFINE(HAVE_2ARG_DBTOB, 1, [Define if dbtob takes two arguments]) - dnl AC_DEFINE(NO_DLFCN_H) - AC_DEFINE(NO_QUOTA_SUPPORT, 1, [Define if Quota support should be disabled]) - AC_DEFINE(MACOSX_SERVER, 1, [Define if compiling for MacOS X Server]) -fi - dnl ----- NetBSD specific ----- if test x"$this_os" = "xnetbsd"; then AC_MSG_RESULT([ * NetBSD specific configuration]) @@ -307,6 +270,7 @@ fi dnl ----- OpenBSD specific ----- if test x"$this_os" = "xopenbsd"; then AC_MSG_RESULT([ * OpenBSD specific configuration]) + AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro]) dnl ----- OpenBSD does not have crypt.h, uses unistd.h ----- AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled]) fi @@ -594,13 +558,27 @@ if test x"$with_acl_support" = x"yes" ; then acl_perm_t perm; return acl_get_perm_np(permset_d, perm); ], - [samba_cv_HAVE_ACL_GET_PERM_NP=yes], - [samba_cv_HAVE_ACL_GET_PERM_NP=no]) + [netatalk_cv_HAVE_ACL_GET_PERM_NP=yes], + [netatalk_cv_HAVE_ACL_GET_PERM_NP=no]) LIBS=$acl_LIBS ]) - if test x"netatalk_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then + if test x"$netatalk_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) fi + + + AC_CACHE_CHECK([for acl_from_mode], netatalk_cv_HAVE_ACL_FROM_MODE,[ + acl_LIBS=$LIBS + LIBS="$LIBS $ACL_LIBS" + AC_CHECK_FUNCS(acl_from_mode, + [netatalk_cv_HAVE_ACL_FROM_MODE=yes], + [netatalk_cv_HAVE_ACL_FROM_MODE=no]) + LIBS=$acl_LIBS + ]) + if test x"netatalk_cv_HAVE_ACL_FROM_MODE" = x"yes"; then + AC_DEFINE(HAVE_ACL_FROM_MODE,1,[Whether acl_from_mode() is available]) + fi + else AC_MSG_NOTICE(ACL support is not avaliable) AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available]) @@ -610,6 +588,7 @@ if test x"$with_acl_support" = x"yes" ; then fi if test x"$with_acl_support" = x"yes" ; then + AC_CHECK_HEADERS([acl/libacl.h]) AC_DEFINE(HAVE_ACLS,1,[Whether ACLs support is available]) AC_SUBST(ACL_LIBS) fi @@ -771,3 +750,73 @@ AC_DEFUN([AC_NETATALK_SMB_SHAREMODES], [ AM_CONDITIONAL(USE_SMB_SHAREMODES, test x"$neta_cv_have_smbshmd" = x"yes") ]) + +dnl ------ Check for sendfile() -------- +AC_DEFUN([AC_NETATALK_SENDFILE], [ +netatalk_cv_search_sendfile=yes +AC_ARG_ENABLE(sendfile, + [ --disable-sendfile disable sendfile syscall], + [if test x"$enableval" = x"no"; then + netatalk_cv_search_sendfile=no + fi] +) + +if test x"$netatalk_cv_search_sendfile" = x"yes"; then + case "$host_os" in + *linux*) + AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available]) + AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes]) + ;; + + *solaris*) + AC_DEFINE(SENDFILE_FLAVOR_SOLARIS, 1, [Solaris sendfile()]) + AC_SEARCH_LIBS(sendfile, sendfile) + AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes]) + ;; + + *freebsd*) + AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics]) + AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes]) + ;; + + *) + ;; + + esac + + if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then + AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) + fi +fi +]) + +dnl --------------------- Check if realpath() takes NULL +AC_DEFUN([AC_NETATALK_REALPATH], [ +AC_CACHE_CHECK([if the realpath function allows a NULL argument], + neta_cv_REALPATH_TAKES_NULL, [ + AC_TRY_RUN([ + #include + #include + #include + + void exit_on_core(int ignored) { + exit(1); + } + + main() { + char *newpath; + signal(SIGSEGV, exit_on_core); + newpath = realpath("/tmp", NULL); + exit((newpath != NULL) ? 0 : 1); + }], + neta_cv_REALPATH_TAKES_NULL=yes, + neta_cv_REALPATH_TAKES_NULL=no, + neta_cv_REALPATH_TAKES_NULL=cross + ) + ] +) + +if test x"$neta_cv_REALPATH_TAKES_NULL" = x"yes"; then + AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL]) +fi +]) \ No newline at end of file