]> arthur.barton.de Git - netatalk.git/blob - configure.in
properly checks for db3 headers (Joe Clarke)
[netatalk.git] / configure.in
1 dnl $Id: configure.in,v 1.101 2001-09-04 13:55:00 rufustfirefly Exp $
2 dnl configure.in for netatalk
3
4 AC_INIT(bin/adv1tov2/adv1tov2.c)
5
6 NETATALK_VERSION=`cat 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 Reset locations to proper places
14 AC_PREFIX_DEFAULT(/usr/local)
15
16 dnl Checks for programs.
17 AC_PROG_AWK
18 AC_PROG_CC
19 AC_PROG_INSTALL
20 AC_PROG_LN_S
21 AC_PROG_MAKE_SET
22 AC_LIBTOOL_DLOPEN
23 AM_PROG_LIBTOOL
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 dnl Checks for libraries.
31 dnl Replace `main' with a function in -labs:
32 AC_CHECK_LIB(abs, main)
33 dnl Replace `main' with a function in -laudit:
34 AC_CHECK_LIB(audit, main)
35 dnl Replace `main' with a function in -lauth:
36 AC_CHECK_LIB(auth, main)
37 dnl Replace `main' with a function in -lcmd:
38 AC_CHECK_LIB(cmd, main)
39 dnl Replace `main' with a function in -lcom_err:
40 AC_CHECK_LIB(com_err, main)
41 dnl Replace `main' with a function in -lcrypt:
42 AC_CHECK_LIB(crypt, main)
43 dnl Replace `main' with a function in -ld:
44 AC_CHECK_LIB(d, main)
45 dnl Replace `main' with a function in -ldl:
46 AC_CHECK_LIB(dl, main)
47 dnl Replace `main' with a function in -lkauth:
48 AC_CHECK_LIB(kauth, main)
49 dnl Replace `main' with a function in -lkrb:
50 AC_CHECK_LIB(krb, main)
51 dnl Replace `main' with a function in -llwp:
52 AC_CHECK_LIB(lwp, main)
53 dnl Replace `main' with a function in -ln:
54 AC_CHECK_LIB(n, main)
55 dnl Replace `main' with a function in -lnsl:
56 AC_CHECK_LIB(nsl, main)
57 dnl Replace `main' with a function in -lprot:
58 AC_CHECK_LIB(prot, main)
59 dnl Replace `main' with a function in -lresolv:
60 AC_CHECK_LIB(resolv, main)
61 dnl Replace `main' with a function in -lrpcsvc:
62 AC_CHECK_LIB(rpcsvc, main)
63 dnl Replace `main' with a function in -lrx:
64 AC_CHECK_LIB(rx, main)
65 dnl Replace `main' with a function in -lrxkad:
66 AC_CHECK_LIB(rxkad, main)
67 dnl Replace `main' with a function in -lsocket:
68 AC_CHECK_LIB(socket, main)
69 dnl Replace `main' with a function in -lsys:
70 AC_CHECK_LIB(sys, main)
71 dnl Replace `main' with a function in -lubik:
72 AC_CHECK_LIB(ubik, main)
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 dnl Checks for header files.
83 AC_HEADER_DIRENT
84 AC_HEADER_STDC
85 AC_HEADER_SYS_WAIT
86 AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.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)
87 AC_CHECK_HEADER(sys/cdefs.h,,
88         AC_MSG_RESULT([enabling generic cdefs.h from tree])
89         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
90 )
91
92 # Allow user to specify flags
93 AC_ARG_WITH(cflags,
94         [  --with-cflags           specify additional flags to pass to compiler],
95         [
96                 if test "x$withval" != "xno" ; then
97                         CFLAGS="$CFLAGS $withval"
98                 fi
99         ]       
100 )
101 AC_ARG_WITH(libs,
102         [  --with-libs             specify additional libraries to link with],
103         [
104                 if test "x$withval" != "xno" ; then
105                         LIBS="$LIBS $withval"
106                 fi
107         ]
108 )
109
110 dnl Checks for typedefs, structures, and compiler characteristics.
111 AC_C_CONST
112 AC_TYPE_UID_T
113 AC_C_INLINE
114 AC_TYPE_MODE_T
115 AC_TYPE_OFF_T
116 AC_TYPE_PID_T
117 AC_TYPE_SIZE_T
118 AC_STRUCT_ST_RDEV
119 AC_HEADER_TIME
120 AC_STRUCT_TM
121
122 dnl Checks for library functions.
123 AC_TYPE_GETGROUPS
124 AC_PROG_GCC_TRADITIONAL
125 AC_FUNC_MEMCMP
126 AC_HEADER_MAJOR
127 AC_FUNC_MMAP
128 AC_TYPE_SIGNAL
129 AC_FUNC_UTIME_NULL
130 AC_FUNC_WAIT3
131 AC_CHECK_FUNCS(flock getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp)
132 AC_FUNC_SETPGRP
133
134 dnl --------------------------------------------------------------------------
135 dnl specific configuration comes in here:
136 dnl --------------------------------------------------------------------------
137
138 AC_DEFINE(ADMIN_GRP, 1)
139
140 AC_ARG_WITH(admin-group,
141         [  --disable-admin-group   disable admin group],
142         if test "$enableval" = "no"; then
143                 AC_DEFINE(ADMIN_GRP, 0)
144                 AC_MSG_RESULT([disabling administrative group support])
145         fi
146  )
147
148 AC_ARG_ENABLE(afs,
149         [  --enable-afs            enable AFS support],
150         if test "$enableval" = "yes"; then
151                 AC_DEFINE(AFS, 1)
152                 AC_MSG_RESULT([enabling AFS support])
153         fi
154 )
155
156 AC_ARG_WITH(config-dir,
157         [  --with-config-dir=DIR   obsolete - use --pkgconfdir],
158                 sysconfdir="$withval",
159                 if test "x$prefix" = "xNONE"; then
160                         sysconfdir="$ac_default_prefix/etc"
161                 else
162                         sysconfdir="${prefix}/etc"
163                 fi
164 )
165
166 AC_ARG_WITH(pkgconfdir,
167         [  --with-pkgconfdir=DIR   package specific configuration in DIR
168                           [default=SYSCONF/netatalk]],
169                 PKGCONFDIR="$withval",
170                 PKGCONFDIR="${sysconfdir}/netatalk"
171 )
172
173 AC_ARG_WITH(cracklib,
174         [  --with-cracklib=dict    enable/set location of cracklib dictionary],
175         if test "x$withval" != "xno" ; then
176                 cracklib="$withval"
177                 AC_CHECK_LIB(crack, main,
178                         AC_DEFINE(USE_CRACKLIB) 
179                         LIBS="$LIBS -lcrack"
180                         AC_MSG_RESULT([enabling cracklib support])
181                         if test "$cracklib" = "yes"; then
182                                 cracklib="/usr/lib/cracklib_dict"
183                         fi
184                         AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
185                                 [path to cracklib dictionary])
186                         AC_MSG_RESULT([setting cracklib dictionary to $cracklib]),
187                         AC_MSG_ERROR([cracklib not found!])
188                 )
189         fi
190 )
191
192 AC_ARG_ENABLE(ddp,
193         [  --disable-ddp           disable DDP],
194         if test "$enableval" = "no"; then 
195                 AC_DEFINE(NO_DDP, 1)
196                 AC_MSG_RESULT([disabling DDP])
197         fi
198 )
199
200 AC_ARG_ENABLE(debug,
201         [  --enable-debug          enable debug code],
202         if test "$enableval" != "no"; then
203                 if test "$enableval" = "yes"; then
204                         AC_DEFINE(DEBUG, 1)
205                 else
206                         AC_DEFINE_UNQUOTED(DEBUG, $enableval)
207                 fi 
208                 AC_MSG_RESULT([enabling debugging code])
209         else
210                 AC_DEFINE(DEBUG, 0)
211         fi
212 )
213
214
215 dnl ----------- A NOTE ABOUT DROPKLUDGE
216 dnl The trouble with this fix is that if you know what the file is called, it
217 dnl can be read from the Unix side.  That's okay for most academic institutions
218 dnl since the students don't have telnet access to the Mac servers.  There is
219 dnl currently no one working on further development/fixes of DROPKLUDGE.
220 dnl -----------
221
222 AC_ARG_ENABLE(dropkludge,
223         [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],
224         if test "$enableval" = "yes"; then 
225                 AC_DEFINE(DROPKLUDGE, 1)
226                 AC_MSG_RESULT([enabling experimental dropbox support])
227         fi
228 )
229
230 AC_ARG_ENABLE(force-uidgid,
231         [  --enable-force-uidgid   allow forcing of uid/gid per volume (BROKEN) ],
232         if test "$enableval" = "yes"; then
233                 AC_DEFINE(FORCE_UIDGID, 1)
234                 AC_MSG_RESULT([enabling forcing of uid/gid per volume])
235         fi
236 )
237
238 dnl Don't use DB3 unless it's needed
239 db3_required=no
240
241 dnl Check for CNID DB support
242 AC_ARG_ENABLE(cnid-db,
243         [  --enable-cnid-db   use persistent cnid database per volume (EXPERIMENTAL) ],
244         if test "x$enableval" = "xyes"; then
245                 dnl Now we need DB3
246                 db3_required="yes"
247
248                 dnl Note that we don't AC_DEFINE(CNID_DB, 1) here...
249                 dnl we have to check for the library first.
250                 dnl AC_MSG_RESULT([db3 check enabled])
251         fi
252 )
253
254 dnl Check for Berkeley DB3 library
255 AC_ARG_WITH(db3,
256         [  --with-db3=PATH         specify path to Berkeley DB3 installation],
257         if test "x$withval" != "xno"; then
258                 trydb3dir="$withval"
259         fi
260 )
261
262 db3_found=no
263 for db3dir in "" $trydb3dir /usr /usr /usr/local ; do
264         if test -f "$db3dir/include/db3/db.h" ; then
265                 LDFLAGS="$LDFLAGS -L$db3dir/lib -ldb3"
266                 CFLAGS="$CFLAGS -I$db3dir/include/db3"
267
268                 dnl If we require DB3, die if we don't have it
269                 if test "x$db3_required" != "xno"; then
270                         AC_CHECK_LIB(db, main,
271                                 dnl AC_MSG_RESULT([enabling db3 support])
272                                 db3_found=yes
273                                 dnl -- also enable CNID DB when this is found
274                                 AC_DEFINE(CNID_DB, 1)
275                                 AC_MSG_RESULT([using persistent cnid database per volume])
276                                 LIBS="$LIBS -ldb",
277                                 dnl Not Found
278                                 AC_MSG_ERROR([Berkeley DB3 library not found!])
279                         )
280                 fi
281                 break
282         fi
283 done
284
285 dnl Die if the library is required, but not found
286 if test "x$db3_required" != "xno"; then
287         if test "x$db3_found" = "xno"; then
288                 dnl Not Found
289                 AC_MSG_ERROR([Berkeley DB3 library not found!])
290         fi
291 fi
292
293 AC_ARG_WITH(did,
294         [  --with-did=[scheme]     set DID scheme (last,mtab)],
295         if test "x$withval" != "xno" ; then
296                 if test "$withval" = "last"; then
297                         AC_DEFINE(USE_LASTDID, 1)
298                         AC_MSG_RESULT([enabling build without DID dev/inode mapping kludge])
299                 fi
300                 if test "$withval" = "mtab"; then
301                         AC_DEFINE(DID_MTAB, 1)
302                         AC_MSG_RESULT([enabling mtab-based DID creation support])
303                 fi
304         fi
305 )
306
307 msg_dir=""
308 AC_ARG_WITH(message-dir,
309         [  --with-msg-dir=path     path to message files [default=$ac_prefix_default/etc/msg]],
310                 msg_dir="$withval"
311                 if test x"$msg_dir" = "x"; then
312                         msg_dir="${PKGCONFDIR}/msg"
313                 fi
314                 AC_DEFINE_UNQUOTED(SERVERTEXT, "$msg_dir",
315                         [path to message dir [default=$ac_prefix_default/etc/msg]])
316                 SERVERTEXT="$msg_dir"
317                 AC_SUBST(SERVERTEXT)
318 )
319
320 AC_CHECK_LIB(pam, pam_start,
321         AC_DEFINE(USE_PAM, 1)
322         LIBS="$LIBS -lpam"
323         compile_pam=yes
324 )
325
326 AC_ARG_WITH(pam,
327         [  --without-pam           disable password authentication modules support],
328         compile_pam=no
329         use_pam_so=no
330         AC_DEFINE(USE_PAM, 0)
331         AC_MSG_RESULT([disabling pam modules support])
332 )
333 if test "x$compile_pam" = "xyes"; then
334         use_pam_so=yes
335         AC_MSG_RESULT([enabling pam modules support])
336 fi
337
338 shadowpw=no
339 AC_ARG_WITH(shadow,
340         [  --with-shadow           enable shadow password support],
341         AC_MSG_RESULT([enabling shadow password support])
342         AC_DEFINE(SHADOWPW)
343         shadowpw=yes
344 )
345
346 AC_ARG_ENABLE(shell-check,
347         [  --disable-shell-check   disable checking for a valid shell],
348         if test "$enableval" = "no"; then 
349                 AC_DEFINE(DISABLE_SHELLCHECK, 1)
350                 AC_MSG_RESULT([disabling valid shell check])
351         fi
352 )
353
354 AC_ARG_WITH(flock-locks,
355         [  --with-flock-locks      enable flock locks support],
356         AC_MSG_RESULT([enabling flock locks])
357         AC_DEFINE(USE_FLOCK_LOCKS)
358 )
359
360 AC_ARG_WITH(tcp-wrappers,
361         [  --with-tcp-wrappers     enable TCP wrappers support],
362         AC_CHECK_LIB(wrap, tcpd_warn,
363                 AC_DEFINE(TCPWRAP)
364                 AFPD_LIBS="$AFPD_LIBS -lwrap"
365                 AC_MSG_RESULT([enabling TCP wrappers support])
366         )
367 )
368
369 AC_ARG_ENABLE(redhat,
370         [  --enable-redhat         use redhat-style sysv configuration ],
371         if test "$enableval" = "yes"; then
372                 sysv_style=redhat
373         fi
374         AC_MSG_RESULT([enabling redhat-style sysv support])
375 )
376
377 AC_ARG_ENABLE(suse,
378         [  --enable-suse           use suse-style sysv configuration ],
379         if test "$enableval" = "yes"; then
380                 sysv_style=suse
381         fi
382         AC_MSG_RESULT([enabling suse-style sysv support])
383 )
384
385 AC_ARG_ENABLE(cobalt,
386         [  --enable-cobalt         use cobalt-style sysv configuration ],
387         if test "$enableval" = "yes"; then
388                 sysv_style=cobalt
389         fi
390         AC_MSG_RESULT([enabling cobalt-style sysv support])
391 )
392
393 dnl ----- timelord compilation (disabled by default)
394 compile_timelord=no
395 AC_ARG_ENABLE(timelord,
396         [  --enable-timelord       enable compilation of timelord server],
397         if test "$enableval" = "yes"; then
398                 compile_timelord=yes
399         fi
400         AC_MSG_RESULT([enabling timelord compilation])
401 )
402
403 AC_ARG_WITH(uams-path,
404         [  --with-uams-path=path   path to UAMs [default=PKGCONF/uams]],
405         uams_path="$withval",
406         uams_path="${PKGCONFDIR}/uams"
407 )
408
409 dnl --------------------------------------------------------------------------
410 dnl FHS stuff has to be done last because it overrides other defaults
411 dnl --------------------------------------------------------------------------
412
413 AC_ARG_ENABLE(fhs,
414         [  --enable-fhs            use Filesystem Hierarchy Standard (FHS) compatibility],
415         if test "$enableval" = "yes"; then
416                 uams_path="/usr/lib/netatalk"
417                 sysconfdir="/etc"
418                 PKGCONFDIR=${sysconfdir}/netatalk
419                 use_pam_so=yes
420                 dnl FIXME: NEED TO HAVE --mandir=/usr/share/man AT SOME POINT...
421                 AC_DEFINE(FHS_COMPATIBILITY)
422         fi
423         AC_MSG_RESULT([enabling Filesystem Hierarchy Standard (FHS) compatibility])
424 )
425
426 dnl --------------------------------------------------------------------------
427 dnl post-FHS substitutions, etc
428 dnl --------------------------------------------------------------------------
429
430 ***** UAMS_PATH
431 AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}",
432         [path to UAMs [default=PKGCONF/uams]])
433 UAMS_PATH="${uams_path}"
434 AC_SUBST(UAMS_PATH)
435
436 dnl --------------------------------------------------------------------------
437 dnl drop in includes for top level directory structures here...
438 dnl --------------------------------------------------------------------------
439 LDFLAGS="$LDFLAGS -L\$(top_srcdir)/libatalk/"
440 CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys"
441
442 dnl --------------------------------------------------------------------------
443 dnl specific configuration comes in here:
444 dnl --------------------------------------------------------------------------
445
446 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
447
448 dnl --------------------- determine operating system from "target"
449 case "$host_os" in
450         *aix*)                          this_os=aix ;;
451         *freebsd*)                      this_os=freebsd ;;
452         *hpux11*)                       this_os=hpux11 ;;
453         *irix*)                         this_os=irix ;;
454         *linux*)                        this_os=linux ;;
455         *osx*)                          this_os=macosx ;;
456         *netbsd*)                       this_os=netbsd ;;
457         *openbsd*)                      this_os=openbsd ;;
458         *osf*)                          this_os=tru64 ;;
459         *solaris*)                      this_os=solaris ;;
460 esac
461
462 case "$host_cpu" in
463         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
464         alpha)                                          this_cpu=alpha ;;
465         mips)                                           this_cpu=mips ;;
466         powerpc|ppc)                            this_cpu=ppc ;;
467 esac
468
469 dnl --------------------- operating system specific flags (port from sys/*)
470
471 dnl ----- AIX specific -----
472 if test x"$this_os" = "xaix"; then
473         AC_MSG_RESULT([ * AIX specific configuration])
474         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
475
476         dnl This is probably a lie; AIX 4.3 supports a 64-bit long
477         dnl compilation environment.  It's enough to get things defined
478         dnl right in endian.h provided that long long is supported, though.
479         AC_DEFINE(HAVE_32BIT_LONGS)
480 fi
481
482 dnl ----- FreeBSD specific -----
483 if test x"$this_os" = "xfreebsd"; then 
484         AC_MSG_RESULT([ * FreeBSD specific configuration])
485         AC_DEFINE(BSD4_4)
486         AC_DEFINE(SENDFILE_FLAVOR_BSD)
487
488         dnl ----- Set -shared flag
489         LDSHAREDFLAGS="-shared"
490         AC_DEFINE(NO_CRYPT_H, 1)
491 fi
492
493 dnl ----- HP-UX 11 specific -----
494 if test x"$this_os" = "xhpux11"; then
495         AC_MSG_RESULT([ * HP-UX 11 specific configuration])
496
497         AC_DEFINE(_ISOC9X_SOURCE)
498         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
499 fi
500
501 dnl ----- IRIX specific -----
502 if test x"$this_os" = "xirix"; then
503         AC_MSG_RESULT([ * IRIX specific configuration])
504
505         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
506 fi
507
508 dnl ----- Linux specific -----
509 if test x"$this_os" = "xlinux"; then 
510         AC_MSG_RESULT([ * Linux specific configuration])
511
512         dnl ----- Set -shared flag
513         LDSHAREDFLAGS="-shared"
514
515         dnl ----- check if we need the quotactl wrapper
516         AC_CHECK_HEADERS(sys/quota.h linux/quota.h)
517         AC_CHECK_FUNC(quotactl,,
518                 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
519                 AC_MSG_RESULT([enabling quotactl wrapper])
520         )
521
522         dnl ----- as far as I can tell, dbtob always does the wrong thing
523         dnl ----- on every single version of linux I've ever played with.
524         dnl ----- see etc/afpd/quota.c
525         AC_DEFINE(HAVE_BROKEN_DBTOB)
526
527         dnl --- added by Yoshinobu Ishizaki (2001.03.13) ---
528         dnl ----- check if version is newer than 2.2.x
529         changequote(<<,>>)
530         majorvers="`uname -r | sed 's/\([0-9]\)..*/\1/'`"
531         minorvers="`uname -r | sed 's/[0-9]\.\([0-9]\)\..*/\1/'`"
532         if [ $majorvers -ge 2 ]; then
533                 if [ $minorvers -ge 2 ]; then
534                         changequote([,])
535                         AC_MSG_RESULT([ * found Linux 2.2.x or higher])
536                         AC_DEFINE(SENDFILE_FLAVOR_LINUX)
537                 else
538                         AC_MSG_RESULT([ * found Linux 2.0.x ]) 
539                 fi
540         fi
541
542         dnl ----- Linux/alpha specific -----
543         if test x"$this_cpu" = "xalpha"; then 
544                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
545                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
546         fi
547         need_dash_r=no
548 fi
549
550 dnl ----- Mac OSX specific -----
551 if test x"$this_os" = "xmacosx"; then 
552         AC_MSG_RESULT([ * Mac OSX specific configuration])
553         AC_DEFINE(BSD4_4)
554         AC_DEFINE(HAVE_BROKEN_CPP)
555         AC_DEFINE(HAVE_2ARG_DBTOB)
556         dnl AC_DEFINE(NO_DLFCN_H)
557         AC_DEFINE(MACOSX_SERVER)
558
559         dnl ----- Set -shared flag
560         LDSHAREDFLAGS="-shared"
561 fi
562
563 dnl ----- NetBSD specific -----
564 if test x"$this_os" = "xnetbsd"; then 
565         AC_MSG_RESULT([ * NetBSD specific configuration])
566         AC_DEFINE(BSD4_4)
567         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
568         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
569         need_dash_r=yes 
570
571         dnl ----- Set -shared flag
572         LDSHAREDFLAGS="-shared"
573
574         dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
575         AC_DEFINE(UAM_DHX, 1)
576         AC_DEFINE(UAM_RNDNUM, 1)
577         compile_dhx=yes
578         compile_ssl=yes
579         AC_DEFINE(NO_CRYPT_H, 1)
580 fi
581
582 dnl ----- OpenBSD specific -----
583 if test x"$this_os" = "xopenbsd"; then 
584         AC_MSG_RESULT([ * OpenBSD specific configuration])
585         AC_DEFINE(BSD4_4)
586         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
587
588         dnl ----- Set -shared flag
589         LDSHAREDFLAGS="-Bforcearchive -shared"
590
591         dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
592         AC_DEFINE(UAM_DHX, 1)
593         AC_DEFINE(UAM_RNDNUM, 1)
594         compile_dhx=yes
595         compile_ssl=yes
596         AC_DEFINE(NO_CRYPT_H, 1)
597 fi
598
599 dnl ----- Solaris specific -----
600 if test x"$this_os" = "xsolaris"; then 
601         AC_MSG_RESULT([ * Solaris specific configuration])
602         AC_DEFINE(__svr4__)
603         AC_DEFINE(_ISOC9X_SOURCE)
604         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
605         AC_DEFINE(SOLARIS)
606         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
607         need_dash_r=yes
608
609         dnl ----- Set -shared flag
610         LDSHAREDFLAGS="-G"
611
612         AC_MSG_RESULT([enabling Solaris kernel module build])
613         solaris_module=yes
614 fi
615
616 dnl ----- Tru64 specific -----
617 if test x"$this_os" = "xtru64"; then 
618         AC_MSG_RESULT([ * Tru64 specific configuration])
619         AC_DEFINE(NO_DDP)
620         AC_DEFINE(HAVE_64BIT_LONGS)
621         dnl AC_DEFINE(USE_MOUNT_H)
622         AC_DEFINE(USE_OLD_RQUOTA)
623         dnl AC_DEFINE(USE_UFS_QUOTA_H)
624         AC_DEFINE(TRU64)
625         AC_CHECK_LIB(security,set_auth_parameters)
626         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
627         LDSHAREDFLAGS="-shared -expect_unresolved \*"
628         need_dash_r=no
629         sysv_style=tru64
630
631         dnl ----- Set -shared flag
632         LDSHAREDFLAGS="-shared"
633 fi
634
635 dnl -- look for openssl
636 tryssl=yes
637 AC_ARG_WITH(ssl-dir,
638         [  --with-ssl-dir=PATH     specify path to openssl installation (must contain
639                           lib and include dirs) ],
640         [
641                 if test "x$withval" != "xno"; then
642                         tryssldir=$withval
643                 else
644                         tryssl=no
645                 fi
646         ]
647 )
648
649 if test "$tryssl" = "yes"; then
650         for ssldir in "" $tryssldir /usr /usr/local/openssl /usr/lib/openssl/ /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl /usr/local/ssl ; do
651                 if test -f "$ssldir/include/openssl/cast.h" ; then
652                         LDFLAGS="$LDFLAGS -L$ssldir/lib -L$ssldir"
653                         CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl"
654                         if test "$need_dash_r" = "yes"; then
655                                 LIBS="$LIBS -R$ssldir/lib -R$ssldir"
656                         fi
657
658                         dnl Check for the crypto library:
659                         AC_CHECK_LIB(crypto, main)
660                         dnl LIBS="$LIBS -lcrypto"
661                         dnl Check for "DES" library (for SSLeay, not openssl):
662                         AC_CHECK_LIB(des, main)
663
664                         AC_DEFINE(OPENSSL_DHX,  1)
665                         AC_DEFINE(UAM_DHX,      1)
666                         AC_DEFINE(UAM_RNDNUM,   1)
667                         compile_dhx=yes
668                         compile_ssl=yes
669                         AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"])
670                         break
671                 fi
672         done
673 fi
674
675 dnl --------------------- check for building PGP UAM module
676
677 AC_ARG_ENABLE(pgp-uam,
678         [  --enable-pgp-uam        enable build of PGP UAM module],
679         if test "$enableval" = "yes"; then 
680                 if test "$compile_ssl" = "yes"; then 
681                         AC_DEFINE(UAM_PGP, 1)
682                         compile_pgp=yes
683                         AC_MSG_RESULT([enabling build with PGP UAM module])
684                 fi
685         fi
686 )
687
688 dnl --------------------- check for building Kerberos v4 UAM module
689
690 AC_ARG_ENABLE(krb4-uam,
691         [  --enable-krb4-uam      enable build of Kerberos v4 UAM module],
692         if test "$enableval" = "yes"; then
693                 AC_DEFINE(UAM_KRB4, 1)
694                 compile_kerberos=yes
695                 AC_MSG_RESULT([enabling build with Kerberos v4 UAM module])
696         fi
697 )
698 dnl --------------------- overwrite the config files . . . or not.
699
700 files="AppleVolumes.default AppleVolumes.system atalkd.conf netatalk.conf netatalk.pamd papd.conf afpd.conf"
701
702 AC_ARG_ENABLE(overwrite,
703         [  --enable-overwrite      Overwrite configuration files
704                                    default=PKGCONFDIR],
705         [ 
706         OVERWRITE="$files"
707         AC_MSG_RESULT([Overwrite configuration files])
708         ],
709         
710         [       
711         for f in $files ; do
712                 if test -f "${PKGCONFDIR}/$f" ; 
713                 then :;
714                 else OVERWRITE="${OVERWRITE} $f";
715                 fi
716         done
717         AC_MSG_RESULT([Don't overwrite existing configuration files])
718         ]       
719 )
720
721 dnl --------------------- last minute substitutions
722
723 AC_SUBST(LIBS)
724 AC_SUBST(AFPD_LIBS)
725 AC_SUBST(PAPD_LIBS)
726 AC_SUBST(CFLAGS)
727 AC_SUBST(LDSHAREDFLAGS)
728 AC_SUBST(PKGCONFDIR)
729 AC_SUBST(OVERWRITE)
730
731 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
732 AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
733 AM_CONDITIONAL(USE_DHX, test x$compile_dhx = xyes)
734 AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
735 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
736 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
737 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
738 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
739 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
740 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
741 AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse)
742 AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
743 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
744
745 dnl --------------------- generate files
746
747 AC_OUTPUT([Makefile
748         bin/Makefile
749         bin/adv1tov2/Makefile
750         bin/aecho/Makefile
751         bin/afile/Makefile
752         bin/afppasswd/Makefile
753         bin/getzones/Makefile
754         bin/megatron/Makefile
755         bin/nbp/Makefile
756         bin/pap/Makefile
757         bin/psorder/Makefile
758         config/Makefile
759         contrib/Makefile
760         contrib/macusers/Makefile
761         contrib/nu/Makefile
762         contrib/printing/Makefile
763         contrib/shell_utils/Makefile
764         contrib/timelord/Makefile
765         distrib/Makefile
766         distrib/config/Makefile
767         distrib/config/netatalk-config
768         distrib/initscripts/Makefile
769         distrib/m4/Makefile
770         doc/Makefile
771         etc/Makefile
772         etc/afpd/Makefile
773         etc/afpd/nls/Makefile
774         etc/atalkd/Makefile
775         etc/uams/Makefile
776         etc/uams/uams_krb4/Makefile
777         etc/papd/Makefile
778         etc/psf/Makefile
779         include/Makefile
780         include/atalk/Makefile
781         libatalk/Makefile
782         libatalk/adouble/Makefile
783         libatalk/asp/Makefile
784         libatalk/atp/Makefile
785         libatalk/cnid/Makefile
786         libatalk/compat/Makefile
787         libatalk/dsi/Makefile
788         libatalk/nbp/Makefile
789         libatalk/netddp/Makefile
790         libatalk/util/Makefile
791         man/Makefile
792         man/man1/Makefile
793         man/man3/Makefile
794         man/man4/Makefile
795         man/man5/Makefile
796         man/man8/Makefile
797         sys/Makefile
798         sys/generic/Makefile
799         sys/generic/sys/Makefile
800         sys/netatalk/Makefile
801         sys/netbsd/Makefile
802         sys/netbsd/netatalk/Makefile
803         sys/solaris/Makefile
804         sys/sunos/Makefile
805         sys/ultrix/Makefile
806         ],
807         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
808 )
809