]> arthur.barton.de Git - netatalk.git/blob - configure.in
try to make background start work, add (deprecated) timelord
[netatalk.git] / configure.in
1 dnl $Id: configure.in,v 1.179.2.3.2.24 2004-03-18 02:56:31 bfernhomberg 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_INSTALL
17 AC_PROG_LN_S
18 AC_PROG_MAKE_SET
19 AC_LIBTOOL_DLOPEN
20 AC_PROG_LIBTOOL
21 AC_PROG_PERL
22 AC_PROG_GREP
23 AC_PROG_PS
24
25 dnl *********************************************************************
26 dnl FIXME! FIXME! These should be selectable properly, and should produce
27 dnl the proper flags and defines...
28 dnl *********************************************************************
29
30 ############################################
31 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
32 #AC_SEARCH_LIBS(dlopen, [dl])
33 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
34
35 dnl Checks for libraries.
36 dnl Replace `main' with a function in -labs:
37 dnl AC_CHECK_LIB(abs, main)
38 dnl Replace `main' with a function in -laudit:
39 dnl AC_CHECK_LIB(audit, main)
40 dnl Replace `main' with a function in -lauth:
41 dnl AC_CHECK_LIB(auth, main)
42 dnl Replace `main' with a function in -lcmd:
43 dnl AC_CHECK_LIB(cmd, main)
44 dnl Replace `main' with a function in -lcrypt:
45 dnl AC_CHECK_LIB(crypt, main)
46 dnl Replace `main' with a function in -ld:
47 dnl AC_CHECK_LIB(d, main)
48 dnl Replace `main' with a function in -ldl:
49 AC_CHECK_LIB(dl, dlopen)
50 dnl Replace `main' with a function in -lkauth:
51 dnl AC_CHECK_LIB(kauth, main)
52 dnl Replace `main' with a function in -lkrb:
53 dnl AC_CHECK_LIB(krb, main)
54 dnl Replace `main' with a function in -llwp:
55 dnl AC_CHECK_LIB(lwp, main)
56 dnl Replace `main' with a function in -ln:
57 dnl AC_CHECK_LIB(n, main)
58 dnl Replace `main' with a function in -lnsl:
59 AC_CHECK_LIB(nsl, main)
60 dnl Replace `main' with a function in -lprot:
61 dnl AC_CHECK_LIB(prot, main)
62 dnl Replace `main' with a function in -lrx:
63 dnl AC_CHECK_LIB(rx, main)
64 dnl Replace `main' with a function in -lrxkad:
65 dnl AC_CHECK_LIB(rxkad, main)
66 dnl Replace `main' with a function in -lsocket:
67 AC_CHECK_LIB(socket, socket)
68 dnl Replace `main' with a function in -lsys:
69 dnl AC_CHECK_LIB(sys, main)
70 dnl Replace `main' with a function in -lubik:
71 dnl AC_CHECK_LIB(ubik, main)
72
73
74 #
75 # Check presence of some functions
76 #
77 # Check for XPG4 access() function
78 # Be sure to test before adding AFS libs in LIBS path as AFS lib
79 # has such a function that works only on AFS filesystems.
80 AC_CHECK_FUNCS(access)
81
82 AC_CHECK_FUNCS(pread pwrite)
83
84 dnl Checks for header files.
85 AC_HEADER_DIRENT
86 AC_HEADER_STDC
87 AC_HEADER_SYS_WAIT
88 AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h time.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h mntent.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h ufs/quota.h mount.h sys/mount.h statfs.h sys/types.h dlfcn.h errno.h sys/errno.h sys/uio.h)
89 AC_CHECK_HEADER(sys/cdefs.h,,
90         AC_MSG_RESULT([enabling generic cdefs.h from tree])
91         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
92 )
93 AC_CHECK_HEADERS(langinfo.h locale.h sys/filio.h)
94
95 dnl Checks for typedefs, structures, and compiler characteristics.
96 AC_C_CONST
97 AC_TYPE_UID_T
98 AC_C_INLINE
99 AC_TYPE_MODE_T
100 AC_TYPE_OFF_T
101 AC_TYPE_PID_T
102 AC_TYPE_SIZE_T
103 AC_STRUCT_ST_RDEV
104 AC_HEADER_TIME
105 AC_STRUCT_TM
106
107 dnl Checks for library functions.
108 AC_TYPE_GETGROUPS
109 AC_PROG_GCC_TRADITIONAL
110 AC_FUNC_MEMCMP
111 AC_HEADER_MAJOR
112 AC_FUNC_MMAP
113 AC_TYPE_SIGNAL
114 AC_FUNC_UTIME_NULL
115 AC_FUNC_WAIT3
116 AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strcasestr strstr strtoul setpgrp strchr memcpy)
117 AC_FUNC_SETPGRP
118 AC_CHECK_FUNCS(backtrace_symbols)
119 AC_CHECK_FUNCS(setlocale nl_langinfo)
120 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
121 AC_CHECK_FUNCS(strlcpy strlcat)
122 AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,, [#include <time.h>])
123 AC_CACHE_SAVE
124
125
126 dnl Checks for (v)snprintf
127 NETATALK_SNPRINTF_CHECK
128
129 dnl --------------------------------------------------------------------------
130 dnl specific configuration comes in here:
131 dnl --------------------------------------------------------------------------
132
133 AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
134
135 netatalk_cv_admin_group=yes
136 AC_MSG_CHECKING([for administrative group support])
137 AC_ARG_WITH(admin-group,
138         [  --disable-admin-group   disable admin group],[
139         if test "$enableval" = "no"; then
140                 AC_DEFINE(ADMIN_GRP, 0, [Define if the admin group should be enabled])
141                 AC_MSG_RESULT([yes])
142         else
143                 AC_MSG_RESULT([no])
144                 netatalk_cv_admin_group=no
145         fi],[
146                 AC_MSG_RESULT([yes])
147         ]
148 )
149
150 NETATALK_AFS_CHECK
151
152 NETATALK_CONFIG_DIRS
153
154 AC_MSG_CHECKING([for logfile path])
155 AC_ARG_WITH(logfile,
156         [  --with-logfile=PATH     path for file used by logger [/var/log/netatalk.log]
157                           use --without-logfile to disable logger],[
158         if test x"$withval" = x"no"; then
159                 AC_DEFINE(DISABLE_LOGGER, 1, [Define if the logger should not be used])
160                 AC_MSG_RESULT([syslog])
161         elif test "$withval" != "yes"; then
162                 AC_DEFINE_UNQUOTED(LOGFILEPATH, "$withval", [Path to the log file])
163                 AC_MSG_RESULT([$withval])
164         else
165                 AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log", [Path to the log file])
166                 AC_MSG_RESULT([/var/log/netatalk.log]) 
167         fi],[
168                 AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log", [Path to the log file])
169                 AC_MSG_RESULT([/var/log/netatalk.log])
170         ]
171 )
172
173
174 netatalk_cv_with_cracklib=no
175 AC_MSG_CHECKING([for cracklib support])
176 AC_ARG_WITH(cracklib,
177         [  --with-cracklib=DICT    enable/set location of cracklib dictionary],[
178         if test "x$withval" != "xno" ; then
179                 cracklib="$withval"
180                 AC_CHECK_LIB(crack, main, [
181                         AC_DEFINE(USE_CRACKLIB, 1, [Define if cracklib should be used])
182                         LIBS="$LIBS -lcrack"
183                         AC_MSG_RESULT([yes])
184                         if test "$cracklib" = "yes"; then
185                                 cracklib="/usr/lib/cracklib_dict"
186                         fi
187                         AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
188                                 [path to cracklib dictionary])
189                         AC_MSG_RESULT([setting cracklib dictionary to $cracklib])
190                         netatalk_cv_with_cracklib=yes
191                         ],[
192                         AC_MSG_ERROR([cracklib not found!])
193                         ]
194                 )
195         else
196                 AC_MSG_RESULT([no])
197         fi
198         ],[
199                 AC_MSG_RESULT([no])
200         ]
201 )
202
203 netatalk_cv_ddp_enabled=yes
204 AC_MSG_CHECKING([whether to enable DDP])
205 AC_ARG_ENABLE(ddp,
206         [  --disable-ddp           disable DDP],[
207         if test "$enableval" = "no"; then 
208                 AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
209                 AC_MSG_RESULT([no])
210                 netatalk_cv_ddp_enabled=no
211         else
212                 AC_MSG_RESULT([yes])
213         fi
214         ],[
215                 AC_MSG_RESULT([yes])
216         ]
217 )
218
219 AC_MSG_CHECKING([whether to enable debug code])
220 AC_ARG_ENABLE(debug1,
221         [  --enable-debug1         enable debug code],[
222         if test "$enableval" != "no"; then
223                 if test "$enableval" = "yes"; then
224                         AC_DEFINE(DEBUG1, 1, [Define if debugging information should be included])
225                 else
226                         AC_DEFINE_UNQUOTED(DEBUG1, $enableval, [Define if debugging information should be included])
227                 fi 
228                 AC_MSG_RESULT([yes])
229         else
230                 AC_MSG_RESULT([no])
231         fi
232         ],[
233                 AC_MSG_RESULT([no])
234         ]
235 )
236
237 AC_MSG_CHECKING([whether to enable verbose debug code])
238 AC_ARG_ENABLE(debug,
239         [  --enable-debug          enable verbose debug code],[
240         if test "$enableval" != "no"; then
241                 if test "$enableval" = "yes"; then
242                         AC_DEFINE(DEBUG, 1, [Define if verbose debugging information should be included])
243                 else
244                         AC_DEFINE_UNQUOTED(DEBUG, $enableval, [Define if verbose debugging information should be included])
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 afp3=no
256 afp3set=no
257 AC_MSG_CHECKING([whether AFP 3.x calls should be enabled])
258 AC_ARG_ENABLE(afp3,
259         [  --disable-afp3          disable AFP 3.x calls],
260         [
261             if test x"$enableval" != x"no"; then
262                 afp3set=yes
263                 afp3=yes
264                 AC_MSG_RESULT([yes])
265             else
266                 AC_MSG_RESULT([no])
267             fi
268         ],[
269             AC_MSG_RESULT([yes])
270             afp3=yes
271         ]
272 )
273
274 if test x"$afp3" = x"yes"; then
275         AC_SYS_LARGEFILE([
276                 AC_DEFINE(AFP3x, 1, [Define to enable AFP 3.x support])
277         ],[
278                 if test x"$afp3set" = x"yes"; then
279                         AC_MSG_ERROR([AFP 3.x support requires Large File Support.])
280                 else
281                         AC_MSG_WARN([AFP 3.x support requires Large File Support. AFP3.x support disabled])
282                         afp3=no
283                 fi
284         ])
285 fi
286
287 AC_CHECK_ICONV
288
289 dnl ----------- A NOTE ABOUT DROPKLUDGE
290 dnl The trouble with this fix is that if you know what the file is called, it
291 dnl can be read from the Unix side.  That's okay for most academic institutions
292 dnl since the students don't have telnet access to the Mac servers.  There is
293 dnl currently no one working on further development/fixes of DROPKLUDGE.
294 dnl -----------
295
296 netatalk_cv_dropkludge=no
297 AC_MSG_CHECKING([whether to enable experimental dropbox support])
298 AC_ARG_ENABLE(dropkludge,
299         [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],[
300         if test "$enableval" = "yes"; then 
301                 AC_DEFINE(DROPKLUDGE, 1, [Define if you want to use the experimental dropkludge support])
302                 AC_MSG_RESULT([yes])
303                 netatalk_cv_dropkludge=yes
304         else
305                 AC_MSG_RESULT([no])
306         fi
307         ],[
308                 AC_MSG_RESULT([no])
309         ]
310 )
311
312 netatalk_cv_force_uidgid=no
313 AC_MSG_CHECKING([whether to enable forcing of uid/gid per volume])
314 AC_ARG_ENABLE(force-uidgid,
315         [  --enable-force-uidgid   allow forcing of uid/gid per volume (BROKEN) ],[
316         if test "$enableval" = "yes"; then
317                 AC_DEFINE(FORCE_UIDGID, 1, [Define if you want forcing of uid/gid per volume])
318                 AC_MSG_RESULT([enabling forcing of uid/gid per volume])
319                 AC_MSG_RESULT([yes])
320                 netatalk_cv_force_uidgid=yes
321         else
322                 AC_MSG_RESULT([no])
323         fi
324         ],[
325                 AC_MSG_RESULT([no])
326         ]
327 )
328
329 dnl Check for CNID database backends
330 bdb_required=no
331 AC_NETATALK_CNID([bdb_required=yes],[bdb_required=no])
332
333 dnl Check for Berkeley DB library
334 if test "x$bdb_required" = "xyes"; then
335         AC_PATH_BDB(, [
336                 AC_MSG_RESULT([])
337                 AC_MSG_RESULT([Make sure you have the Berkeley DB libraries AND headers installed.])
338                 AC_MSG_RESULT([You can download the latest version from http://www.sleepcat.com.])
339                 AC_MSG_RESULT([If you have installed BDB in a non standard location use the])
340                 AC_MSG_RESULT([--with-bdb=/path/to/bdb configure option.])
341                 AC_MSG_ERROR([Berkeley DB library required but not found!])
342         ])
343 fi
344
345 dnl Check for quota support
346 AC_CHECK_QUOTA
347
348 dnl Check for optional server location protocol support (used by MacOS X)
349 NETATALK_SRVLOC
350
351 dnl Check for PAM libs
352 netatalk_cv_use_pam=no
353 AC_PATH_PAM([
354         use_pam_so=yes
355         compile_pam=yes
356         netatalk_cv_use_pam=yes
357         AC_DEFINE(USE_PAM, 1, [Define to enable PAM support])
358 ])
359
360 netatalk_cv_use_shadowpw=no
361 AC_ARG_WITH(shadow,
362         [  --with-shadow           enable shadow password support [[auto]]],
363         [netatalk_cv_use_shadowpw="$withval"],
364         [netatalk_cv_use_shadowpw=auto]
365 )
366
367 if test "x$netatalk_cv_use_shadowpw" != "xno"; then
368     AC_CHECK_HEADER([shadow.h])
369     if test x"$ac_cv_header_shadow_h" = x"yes"; then
370         netatalk_cv_use_shadowpw=yes
371         AC_DEFINE(SHADOWPW, 1, [Define if shadow passwords should be used])
372     else 
373       if test "x$shadowpw" = "xyes"; then
374         AC_MSG_ERROR([shadow support not available])
375       else
376         netatalk_cv_use_shadowpw=no
377       fi
378     fi 
379 fi
380
381 AC_MSG_CHECKING([whether shadow support should be enabled])
382 if test "x$netatalk_cv_use_shadowpw" = "xyes"; then
383         AC_MSG_RESULT([yes])
384 else
385         AC_MSG_RESULT([no])
386 fi
387         
388         
389         
390 netatalk_cv_use_shellcheck=yes
391 AC_MSG_CHECKING([whether checking for a valid shell should be enabled])
392 AC_ARG_ENABLE(shell-check,
393         [  --disable-shell-check   disable checking for a valid shell],[
394         if test "$enableval" = "no"; then 
395                 AC_DEFINE(DISABLE_SHELLCHECK, 1, [Define if shell check should be disabled])
396                 AC_MSG_RESULT([no])
397                 netatalk_cv_use_shellcheck=no
398         else
399                 AC_MSG_RESULT([yes])
400         fi
401         ],[
402                 AC_MSG_RESULT([yes])
403         ]
404 )
405
406 NETATALK_TCP_WRAPPERS
407
408 AC_MSG_CHECKING([whether system (fcntl) locking should be disabled])
409 AC_ARG_ENABLE(locking,
410         [  --disable-locking       disable system locking],[
411                 if test "$enableval" = "no"; then
412                         AC_DEFINE(DISABLE_LOCKING, 1, [Define if system (fcntl) locking should be disabled])
413                         AC_MSG_RESULT([yes])
414                 else
415                         AC_MSG_RESULT([no])
416                 fi
417                 
418         ],[
419                 AC_MSG_RESULT([no])
420         ]
421
422 )
423
424
425 AC_ARG_ENABLE(redhat,
426         [  --enable-redhat         use redhat-style sysv configuration ],[
427         if test "$enableval" = "yes"; then
428                 sysv_style=redhat
429         fi
430         AC_MSG_RESULT([enabling redhat-style sysv support])
431         ]
432 )
433
434 AC_ARG_ENABLE(suse,
435         [  --enable-suse           use suse-style sysv configuration ],[
436         if test "$enableval" = "yes"; then
437                 sysv_style=suse
438         fi
439         AC_MSG_RESULT([enabling suse-style sysv support])
440         ]
441 )
442
443 AC_ARG_ENABLE(gentoo,
444         [  --enable-gentoo         use gentoo-style sysv configuration ],[
445         if test "$enableval" = "yes"; then
446                 sysv_style=gentoo
447         fi
448         AC_MSG_RESULT([enabling gentoo-style sysv support])
449         ]
450 )
451
452 AC_ARG_ENABLE(cobalt,
453         [  --enable-cobalt         use cobalt-style sysv configuration ],
454         if test "$enableval" = "yes"; then
455                 sysv_style=cobalt
456         fi
457         AC_MSG_RESULT([enabling cobalt-style sysv support])
458 )
459
460 AC_ARG_ENABLE(netbsd,
461         [  --enable-netbsd         use NetBSD-style rc.d configuration ],
462         if test "x$enableval" = "xyes"; then
463                 sysv_style=netbsd
464         fi
465         AC_MSG_RESULT([enabling NetBSD-style rc.d support])
466 )
467
468 dnl ----- timelord compilation (disabled by default)
469 AC_MSG_CHECKING([whether timelord should be compiled])
470 compile_timelord=no
471 AC_ARG_ENABLE(timelord,
472         [  --enable-timelord       enable compilation of timelord server],
473         [compile_timelord="$enableval"],
474         [compile_timelord="no"]
475 )
476 AC_MSG_RESULT([$compile_timelord])
477
478 dnl ----- a2boot compilation (disabled by default)
479 AC_MSG_CHECKING([whether a2boot should be compiled])
480 compile_a2boot=no
481 AC_ARG_ENABLE(a2boot,
482         [  --enable-a2boot         enable compilation of Apple2 boot server],
483         [compile_a2boot="$enableval"],
484         [compile_a2boot="no"]
485 )
486 AC_MSG_RESULT([$compile_a2boot])
487
488 AC_ARG_WITH(uams-path,
489         [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]],[
490                 uams_path="$withval"
491         ],[
492                 uams_path="${PKGCONFDIR}/uams"
493         ]
494 )
495
496 dnl --------------------------------------------------------------------------
497 dnl FHS stuff has to be done last because it overrides other defaults
498 dnl --------------------------------------------------------------------------
499
500 AC_MSG_CHECKING([whether to use Filesystem Hierarchy Standard (FHS) compatibility])
501 AC_ARG_ENABLE(fhs,
502         [  --enable-fhs            use Filesystem Hierarchy Standard (FHS) compatibility],[
503         if test "$enableval" = "yes"; then
504                 uams_path="${libdir}/netatalk"
505                 sysconfdir="/etc"
506                 PKGCONFDIR=${sysconfdir}/netatalk
507                 SERVERTEXT="${PKGCONFDIR}/msg"
508                 use_pam_so=yes
509                 mandir="/usr/share/man"
510                 AC_DEFINE(FHS_COMPATIBILITY, 1, [Define if you want compatibily with the FHS])
511                 AC_MSG_RESULT([yes])
512         else
513                 AC_MSG_RESULT([no])
514         fi
515         ],[
516                 AC_MSG_RESULT([no])
517         ]
518 )
519
520 dnl --------------------------------------------------------------------------
521 dnl post-FHS substitutions, etc
522 dnl --------------------------------------------------------------------------
523
524 dnl ***** UAMS_PATH
525 dnl AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}",
526 dnl     [path to UAMs [default=PKGCONF/uams]])
527 UAMS_PATH="${uams_path}"
528 AC_SUBST(UAMS_PATH)
529
530 dnl --------------------------------------------------------------------------
531 dnl drop in includes for top level directory structures here...
532 dnl --------------------------------------------------------------------------
533
534 dnl Note: $(top_srcdir)/include should be added before all other includes
535 dnl       so that includes from that directory a preferred to includes from
536 dnl       /usr/include or similar places.
537 LIBS="$LIBS -L\$(top_srcdir)/libatalk"
538 CFLAGS="-I\$(top_srcdir)/include $CFLAGS -I\$(top_srcdir)/sys"
539
540 dnl --------------------------------------------------------------------------
541 dnl specific configuration comes in here:
542 dnl --------------------------------------------------------------------------
543
544 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
545
546 dnl --------------------- determine operating system from "target"
547 case "$host_os" in
548         *aix*)                          this_os=aix ;;
549         *freebsd*)                      this_os=freebsd ;;
550         *hpux11*)                       this_os=hpux11 ;;
551         *irix*)                         this_os=irix ;;
552         *linux*)                        this_os=linux ;;
553         *osx*)                          this_os=macosx ;;
554         *darwin*)                       this_os=macosx ;;
555         *netbsd*)                       this_os=netbsd ;;
556         *openbsd*)                      this_os=openbsd ;;
557         *osf*)                          this_os=tru64 ;;
558         *solaris*)                      this_os=solaris ;;
559 esac
560
561 case "$host_cpu" in
562         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
563         alpha)                                          this_cpu=alpha ;;
564         mips)                                           this_cpu=mips ;;
565         powerpc|ppc)                            this_cpu=ppc ;;
566 esac
567
568 dnl --------------------- operating system specific flags (port from sys/*)
569
570 dnl ----- AIX specific -----
571 if test x"$this_os" = "xaix"; then
572         AC_MSG_RESULT([ * AIX specific configuration])
573         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
574
575         dnl This is probably a lie; AIX 4.3 supports a 64-bit long
576         dnl compilation environment.  It's enough to get things defined
577         dnl right in endian.h provided that long long is supported, though.
578         AC_DEFINE(HAVE_32BIT_LONGS, 1, [Define if the data type long has 32 bit])
579 fi
580
581 dnl ----- FreeBSD specific -----
582 if test x"$this_os" = "xfreebsd"; then 
583         AC_MSG_RESULT([ * FreeBSD specific configuration])
584         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
585         AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
586         AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics])
587 fi
588
589 dnl ----- HP-UX 11 specific -----
590 if test x"$this_os" = "xhpux11"; then
591         AC_MSG_RESULT([ * HP-UX 11 specific configuration])
592
593         AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
594         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
595 fi
596
597 dnl ----- IRIX specific -----
598 if test x"$this_os" = "xirix"; then
599         AC_MSG_RESULT([ * IRIX specific configuration])
600
601         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
602 fi
603
604 dnl ----- Linux specific -----
605 if test x"$this_os" = "xlinux"; then 
606         AC_MSG_RESULT([ * Linux specific configuration])
607         
608         dnl ----- kernel 2.6 changed struct at_addr to atalk_addr
609         AC_MSG_CHECKING([for struct atalk_addr])
610 dnl     AC_COMPILE_IFELSE([
611         AC_TRY_COMPILE([
612 #include <sys/socket.h>
613 #include <asm/types.h>
614 #include <linux/atalk.h>
615 ],
616 [
617 int main() {
618         struct atalk_addr foo;
619
620         return 0;
621 }
622         ], [
623                 ac_have_atalk_addr=yes
624                 AC_MSG_RESULT([yes])
625         ], [
626                 AC_MSG_RESULT([no])
627         ])
628
629 if test "x$ac_have_atalk_addr" = "xyes"; then
630         AC_DEFINE(HAVE_ATALK_ADDR, 1, [set if struct at_addr is called atalk_addr])
631 fi
632
633         dnl ----- check if we need the quotactl wrapper
634 #       AC_CHECK_HEADERS(sys/quota.h linux/quota.h)
635 #       AC_CHECK_FUNC(quotactl,,
636 #               AC_DEFINE(NEED_QUOTACTL_WRAPPER, 1, [Define if the quotactl wrapper is needed])
637 #               AC_MSG_RESULT([enabling quotactl wrapper])
638 #       )
639
640         # For quotas on Linux XFS filesystems
641         AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
642         AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
643         # For linux > 2.5.56
644         AC_CHECK_HEADERS(linux/dqblk_xfs.h)
645
646
647         dnl ----- as far as I can tell, dbtob always does the wrong thing
648         dnl ----- on every single version of linux I've ever played with.
649         dnl ----- see etc/afpd/quota.c
650         AC_DEFINE(HAVE_BROKEN_DBTOB, 1, [Define if dbtob is broken])
651
652         netatalk_cv_linux_sendfile=no
653         AC_ARG_ENABLE(sendfile,
654             [  --enable-sendfile       use sendfile syscall default (no) ],[
655                 if test "$enableval" = "yes"; then
656                         netatalk_cv_linux_sendfile=yes
657                 fi
658                 AC_MSG_RESULT([enabling sendfile syscall])
659             ]
660         )
661
662         if test x"$netatalk_cv_linux_sendfile" = "xyes"; then 
663             AC_CACHE_CHECK([for linux sendfile support],netatalk_cv_HAVE_SENDFILE,[
664             AC_TRY_LINK([#include <sys/sendfile.h>],
665 [\
666 int tofd, fromfd;
667 off_t offset;
668 size_t total;
669 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
670 ],
671 netatalk_cv_HAVE_SENDFILE=yes,netatalk_cv_HAVE_SENDFILE=no)])
672
673 # Try and cope with broken Linux sendfile....
674             AC_CACHE_CHECK([for broken linux sendfile support],netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE,[
675             AC_TRY_LINK([\
676 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
677 #undef _FILE_OFFSET_BITS
678 #endif
679 #include <sys/sendfile.h>],
680 [\
681 int tofd, fromfd;
682 off_t offset;
683 size_t total;
684 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
685 ],
686 netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE=no,netatalk_cv_HAVE_BROKEN_SENDFILE=cross)])
687
688             if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then
689                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
690                 AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
691                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
692             elif test x"$netatalk_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
693                 AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
694                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
695                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
696             else
697                 netatalk_cv_linux_sendfile=no
698                 AC_MSG_RESULT(no);
699             fi
700         fi
701
702         dnl ----- Linux/alpha specific -----
703         if test x"$this_cpu" = "xalpha"; then 
704                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
705                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG, 1, [Define if memcpy is buggy])
706         fi
707         need_dash_r=no
708
709
710 fi
711
712 dnl ----- Mac OSX specific -----
713 if test x"$this_os" = "xmacosx"; then 
714         AC_MSG_RESULT([ * Mac OSX specific configuration])
715         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
716         AC_DEFINE(HAVE_BROKEN_CPP, 1, [Define if cpp is broken])
717         AC_DEFINE(HAVE_2ARG_DBTOB, 1, [Define if dbtob takes two arguments])
718         dnl AC_DEFINE(NO_DLFCN_H)
719         AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
720         AC_DEFINE(NO_QUOTA_SUPPORT, 1, [Define if Quota support should be disabled])
721         AC_DEFINE(MACOSX_SERVER, 1, [Define if compiling for MacOS X Server])
722 fi
723
724 dnl ----- NetBSD specific -----
725 if test x"$this_os" = "xnetbsd"; then 
726         AC_MSG_RESULT([ * NetBSD specific configuration])
727         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
728         AC_DEFINE(NETBSD, 1, [Define if OS is FreeBSD])
729         if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
730                 # NetBSD ELF machines don't have to have DLSYM_PREPEND_UNDERSCORE.
731                 # If this test is true, it's not an ELF box.
732                 # This REALLY should be a configure test.
733                 AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro])
734         fi
735         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
736         need_dash_r=yes 
737
738         dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
739         AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
740 fi
741
742 dnl ----- OpenBSD specific -----
743 if test x"$this_os" = "xopenbsd"; then 
744         AC_MSG_RESULT([ * OpenBSD specific configuration])
745         AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
746         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro])
747
748         dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
749         AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
750 fi
751
752 dnl ----- Solaris specific -----
753 if test x"$this_os" = "xsolaris"; then 
754         AC_MSG_RESULT([ * Solaris specific configuration])
755         AC_DEFINE(__svr4__, 1, [Solaris compatibility macro])
756         AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
757         AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
758         AC_DEFINE(SOLARIS, 1, [Solaris compatibility macro])
759         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
760         need_dash_r=yes
761         sysv_style=solaris
762
763         solaris_module=no
764         AC_MSG_CHECKING([if we can build Solaris kernel module])
765         if test -x /usr/ccs/bin/ld; then
766                 solaris_module=yes
767         fi
768         AC_MSG_RESULT([$solaris_module])
769
770         COMPILE_64BIT_KMODULE=no
771         KCFLAGS=""
772         KLDFLAGS=""
773         COMPILE_KERNEL_GCC=no
774
775         if test "$solaris_module" = "yes"; then
776            dnl Solaris kernel module stuff
777            AC_MSG_CHECKING([if we have to build a 64bit kernel module])
778
779            # check for isainfo, if not found it has to be a 32 bit kernel (<=2.6)       
780            if test -x /usr/bin/isainfo; then
781                 # check for 64 bit platform
782                 if isainfo -kv | grep '^64-bit'; then
783                         COMPILE_64BIT_KMODULE=yes
784                 fi
785            fi
786
787            AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
788
789
790            if test "${GCC}" = yes; then
791                 COMPILE_KERNEL_GCC=yes
792                 if test "$COMPILE_64BIT_KMODULE" = yes; then
793                         # use for 64 bit
794                         KCFLAGS="-m64"
795                         #KLDFLAGS="-melf64_sparc"
796                         KLDFLAGS="-64"
797                 else
798                         KCFLAGS=""
799                         KLDFLAGS=""
800                 fi
801                 KCFLAGS="$KCFLAGS -D_KERNEL -Wall -Wstrict-prototypes"
802            else
803                 if test "$COMPILE_64BIT_KMODULE" = yes; then
804                 # use Sun CC (for a 64-bit kernel, uncomment " -xarch=v9 -xregs=no%appl ")
805                         KCFLAGS="-xarch=v9 -xregs=no%appl"
806                         KLDFLAGS="-64"
807                 else
808                         KCFLAGS=""
809                         KLDFLAGS=""
810                 fi
811                 KCFLAGS="-D_KERNEL $KCFLAGS -mno-app-regs -munaligned-doubles -fpcc-struct-return"
812            fi
813
814            AC_CACHE_CHECK([for timeout_id_t],netatalk_cv_HAVE_TIMEOUT_ID_T,[
815            AC_TRY_LINK([\
816 #include <sys/stream.h>
817 #include <sys/ddi.h>],
818 [\
819 timeout_id_t dummy;
820 ],
821 netatalk_cv_HAVE_TIMEOUT_ID_T=yes,netatalk_cv_HAVE_TIMEOUT_ID_T=no,netatalk_cv_HAVE_TIMEOUT_ID_T=cross)])
822
823            AC_DEFINE(HAVE_TIMEOUT_ID_T, test x"$netatalk_cv_HAVE_TIMEOUT_ID" = x"yes", [define for timeout_id_t])
824         fi
825
826         AC_SUBST(COMPILE_KERNEL_GCC)
827         AC_SUBST(COMPILE_64BIT_KMODULE)
828         AC_SUBST(KCFLAGS)
829         AC_SUBST(KLDFLAGS)
830 fi
831
832 dnl ----- Tru64 specific -----
833 if test x"$this_os" = "xtru64"; then 
834         AC_MSG_RESULT([ * Tru64 specific configuration])
835         AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
836         AC_DEFINE(HAVE_64BIT_LONGS, 1, [Define if the data type long has 64 bit])
837         dnl AC_DEFINE(USE_MOUNT_H)
838         AC_DEFINE(USE_OLD_RQUOTA, 1, [Define to use old rquota])
839         dnl AC_DEFINE(USE_UFS_QUOTA_H)
840         AC_DEFINE(TRU64, 1, [Define on Tru64 platforms])
841         AC_DEFINE(_OSF_SOURCE, 1, [Define if the *passwd UAMs should be used])
842         AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Define for Berkeley DB 4])
843         AC_CHECK_LIB(security,set_auth_parameters)
844         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
845         need_dash_r=no
846         sysv_style=tru64
847 fi
848
849 dnl -- look for openssl
850 AC_PATH_SSL
851
852 dnl -- check for crypt
853 AC_CRYPT
854
855 dnl --------------------- check for building PGP UAM module
856
857 AC_MSG_CHECKING([whether the PGP UAM should be build])
858 AC_ARG_ENABLE(pgp-uam,
859         [  --enable-pgp-uam        enable build of PGP UAM module],[
860         if test "$enableval" = "yes"; then 
861                 if test "$compile_ssl" = "yes"; then 
862                         AC_DEFINE(UAM_PGP, 1, [Define if the PGP UAM module should be compiled])
863                         compile_pgp=yes
864                         AC_MSG_RESULT([yes])
865                 else
866                         AC_MSG_RESULT([no])
867                 fi
868         fi
869         ],[
870                 AC_MSG_RESULT([no])
871         ]
872 )
873
874 dnl --------------------- check for building Kerberos v4 UAM module
875
876 AC_MSG_CHECKING([whether the Kerberos IV UAM should be build])
877 AC_ARG_ENABLE(krb4-uam,
878         [  --enable-krb4-uam       enable build of Kerberos v4 UAM module],[
879         if test "$enableval" = "yes"; then
880                 AC_DEFINE(UAM_KRB4, 1, [Define if the Kerberos 4 UAM module should be compiled])
881                 compile_kerberos=yes
882                 AC_MSG_RESULT([yes])
883         else
884                 AC_MSG_RESULT([no])
885         fi
886         ],[
887                 AC_MSG_RESULT([no])
888         ]
889 )
890
891 dnl --------------------- check for building Kerberos V UAM module
892
893 netatalk_cv_build_krb5_uam=no
894 AC_ARG_ENABLE(krbV-uam,
895         [  --enable-krbV-uam       enable build of Kerberos V UAM module],
896         [
897                 if test x"$enableval" = x"yes"; then
898                         NETATALK_GSSAPI_CHECK([
899                                 netatalk_cv_build_krb5_uam=yes
900                         ],[
901                                 AC_MSG_ERROR([need GSSAPI to build Kerberos V UAM])
902                         ])
903                 fi
904         ]
905         
906 )
907
908 AC_MSG_CHECKING([whether Kerberos V UAM should be build])
909 if test x"$netatalk_cv_build_krb5_uam" = x"yes"; then
910         AC_MSG_RESULT([yes])
911 else
912         AC_MSG_RESULT([no])
913 fi
914 AM_CONDITIONAL(USE_GSSAPI, test x"$netatalk_cv_build_krb5_uam" = x"yes")
915
916 dnl --------------------- overwrite the config files . . . or not.
917
918 AC_MSG_CHECKING([whether configuration files should be overwritten])
919 AC_ARG_ENABLE(overwrite,
920         [  --enable-overwrite      overwrite configuration files during installation],
921         [OVERWRITE_CONFIG="${enable_overwrite}"],
922         [OVERWRITE_CONFIG="no"]
923 )
924 AC_MSG_RESULT([$OVERWRITE_CONFIG])
925
926 dnl --------------------- last minute substitutions
927
928 AC_SUBST(LIBS)
929 AC_SUBST(CFLAGS)
930 AC_SUBST(OVERWRITE_CONFIG)
931
932 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
933 AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
934 AM_CONDITIONAL(COMPILE_A2BOOT, test x$compile_a2boot = xyes)
935 AM_CONDITIONAL(USE_DHX, test x$compile_ssl = xyes)
936 AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
937 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
938 AM_CONDITIONAL(USE_PAM, test x$netatalk_cv_install_pam = xyes)
939 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
940 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
941 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
942 AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd)
943 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
944 AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse)
945 AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
946 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
947 AM_CONDITIONAL(USE_SOLARIS, test x$sysv_style = xsolaris)
948 AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo)
949 AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = x)
950
951 dnl --------------------- generate files
952
953 AC_OUTPUT([Makefile
954         bin/Makefile
955         bin/adv1tov2/Makefile
956         bin/aecho/Makefile
957         bin/afile/Makefile
958         bin/afppasswd/Makefile
959         bin/cnid/Makefile
960         bin/cnid/cnid_maint
961         bin/cnid/cnid2_create
962         bin/getzones/Makefile
963         bin/megatron/Makefile
964         bin/nbp/Makefile
965         bin/pap/Makefile
966         bin/psorder/Makefile
967         bin/uniconv/Makefile
968         config/Makefile
969         contrib/Makefile
970         contrib/macusers/Makefile
971         contrib/macusers/macusers
972         contrib/nu/Makefile
973         contrib/nu/nu
974         contrib/printing/Makefile
975         contrib/shell_utils/Makefile
976         contrib/shell_utils/afpd-mtab.pl
977         contrib/shell_utils/apple_cp
978         contrib/shell_utils/apple_mv
979         contrib/shell_utils/apple_rm
980         contrib/shell_utils/cleanappledouble.pl
981         contrib/shell_utils/netatalkshorternamelinks.pl
982         contrib/timelord/Makefile
983         contrib/a2boot/Makefile
984         distrib/Makefile
985         distrib/config/Makefile
986         distrib/config/netatalk-config
987         distrib/initscripts/Makefile
988         distrib/m4/Makefile
989         doc/Makefile
990         etc/Makefile
991         etc/afpd/Makefile
992         etc/atalkd/Makefile
993         etc/cnid_dbd/Makefile
994         etc/uams/Makefile
995         etc/uams/uams_krb4/Makefile
996         etc/papd/Makefile
997         etc/psf/Makefile
998         include/Makefile
999         include/atalk/Makefile
1000         libatalk/Makefile
1001         libatalk/adouble/Makefile
1002         libatalk/asp/Makefile
1003         libatalk/atp/Makefile
1004         libatalk/cnid/Makefile
1005         libatalk/cnid/db3/Makefile
1006         libatalk/cnid/cdb/Makefile
1007         libatalk/cnid/last/Makefile
1008         libatalk/cnid/mtab/Makefile
1009         libatalk/cnid/dbd/Makefile
1010         libatalk/cnid/hash/Makefile
1011         libatalk/cnid/tdb/Makefile
1012         libatalk/compat/Makefile
1013         libatalk/dsi/Makefile
1014         libatalk/nbp/Makefile
1015         libatalk/netddp/Makefile
1016         libatalk/util/Makefile
1017         libatalk/tdb/Makefile
1018         libatalk/unicode/Makefile
1019         libatalk/unicode/charsets/Makefile
1020         macros/Makefile
1021         man/Makefile
1022         man/man1/Makefile
1023         man/man3/Makefile
1024         man/man4/Makefile
1025         man/man5/Makefile
1026         man/man8/Makefile
1027         sys/Makefile
1028         sys/generic/Makefile
1029         sys/generic/sys/Makefile
1030         sys/netatalk/Makefile
1031         sys/netbsd/Makefile
1032         sys/netbsd/netatalk/Makefile
1033         sys/solaris/Makefile
1034         sys/sunos/Makefile
1035         sys/ultrix/Makefile
1036         ],
1037         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
1038 )
1039
1040 AC_NETATALK_LIBS_SUMMARY
1041 AC_NETATALK_CONFIG_SUMMARY
1042