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