]> arthur.barton.de Git - netatalk.git/blob - configure.in
acl_get_file
[netatalk.git] / configure.in
1 dnl $Id: configure.in,v 1.241 2010/04/03 07:11:33 franklahm Exp $
2 dnl configure.in for netatalk
3
4 AC_INIT(etc/afpd/main.c)
5
6 NETATALK_VERSION=`cat $srcdir/VERSION`
7 AC_SUBST(NETATALK_VERSION)
8
9 AC_CANONICAL_SYSTEM
10 AM_INIT_AUTOMAKE(netatalk, ${NETATALK_VERSION})
11 AM_CONFIG_HEADER(config.h)
12
13 dnl Checks for programs.
14 AC_PROG_AWK
15 AC_PROG_CC
16 AC_PROG_CC_C99
17 AC_PROG_INSTALL
18 AC_PROG_LN_S
19 AC_PROG_MAKE_SET
20 AC_LIBTOOL_DLOPEN
21 AC_PROG_LIBTOOL
22 AC_PROG_PERL
23 AC_PROG_GREP
24 AC_PROG_PS
25
26 AM_PROG_CC_C_O
27
28 dnl *********************************************************************
29 dnl FIXME! FIXME! These should be selectable properly, and should produce
30 dnl the proper flags and defines...
31 dnl *********************************************************************
32
33 ############################################
34 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
35 #AC_SEARCH_LIBS(dlopen, [dl])
36 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
37
38 dnl Checks for libraries.
39 dnl Replace `main' with a function in -labs:
40 dnl AC_CHECK_LIB(abs, main)
41 dnl Replace `main' with a function in -laudit:
42 dnl AC_CHECK_LIB(audit, main)
43 dnl Replace `main' with a function in -lauth:
44 dnl AC_CHECK_LIB(auth, main)
45 dnl Replace `main' with a function in -lcmd:
46 dnl AC_CHECK_LIB(cmd, main)
47 dnl Replace `main' with a function in -lcrypt:
48 dnl AC_CHECK_LIB(crypt, main)
49 dnl Replace `main' with a function in -ld:
50 dnl AC_CHECK_LIB(d, main)
51 dnl Replace `main' with a function in -ldl:
52 dnl AC_CHECK_LIB(dl, dlopen)
53 dnl Replace `main' with a function in -lkauth:
54 dnl AC_CHECK_LIB(kauth, main)
55 dnl Replace `main' with a function in -lkrb:
56 dnl AC_CHECK_LIB(krb, main)
57 dnl Replace `main' with a function in -llwp:
58 dnl AC_CHECK_LIB(lwp, main)
59 dnl Replace `main' with a function in -ln:
60 dnl AC_CHECK_LIB(n, main)
61
62 dnl not the right stuff but should be enough for now
63 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
64 AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)])
65
66 dnl Replace `main' with a function in -lprot:
67 dnl AC_CHECK_LIB(prot, main)
68 dnl Replace `main' with a function in -lrx:
69 dnl AC_CHECK_LIB(rx, main)
70 dnl Replace `main' with a function in -lrxkad:
71 dnl AC_CHECK_LIB(rxkad, main)
72 dnl Replace `main' with a function in -lsys:
73 dnl AC_CHECK_LIB(sys, main)
74 dnl Replace `main' with a function in -lubik:
75 dnl AC_CHECK_LIB(ubik, main)
76
77
78 #
79 # Check presence of some functions
80 #
81 # Check for XPG4 access() function
82 # Be sure to test before adding AFS libs in LIBS path as AFS lib
83 # has such a function that works only on AFS filesystems.
84 AC_CHECK_FUNCS(access)
85
86 AC_CHECK_FUNCS(pread pwrite)
87
88 dnl Checks for header files.
89 AC_HEADER_DIRENT
90 AC_HEADER_STDC
91 AC_HEADER_SYS_WAIT
92 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)
93 AC_CHECK_HEADER(sys/cdefs.h,,
94         AC_MSG_RESULT([enabling generic cdefs.h from tree])
95         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
96 )
97 AC_CHECK_HEADERS([sys/mount.h], , , 
98 [#ifdef HAVE_SYS_PARAM_H
99 #include <sys/param.h>
100 #endif
101 ])
102
103 AC_CHECK_HEADERS(langinfo.h locale.h sys/filio.h)
104
105 dnl Checks for typedefs, structures, and compiler characteristics.
106 AC_C_CONST
107 AC_TYPE_UID_T
108 AC_C_INLINE
109 AC_TYPE_MODE_T
110 AC_TYPE_OFF_T
111 AC_TYPE_PID_T
112 AC_TYPE_SIZE_T
113 AC_STRUCT_ST_RDEV
114 AC_HEADER_TIME
115 AC_STRUCT_TM
116
117 dnl --------------------------------------------------------------------------
118 dnl check if dlsym needs to add an underscore, uses libtool macros 
119 dnl --------------------------------------------------------------------------
120 AC_LTDL_DLLIB
121 AC_CHECK_FUNCS(dlopen dlsym dlclose)
122 AC_LTDL_DLSYM_USCORE
123 if test x"$libltdl_cv_need_uscore" = xyes; then
124     AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro])
125 fi
126
127
128 dnl Checks for library functions.
129 AC_TYPE_GETGROUPS
130 AC_PROG_GCC_TRADITIONAL
131 AC_FUNC_MEMCMP
132 AC_HEADER_MAJOR
133 AC_FUNC_MMAP
134 AC_TYPE_SIGNAL
135 AC_FUNC_UTIME_NULL
136 AC_FUNC_WAIT3
137 AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strcasestr strstr strtoul strchr memcpy)
138 AC_CHECK_FUNCS(backtrace_symbols setlocale nl_langinfo strlcpy strlcat setlinebuf dirfd pselect)
139 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
140 AC_CHECK_FUNC(renameat, AC_DEFINE([_ATFILE_SOURCE], 1, AT file source)) 
141 AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,, [#include <time.h>])
142 AC_CACHE_SAVE
143
144 dnl Checks for (v)snprintf
145 NETATALK_SNPRINTF_CHECK
146
147 dnl --------------------------------------------------------------------------
148 dnl 64bit platform check
149 dnl --------------------------------------------------------------------------
150
151 AC_MSG_CHECKING([whether to check for 64bit libraries])
152 dnl Determine libdir name
153 case $host in
154 *-*-linux*)
155   # Test if the compiler is 64bit
156   echo 'int i;' > conftest.$ac_ext
157   atalk_cv_cc_64bit_output=no
158   if AC_TRY_EVAL(ac_compile); then
159     case `/usr/bin/file conftest.$ac_objext` in
160     *"ELF 64"*)
161       atalk_cv_cc_64bit_output=yes
162       ;;
163     esac
164   fi
165   rm -rf conftest*
166   ;;
167 esac
168
169 dnl
170 dnl FIXME: Do we need something like this for Solaris 64bit?
171 dnl
172
173 case $host_cpu:$atalk_cv_cc_64bit_output in
174 powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
175   atalk_libname="lib64"
176   AC_MSG_RESULT([yes])
177   ;;
178 *:*)
179   atalk_libname="lib"
180   AC_MSG_RESULT([no])
181   ;;
182 esac
183
184 dnl --------------------------------------------------------------------------
185 dnl specific configuration comes in here:
186 dnl --------------------------------------------------------------------------
187
188
189 netatalk_cv_admin_group=yes
190 AC_MSG_CHECKING([for administrative group support])
191 AC_ARG_ENABLE(admin-group,
192         [  --disable-admin-group   disable admin group],[
193         if test x"$enableval" = x"no"; then
194                 AC_DEFINE(ADMIN_GRP, 0, [Define if the admin group should be enabled])
195                 netatalk_cv_admin_group=no
196                 AC_MSG_RESULT([no])
197         else
198                 AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
199                 AC_MSG_RESULT([yes])
200         fi],[
201                 AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
202                 AC_MSG_RESULT([yes])
203         ]
204 )
205
206 NETATALK_AFS_CHECK
207
208 NETATALK_CONFIG_DIRS
209
210 netatalk_cv_with_cracklib=no
211 AC_ARG_WITH(cracklib,
212         [  --with-cracklib=DICT    enable/set location of cracklib dictionary],[
213         if test "x$withval" != "xno" ; then
214                 cracklib="$withval"
215                 AC_CHECK_LIB(crack, main, [
216                         AC_DEFINE(USE_CRACKLIB, 1, [Define if cracklib should be used])
217                         LIBS="$LIBS -lcrack"
218                         if test "$cracklib" = "yes"; then
219                                 cracklib="/usr/$atalk_libname/cracklib_dict"
220                         fi
221                         AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
222                                 [path to cracklib dictionary])
223                         AC_MSG_RESULT([setting cracklib dictionary to $cracklib])
224                         netatalk_cv_with_cracklib=yes
225                         ],[
226                         AC_MSG_ERROR([cracklib not found!])
227                         ]
228                 )
229         fi
230         ]
231 )
232 AC_MSG_CHECKING([for cracklib support])
233 AC_MSG_RESULT([$netatalk_cv_with_cracklib])
234
235 netatalk_cv_ddp_enabled=no
236 AC_MSG_CHECKING([whether to enable DDP])
237 AC_ARG_ENABLE(ddp,
238         [  --enable-ddp           enable DDP],[
239         if test "$enableval" = "yes"; then 
240                 AC_MSG_RESULT([yes])
241                 netatalk_cv_ddp_enabled=yes
242         else
243                 AC_MSG_RESULT([yes])
244                 AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
245         fi
246         ],[
247                 AC_MSG_RESULT([no])
248                 AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
249         ]
250 )
251
252 AC_MSG_CHECKING([whether to enable debug code])
253 AC_ARG_ENABLE(debug1,
254         [  --enable-debug1         enable debug code],[
255         if test "$enableval" != "no"; then
256                 if test "$enableval" = "yes"; then
257                         AC_DEFINE(DEBUG1, 1, [Define if debugging information should be included])
258                 else
259                         AC_DEFINE_UNQUOTED(DEBUG1, $enableval, [Define if debugging information should be included])
260                 fi 
261                 AC_MSG_RESULT([yes])
262         else
263                 AC_MSG_RESULT([no])
264         fi
265         ],[
266                 AC_MSG_RESULT([no])
267         ]
268 )
269
270 AC_MSG_CHECKING([whether to enable verbose debug code])
271 AC_ARG_ENABLE(debug,
272         [  --enable-debug          enable verbose debug code],[
273         if test "$enableval" != "no"; then
274                 if test "$enableval" = "yes"; then
275                         AC_DEFINE(DEBUG, 1, [Define if verbose debugging information should be included])
276                 else
277                         AC_DEFINE_UNQUOTED(DEBUG, $enableval, [Define if verbose debugging information should be included])
278                 fi 
279                 AC_MSG_RESULT([yes])
280         else
281                 AC_MSG_RESULT([no])
282         AC_DEFINE(NDEBUG, 1, [Disable assertions])
283         fi
284         ],[
285                 AC_MSG_RESULT([no])
286         AC_DEFINE(NDEBUG, 1, [Disable assertions])
287         ]
288 )
289
290 AC_MSG_CHECKING([whether to enable debugging with debuggers])
291 AC_ARG_ENABLE(debugging,
292         [  --enable-debugging      disable SIGALRM timers and DSI tickles (eg for debugging with gdb/dbx/...)],[
293         if test "$enableval" != "no"; then
294                 if test "$enableval" = "yes"; then
295                         AC_DEFINE(DEBUGGING, 1, [Define if you want to disable SIGALRM timers and DSI tickles])
296                 else
297                         AC_DEFINE_UNQUOTED(DEBUGGING, $enableval, [Define if you want to disable SIGALRM timers and DSI tickles])
298                 fi 
299                 AC_MSG_RESULT([yes])
300         else
301                 AC_MSG_RESULT([no])
302         fi
303         ],[
304                 AC_MSG_RESULT([no])
305         ]
306 )
307
308
309 afp3=no
310 afp3set=no
311 AC_MSG_CHECKING([whether AFP 3.x calls should be enabled])
312 AC_ARG_ENABLE(afp3,
313         [  --disable-afp3          disable AFP 3.x calls],
314         [
315             if test x"$enableval" != x"no"; then
316                 afp3set=yes
317                 afp3=yes
318                 AC_MSG_RESULT([yes])
319             else
320                 AC_MSG_RESULT([no])
321             fi
322         ],[
323             AC_MSG_RESULT([yes])
324             afp3=yes
325         ]
326 )
327
328 if test x"$afp3" = x"yes"; then
329         AC_SYS_LARGEFILE([
330                 AC_DEFINE(AFP3x, 1, [Define to enable AFP 3.x support])
331         ],[
332                 if test x"$afp3set" = x"yes"; then
333                         AC_MSG_ERROR([AFP 3.x support requires Large File Support.])
334                 else
335                         AC_MSG_WARN([AFP 3.x support requires Large File Support. AFP3.x support disabled])
336                         afp3=no
337                 fi
338         ])
339 fi
340
341 AC_CHECK_ICONV
342
343 dnl ----------- A NOTE ABOUT DROPKLUDGE
344 dnl The trouble with this fix is that if you know what the file is called, it
345 dnl can be read from the Unix side.  That's okay for most academic institutions
346 dnl since the students don't have telnet access to the Mac servers.  There is
347 dnl currently no one working on further development/fixes of DROPKLUDGE.
348 dnl -----------
349
350 netatalk_cv_dropkludge=no
351 AC_MSG_CHECKING([whether to enable experimental dropbox support])
352 AC_ARG_ENABLE(dropkludge,
353         [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],[
354         if test "$enableval" = "yes"; then 
355                 AC_DEFINE(DROPKLUDGE, 1, [Define if you want to use the experimental dropkludge support])
356                 AC_MSG_RESULT([yes])
357                 netatalk_cv_dropkludge=yes
358         else
359                 AC_MSG_RESULT([no])
360         fi
361         ],[
362                 AC_MSG_RESULT([no])
363         ]
364 )
365
366 netatalk_cv_force_uidgid=no
367 AC_MSG_CHECKING([whether to enable forcing of uid/gid per volume])
368 AC_ARG_ENABLE(force-uidgid,
369         [  --enable-force-uidgid   allow forcing of uid/gid per volume (BROKEN) ],[
370         if test "$enableval" = "yes"; then
371                 AC_DEFINE(FORCE_UIDGID, 1, [Define if you want forcing of uid/gid per volume])
372                 AC_MSG_RESULT([enabling forcing of uid/gid per volume])
373                 AC_MSG_RESULT([yes])
374                 netatalk_cv_force_uidgid=yes
375         else
376                 AC_MSG_RESULT([no])
377         fi
378         ],[
379                 AC_MSG_RESULT([no])
380         ]
381 )
382
383 dnl Check for CNID database backends
384 bdb_required=no
385 AC_NETATALK_CNID([bdb_required=yes],[bdb_required=no])
386
387 dnl Check for quota support
388 AC_CHECK_QUOTA
389
390 dnl Check for optional server location protocol support (used by MacOS X)
391 NETATALK_SRVLOC
392
393 dnl Check for PAM libs
394 netatalk_cv_use_pam=no
395 AC_PATH_PAM([
396         use_pam_so=yes
397         compile_pam=yes
398         netatalk_cv_use_pam=yes
399         AC_DEFINE(USE_PAM, 1, [Define to enable PAM support])
400 ])
401
402 netatalk_cv_use_shadowpw=no
403 AC_ARG_WITH(shadow,
404         [  --with-shadow           enable shadow password support [[auto]]],
405         [netatalk_cv_use_shadowpw="$withval"],
406         [netatalk_cv_use_shadowpw=auto]
407 )
408
409 if test "x$netatalk_cv_use_shadowpw" != "xno"; then
410     AC_CHECK_HEADER([shadow.h])
411     if test x"$ac_cv_header_shadow_h" = x"yes"; then
412         netatalk_cv_use_shadowpw=yes
413         AC_DEFINE(SHADOWPW, 1, [Define if shadow passwords should be used])
414     else 
415       if test "x$shadowpw" = "xyes"; then
416         AC_MSG_ERROR([shadow support not available])
417       else
418         netatalk_cv_use_shadowpw=no
419       fi
420     fi 
421 fi
422
423 AC_MSG_CHECKING([whether shadow support should be enabled])
424 if test "x$netatalk_cv_use_shadowpw" = "xyes"; then
425         AC_MSG_RESULT([yes])
426 else
427         AC_MSG_RESULT([no])
428 fi
429         
430         
431         
432 netatalk_cv_use_shellcheck=yes
433 AC_MSG_CHECKING([whether checking for a valid shell should be enabled])
434 AC_ARG_ENABLE(shell-check,
435         [  --disable-shell-check   disable checking for a valid shell],[
436         if test "$enableval" = "no"; then 
437                 AC_DEFINE(DISABLE_SHELLCHECK, 1, [Define if shell check should be disabled])
438                 AC_MSG_RESULT([no])
439                 netatalk_cv_use_shellcheck=no
440         else
441                 AC_MSG_RESULT([yes])
442         fi
443         ],[
444                 AC_MSG_RESULT([yes])
445         ]
446 )
447
448 NETATALK_TCP_WRAPPERS
449
450 AC_MSG_CHECKING([whether system (fcntl) locking should be disabled])
451 AC_ARG_ENABLE(locking,
452         [  --disable-locking       disable system locking],[
453                 if test "$enableval" = "no"; then
454                         AC_DEFINE(DISABLE_LOCKING, 1, [Define if system (fcntl) locking should be disabled])
455                         AC_MSG_RESULT([yes])
456                 else
457                         AC_MSG_RESULT([no])
458                 fi
459                 
460         ],[
461                 AC_MSG_RESULT([no])
462         ]
463
464 )
465
466
467 AC_ARG_ENABLE(redhat,
468         [  --enable-redhat         use redhat-style sysv configuration ],[
469         if test "$enableval" = "yes"; then
470                 sysv_style=redhat
471         fi
472         AC_MSG_RESULT([enabling redhat-style sysv support])
473         ]
474 )
475
476 AC_ARG_ENABLE(suse,
477         [  --enable-suse           use suse-style sysv configuration ],[
478         if test "$enableval" = "yes"; then
479                 sysv_style=suse
480         fi
481         AC_MSG_RESULT([enabling suse-style sysv support])
482         ]
483 )
484
485 AC_ARG_ENABLE(gentoo,
486         [  --enable-gentoo         use gentoo-style sysv configuration ],[
487         if test "$enableval" = "yes"; then
488                 sysv_style=gentoo
489         fi
490         AC_MSG_RESULT([enabling gentoo-style sysv support])
491         ]
492 )
493
494 AC_ARG_ENABLE(cobalt,
495         [  --enable-cobalt         use cobalt-style sysv configuration ],
496         if test "$enableval" = "yes"; then
497                 sysv_style=cobalt
498         fi
499         AC_MSG_RESULT([enabling cobalt-style sysv support])
500 )
501
502 AC_ARG_ENABLE(netbsd,
503         [  --enable-netbsd         use NetBSD-style rc.d configuration ],
504         if test "x$enableval" = "xyes"; then
505                 sysv_style=netbsd
506         fi
507         AC_MSG_RESULT([enabling NetBSD-style rc.d support])
508 )
509
510 AC_ARG_ENABLE(debian,
511         [  --enable-debian         use debian-style sysv configuration ],[
512         if test "$enableval" = "yes"; then
513                 sysv_style=debian
514         fi
515         AC_MSG_RESULT([enabling debian-style sysv support])
516         ]
517 )
518
519 dnl ----- timelord compilation (disabled by default)
520 AC_MSG_CHECKING([whether timelord should be compiled])
521 compile_timelord=no
522 AC_ARG_ENABLE(timelord,
523         [  --enable-timelord       enable compilation of timelord server],
524         [compile_timelord="$enableval"],
525         [compile_timelord="no"]
526 )
527 AC_MSG_RESULT([$compile_timelord])
528
529 dnl ----- a2boot compilation (disabled by default)
530 AC_MSG_CHECKING([whether a2boot should be compiled])
531 compile_a2boot=no
532 AC_ARG_ENABLE(a2boot,
533         [  --enable-a2boot         enable compilation of Apple2 boot server],
534         [compile_a2boot="$enableval"],
535         [compile_a2boot="no"]
536 )
537 AC_MSG_RESULT([$compile_a2boot])
538
539 AC_ARG_WITH(uams-path,
540         [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]],[
541                 uams_path="$withval"
542         ],[
543                 uams_path="${PKGCONFDIR}/uams"
544         ]
545 )
546
547 NETATALK_AC_CUPS
548
549 dnl check if we can use attribute unused (gcc only) from ethereal
550 AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS)
551 if test x$GCC != x ; then
552   CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
553   AC_MSG_RESULT(yes)
554 else
555   CFLAGS="-D_U_=\"\" $CFLAGS"
556   AC_MSG_RESULT(no)
557 fi
558
559 dnl --------------------------------------------------------------------------
560 dnl FHS stuff has to be done last because it overrides other defaults
561 dnl --------------------------------------------------------------------------
562
563 AC_MSG_CHECKING([whether to use Filesystem Hierarchy Standard (FHS) compatibility])
564 AC_ARG_ENABLE(fhs,
565         [  --enable-fhs            use Filesystem Hierarchy Standard (FHS) compatibility],[
566         if test "$enableval" = "yes"; then
567                 uams_path="${libdir}/netatalk"
568                 sysconfdir="/etc"
569                 PKGCONFDIR=${sysconfdir}/netatalk
570                 SERVERTEXT="${PKGCONFDIR}/msg"
571                 use_pam_so=yes
572                 mandir="/usr/share/man"
573                 AC_DEFINE(FHS_COMPATIBILITY, 1, [Define if you want compatibily with the FHS])
574                 AC_MSG_RESULT([yes])
575         else
576                 AC_MSG_RESULT([no])
577         fi
578         ],[
579                 AC_MSG_RESULT([no])
580         ]
581 )
582
583 dnl --------------------------------------------------------------------------
584 dnl post-FHS substitutions, etc
585 dnl --------------------------------------------------------------------------
586
587 dnl ***** UAMS_PATH
588 dnl AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}",
589 dnl     [path to UAMs [default=PKGCONF/uams]])
590 UAMS_PATH="${uams_path}"
591 AC_SUBST(UAMS_PATH)
592
593 dnl --------------------------------------------------------------------------
594 dnl drop in includes for top level directory structures here...
595 dnl --------------------------------------------------------------------------
596
597 dnl Note: $(top_srcdir)/include should be added before all other includes
598 dnl       so that includes from that directory a preferred to includes from
599 dnl       /usr/include or similar places.
600 LIBS="$LIBS -L\$(top_srcdir)/libatalk"
601 CFLAGS="-I\$(top_srcdir)/include $CFLAGS -I\$(top_srcdir)/sys"
602
603 AC_DEFINE(OPEN_NOFOLLOW_ERRNO, ELOOP, errno returned by open with O_NOFOLLOW)
604
605 dnl --------------------------------------------------------------------------
606 dnl specific configuration comes in here:
607 dnl --------------------------------------------------------------------------
608
609 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
610
611 dnl --------------------- determine operating system from "target"
612 case "$host_os" in
613         *aix*)                          this_os=aix ;;
614         *freebsd*)                      this_os=freebsd ;;
615         *hpux11*)                       this_os=hpux11 ;;
616         *irix*)                         this_os=irix ;;
617         *linux*)                        this_os=linux ;;
618         *osx*)                          this_os=macosx ;;
619         *darwin*)                       this_os=macosx ;;
620         *netbsd*)                       this_os=netbsd ;;
621         *openbsd*)                      this_os=openbsd ;;
622         *osf*)                          this_os=tru64 ;;
623         *solaris*)                      this_os=solaris ;;
624 esac
625
626 case "$host_cpu" in
627         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
628         alpha)                                          this_cpu=alpha ;;
629         mips)                                           this_cpu=mips ;;
630         powerpc|ppc)                            this_cpu=ppc ;;
631 esac
632
633 dnl --------------------- GNU source
634 case "$this_os" in
635         linux)  AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
636         ;;
637 esac
638
639 dnl --------------------- operating system specific flags (port from sys/*)
640
641 dnl ----- AIX specific -----
642 if test x"$this_os" = "xaix"; then
643         AC_MSG_RESULT([ * AIX specific configuration])
644         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
645
646         dnl This is probably a lie; AIX 4.3 supports a 64-bit long
647         dnl compilation environment.  It's enough to get things defined
648         dnl right in endian.h provided that long long is supported, though.
649         AC_DEFINE(HAVE_32BIT_LONGS, 1, [Define if the data type long has 32 bit])
650 fi
651
652 dnl ----- FreeBSD specific -----
653 if test x"$this_os" = "xfreebsd"; then 
654         AC_MSG_RESULT([ * FreeBSD specific configuration])
655         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
656         AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
657         AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics])
658     AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW)
659 fi
660
661 dnl ----- HP-UX 11 specific -----
662 if test x"$this_os" = "xhpux11"; then
663         AC_MSG_RESULT([ * HP-UX 11 specific configuration])
664
665         AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
666         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
667 fi
668
669 dnl ----- IRIX specific -----
670 if test x"$this_os" = "xirix"; then
671         AC_MSG_RESULT([ * IRIX specific configuration])
672
673         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
674 fi
675
676 dnl ----- Linux specific -----
677 if test x"$this_os" = "xlinux"; then 
678         AC_MSG_RESULT([ * Linux specific configuration])
679         
680         dnl ----- kernel 2.6 changed struct at_addr to atalk_addr
681         AC_MSG_CHECKING([for struct atalk_addr])
682 dnl     AC_COMPILE_IFELSE([
683         AC_TRY_COMPILE([
684 #include <sys/socket.h>
685 #include <asm/types.h>
686 #include <linux/atalk.h>
687
688         struct atalk_addr foo;
689 ],
690 [ ], [
691                 ac_have_atalk_addr=yes
692                 AC_MSG_RESULT([yes])
693         ], [
694                 AC_MSG_RESULT([no])
695         ])
696
697 if test "x$ac_have_atalk_addr" = "xyes"; then
698         AC_DEFINE(HAVE_ATALK_ADDR, 1, [set if struct at_addr is called atalk_addr])
699 fi
700
701         dnl ----- check if we need the quotactl wrapper
702 #       AC_CHECK_HEADERS(sys/quota.h linux/quota.h)
703 #       AC_CHECK_FUNC(quotactl,,
704 #               AC_DEFINE(NEED_QUOTACTL_WRAPPER, 1, [Define if the quotactl wrapper is needed])
705 #               AC_MSG_RESULT([enabling quotactl wrapper])
706 #       )
707
708         # For quotas on Linux XFS filesystems
709         
710         # For linux > 2.5.56
711         AC_CHECK_HEADERS(linux/dqblk_xfs.h,,
712                 [AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
713                 AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)]
714         )
715
716
717         dnl ----- as far as I can tell, dbtob always does the wrong thing
718         dnl ----- on every single version of linux I've ever played with.
719         dnl ----- see etc/afpd/quota.c
720         AC_DEFINE(HAVE_BROKEN_DBTOB, 1, [Define if dbtob is broken])
721
722         netatalk_cv_linux_sendfile=yes
723         AC_MSG_CHECKING([use sendfile syscall])
724         AC_ARG_ENABLE(sendfile,
725             [  --disable-sendfile       disable linux sendfile syscall],[
726                 if test x"$enableval" = x"no"; then
727                         netatalk_cv_linux_sendfile=no
728                         AC_MSG_RESULT([no])
729                 else
730                         AC_MSG_RESULT([yes])
731
732                 fi
733             ],[
734                 AC_MSG_RESULT([yes])
735         ]
736
737        )
738
739         if test x"$netatalk_cv_linux_sendfile" = "xyes"; then 
740             AC_CACHE_CHECK([for linux sendfile support],netatalk_cv_HAVE_SENDFILE,[
741             AC_TRY_LINK([#include <sys/sendfile.h>],
742 [\
743 int tofd, fromfd;
744 off_t offset;
745 size_t total;
746 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
747 ],
748 netatalk_cv_HAVE_SENDFILE=yes,netatalk_cv_HAVE_SENDFILE=no)])
749
750 # Try and cope with broken Linux sendfile....
751             AC_CACHE_CHECK([for broken linux sendfile support],netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE,[
752             AC_TRY_LINK([\
753 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
754 #undef _FILE_OFFSET_BITS
755 #endif
756 #include <sys/sendfile.h>],
757 [\
758 int tofd, fromfd;
759 off_t offset;
760 size_t total;
761 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
762 ],
763 netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=no,netatalk_cv_HAVE_BROKEN_SENDFILE=cross)])
764
765             if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then
766                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
767                 AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
768                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
769             elif test x"$netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
770                 AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
771                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
772                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
773             else
774                 netatalk_cv_linux_sendfile=no
775                 AC_MSG_RESULT(no);
776             fi
777         fi
778
779         dnl ----- Linux/alpha specific -----
780         if test x"$this_cpu" = "xalpha"; then 
781                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
782                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG, 1, [Define if memcpy is buggy])
783         fi
784         need_dash_r=no
785
786
787 fi
788
789 dnl ----- Mac OSX specific -----
790 if test x"$this_os" = "xmacosx"; then 
791         AC_MSG_RESULT([ * Mac OSX specific configuration])
792         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
793         AC_DEFINE(HAVE_2ARG_DBTOB, 1, [Define if dbtob takes two arguments])
794         dnl AC_DEFINE(NO_DLFCN_H)
795         AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
796         AC_DEFINE(NO_QUOTA_SUPPORT, 1, [Define if Quota support should be disabled])
797         AC_DEFINE(MACOSX_SERVER, 1, [Define if compiling for MacOS X Server])
798 fi
799
800 dnl ----- NetBSD specific -----
801 if test x"$this_os" = "xnetbsd"; then 
802         AC_MSG_RESULT([ * NetBSD specific configuration])
803         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
804         AC_DEFINE(NETBSD, 1, [Define if OS is NetBSD])
805     AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EFTYPE, errno returned by open with O_NOFOLLOW)
806
807         CFLAGS="-I\$(top_srcdir)/sys/netbsd $CFLAGS"
808         need_dash_r=yes 
809
810         dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
811         AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
812 fi
813
814 dnl ----- OpenBSD specific -----
815 if test x"$this_os" = "xopenbsd"; then 
816         AC_MSG_RESULT([ * OpenBSD specific configuration])
817         dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
818         AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
819 fi
820
821 dnl ----- Solaris specific -----
822 if test x"$this_os" = "xsolaris"; then 
823         AC_MSG_RESULT([ * Solaris specific configuration])
824         AC_DEFINE(__svr4__, 1, [Solaris compatibility macro])
825         AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
826         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
827         AC_DEFINE(SOLARIS, 1, [Solaris compatibility macro])
828         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
829         need_dash_r=yes
830         sysv_style=solaris
831
832         solaris_module=no
833         AC_MSG_CHECKING([if we can build Solaris kernel module])
834         if test -x /usr/ccs/bin/ld && test x$netatalk_cv_ddp_enabled = yes ; then
835                 solaris_module=yes
836         fi
837         AC_MSG_RESULT([$solaris_module])
838
839         COMPILE_64BIT_KMODULE=no
840         KCFLAGS=""
841         KLDFLAGS=""
842         COMPILE_KERNEL_GCC=no
843
844         if test "$solaris_module" = "yes"; then
845            dnl Solaris kernel module stuff
846            AC_MSG_CHECKING([if we have to build a 64bit kernel module])
847
848            # check for isainfo, if not found it has to be a 32 bit kernel (<=2.6)       
849            if test -x /usr/bin/isainfo; then
850                 # check for 64 bit platform
851                 if isainfo -kv | grep '^64-bit'; then
852                         COMPILE_64BIT_KMODULE=yes
853                 fi
854            fi
855
856            AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
857
858            if test "${GCC}" = yes; then
859                 COMPILE_KERNEL_GCC=yes
860                 if test "$COMPILE_64BIT_KMODULE" = yes; then
861                 
862                         AC_MSG_CHECKING([if we can build a 64bit kernel module])
863                         
864                         case `$CC --version 2>/dev/null` in
865                         [[12]].* | 3.0.*)
866                                 COMPILE_64BIT_KMODULE=no
867                                 COMPILE_KERNEL_GCC=no   
868                                 solaris_module=no;;
869                         *)
870                                 # use for 64 bit
871                                 KCFLAGS="-m64"
872                                 #KLDFLAGS="-melf64_sparc"
873                                 KLDFLAGS="-64";;
874                         esac    
875                         
876                         AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
877                         
878                 else
879                         KCFLAGS=""
880                         KLDFLAGS=""
881                 fi
882                 KCFLAGS="$KCFLAGS -D_KERNEL -Wall -Wstrict-prototypes"
883            else
884                 if test "$COMPILE_64BIT_KMODULE" = yes; then
885                 # use Sun CC (for a 64-bit kernel, uncomment " -xarch=v9 -xregs=no%appl ")
886                         KCFLAGS="-xarch=v9 -xregs=no%appl"
887                         KLDFLAGS="-64"
888                 else
889                         KCFLAGS=""
890                         KLDFLAGS=""
891                 fi
892                 KCFLAGS="-D_KERNEL $KCFLAGS -mno-app-regs -munaligned-doubles -fpcc-struct-return"
893            fi
894
895            AC_CACHE_CHECK([for timeout_id_t],netatalk_cv_HAVE_TIMEOUT_ID_T,[
896            AC_TRY_LINK([\
897 #include <sys/stream.h>
898 #include <sys/ddi.h>],
899 [\
900 timeout_id_t dummy;
901 ],
902 netatalk_cv_HAVE_TIMEOUT_ID_T=yes,netatalk_cv_HAVE_TIMEOUT_ID_T=no,netatalk_cv_HAVE_TIMEOUT_ID_T=cross)])
903
904            AC_DEFINE(HAVE_TIMEOUT_ID_T, test x"$netatalk_cv_HAVE_TIMEOUT_ID" = x"yes", [define for timeout_id_t])
905         fi
906
907         AC_SUBST(COMPILE_KERNEL_GCC)
908         AC_SUBST(COMPILE_64BIT_KMODULE)
909         AC_SUBST(KCFLAGS)
910         AC_SUBST(KLDFLAGS)
911 fi
912
913 dnl ----- Tru64 specific -----
914 if test x"$this_os" = "xtru64"; then 
915         AC_MSG_RESULT([ * Tru64 specific configuration])
916         AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
917         AC_DEFINE(HAVE_64BIT_LONGS, 1, [Define if the data type long has 64 bit])
918         dnl AC_DEFINE(USE_MOUNT_H)
919         AC_DEFINE(USE_OLD_RQUOTA, 1, [Define to use old rquota])
920         dnl AC_DEFINE(USE_UFS_QUOTA_H)
921         AC_DEFINE(TRU64, 1, [Define on Tru64 platforms])
922         AC_DEFINE(_OSF_SOURCE, 1, [Define if the *passwd UAMs should be used])
923         AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Define for Berkeley DB 4])
924         AC_CHECK_LIB(security,set_auth_parameters)
925         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
926         need_dash_r=no
927         sysv_style=tru64
928 fi
929
930 dnl -- check for libgcrypt, if found enables DHX UAM
931 AM_PATH_LIBGCRYPT([1:1.2.3],[neta_cv_compile_dhx2=yes
932                         neta_cv_have_libgcrypt=yes
933                         AC_MSG_NOTICE([Enabling DHX2 UAM])
934                         AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt])
935                         AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled])
936                         ])
937
938 dnl -- look for openssl, if found enables DHX UAM and Randnum UAM
939 AC_PATH_SSL
940
941 dnl Check for Berkeley DB library
942 if test "x$bdb_required" = "xyes"; then
943         AC_PATH_BDB(, [
944                 AC_MSG_RESULT([])
945                 AC_MSG_RESULT([Make sure you have the required Berkeley DB libraries AND headers installed.])
946                 AC_MSG_RESULT([You can download the latest version from http://www.sleepycat.com.])
947                 AC_MSG_RESULT([If you have installed BDB in a non standard location use the])
948                 AC_MSG_RESULT([--with-bdb=/path/to/bdb configure option and make sure])
949                 AC_MSG_RESULT([your linker is configured to check for libraries there.])
950                 AC_MSG_ERROR([Berkeley DB library required but not found!])
951         ])
952 fi
953
954 dnl -- check for crypt
955 AC_CRYPT
956
957 dnl --------------------- check for building PGP UAM module
958
959 AC_MSG_CHECKING([whether the PGP UAM should be build])
960 AC_ARG_ENABLE(pgp-uam,
961         [  --enable-pgp-uam        enable build of PGP UAM module],[
962         if test "$enableval" = "yes"; then 
963                 if test "x$neta_cv_have_openssl" = "xyes"; then 
964                         AC_DEFINE(UAM_PGP, 1, [Define if the PGP UAM module should be compiled])
965                         compile_pgp=yes
966                         AC_MSG_RESULT([yes])
967                 else
968                         AC_MSG_RESULT([no])
969                 fi
970         fi
971         ],[
972                 AC_MSG_RESULT([no])
973         ]
974 )
975
976 dnl --------------------- check for building Kerberos v4 UAM module
977
978 AC_MSG_CHECKING([whether the Kerberos IV UAM should be build])
979 AC_ARG_ENABLE(krb4-uam,
980         [  --enable-krb4-uam       enable build of Kerberos v4 UAM module],[
981         if test "$enableval" = "yes"; then
982                 AC_DEFINE(UAM_KRB4, 1, [Define if the Kerberos 4 UAM module should be compiled])
983                 compile_kerberos=yes
984                 AC_MSG_RESULT([yes])
985         else
986                 AC_MSG_RESULT([no])
987         fi
988         ],[
989                 AC_MSG_RESULT([no])
990         ]
991 )
992
993 dnl --------------------- check for building Kerberos V UAM module
994
995 netatalk_cv_build_krb5_uam=no
996 AC_ARG_ENABLE(krbV-uam,
997         [  --enable-krbV-uam       enable build of Kerberos V UAM module],
998         [
999                 if test x"$enableval" = x"yes"; then
1000                         NETATALK_GSSAPI_CHECK([
1001                                 netatalk_cv_build_krb5_uam=yes
1002                         ],[
1003                                 AC_MSG_ERROR([need GSSAPI to build Kerberos V UAM])
1004                         ])
1005                 fi
1006         ]
1007         
1008 )
1009
1010 AC_MSG_CHECKING([whether Kerberos V UAM should be build])
1011 if test x"$netatalk_cv_build_krb5_uam" = x"yes"; then
1012         AC_MSG_RESULT([yes])
1013 else
1014         AC_MSG_RESULT([no])
1015 fi
1016 AM_CONDITIONAL(USE_GSSAPI, test x"$netatalk_cv_build_krb5_uam" = x"yes")
1017
1018 dnl --------------------- overwrite the config files . . . or not.
1019
1020 AC_MSG_CHECKING([whether configuration files should be overwritten])
1021 AC_ARG_ENABLE(overwrite,
1022         [  --enable-overwrite      overwrite configuration files during installation],
1023         [OVERWRITE_CONFIG="${enable_overwrite}"],
1024         [OVERWRITE_CONFIG="no"]
1025 )
1026 AC_MSG_RESULT([$OVERWRITE_CONFIG])
1027
1028 dnl --------------------- check for ACL support
1029 AC_MSG_CHECKING(whether to support ACLs)
1030 AC_ARG_WITH(acl-support,
1031     [AS_HELP_STRING([--with-acl-support],
1032         [Include ACL support (default=auto)])],
1033     [ case "$withval" in
1034       yes|no)
1035           with_acl_support="$withval"
1036                   ;;
1037       *)
1038           with_acl_support=auto
1039           ;;
1040       esac ],
1041     [with_acl_support=auto])
1042 AC_MSG_RESULT($with_acl_support)
1043
1044 if test x"$with_acl_support" = x"no"; then
1045         AC_MSG_RESULT(Disabling ACL support)
1046         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
1047 else
1048     with_acl_support=yes
1049     AC_MSG_NOTICE([ACL support requires LDAP support, checking whether that's available])
1050         AC_CHECK_HEADER([ldap.h],,
1051         [AC_MSG_ERROR([ACL Support prerequisite LDAP client headers not found.])
1052                     with_acl_support=no])
1053
1054         AC_CHECK_LIB(ldap, ldap_init,, 
1055         [AC_MSG_ERROR([ACL Support prerequisite LDAP client libs not found.])
1056                     with_acl_support=no])
1057 fi
1058
1059 if test x"$with_acl_support" = x"yes" ; then
1060         AC_MSG_NOTICE(checking whether ACL support is available:)
1061         case "$host_os" in
1062         *sysv5*)
1063                 AC_MSG_NOTICE(Using UnixWare ACLs)
1064                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
1065                 ;;
1066         *solaris*)
1067                 AC_MSG_NOTICE(Using solaris ACLs)
1068                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
1069                 ACL_LIBS="$ACL_LIBS -lsec"
1070                 ;;
1071         *hpux*)
1072                 AC_MSG_NOTICE(Using HPUX ACLs)
1073                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
1074                 ;;
1075         *irix*)
1076                 AC_MSG_NOTICE(Using IRIX ACLs)
1077                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
1078                 ;;
1079         *aix*)
1080                 AC_MSG_NOTICE(Using AIX ACLs)
1081                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
1082                 ;;
1083         *osf*)
1084                 AC_MSG_NOTICE(Using Tru64 ACLs)
1085                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
1086                 ACL_LIBS="$ACL_LIBS -lpacl"
1087                 ;;
1088         *darwin*)
1089                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
1090                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
1091                 ;;
1092         *)
1093                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
1094                 case "$host_os" in
1095                 *linux*)
1096                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
1097                         ;;
1098                 esac
1099                 AC_CACHE_CHECK([for POSIX ACL support],netatalk_cv_HAVE_POSIX_ACLS,[
1100                         acl_LIBS=$LIBS
1101                         LIBS="$LIBS $ACL_LIBS"
1102                         AC_TRY_LINK([
1103                                 #include <sys/types.h>
1104                                 #include <sys/acl.h>
1105                         ],[
1106                                 acl_t acl;
1107                                 int entry_id;
1108                                 acl_entry_t *entry_p;
1109                                 return acl_get_entry(acl, entry_id, entry_p);
1110                         ],
1111                         [netatalk_cv_HAVE_POSIX_ACLS=yes],
1112                         [netatalk_cv_HAVE_POSIX_ACLS=no
1113                 with_acl_support=no])
1114                         LIBS=$acl_LIBS
1115                 ])
1116                 if test x"$netatalk_cv_HAVE_POSIX_ACLS" = x"yes"; then
1117                         AC_MSG_NOTICE(Using POSIX ACLs)
1118                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
1119                         AC_CACHE_CHECK([for acl_get_perm_np],netatalk_cv_HAVE_ACL_GET_PERM_NP,[
1120                                 acl_LIBS=$LIBS
1121                                 LIBS="$LIBS $ACL_LIBS"
1122                                 AC_TRY_LINK([
1123                                         #include <sys/types.h>
1124                                         #include <sys/acl.h>
1125                                 ],[
1126                                         acl_permset_t permset_d;
1127                                         acl_perm_t perm;
1128                                         return acl_get_perm_np(permset_d, perm);
1129                                 ],
1130                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
1131                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
1132                                 LIBS=$acl_LIBS
1133                         ])
1134                         if test x"netatalk_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
1135                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
1136                         fi
1137                 else
1138                         AC_MSG_NOTICE(ACL support is not avaliable)
1139                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
1140                 fi
1141                 ;;
1142     esac
1143 fi
1144
1145 if test x"$with_acl_support" = x"yes" ; then
1146     AC_DEFINE(HAVE_ACLS,1,[Whether ACLs support is available])
1147     AC_SUBST(ACL_LIBS)
1148 fi
1149
1150 dnl --------------------- check for Extended Attributes support
1151 neta_cv_eas="ad"
1152 neta_cv_eas_sys_found=no
1153 neta_cv_eas_sys_not_found=no
1154
1155 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/ea.h)
1156
1157 case "$this_os" in
1158
1159   *osf*)
1160         AC_SEARCH_LIBS(getproplist, [proplist])
1161         AC_CHECK_FUNCS([getproplist fgetproplist setproplist fsetproplist],
1162                    [neta_cv_eas_sys_found=yes],
1163                    [neta_cv_eas_sys_not_found=yes])
1164         AC_CHECK_FUNCS([delproplist fdelproplist add_proplist_entry get_proplist_entry],,
1165                    [neta_cv_eas_sys_not_found=yes])
1166         AC_CHECK_FUNCS([sizeof_proplist_entry],,
1167                    [neta_cv_eas_sys_not_found=yes])
1168   ;;
1169
1170   *solaris*)
1171         AC_CHECK_FUNCS([attropen],
1172                    [neta_cv_eas_sys_found=yes],
1173                    [neta_cv_eas_sys_not_found=yes])
1174   ;;
1175
1176   'freebsd')
1177     AC_CHECK_FUNCS([extattr_delete_fd extattr_delete_file extattr_delete_link],
1178                    [neta_cv_eas_sys_found=yes],
1179                    [neta_cv_eas_sys_not_found=yes])
1180     AC_CHECK_FUNCS([extattr_get_fd extattr_get_file extattr_get_link],,
1181                    [neta_cv_eas_sys_not_found=yes])
1182     AC_CHECK_FUNCS([extattr_list_fd extattr_list_file extattr_list_link],,
1183                    [neta_cv_eas_sys_not_found=yes])
1184     AC_CHECK_FUNCS([extattr_set_fd extattr_set_file extattr_set_link],,
1185                    [neta_cv_eas_sys_not_found=yes])
1186   ;;
1187
1188   *freebsd4* | *dragonfly* )
1189     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1190   ;;
1191
1192   *)
1193         AC_SEARCH_LIBS(getxattr, [attr])
1194
1195     if test "x$neta_cv_eas_sys_found" != "xyes" ; then
1196        AC_CHECK_FUNCS([getxattr lgetxattr fgetxattr listxattr llistxattr],
1197                       [neta_cv_eas_sys_found=yes],
1198                       [neta_cv_eas_sys_not_found=yes])
1199            AC_CHECK_FUNCS([flistxattr removexattr lremovexattr fremovexattr],,
1200                       [neta_cv_eas_sys_not_found=yes])
1201            AC_CHECK_FUNCS([setxattr lsetxattr fsetxattr],,
1202                       [neta_cv_eas_sys_not_found=yes])
1203     fi
1204
1205     if test "x$neta_cv_eas_sys_found" != "xyes" ; then
1206            AC_CHECK_FUNCS([getea fgetea lgetea listea flistea llistea],
1207                       [neta_cv_eas_sys_found=yes],
1208                       [neta_cv_eas_sys_not_found=yes])
1209            AC_CHECK_FUNCS([removeea fremoveea lremoveea setea fsetea lsetea],,
1210                       [neta_cv_eas_sys_not_found=yes])
1211     fi
1212
1213     if test "x$neta_cv_eas_sys_found" != "xyes" ; then
1214            AC_CHECK_FUNCS([attr_get attr_list attr_set attr_remove],,
1215                       [neta_cv_eas_sys_not_found=yes])
1216        AC_CHECK_FUNCS([attr_getf attr_listf attr_setf attr_removef],,
1217                       [neta_cv_eas_sys_not_found=yes])
1218     fi
1219   ;;
1220 esac
1221
1222 # Do xattr functions take additional options like on Darwin?
1223 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1224         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1225                 old_LIBS=$LIBS
1226                 LIBS="$LIBS $ACL_LIBS"
1227                 AC_TRY_COMPILE([
1228                         #include <sys/types.h>
1229                         #if HAVE_ATTR_XATTR_H
1230                         #include <attr/xattr.h>
1231                         #elif HAVE_SYS_XATTR_H
1232                         #include <sys/xattr.h>
1233                         #endif
1234                 ],[
1235                         getxattr(0, 0, 0, 0, 0, 0);
1236                 ],
1237                 [smb_attr_cv_xattr_add_opt=yes],
1238                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1239         ])
1240         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1241                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1242         fi
1243 fi
1244
1245 if test "x$neta_cv_eas_sys_found" = "xyes" ; then
1246    if test "x$neta_cv_eas_sys_not_found" != "xyes" ; then
1247       neta_cv_eas="$neta_cv_eas | sys"
1248    fi
1249 fi
1250
1251 dnl --------------------- Check if realpath() takes NULL
1252 AC_CACHE_CHECK([if the realpath function allows a NULL argument],
1253     neta_cv_REALPATH_TAKES_NULL, [
1254         AC_TRY_RUN([
1255             #include <stdio.h>
1256             #include <limits.h>
1257             #include <signal.h>
1258
1259             void exit_on_core(int ignored) {
1260                  exit(1);
1261             }
1262
1263             main() {
1264                 char *newpath;
1265                 signal(SIGSEGV, exit_on_core);
1266                 newpath = realpath("/tmp", NULL);
1267                 exit((newpath != NULL) ? 0 : 1);
1268             }],
1269             neta_cv_REALPATH_TAKES_NULL=yes,
1270             neta_cv_REALPATH_TAKES_NULL=no,
1271             neta_cv_REALPATH_TAKES_NULL=cross
1272         )
1273     ]
1274 )
1275
1276 if test x"$neta_cv_REALPATH_TAKES_NULL" = x"yes"; then
1277     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
1278 fi
1279
1280 dnl --------------------- Netatalk Webmin
1281 NETATALK_WEBMIN
1282
1283 dnl --------------------- last minute substitutions
1284
1285 AC_SUBST(LIBS)
1286 AC_SUBST(CFLAGS)
1287 AC_SUBST(OVERWRITE_CONFIG)
1288
1289 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
1290 AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
1291 AM_CONDITIONAL(COMPILE_A2BOOT, test x$compile_a2boot = xyes)
1292 AM_CONDITIONAL(HAVE_LIBGCRYPT, test x$neta_cv_have_libgcrypt = xyes)
1293 AM_CONDITIONAL(HAVE_OPENSSL, test x$neta_cv_have_openssl = xyes)
1294 AM_CONDITIONAL(HAVE_ACLS, test x"$with_acl_support" = x"yes")
1295 AM_CONDITIONAL(USE_DHX, test x$neta_cv_compile_dhx = xyes)
1296 AM_CONDITIONAL(USE_DHX2, test x$neta_cv_compile_dhx2 = xyes)
1297 AM_CONDITIONAL(USE_RANDNUM, test x$neta_cv_have_openssl = xyes)
1298 AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
1299 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
1300 AM_CONDITIONAL(USE_PAM, test x$netatalk_cv_install_pam = xyes)
1301 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
1302 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
1303 AM_CONDITIONAL(DEFAULT_HOOK, test x$neta_cv_have_libgcrypt != xyes && test x$neta_cv_have_openssl != xyes)
1304 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
1305 AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd)
1306 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
1307 AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse)
1308 AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
1309 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
1310 AM_CONDITIONAL(USE_SOLARIS, test x$sysv_style = xsolaris)
1311 AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo)
1312 AM_CONDITIONAL(USE_DEBIAN, test x$sysv_style = xdebian)
1313 AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = x)
1314 AM_CONDITIONAL(USE_BDB, test x$bdb_required = xyes)
1315 AM_CONDITIONAL(USE_APPLETALK, test x$netatalk_cv_ddp_enabled = xyes)
1316
1317 dnl --------------------- generate files
1318
1319 AC_OUTPUT([Makefile
1320         bin/Makefile
1321         bin/adv1tov2/Makefile
1322         bin/aecho/Makefile
1323         bin/afile/Makefile
1324         bin/afppasswd/Makefile
1325         bin/cnid/Makefile
1326         bin/cnid/cnid2_create
1327         bin/getzones/Makefile
1328         bin/megatron/Makefile
1329     bin/misc/Makefile
1330         bin/nbp/Makefile
1331         bin/pap/Makefile
1332         bin/psorder/Makefile
1333         bin/uniconv/Makefile
1334         config/Makefile
1335     config/pam/Makefile
1336         contrib/Makefile
1337         contrib/macusers/Makefile
1338         contrib/macusers/macusers
1339         contrib/printing/Makefile
1340         contrib/shell_utils/Makefile
1341         contrib/shell_utils/afpd-mtab.pl
1342         contrib/shell_utils/apple_cp
1343     contrib/shell_utils/apple_dump
1344         contrib/shell_utils/apple_mv
1345         contrib/shell_utils/apple_rm
1346         contrib/shell_utils/asip-status.pl
1347         contrib/timelord/Makefile
1348         contrib/a2boot/Makefile
1349         distrib/Makefile
1350         distrib/config/Makefile
1351         distrib/config/netatalk-config
1352         distrib/initscripts/Makefile
1353         distrib/m4/Makefile
1354         doc/Makefile
1355         etc/Makefile
1356         etc/afpd/Makefile
1357         etc/atalkd/Makefile
1358         etc/cnid_dbd/Makefile
1359         etc/uams/Makefile
1360         etc/uams/uams_krb4/Makefile
1361         etc/papd/Makefile
1362         etc/psf/Makefile
1363         include/Makefile
1364         include/atalk/Makefile
1365         libatalk/Makefile
1366         libatalk/acl/Makefile
1367         libatalk/adouble/Makefile
1368         libatalk/asp/Makefile
1369         libatalk/atp/Makefile
1370         libatalk/bstring/Makefile
1371         libatalk/cnid/Makefile
1372         libatalk/cnid/cdb/Makefile
1373         libatalk/cnid/last/Makefile
1374         libatalk/cnid/dbd/Makefile
1375         libatalk/cnid/tdb/Makefile
1376         libatalk/compat/Makefile
1377         libatalk/dsi/Makefile
1378         libatalk/nbp/Makefile
1379         libatalk/netddp/Makefile
1380         libatalk/util/Makefile
1381         libatalk/util/test/Makefile
1382         libatalk/tdb/Makefile
1383         libatalk/unicode/Makefile
1384         libatalk/unicode/charsets/Makefile
1385         libatalk/vfs/Makefile
1386         macros/Makefile
1387         man/Makefile
1388         man/man1/Makefile
1389         man/man3/Makefile
1390         man/man4/Makefile
1391         man/man5/Makefile
1392         man/man8/Makefile
1393         sys/Makefile
1394         sys/generic/Makefile
1395         sys/generic/sys/Makefile
1396         sys/netatalk/Makefile
1397         sys/netbsd/Makefile
1398         sys/netbsd/netatalk/Makefile
1399         sys/solaris/Makefile
1400         sys/sunos/Makefile
1401         sys/ultrix/Makefile
1402     test/Makefile
1403     test/afpd/Makefile
1404         ],
1405         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
1406 )
1407
1408 AC_NETATALK_LIBS_SUMMARY
1409 AC_NETATALK_CONFIG_SUMMARY