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