X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=configure.in;h=1c107098d246ef6e5d13af149acacc9ad06916ca;hp=f90307c9778c62c5dd7dbdc9872526afc7e4300b;hb=2bf71d3ccf20c072bc67a9d075b6ac8b0798021e;hpb=f129c63687840e143571ae5cfd4cac5969909241 diff --git a/configure.in b/configure.in index f90307c9..1c107098 100644 --- a/configure.in +++ b/configure.in @@ -1,9 +1,9 @@ -dnl $Id: configure.in,v 1.147 2002-01-17 05:53:57 srittau Exp $ +dnl $Id: configure.in,v 1.238 2010-02-10 14:05:36 franklahm Exp $ dnl configure.in for netatalk -AC_INIT(bin/adv1tov2/adv1tov2.c) +AC_INIT(etc/afpd/main.c) -NETATALK_VERSION=`cat VERSION` +NETATALK_VERSION=`cat $srcdir/VERSION` AC_SUBST(NETATALK_VERSION) AC_CANONICAL_SYSTEM @@ -13,55 +13,67 @@ AM_CONFIG_HEADER(config.h) dnl Checks for programs. AC_PROG_AWK AC_PROG_CC +AC_PROG_CC_C99 AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_LIBTOOL_DLOPEN -AM_PROG_LIBTOOL -NETATALK_PROG_PERL +AC_PROG_LIBTOOL +AC_PROG_PERL +AC_PROG_GREP +AC_PROG_PS + +AM_PROG_CC_C_O dnl ********************************************************************* dnl FIXME! FIXME! These should be selectable properly, and should produce dnl the proper flags and defines... dnl ********************************************************************* +############################################ +# we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code +#AC_SEARCH_LIBS(dlopen, [dl]) +# dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then + dnl Checks for libraries. dnl Replace `main' with a function in -labs: -AC_CHECK_LIB(abs, main) +dnl AC_CHECK_LIB(abs, main) dnl Replace `main' with a function in -laudit: -AC_CHECK_LIB(audit, main) +dnl AC_CHECK_LIB(audit, main) dnl Replace `main' with a function in -lauth: -AC_CHECK_LIB(auth, main) +dnl AC_CHECK_LIB(auth, main) dnl Replace `main' with a function in -lcmd: -AC_CHECK_LIB(cmd, main) +dnl AC_CHECK_LIB(cmd, main) dnl Replace `main' with a function in -lcrypt: -AC_CHECK_LIB(crypt, main) +dnl AC_CHECK_LIB(crypt, main) dnl Replace `main' with a function in -ld: -AC_CHECK_LIB(d, main) +dnl AC_CHECK_LIB(d, main) dnl Replace `main' with a function in -ldl: -AC_CHECK_LIB(dl, main) +dnl AC_CHECK_LIB(dl, dlopen) dnl Replace `main' with a function in -lkauth: -AC_CHECK_LIB(kauth, main) +dnl AC_CHECK_LIB(kauth, main) dnl Replace `main' with a function in -lkrb: -AC_CHECK_LIB(krb, main) +dnl AC_CHECK_LIB(krb, main) dnl Replace `main' with a function in -llwp: -AC_CHECK_LIB(lwp, main) +dnl AC_CHECK_LIB(lwp, main) dnl Replace `main' with a function in -ln: -AC_CHECK_LIB(n, main) -dnl Replace `main' with a function in -lnsl: -AC_CHECK_LIB(nsl, main) +dnl AC_CHECK_LIB(n, main) + +dnl not the right stuff but should be enough for now +AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)]) +AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)]) + dnl Replace `main' with a function in -lprot: -AC_CHECK_LIB(prot, main) +dnl AC_CHECK_LIB(prot, main) dnl Replace `main' with a function in -lrx: -AC_CHECK_LIB(rx, main) +dnl AC_CHECK_LIB(rx, main) dnl Replace `main' with a function in -lrxkad: -AC_CHECK_LIB(rxkad, main) -dnl Replace `main' with a function in -lsocket: -AC_CHECK_LIB(socket, main) +dnl AC_CHECK_LIB(rxkad, main) dnl Replace `main' with a function in -lsys: -AC_CHECK_LIB(sys, main) +dnl AC_CHECK_LIB(sys, main) dnl Replace `main' with a function in -lubik: -AC_CHECK_LIB(ubik, main) +dnl AC_CHECK_LIB(ubik, main) + # # Check presence of some functions @@ -70,16 +82,25 @@ AC_CHECK_LIB(ubik, main) # Be sure to test before adding AFS libs in LIBS path as AFS lib # has such a function that works only on AFS filesystems. AC_CHECK_FUNCS(access) +# +AC_CHECK_FUNCS(pread pwrite) dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h mntent.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h ufs/quota.h mount.h sys/mount.h statfs.h sys/types.h dlfcn.h errno.h sys/errno.h) +AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h time.h sys/param.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h mntent.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h ufs/quota.h mount.h statfs.h sys/types.h dlfcn.h errno.h sys/errno.h sys/uio.h) AC_CHECK_HEADER(sys/cdefs.h,, AC_MSG_RESULT([enabling generic cdefs.h from tree]) CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS" ) +AC_CHECK_HEADERS([sys/mount.h], , , +[#ifdef HAVE_SYS_PARAM_H +#include +#endif +]) + +AC_CHECK_HEADERS(langinfo.h locale.h sys/filio.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -93,6 +114,17 @@ AC_STRUCT_ST_RDEV AC_HEADER_TIME AC_STRUCT_TM +dnl -------------------------------------------------------------------------- +dnl check if dlsym needs to add an underscore, uses libtool macros +dnl -------------------------------------------------------------------------- +AC_LTDL_DLLIB +AC_CHECK_FUNCS(dlopen dlsym dlclose) +AC_LTDL_DLSYM_USCORE +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro]) +fi + + dnl Checks for library functions. AC_TYPE_GETGROUPS AC_PROG_GCC_TRADITIONAL @@ -102,94 +134,209 @@ AC_FUNC_MMAP AC_TYPE_SIGNAL AC_FUNC_UTIME_NULL AC_FUNC_WAIT3 -AC_CHECK_FUNCS(flock getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp strchr memcpy) -AC_FUNC_SETPGRP +AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strcasestr strstr strtoul strchr memcpy) +AC_CHECK_FUNCS(backtrace_symbols setlocale nl_langinfo) +AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64) +AC_CHECK_FUNCS(strlcpy strlcat setlinebuf gethostid dirfd) +AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,, [#include ]) +AC_CACHE_SAVE + +dnl Checks for (v)snprintf +NETATALK_SNPRINTF_CHECK dnl -------------------------------------------------------------------------- -dnl specific configuration comes in here: +dnl 64bit platform check dnl -------------------------------------------------------------------------- -AC_DEFINE(ADMIN_GRP, 1) +AC_MSG_CHECKING([whether to check for 64bit libraries]) +dnl Determine libdir name +case $host in +*-*-linux*) + # Test if the compiler is 64bit + echo 'int i;' > conftest.$ac_ext + atalk_cv_cc_64bit_output=no + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *"ELF 64"*) + atalk_cv_cc_64bit_output=yes + ;; + esac + fi + rm -rf conftest* + ;; +esac -AC_ARG_WITH(admin-group, - [ --disable-admin-group disable admin group], - if test "$enableval" = "no"; then - AC_DEFINE(ADMIN_GRP, 0) - AC_MSG_RESULT([disabling administrative group support]) - fi - ) +dnl +dnl FIXME: Do we need something like this for Solaris 64bit? +dnl + +case $host_cpu:$atalk_cv_cc_64bit_output in +powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + atalk_libname="lib64" + AC_MSG_RESULT([yes]) + ;; +*:*) + atalk_libname="lib" + AC_MSG_RESULT([no]) + ;; +esac -NETATALK_AFS_CHECK +dnl -------------------------------------------------------------------------- +dnl specific configuration comes in here: +dnl -------------------------------------------------------------------------- -AC_ARG_WITH(pkgconfdir, - [ --with-pkgconfdir=DIR package specific configuration in DIR - [[SYSCONF/netatalk]]], - PKGCONFDIR="$withval", - PKGCONFDIR="${sysconfdir}/netatalk" -) -dnl FIXME: make this an extra check -NLSDIR="${PKGCONFDIR}/nls" - -AC_ARG_WITH(logfile, - [ --with-logfile=PATH path for file used by logger [/var/log/netatalk.log] - use --without-logfile to disable logger], - if test "$withval" = "no"; then - AC_DEFINE(DISABLE_LOGGER, 1) - AC_MSG_RESULT([logger disabled]) - elif test "$withval" != "yes"; then - AC_DEFINE_UNQUOTED(LOGFILEPATH, $withval) - AC_MSG_RESULT([logfile set to $withval]) +netatalk_cv_admin_group=yes +AC_MSG_CHECKING([for administrative group support]) +AC_ARG_ENABLE(admin-group, + [ --disable-admin-group disable admin group],[ + if test x"$enableval" = x"no"; then + AC_DEFINE(ADMIN_GRP, 0, [Define if the admin group should be enabled]) + netatalk_cv_admin_group=no + AC_MSG_RESULT([no]) else - AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log") - AC_MSG_RESULT([logfile set to default]) - fi, - AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log") - AC_MSG_RESULT([logfile set to default]) + AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled]) + AC_MSG_RESULT([yes]) + fi],[ + AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled]) + AC_MSG_RESULT([yes]) + ] ) +NETATALK_AFS_CHECK + +NETATALK_CONFIG_DIRS + +netatalk_cv_with_cracklib=no AC_ARG_WITH(cracklib, - [ --with-cracklib=DICT enable/set location of cracklib dictionary], + [ --with-cracklib=DICT enable/set location of cracklib dictionary],[ if test "x$withval" != "xno" ; then cracklib="$withval" - AC_CHECK_LIB(crack, main, - AC_DEFINE(USE_CRACKLIB) + AC_CHECK_LIB(crack, main, [ + AC_DEFINE(USE_CRACKLIB, 1, [Define if cracklib should be used]) LIBS="$LIBS -lcrack" - AC_MSG_RESULT([enabling cracklib support]) if test "$cracklib" = "yes"; then - cracklib="/usr/lib/cracklib_dict" + cracklib="/usr/$atalk_libname/cracklib_dict" fi AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib", [path to cracklib dictionary]) - AC_MSG_RESULT([setting cracklib dictionary to $cracklib]), + AC_MSG_RESULT([setting cracklib dictionary to $cracklib]) + netatalk_cv_with_cracklib=yes + ],[ AC_MSG_ERROR([cracklib not found!]) + ] ) fi + ] ) +AC_MSG_CHECKING([for cracklib support]) +AC_MSG_RESULT([$netatalk_cv_with_cracklib]) +netatalk_cv_ddp_enabled=yes +AC_MSG_CHECKING([whether to enable DDP]) AC_ARG_ENABLE(ddp, - [ --disable-ddp disable DDP], + [ --disable-ddp disable DDP],[ if test "$enableval" = "no"; then - AC_DEFINE(NO_DDP, 1) - AC_MSG_RESULT([disabling DDP]) + AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled]) + AC_MSG_RESULT([no]) + netatalk_cv_ddp_enabled=no + else + AC_MSG_RESULT([yes]) + fi + ],[ + AC_MSG_RESULT([yes]) + ] +) + +AC_MSG_CHECKING([whether to enable debug code]) +AC_ARG_ENABLE(debug1, + [ --enable-debug1 enable debug code],[ + if test "$enableval" != "no"; then + if test "$enableval" = "yes"; then + AC_DEFINE(DEBUG1, 1, [Define if debugging information should be included]) + else + AC_DEFINE_UNQUOTED(DEBUG1, $enableval, [Define if debugging information should be included]) + fi + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) fi + ],[ + AC_MSG_RESULT([no]) + ] ) +AC_MSG_CHECKING([whether to enable verbose debug code]) AC_ARG_ENABLE(debug, - [ --enable-debug enable debug code], + [ --enable-debug enable verbose debug code],[ + if test "$enableval" != "no"; then + if test "$enableval" = "yes"; then + AC_DEFINE(DEBUG, 1, [Define if verbose debugging information should be included]) + else + AC_DEFINE_UNQUOTED(DEBUG, $enableval, [Define if verbose debugging information should be included]) + fi + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ],[ + AC_MSG_RESULT([no]) + ] +) + +AC_MSG_CHECKING([whether to enable debugging with debuggers]) +AC_ARG_ENABLE(debugging, + [ --enable-debugging disable SIGALRM timers and DSI tickles (eg for debugging with gdb/dbx/...)],[ if test "$enableval" != "no"; then if test "$enableval" = "yes"; then - AC_DEFINE(DEBUG, 1) + AC_DEFINE(DEBUGGING, 1, [Define if you want to disable SIGALRM timers and DSI tickles]) else - AC_DEFINE_UNQUOTED(DEBUG, $enableval) + AC_DEFINE_UNQUOTED(DEBUGGING, $enableval, [Define if you want to disable SIGALRM timers and DSI tickles]) fi - AC_MSG_RESULT([enabling debugging code]) + AC_MSG_RESULT([yes]) else - AC_DEFINE(DEBUG, 0) + AC_MSG_RESULT([no]) fi + ],[ + AC_MSG_RESULT([no]) + ] ) +afp3=no +afp3set=no +AC_MSG_CHECKING([whether AFP 3.x calls should be enabled]) +AC_ARG_ENABLE(afp3, + [ --disable-afp3 disable AFP 3.x calls], + [ + if test x"$enableval" != x"no"; then + afp3set=yes + afp3=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ],[ + AC_MSG_RESULT([yes]) + afp3=yes + ] +) + +if test x"$afp3" = x"yes"; then + AC_SYS_LARGEFILE([ + AC_DEFINE(AFP3x, 1, [Define to enable AFP 3.x support]) + ],[ + if test x"$afp3set" = x"yes"; then + AC_MSG_ERROR([AFP 3.x support requires Large File Support.]) + else + AC_MSG_WARN([AFP 3.x support requires Large File Support. AFP3.x support disabled]) + afp3=no + fi + ]) +fi + +AC_CHECK_ICONV + dnl ----------- A NOTE ABOUT DROPKLUDGE dnl The trouble with this fix is that if you know what the file is called, it dnl can be read from the Unix side. That's okay for most academic institutions @@ -197,137 +344,148 @@ dnl since the students don't have telnet access to the Mac servers. There is dnl currently no one working on further development/fixes of DROPKLUDGE. dnl ----------- +netatalk_cv_dropkludge=no +AC_MSG_CHECKING([whether to enable experimental dropbox support]) AC_ARG_ENABLE(dropkludge, - [ --enable-dropkludge enable the experimental dropbox fix (INSECURE!) ], + [ --enable-dropkludge enable the experimental dropbox fix (INSECURE!) ],[ if test "$enableval" = "yes"; then - AC_DEFINE(DROPKLUDGE, 1) - AC_MSG_RESULT([enabling experimental dropbox support]) + AC_DEFINE(DROPKLUDGE, 1, [Define if you want to use the experimental dropkludge support]) + AC_MSG_RESULT([yes]) + netatalk_cv_dropkludge=yes + else + AC_MSG_RESULT([no]) fi + ],[ + AC_MSG_RESULT([no]) + ] ) +netatalk_cv_force_uidgid=no +AC_MSG_CHECKING([whether to enable forcing of uid/gid per volume]) AC_ARG_ENABLE(force-uidgid, - [ --enable-force-uidgid allow forcing of uid/gid per volume (BROKEN) ], + [ --enable-force-uidgid allow forcing of uid/gid per volume (BROKEN) ],[ if test "$enableval" = "yes"; then - AC_DEFINE(FORCE_UIDGID, 1) + AC_DEFINE(FORCE_UIDGID, 1, [Define if you want forcing of uid/gid per volume]) AC_MSG_RESULT([enabling forcing of uid/gid per volume]) + AC_MSG_RESULT([yes]) + netatalk_cv_force_uidgid=yes + else + AC_MSG_RESULT([no]) fi + ],[ + AC_MSG_RESULT([no]) + ] ) -dnl Don't use DB3 unless it's needed -db3_required=no - - -dnl Determine DID scheme -AC_MSG_CHECKING([for DID scheme to use]) -AC_ARG_WITH(did, - [ --with-did=SCHEME set DID scheme (last,hash,mtab,cnid)], - [ did_scheme="$withval" ], - [ did_scheme="last" ] -) - -if test "x$did_scheme" = "xlast"; then - AC_DEFINE(USE_LASTDID, 1) - AC_MSG_RESULT([last]) -elif test "x$did_scheme" = "xhash"; then - AC_MSG_RESULT([device/inode-based hashing]) -elif test "x$did_scheme" = "xmtab"; then - AC_DEFINE(DID_MTAB, 1) - AC_MSG_RESULT([mtab-based DID creation support]) -elif test "x$did_scheme" = "xcnid"; then - db3_required="yes" - AC_DEFINE(CNID_DB, 1) - AC_MSG_RESULT([enabling build with CNID DB support]) -else - AC_MSG_ERROR([unknown DID scheme]) -fi -AM_CONDITIONAL(COMPILE_CNID, test "x$did_scheme" = "xcnid") - -dnl Check for Berkeley DB3 library -if test "x$db3_required" = "xyes"; then - AC_PATH_DB3(, [AC_MSG_ERROR([Berkeley DB3 library not found!])]) -fi +dnl Check for CNID database backends +bdb_required=no +AC_NETATALK_CNID([bdb_required=yes],[bdb_required=no]) dnl Check for quota support AC_CHECK_QUOTA -msg_dir="" -AC_ARG_WITH(message-dir, - [ --with-message-dir=PATH path to message files [[PKGCONF/msg]]], - msg_dir="$withval" - if test x"$msg_dir" = "x"; then - msg_dir="${PKGCONFDIR}/msg" - fi - AC_DEFINE_UNQUOTED(SERVERTEXT, "$msg_dir", - [path to message dir [[PKGCONF/msg]]]) - SERVERTEXT="$msg_dir" - AC_SUBST(SERVERTEXT) -) - dnl Check for optional server location protocol support (used by MacOS X) NETATALK_SRVLOC dnl Check for PAM libs +netatalk_cv_use_pam=no AC_PATH_PAM([ - PAPD_LIBS="$PAPD_LIBS $PAM_LIBS" - AFPD_LIBS="$AFPD_LIBS $PAM_LIBS" use_pam_so=yes compile_pam=yes - AC_DEFINE(USE_PAM) + netatalk_cv_use_pam=yes + AC_DEFINE(USE_PAM, 1, [Define to enable PAM support]) ]) -AC_MSG_CHECKING([whether shadow support should be enabled]) +netatalk_cv_use_shadowpw=no AC_ARG_WITH(shadow, - [ --with-shadow enable shadow password support], - [shadowpw="$withval"], - [shadowpw=no] + [ --with-shadow enable shadow password support [[auto]]], + [netatalk_cv_use_shadowpw="$withval"], + [netatalk_cv_use_shadowpw=auto] ) -if test "x$shadowpw" = "xyes"; then - AC_DEFINE(SHADOWPW) + +if test "x$netatalk_cv_use_shadowpw" != "xno"; then + AC_CHECK_HEADER([shadow.h]) + if test x"$ac_cv_header_shadow_h" = x"yes"; then + netatalk_cv_use_shadowpw=yes + AC_DEFINE(SHADOWPW, 1, [Define if shadow passwords should be used]) + else + if test "x$shadowpw" = "xyes"; then + AC_MSG_ERROR([shadow support not available]) + else + netatalk_cv_use_shadowpw=no + fi + fi fi -AC_MSG_RESULT([$shadowpw]) +AC_MSG_CHECKING([whether shadow support should be enabled]) +if test "x$netatalk_cv_use_shadowpw" = "xyes"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + + + +netatalk_cv_use_shellcheck=yes +AC_MSG_CHECKING([whether checking for a valid shell should be enabled]) AC_ARG_ENABLE(shell-check, - [ --disable-shell-check disable checking for a valid shell], + [ --disable-shell-check disable checking for a valid shell],[ if test "$enableval" = "no"; then - AC_DEFINE(DISABLE_SHELLCHECK, 1) - AC_MSG_RESULT([disabling valid shell check]) + AC_DEFINE(DISABLE_SHELLCHECK, 1, [Define if shell check should be disabled]) + AC_MSG_RESULT([no]) + netatalk_cv_use_shellcheck=no + else + AC_MSG_RESULT([yes]) fi + ],[ + AC_MSG_RESULT([yes]) + ] ) -AC_MSG_CHECKING([whether flock locks should be enabled]) -AC_ARG_WITH(flock-locks, - [ --with-flock-locks enable flock locks support], - [flock_locks="$withval"], - [flock_locks="no"] -) -if test "x$flock_locks" = "xyes"; then - AC_DEFINE(USE_FLOCK_LOCKS) -fi -AC_MSG_RESULT([$flock_locks]) - -AC_ARG_WITH(tcp-wrappers, - [ --with-tcp-wrappers enable TCP wrappers support], - AC_CHECK_LIB(wrap, tcpd_warn, - AC_DEFINE(TCPWRAP) - AFPD_LIBS="$AFPD_LIBS -lwrap" - AC_MSG_RESULT([enabling TCP wrappers support]) - ) +NETATALK_TCP_WRAPPERS + +AC_MSG_CHECKING([whether system (fcntl) locking should be disabled]) +AC_ARG_ENABLE(locking, + [ --disable-locking disable system locking],[ + if test "$enableval" = "no"; then + AC_DEFINE(DISABLE_LOCKING, 1, [Define if system (fcntl) locking should be disabled]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + ],[ + AC_MSG_RESULT([no]) + ] + ) + AC_ARG_ENABLE(redhat, - [ --enable-redhat use redhat-style sysv configuration ], + [ --enable-redhat use redhat-style sysv configuration ],[ if test "$enableval" = "yes"; then sysv_style=redhat fi AC_MSG_RESULT([enabling redhat-style sysv support]) + ] ) AC_ARG_ENABLE(suse, - [ --enable-suse use suse-style sysv configuration ], + [ --enable-suse use suse-style sysv configuration ],[ if test "$enableval" = "yes"; then sysv_style=suse fi AC_MSG_RESULT([enabling suse-style sysv support]) + ] +) + +AC_ARG_ENABLE(gentoo, + [ --enable-gentoo use gentoo-style sysv configuration ],[ + if test "$enableval" = "yes"; then + sysv_style=gentoo + fi + AC_MSG_RESULT([enabling gentoo-style sysv support]) + ] ) AC_ARG_ENABLE(cobalt, @@ -338,6 +496,23 @@ AC_ARG_ENABLE(cobalt, AC_MSG_RESULT([enabling cobalt-style sysv support]) ) +AC_ARG_ENABLE(netbsd, + [ --enable-netbsd use NetBSD-style rc.d configuration ], + if test "x$enableval" = "xyes"; then + sysv_style=netbsd + fi + AC_MSG_RESULT([enabling NetBSD-style rc.d support]) +) + +AC_ARG_ENABLE(debian, + [ --enable-debian use debian-style sysv configuration ],[ + if test "$enableval" = "yes"; then + sysv_style=debian + fi + AC_MSG_RESULT([enabling debian-style sysv support]) + ] +) + dnl ----- timelord compilation (disabled by default) AC_MSG_CHECKING([whether timelord should be compiled]) compile_timelord=no @@ -348,27 +523,58 @@ AC_ARG_ENABLE(timelord, ) AC_MSG_RESULT([$compile_timelord]) +dnl ----- a2boot compilation (disabled by default) +AC_MSG_CHECKING([whether a2boot should be compiled]) +compile_a2boot=no +AC_ARG_ENABLE(a2boot, + [ --enable-a2boot enable compilation of Apple2 boot server], + [compile_a2boot="$enableval"], + [compile_a2boot="no"] +) +AC_MSG_RESULT([$compile_a2boot]) + AC_ARG_WITH(uams-path, - [ --with-uams-path=PATH path to UAMs [[PKGCONF/uams]]], - uams_path="$withval", - uams_path="${PKGCONFDIR}/uams" + [ --with-uams-path=PATH path to UAMs [[PKGCONF/uams]]],[ + uams_path="$withval" + ],[ + uams_path="${PKGCONFDIR}/uams" + ] ) +NETATALK_AC_CUPS + +dnl check if we can use attribute unused (gcc only) from ethereal +AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS) +if test x$GCC != x ; then + CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS" + AC_MSG_RESULT(yes) +else + CFLAGS="-D_U_=\"\" $CFLAGS" + AC_MSG_RESULT(no) +fi + dnl -------------------------------------------------------------------------- dnl FHS stuff has to be done last because it overrides other defaults dnl -------------------------------------------------------------------------- +AC_MSG_CHECKING([whether to use Filesystem Hierarchy Standard (FHS) compatibility]) AC_ARG_ENABLE(fhs, - [ --enable-fhs use Filesystem Hierarchy Standard (FHS) compatibility], + [ --enable-fhs use Filesystem Hierarchy Standard (FHS) compatibility],[ if test "$enableval" = "yes"; then - uams_path="/usr/lib/netatalk" + uams_path="${libdir}/netatalk" sysconfdir="/etc" PKGCONFDIR=${sysconfdir}/netatalk + SERVERTEXT="${PKGCONFDIR}/msg" use_pam_so=yes mandir="/usr/share/man" - AC_DEFINE(FHS_COMPATIBILITY) + AC_DEFINE(FHS_COMPATIBILITY, 1, [Define if you want compatibily with the FHS]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) fi - AC_MSG_RESULT([enabling Filesystem Hierarchy Standard (FHS) compatibility]) + ],[ + AC_MSG_RESULT([no]) + ] ) dnl -------------------------------------------------------------------------- @@ -376,8 +582,8 @@ dnl post-FHS substitutions, etc dnl -------------------------------------------------------------------------- dnl ***** UAMS_PATH -AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}", - [path to UAMs [default=PKGCONF/uams]]) +dnl AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}", +dnl [path to UAMs [default=PKGCONF/uams]]) UAMS_PATH="${uams_path}" AC_SUBST(UAMS_PATH) @@ -419,171 +625,388 @@ 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]) + ;; +esac + dnl --------------------- operating system specific flags (port from sys/*) dnl ----- AIX specific ----- if test x"$this_os" = "xaix"; then AC_MSG_RESULT([ * AIX specific configuration]) - AC_DEFINE(NO_STRUCT_TM_GMTOFF) + AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available]) dnl This is probably a lie; AIX 4.3 supports a 64-bit long dnl compilation environment. It's enough to get things defined dnl right in endian.h provided that long long is supported, though. - AC_DEFINE(HAVE_32BIT_LONGS) + AC_DEFINE(HAVE_32BIT_LONGS, 1, [Define if the data type long has 32 bit]) fi dnl ----- FreeBSD specific ----- if test x"$this_os" = "xfreebsd"; then AC_MSG_RESULT([ * FreeBSD specific configuration]) - AC_DEFINE(BSD4_4) - AC_DEFINE(SENDFILE_FLAVOR_BSD) - - AC_DEFINE(NO_CRYPT_H, 1) + 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]) fi dnl ----- HP-UX 11 specific ----- if test x"$this_os" = "xhpux11"; then AC_MSG_RESULT([ * HP-UX 11 specific configuration]) - AC_DEFINE(_ISOC9X_SOURCE) - AC_DEFINE(NO_STRUCT_TM_GMTOFF) + AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro]) + AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available]) fi dnl ----- IRIX specific ----- if test x"$this_os" = "xirix"; then AC_MSG_RESULT([ * IRIX specific configuration]) - AC_DEFINE(NO_STRUCT_TM_GMTOFF) + AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available]) fi dnl ----- Linux specific ----- if test x"$this_os" = "xlinux"; then AC_MSG_RESULT([ * Linux specific configuration]) + + dnl ----- kernel 2.6 changed struct at_addr to atalk_addr + AC_MSG_CHECKING([for struct atalk_addr]) +dnl AC_COMPILE_IFELSE([ + AC_TRY_COMPILE([ +#include +#include +#include + + struct atalk_addr foo; +], +[ ], [ + ac_have_atalk_addr=yes + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + +if test "x$ac_have_atalk_addr" = "xyes"; then + AC_DEFINE(HAVE_ATALK_ADDR, 1, [set if struct at_addr is called atalk_addr]) +fi dnl ----- check if we need the quotactl wrapper - AC_CHECK_HEADERS(sys/quota.h linux/quota.h) - AC_CHECK_FUNC(quotactl,, - AC_DEFINE(NEED_QUOTACTL_WRAPPER) - AC_MSG_RESULT([enabling quotactl wrapper]) +# AC_CHECK_HEADERS(sys/quota.h linux/quota.h) +# AC_CHECK_FUNC(quotactl,, +# AC_DEFINE(NEED_QUOTACTL_WRAPPER, 1, [Define if the quotactl wrapper is needed]) +# AC_MSG_RESULT([enabling quotactl wrapper]) +# ) + + # For quotas on Linux XFS filesystems + + # For linux > 2.5.56 + AC_CHECK_HEADERS(linux/dqblk_xfs.h,, + [AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h) + AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)] ) + dnl ----- as far as I can tell, dbtob always does the wrong thing dnl ----- on every single version of linux I've ever played with. dnl ----- see etc/afpd/quota.c - AC_DEFINE(HAVE_BROKEN_DBTOB) - - dnl --- added by Yoshinobu Ishizaki (2001.03.13) --- - dnl ----- check if version is newer than 2.2.x - changequote(<<,>>) - majorvers="`uname -r | sed 's/\([0-9]\)..*/\1/'`" - minorvers="`uname -r | sed 's/[0-9]\.\([0-9]\)\..*/\1/'`" - if [ $majorvers -ge 2 ]; then - if [ $minorvers -ge 2 ]; then - changequote([,]) - AC_MSG_RESULT([ * found Linux 2.2.x or higher]) - AC_DEFINE(SENDFILE_FLAVOR_LINUX) + 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([ * found Linux 2.0.x ]) - fi + 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 dnl ----- Linux/alpha specific ----- if test x"$this_cpu" = "xalpha"; then AC_MSG_RESULT([enabling gcc memcpy bug workaround]) - AC_DEFINE(HAVE_GCC_MEMCPY_BUG) + AC_DEFINE(HAVE_GCC_MEMCPY_BUG, 1, [Define if memcpy is buggy]) 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) - AC_DEFINE(HAVE_BROKEN_CPP) - AC_DEFINE(HAVE_2ARG_DBTOB) + 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(MACOSX_SERVER) + AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled]) + 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]) - AC_DEFINE(BSD4_4) - AC_DEFINE(DLSYM_PREPEND_UNDERSCORE) + AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro]) + AC_DEFINE(NETBSD, 1, [Define if OS is FreeBSD]) CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS" need_dash_r=yes dnl ----- NetBSD does not have crypt.h, uses unistd.h ----- - AC_DEFINE(UAM_DHX, 1) - AC_DEFINE(NO_CRYPT_H, 1) + AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled]) fi dnl ----- OpenBSD specific ----- if test x"$this_os" = "xopenbsd"; then AC_MSG_RESULT([ * OpenBSD specific configuration]) - AC_DEFINE(BSD4_4) - AC_DEFINE(DLSYM_PREPEND_UNDERSCORE) - dnl ----- OpenBSD does not have crypt.h, uses unistd.h ----- - AC_DEFINE(UAM_DHX, 1) - AC_DEFINE(NO_CRYPT_H, 1) + AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled]) fi dnl ----- Solaris specific ----- if test x"$this_os" = "xsolaris"; then AC_MSG_RESULT([ * Solaris specific configuration]) - AC_DEFINE(__svr4__) - AC_DEFINE(_ISOC9X_SOURCE) - AC_DEFINE(NO_STRUCT_TM_GMTOFF) - AC_DEFINE(SOLARIS) + AC_DEFINE(__svr4__, 1, [Solaris compatibility macro]) + AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro]) + AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available]) + AC_DEFINE(SOLARIS, 1, [Solaris compatibility macro]) CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS" need_dash_r=yes + sysv_style=solaris + + solaris_module=no + AC_MSG_CHECKING([if we can build Solaris kernel module]) + if test -x /usr/ccs/bin/ld; then + solaris_module=yes + fi + AC_MSG_RESULT([$solaris_module]) + + COMPILE_64BIT_KMODULE=no + KCFLAGS="" + KLDFLAGS="" + COMPILE_KERNEL_GCC=no + + if test "$solaris_module" = "yes"; then + dnl Solaris kernel module stuff + AC_MSG_CHECKING([if we have to build a 64bit kernel module]) + + # check for isainfo, if not found it has to be a 32 bit kernel (<=2.6) + if test -x /usr/bin/isainfo; then + # check for 64 bit platform + if isainfo -kv | grep '^64-bit'; then + COMPILE_64BIT_KMODULE=yes + fi + fi + + AC_MSG_RESULT([$COMPILE_64BIT_KMODULE]) + + if test "${GCC}" = yes; then + COMPILE_KERNEL_GCC=yes + if test "$COMPILE_64BIT_KMODULE" = yes; then + + AC_MSG_CHECKING([if we can build a 64bit kernel module]) + + case `$CC --version 2>/dev/null` in + [[12]].* | 3.0.*) + COMPILE_64BIT_KMODULE=no + COMPILE_KERNEL_GCC=no + solaris_module=no;; + *) + # use for 64 bit + KCFLAGS="-m64" + #KLDFLAGS="-melf64_sparc" + KLDFLAGS="-64";; + esac + + AC_MSG_RESULT([$COMPILE_64BIT_KMODULE]) + + else + KCFLAGS="" + KLDFLAGS="" + fi + KCFLAGS="$KCFLAGS -D_KERNEL -Wall -Wstrict-prototypes" + else + if test "$COMPILE_64BIT_KMODULE" = yes; then + # use Sun CC (for a 64-bit kernel, uncomment " -xarch=v9 -xregs=no%appl ") + KCFLAGS="-xarch=v9 -xregs=no%appl" + KLDFLAGS="-64" + else + KCFLAGS="" + KLDFLAGS="" + fi + KCFLAGS="-D_KERNEL $KCFLAGS -mno-app-regs -munaligned-doubles -fpcc-struct-return" + fi + + AC_CACHE_CHECK([for timeout_id_t],netatalk_cv_HAVE_TIMEOUT_ID_T,[ + AC_TRY_LINK([\ +#include +#include ], +[\ +timeout_id_t dummy; +], +netatalk_cv_HAVE_TIMEOUT_ID_T=yes,netatalk_cv_HAVE_TIMEOUT_ID_T=no,netatalk_cv_HAVE_TIMEOUT_ID_T=cross)]) + + AC_DEFINE(HAVE_TIMEOUT_ID_T, test x"$netatalk_cv_HAVE_TIMEOUT_ID" = x"yes", [define for timeout_id_t]) + fi - AC_MSG_RESULT([enabling Solaris kernel module build]) - solaris_module=yes + AC_SUBST(COMPILE_KERNEL_GCC) + AC_SUBST(COMPILE_64BIT_KMODULE) + AC_SUBST(KCFLAGS) + AC_SUBST(KLDFLAGS) fi dnl ----- Tru64 specific ----- if test x"$this_os" = "xtru64"; then AC_MSG_RESULT([ * Tru64 specific configuration]) - AC_DEFINE(NO_DDP) - AC_DEFINE(HAVE_64BIT_LONGS) + AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled]) + AC_DEFINE(HAVE_64BIT_LONGS, 1, [Define if the data type long has 64 bit]) dnl AC_DEFINE(USE_MOUNT_H) - AC_DEFINE(USE_OLD_RQUOTA) + AC_DEFINE(USE_OLD_RQUOTA, 1, [Define to use old rquota]) dnl AC_DEFINE(USE_UFS_QUOTA_H) - AC_DEFINE(TRU64) + AC_DEFINE(TRU64, 1, [Define on Tru64 platforms]) + AC_DEFINE(_OSF_SOURCE, 1, [Define if the *passwd UAMs should be used]) + AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Define for Berkeley DB 4]) AC_CHECK_LIB(security,set_auth_parameters) CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS" need_dash_r=no sysv_style=tru64 fi -dnl -- look for openssl +dnl -- check for libgcrypt, if found enables DHX UAM +AM_PATH_LIBGCRYPT([1:1.2.3],[neta_cv_compile_dhx2=yes + neta_cv_have_libgcrypt=yes + AC_MSG_NOTICE([Enabling DHX2 UAM]) + AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt]) + AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled]) + ]) + +dnl -- look for openssl, if found enables DHX UAM and Randnum UAM AC_PATH_SSL +dnl Check for Berkeley DB library +if test "x$bdb_required" = "xyes"; then + AC_PATH_BDB(, [ + AC_MSG_RESULT([]) + AC_MSG_RESULT([Make sure you have the required Berkeley DB libraries AND headers installed.]) + AC_MSG_RESULT([You can download the latest version from http://www.sleepycat.com.]) + AC_MSG_RESULT([If you have installed BDB in a non standard location use the]) + AC_MSG_RESULT([--with-bdb=/path/to/bdb configure option and make sure]) + AC_MSG_RESULT([your linker is configured to check for libraries there.]) + AC_MSG_ERROR([Berkeley DB library required but not found!]) + ]) +fi + +dnl -- check for crypt +AC_CRYPT + dnl --------------------- check for building PGP UAM module +AC_MSG_CHECKING([whether the PGP UAM should be build]) AC_ARG_ENABLE(pgp-uam, - [ --enable-pgp-uam enable build of PGP UAM module], + [ --enable-pgp-uam enable build of PGP UAM module],[ if test "$enableval" = "yes"; then - if test "$compile_ssl" = "yes"; then - AC_DEFINE(UAM_PGP, 1) + if test "x$neta_cv_have_openssl" = "xyes"; then + AC_DEFINE(UAM_PGP, 1, [Define if the PGP UAM module should be compiled]) compile_pgp=yes - AC_MSG_RESULT([enabling build with PGP UAM module]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) fi fi + ],[ + AC_MSG_RESULT([no]) + ] ) dnl --------------------- check for building Kerberos v4 UAM module +AC_MSG_CHECKING([whether the Kerberos IV UAM should be build]) AC_ARG_ENABLE(krb4-uam, - [ --enable-krb4-uam enable build of Kerberos v4 UAM module], + [ --enable-krb4-uam enable build of Kerberos v4 UAM module],[ if test "$enableval" = "yes"; then - AC_DEFINE(UAM_KRB4, 1) + AC_DEFINE(UAM_KRB4, 1, [Define if the Kerberos 4 UAM module should be compiled]) compile_kerberos=yes - AC_MSG_RESULT([enabling build with Kerberos v4 UAM module]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) fi + ],[ + AC_MSG_RESULT([no]) + ] +) + +dnl --------------------- check for building Kerberos V UAM module + +netatalk_cv_build_krb5_uam=no +AC_ARG_ENABLE(krbV-uam, + [ --enable-krbV-uam enable build of Kerberos V UAM module], + [ + if test x"$enableval" = x"yes"; then + NETATALK_GSSAPI_CHECK([ + netatalk_cv_build_krb5_uam=yes + ],[ + AC_MSG_ERROR([need GSSAPI to build Kerberos V UAM]) + ]) + fi + ] + ) + +AC_MSG_CHECKING([whether Kerberos V UAM should be build]) +if test x"$netatalk_cv_build_krb5_uam" = x"yes"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AM_CONDITIONAL(USE_GSSAPI, test x"$netatalk_cv_build_krb5_uam" = x"yes") + dnl --------------------- overwrite the config files . . . or not. AC_MSG_CHECKING([whether configuration files should be overwritten]) @@ -594,29 +1017,205 @@ AC_ARG_ENABLE(overwrite, ) AC_MSG_RESULT([$OVERWRITE_CONFIG]) +dnl --------------------- check for ACL support +neta_cv_nfsv4acl="no" +AC_MSG_CHECKING([if NFSv4 ACL Support should be enabled]) +AC_ARG_ENABLE(nfsv4acls, + [ --enable-nfsv4acls enable NFSv4 ACL Support],[ + if test x"$enableval" = x"yes"; then + AC_MSG_RESULT([yes]) + neta_cv_nfsv4acl="yes" + else + AC_MSG_RESULT([no]) + fi],[ + AC_MSG_RESULT([no]) + ] +) +if test x$neta_cv_nfsv4acl = xyes; then + AC_CHECK_HEADER([ldap.h],,[ + AC_MSG_ERROR([ACL Support need the LDAP client headers not found.]) + neta_cv_nfsv4acl=no + ] + ) + AC_CHECK_LIB(ldap,ldap_init,neta_cv_nfsv4acl=yes,neta_cv_nfsv4acl=no) +fi +if test x$neta_cv_nfsv4acl = xyes; then + AC_CHECK_HEADER([sys/acl.h],[ + AC_DEFINE([HAVE_NFSv4_ACLS], 1, [Enable ACL code]) + AC_MSG_NOTICE([Enabling ACL support]) + ], + neta_cv_nfsv4acl=no + ) +fi +if test x$neta_cv_nfsv4acl = xyes; then + LIBATALK_ACLS="acl/libacl.la" +else + LIBATALK_ACLS="" +fi +AC_SUBST(LIBATALK_ACLS) + +dnl --------------------- check for Extended Attributes support +neta_cv_eas="files" +neta_cv_eas_sys_found=no +neta_cv_eas_sys_not_found=no + +AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/ea.h) + +case "$this_os" in + + *osf*) + AC_SEARCH_LIBS(getproplist, [proplist]) + AC_CHECK_FUNCS([getproplist fgetproplist setproplist fsetproplist], + [neta_cv_eas_sys_found=yes], + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([delproplist fdelproplist add_proplist_entry get_proplist_entry],, + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([sizeof_proplist_entry],, + [neta_cv_eas_sys_not_found=yes]) + ;; + + *solaris*) + AC_CHECK_FUNCS([attropen], + [neta_cv_eas_sys_found=yes], + [neta_cv_eas_sys_not_found=yes]) + ;; + + *) + AC_SEARCH_LIBS(getxattr, [attr]) + + if test "x$neta_cv_eas_sys_found" != "xyes" ; then + AC_CHECK_FUNCS([getxattr lgetxattr fgetxattr listxattr llistxattr], + [neta_cv_eas_sys_found=yes], + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([flistxattr removexattr lremovexattr fremovexattr],, + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([setxattr lsetxattr fsetxattr],, + [neta_cv_eas_sys_not_found=yes]) + fi + + if test "x$neta_cv_eas_sys_found" != "xyes" ; then + AC_CHECK_FUNCS([getea fgetea lgetea listea flistea llistea], + [neta_cv_eas_sys_found=yes], + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([removeea fremoveea lremoveea setea fsetea lsetea],, + [neta_cv_eas_sys_not_found=yes]) + fi + + if test "x$neta_cv_eas_sys_found" != "xyes" ; then + AC_CHECK_FUNCS([attr_get attr_list attr_set attr_remove],, + [neta_cv_eas_sys_not_found=yes]) + AC_CHECK_FUNCS([attr_getf attr_listf attr_setf attr_removef],, + [neta_cv_eas_sys_not_found=yes]) + fi + ;; +esac + +# Do xattr functions take additional options like on Darwin? +if test x"$ac_cv_func_getxattr" = x"yes" ; then + AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [ + old_LIBS=$LIBS + LIBS="$LIBS $ACL_LIBS" + AC_TRY_COMPILE([ + #include + #if HAVE_ATTR_XATTR_H + #include + #elif HAVE_SYS_XATTR_H + #include + #endif + ],[ + getxattr(0, 0, 0, 0, 0, 0); + ], + [smb_attr_cv_xattr_add_opt=yes], + [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS]) + ]) + if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then + AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options]) + fi +fi + +# Check if we have extattr +case "$this_os" in + *freebsd4* | *dragonfly* ) + AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work]) + ;; + *) + AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link) + AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link) + AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link) + AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link) + ;; +esac + +if test "x$neta_cv_eas_sys_found" = "xyes" ; then + if test "x$neta_cv_eas_sys_not_found" != "xyes" ; then + neta_cv_eas="$neta_cv_eas | native" + fi +fi + +dnl --------------------- Check if realpath() takes NULL +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 + +dnl --------------------- Netatalk Webmin +NETATALK_WEBMIN + dnl --------------------- last minute substitutions AC_SUBST(LIBS) -AC_SUBST(AFPD_LIBS) -AC_SUBST(PAPD_LIBS) AC_SUBST(CFLAGS) -AC_SUBST(PKGCONFDIR) -AC_SUBST(NLSDIR) AC_SUBST(OVERWRITE_CONFIG) AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes) AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes) -AM_CONDITIONAL(USE_DHX, test x$compile_ssl = xyes) +AM_CONDITIONAL(COMPILE_A2BOOT, test x$compile_a2boot = xyes) +AM_CONDITIONAL(HAVE_LIBGCRYPT, test x$neta_cv_have_libgcrypt = xyes) +AM_CONDITIONAL(HAVE_OPENSSL, test x$neta_cv_have_openssl = xyes) +AM_CONDITIONAL(USE_NFSv4_ACLS, test x$neta_cv_nfsv4acl = xyes) +AM_CONDITIONAL(USE_DHX, test x$neta_cv_compile_dhx = xyes) +AM_CONDITIONAL(USE_DHX2, test x$neta_cv_compile_dhx2 = xyes) +AM_CONDITIONAL(USE_RANDNUM, test x$neta_cv_have_openssl = xyes) AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes) AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes) -AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes) +AM_CONDITIONAL(USE_PAM, test x$netatalk_cv_install_pam = xyes) AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes) AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes) +AM_CONDITIONAL(DEFAULT_HOOK, test x$neta_cv_have_libgcrypt != xyes && test x$neta_cv_have_openssl != xyes) AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt) +AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd) AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat) AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse) AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes) AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64) +AM_CONDITIONAL(USE_SOLARIS, test x$sysv_style = xsolaris) +AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo) +AM_CONDITIONAL(USE_DEBIAN, test x$sysv_style = xdebian) +AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = x) +AM_CONDITIONAL(USE_BDB, test x$bdb_required = xyes) dnl --------------------- generate files @@ -627,18 +1226,29 @@ AC_OUTPUT([Makefile bin/afile/Makefile bin/afppasswd/Makefile bin/cnid/Makefile + bin/cnid/cnid2_create bin/getzones/Makefile bin/megatron/Makefile + bin/misc/Makefile bin/nbp/Makefile bin/pap/Makefile bin/psorder/Makefile + bin/uniconv/Makefile config/Makefile + config/pam/Makefile contrib/Makefile contrib/macusers/Makefile - contrib/nu/Makefile + contrib/macusers/macusers contrib/printing/Makefile contrib/shell_utils/Makefile + contrib/shell_utils/afpd-mtab.pl + contrib/shell_utils/apple_cp + contrib/shell_utils/apple_dump + contrib/shell_utils/apple_mv + contrib/shell_utils/apple_rm + contrib/shell_utils/asip-status.pl contrib/timelord/Makefile + contrib/a2boot/Makefile distrib/Makefile distrib/config/Makefile distrib/config/netatalk-config @@ -647,8 +1257,8 @@ AC_OUTPUT([Makefile doc/Makefile etc/Makefile etc/afpd/Makefile - etc/afpd/nls/Makefile etc/atalkd/Makefile + etc/cnid_dbd/Makefile etc/uams/Makefile etc/uams/uams_krb4/Makefile etc/papd/Makefile @@ -656,15 +1266,25 @@ AC_OUTPUT([Makefile include/Makefile include/atalk/Makefile libatalk/Makefile + libatalk/acl/Makefile libatalk/adouble/Makefile libatalk/asp/Makefile libatalk/atp/Makefile libatalk/cnid/Makefile + libatalk/cnid/cdb/Makefile + libatalk/cnid/last/Makefile + libatalk/cnid/dbd/Makefile + libatalk/cnid/tdb/Makefile libatalk/compat/Makefile libatalk/dsi/Makefile libatalk/nbp/Makefile libatalk/netddp/Makefile libatalk/util/Makefile + libatalk/util/test/Makefile + libatalk/tdb/Makefile + libatalk/unicode/Makefile + libatalk/unicode/charsets/Makefile + libatalk/vfs/Makefile macros/Makefile man/Makefile man/man1/Makefile @@ -685,3 +1305,5 @@ AC_OUTPUT([Makefile [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*] ) +AC_NETATALK_LIBS_SUMMARY +AC_NETATALK_CONFIG_SUMMARY