dnl configure.in for netatalk AC_INIT(bin/adv1tov2/adv1tov2.c) NETATALK_VERSION=`cat VERSION` AC_SUBST(NETATALK_VERSION) AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE(netatalk, ${NETATALK_VERSION}) AM_CONFIG_HEADER(config.h) AM_PROG_LIBTOOL dnl Reset locations to proper places AC_PREFIX_DEFAULT(/usr/local) dnl Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_LIBTOOL dnl ********************************************************************* dnl FIXME! FIXME! These should be selectable properly, and should produce dnl the proper flags and defines... dnl ********************************************************************* dnl Checks for libraries. dnl Replace `main' with a function in -labs: AC_CHECK_LIB(abs, main) dnl Replace `main' with a function in -laudit: AC_CHECK_LIB(audit, main) dnl Replace `main' with a function in -lauth: AC_CHECK_LIB(auth, main) dnl Replace `main' with a function in -lcmd: AC_CHECK_LIB(cmd, main) dnl Replace `main' with a function in -lcom_err: AC_CHECK_LIB(com_err, main) dnl Replace `main' with a function in -lcrypt: AC_CHECK_LIB(crypt, main) dnl Replace `main' with a function in -ld: AC_CHECK_LIB(d, main) dnl Replace `main' with a function in -ldb: AC_CHECK_LIB(db, main) dnl Replace `main' with a function in -ldl: AC_CHECK_LIB(dl, main) dnl Replace `main' with a function in -lkauth: AC_CHECK_LIB(kauth, main) dnl Replace `main' with a function in -lkrb: AC_CHECK_LIB(krb, main) dnl Replace `main' with a function in -llwp: 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 Replace `main' with a function in -lprot: AC_CHECK_LIB(prot, main) dnl Replace `main' with a function in -lresolv: AC_CHECK_LIB(resolv, main) dnl Replace `main' with a function in -lrpcsvc: AC_CHECK_LIB(rpcsvc, main) dnl Replace `main' with a function in -lrx: 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 Replace `main' with a function in -lsys: AC_CHECK_LIB(sys, main) dnl Replace `main' with a function in -lubik: AC_CHECK_LIB(ubik, main) # # Check presence of some functions # # Check for XPG4 access() function # 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) 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 syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h) AC_CHECK_HEADER(sys/cdefs.h,, AC_MSG_RESULT([enabling generic cdefs.h from tree]) CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS" ) # Allow user to specify flags AC_ARG_WITH(cflags, [ --with-cflags specify additional flags to pass to compiler], [ if test "x$withval" != "xno" ; then CFLAGS="$CFLAGS $withval" fi ] ) AC_ARG_WITH(libs, [ --with-libs specify additional libraries to link with], [ if test "x$withval" != "xno" ; then LIBS="$LIBS $withval" fi ] ) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_UID_T AC_C_INLINE AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_STRUCT_ST_RDEV AC_HEADER_TIME AC_STRUCT_TM dnl Checks for library functions. AC_TYPE_GETGROUPS AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_HEADER_MAJOR AC_FUNC_MMAP AC_TYPE_SIGNAL AC_FUNC_UTIME_NULL AC_FUNC_WAIT3 AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp) AC_FUNC_SETPGRP dnl -------------------------------------------------------------------------- dnl specific configuration comes in here: dnl -------------------------------------------------------------------------- AC_DEFINE(ADMIN_GRP, 1) 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 ) AC_ARG_ENABLE(afs, [ --enable-afs enable AFS support], if test "$enableval" = "yes"; then AC_DEFINE(AFS, 1) AC_MSG_RESULT([enabling AFS support]) fi ) AC_ARG_WITH(auth-printing-dir, [ --with-auth-printing-dir=path path to authenticated printing directory], cap_dir="$withval" AC_DEFINE_UNQUOTED(CAPDIR, "$cap_dir") AC_DEFINE(USE_CAP) AC_MSG_RESULT([enabling authenticated printing support]), ) AC_ARG_WITH(config-dir, [ --with-config-dir=path path to config files [default=$ac_default_prefix/etc]], config_dir="$withval", config_dir="${prefix}/etc" ) AC_ARG_WITH(cracklib, [ --with-cracklib=dict enable/set location of cracklib dictionary], cracklib="$withval" AC_CHECK_LIB(crack, main, AC_DEFINE(USE_CRACKLIB) LIBS="$LIBS -lcrack" AC_MSG_RESULT([enabling cracklib support]) if test "$cracklib" = "yes"; then cracklib="/usr/lib/cracklib_dict" fi AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib", [path to cracklib dictionary]) AC_MSG_RESULT([setting cracklib dictionary to $cracklib]), AC_MSG_ERROR([cracklib not found!]) ) ) AC_ARG_ENABLE(ddp, [ --disable-ddp disable DDP], if test "$enableval" = "no"; then AC_DEFINE(NO_DDP, 1) AC_MSG_RESULT([disabling DDP]) fi ) AC_ARG_ENABLE(debug, [ --enable-debug enable debug code], if test "$enableval" != "no"; then if test "$enableval" = "yes"; then AC_DEFINE(DEBUG, 1) else AC_DEFINE_UNQUOTED(DEBUG, $enableval) fi AC_MSG_RESULT([enabling debugging code]) else AC_DEFINE(DEBUG, 0) fi ) 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 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 ----------- AC_ARG_ENABLE(dropkludge, [ --enable-dropkludge enable the experimental dropbox fix (INSECURE!) ], if test "$enableval" = "yes"; then AC_DEFINE(DROPKLUDGE, 1) AC_MSG_RESULT([enabling experimental dropbox support]) fi ) AC_ARG_ENABLE(force-uidgid, [ --enable-force-uidgid allow forcing of uid/gid per volume (BROKEN) ], if test "$enableval" = "yes"; then AC_DEFINE(FORCE_UIDGID, 1) AC_MSG_RESULT([enabling forcing of uid/gid per volume]) fi ) AC_ARG_ENABLE(lastdid, [ --enable-lastdid enable build without DID dev/inode mapping kludge], if test "$enableval" = "yes"; then AC_DEFINE(USE_LASTDID, 1) AC_MSG_RESULT([enabling build without DID dev/inode mapping kludge]) fi ) msg_dir="" AC_ARG_WITH(message-dir, [ --with-msg-dir=path path to message files [default=$ac_default_prefix/etc/msg]], msg_dir="$withval" if test x"$msg_dir" = "x"; then msg_dir="${prefix}/etc/msg" fi AC_DEFINE_UNQUOTED(SERVERTEXT, "$msg_dir", [path to message dir [default=$ac_default_prefix/etc/msg]]) SERVERTEXT="$msg_dir" AC_SUBST(SERVERTEXT) ) AC_CHECK_LIB(pam, pam_start, AC_DEFINE(USE_PAM, 1) LIBS="$LIBS -lpam" compile_pam=yes ) AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes) AC_ARG_WITH(pam, [ --with-pam enable password authentication modules support], if test "x$compile_pam" = "xyes"; then use_pam_so=yes AC_MSG_RESULT([enabling pam modules support]) else AC_MSG_RESULT([pam libraries not found. Disabling pam modules support]) fi ) shadowpw=no AC_ARG_WITH(shadow, [ --with-shadow enable shadow password support], AC_MSG_RESULT([enabling shadow password support]) AC_DEFINE(SHADOWPW) shadowpw=yes ) AC_ARG_ENABLE(shell-check, [ --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]) fi ) AC_ARG_WITH(flock-locks, [ --with-flock-locks enable flock locks support], AC_MSG_RESULT([enabling flock locks]) AC_DEFINE(USE_FLOCK_LOCKS) ) AC_ARG_WITH(tcp-wrappers, [ --with-tcp-wrappers enable TCP wrappers support], AC_CHECK_LIB(wrap, hosts_access, AC_DEFINE(TCPWRAP) AFPD_LIBS="$AFPD_LIBS -lwrap" AC_MSG_RESULT([enabling TCP wrappers support]) ) ) AC_ARG_ENABLE(redhat, [ --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 ], if test "$enableval" = "yes"; then sysv_style=suse fi AC_MSG_RESULT([enabling suse-style sysv support]) ) AC_ARG_ENABLE(cobalt, [ --enable-cobalt use cobalt-style sysv configuration ], if test "$enableval" = "yes"; then sysv_style=cobalt fi AC_MSG_RESULT([enabling cobalt-style sysv support]) ) dnl ----- timelord compilation (disabled by default) compile_timelord=no AC_ARG_ENABLE(timelord, [ --enable-timelord enable compilation of timelord server], if test "$enableval" = "yes"; then compile_timelord=yes fi AC_MSG_RESULT([enabling timelord compilation]) ) AC_ARG_WITH(uams-path, [ --with-uams-path=path path to UAMs [default=$ac_default_prefix/etc/uams]], uams_path="$withval", uams_path="${config_dir}/uams" ) dnl -------------------------------------------------------------------------- dnl FHS stuff has to be done last because it overrides other defaults dnl -------------------------------------------------------------------------- AC_ARG_ENABLE(fhs, [ --enable-fhs use Filesystem Hierarchy Standard (FHS) compatibility], if test "$enableval" = "yes"; then uams_path="/usr/lib/netatalk" config_dir="/etc/netatalk" use_pam_so=yes dnl FIXME: NEED TO HAVE --mandir=/usr/share/man AT SOME POINT... AC_DEFINE(FHS_COMPATIBILITY) fi AC_MSG_RESULT([enabling Filesystem Hierarchy Standard (FHS) compatibility]) ) dnl -------------------------------------------------------------------------- dnl post-FHS substitutions, etc dnl -------------------------------------------------------------------------- dnl ***** CONFIG_DIR AC_DEFINE_UNQUOTED(CONFIG_DIR, "${config_dir}", [path to config dir [default=$ac_default_prefix/etc]]) CONFIG_DIR="${config_dir}" AC_SUBST(CONFIG_DIR) AC_MSG_RESULT([setting configuration files location to $CONFIG_DIR]) ***** UAMS_PATH AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}", [path to UAMs [default=$ac_default_prefix/etc/uams]]) UAMS_PATH="${uams_path}" AC_SUBST(UAMS_PATH) dnl -------------------------------------------------------------------------- dnl drop in includes for top level directory structures here... dnl -------------------------------------------------------------------------- LDFLAGS="$LDFLAGS -L\$(top_srcdir)/libatalk/" CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys" dnl -------------------------------------------------------------------------- dnl specific configuration comes in here: dnl -------------------------------------------------------------------------- dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu dnl --------------------- determine operating system from "target" case "$host_os" in *freebsd*) this_os=freebsd ;; *linux*) this_os=linux ;; *osx*) this_os=macosx ;; *netbsd*) this_os=netbsd ;; *openbsd*) this_os=openbsd ;; *osf*) this_os=tru64 ;; *solaris*) this_os=solaris ;; esac case "$host_cpu" in i386|i486|i586|i686|k7) this_cpu=x86 ;; alpha) this_cpu=alpha ;; mips) this_cpu=mips ;; powerpc|ppc) this_cpu=ppc ;; esac dnl --------------------- operating system specific flags (port from sys/*) 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) dnl ----- Set -shared flag LDSHAREDFLAGS="-shared" fi dnl ----- Linux specific ----- if test x"$this_os" = "xlinux"; then AC_MSG_RESULT([ * Linux specific configuration]) dnl ----- Set -shared flag LDSHAREDFLAGS="-shared" dnl ----- check if we need the quotactl wrapper AC_CHECK_HEADER(sys/quota.h,, AC_MSG_RESULT([enabling quotactl wrapper]) AC_DEFINE(NEED_QUOTACTL_WRAPPER) ) 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) else AC_MSG_RESULT([ * found Linux 2.0.x ]) 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) 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(NO_DLFCN_H) AC_DEFINE(MACOSX_SERVER) dnl ----- Set -shared flag LDSHAREDFLAGS="-shared" 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) CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS" need_dash_r=yes dnl ----- Set -shared flag LDSHAREDFLAGS="-shared" dnl ----- NetBSD does not have crypt.h, uses unistd.h ----- AC_DEFINE(UAM_DHX, 1) AC_DEFINE(UAM_RNDNUM, 1) compile_dhx=yes compile_ssl=yes AC_DEFINE(NO_CRYPT_H, 1) 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 ----- Set -shared flag LDSHAREDFLAGS="-Bforcearchive -shared" dnl ----- OpenBSD does not have crypt.h, uses unistd.h ----- AC_DEFINE(UAM_DHX, 1) AC_DEFINE(UAM_RNDNUM, 1) compile_dhx=yes compile_ssl=yes AC_DEFINE(NO_CRYPT_H, 1) 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) CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS" need_dash_r=yes dnl ----- Set -shared flag LDSHAREDFLAGS="-G" AC_MSG_RESULT([enabling Solaris kernel module build]) solaris_module=yes 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(USE_MOUNT_H) AC_DEFINE(USE_OLD_RQUOTA) AC_DEFINE(USE_UFS_QUOTA_H) AC_DEFINE(TRU64) CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS" LDSHAREDFLAGS="-shared -expect_unresolved \*" need_dash_r=no sysv_style=tru64 dnl ----- Set -shared flag LDSHAREDFLAGS="-shared" fi dnl -- look for openssl AC_ARG_WITH(ssl-dir, [ --with-ssl-dir=PATH specify path to openssl installation (must contain lib and include dirs) ], [ if test "x$withval" != "xno"; then tryssldir=$withval fi ] ) for ssldir in "" $tryssldir /usr /usr/local/openssl /usr/lib/openssl/ /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl /usr/local/ssl ; do if test -f "$ssldir/include/openssl/cast.h" ; then LDFLAGS="$LDFLAGS -L$ssldir/lib -L$ssldir" CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl" if test "$need_dash_r" = "yes"; then LIBS="$LIBS -R$ssldir/lib -R$ssldir" fi dnl Check for the crypto library: AC_CHECK_LIB(crypto, main) dnl LIBS="$LIBS -lcrypto" dnl Check for "DES" library (for SSLeay, not openssl): AC_CHECK_LIB(des, main) AC_DEFINE(OPENSSL_DHX, 1) AC_DEFINE(UAM_DHX, 1) AC_DEFINE(UAM_RNDNUM, 1) compile_dhx=yes compile_ssl=yes AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"]) break fi done dnl --------------------- check for building PGP UAM module AC_ARG_ENABLE(pgp-uam, [ --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) compile_pgp=yes AC_MSG_RESULT([enabling build with PGP UAM module]) fi fi ) dnl --------------------- last minute substitutions AC_SUBST(LIBS) AC_SUBST(AFPD_LIBS) AC_SUBST(PAPD_LIBS) AC_SUBST(CFLAGS) AC_SUBST(LDSHAREDFLAGS) 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_dhx = 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_PGP, test x$compile_pgp = xyes) AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt) 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) dnl --------------------- generate files AC_OUTPUT([Makefile bin/Makefile bin/adv1tov2/Makefile bin/aecho/Makefile bin/afile/Makefile bin/afppasswd/Makefile bin/getzones/Makefile bin/megatron/Makefile bin/nbp/Makefile bin/pap/Makefile bin/psorder/Makefile config/Makefile contrib/Makefile contrib/nu/Makefile contrib/printing/Makefile contrib/shell_utils/Makefile contrib/timelord/Makefile distrib/Makefile distrib/config/Makefile distrib/config/netatalk-config distrib/initscripts/Makefile distrib/m4/Makefile doc/Makefile etc/Makefile etc/afpd/Makefile etc/afpd/nls/Makefile etc/atalkd/Makefile etc/uams/Makefile etc/uams/uams_krb4/Makefile etc/papd/Makefile etc/psf/Makefile include/Makefile include/atalk/Makefile libatalk/Makefile libatalk/adouble/Makefile libatalk/asp/Makefile libatalk/atp/Makefile libatalk/compat/Makefile libatalk/dsi/Makefile libatalk/nbp/Makefile libatalk/netddp/Makefile libatalk/util/Makefile man/Makefile man/man1/Makefile man/man3/Makefile man/man4/Makefile man/man5/Makefile man/man8/Makefile sys/Makefile sys/netatalk/Makefile ], [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*] )