]> arthur.barton.de Git - netatalk.git/blob - configure.in
changed USE_AFS to AFS to work with current tree
[netatalk.git] / configure.in
1 dnl configure.in for netatalk
2
3 AC_INIT(bin/adv1tov2/adv1tov2.c)
4
5 NETATALK_VERSION=`cat VERSION`
6 AC_SUBST(NETATALK_VERSION)
7
8 AC_CANONICAL_SYSTEM
9 AM_INIT_AUTOMAKE(netatalk, ${NETATALK_VERSION})
10 AM_CONFIG_HEADER(config.h)
11 AM_PROG_LIBTOOL
12
13 dnl Reset locations to proper places
14 AC_PREFIX_DEFAULT(/usr)
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_PROG_LIBTOOL
23
24 dnl *********************************************************************
25 dnl FIXME! FIXME! These should be selectable properly, and should produce
26 dnl the proper flags and defines...
27 dnl *********************************************************************
28
29 dnl Checks for libraries.
30 dnl Replace `main' with a function in -labs:
31 AC_CHECK_LIB(abs, main)
32 dnl Replace `main' with a function in -laudit:
33 AC_CHECK_LIB(audit, main)
34 dnl Replace `main' with a function in -lauth:
35 AC_CHECK_LIB(auth, main)
36 dnl Replace `main' with a function in -lcmd:
37 AC_CHECK_LIB(cmd, main)
38 dnl Replace `main' with a function in -lcom_err:
39 AC_CHECK_LIB(com_err, main)
40 dnl Replace `main' with a function in -lcrypt:
41 AC_CHECK_LIB(crypt, main)
42 dnl Replace `main' with a function in -ld:
43 AC_CHECK_LIB(d, main)
44 dnl Replace `main' with a function in -ldb:
45 AC_CHECK_LIB(db, main)
46 dnl Replace `main' with a function in -ldl:
47 AC_CHECK_LIB(dl, main)
48 dnl Replace `main' with a function in -lkauth:
49 AC_CHECK_LIB(kauth, main)
50 dnl Replace `main' with a function in -lkrb:
51 AC_CHECK_LIB(krb, main)
52 dnl Replace `main' with a function in -llwp:
53 AC_CHECK_LIB(lwp, main)
54 dnl Replace `main' with a function in -ln:
55 AC_CHECK_LIB(n, main)
56 dnl Replace `main' with a function in -lnsl:
57 AC_CHECK_LIB(nsl, main)
58 dnl Replace `main' with a function in -lprot:
59 AC_CHECK_LIB(prot, main)
60 dnl Replace `main' with a function in -lresolv:
61 AC_CHECK_LIB(resolv, main)
62 dnl Replace `main' with a function in -lrpcsvc:
63 AC_CHECK_LIB(rpcsvc, main)
64 dnl Replace `main' with a function in -lrx:
65 AC_CHECK_LIB(rx, main)
66 dnl Replace `main' with a function in -lrxkad:
67 AC_CHECK_LIB(rxkad, main)
68 dnl Replace `main' with a function in -lsocket:
69 AC_CHECK_LIB(socket, main)
70 dnl Replace `main' with a function in -lsys:
71 AC_CHECK_LIB(sys, main)
72 dnl Replace `main' with a function in -lubik:
73 AC_CHECK_LIB(ubik, main)
74
75 #
76 # Check presence of some functions
77 #
78 # Check for XPG4 access() function
79 # Be sure to test before adding AFS libs in LIBS path as AFS lib
80 # has such a function that works only on AFS filesystems.
81 AC_CHECK_FUNCS(access)
82
83 dnl Checks for header files.
84 AC_HEADER_DIRENT
85 AC_HEADER_STDC
86 AC_HEADER_SYS_WAIT
87 AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h)
88 AC_CHECK_HEADER(sys/cdefs.h,,
89         AC_MSG_RESULT([enabling generic cdefs.h from tree])
90         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
91 )
92
93 # Allow user to specify flags
94 AC_ARG_WITH(cflags,
95         [  --with-cflags           specify additional flags to pass to compiler],
96         [
97                 if test "x$withval" != "xno" ; then
98                         CFLAGS="$CFLAGS $withval"
99                 fi
100         ]       
101 )
102 AC_ARG_WITH(libs,
103         [  --with-libs             specify additional libraries to link with],
104         [
105                 if test "x$withval" != "xno" ; then
106                         LIBS="$LIBS $withval"
107                 fi
108         ]
109 )
110
111 dnl Checks for typedefs, structures, and compiler characteristics.
112 AC_C_CONST
113 AC_TYPE_UID_T
114 AC_C_INLINE
115 AC_TYPE_MODE_T
116 AC_TYPE_OFF_T
117 AC_TYPE_PID_T
118 AC_TYPE_SIZE_T
119 AC_STRUCT_ST_RDEV
120 AC_HEADER_TIME
121 AC_STRUCT_TM
122
123 dnl Checks for library functions.
124 AC_TYPE_GETGROUPS
125 AC_PROG_GCC_TRADITIONAL
126 AC_FUNC_MEMCMP
127 AC_HEADER_MAJOR
128 AC_FUNC_MMAP
129 AC_TYPE_SIGNAL
130 AC_FUNC_UTIME_NULL
131 AC_FUNC_WAIT3
132 AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp)
133 AC_FUNC_SETPGRP
134
135 dnl --------------------------------------------------------------------------
136 dnl specific configuration comes in here:
137 dnl --------------------------------------------------------------------------
138
139 AC_DEFINE(ADMIN_GRP, 1)
140
141 AC_ARG_WITH(admin-group,
142         [  --disable-admin-group  disable admin group],
143         if test "$enableval" = "no"; then
144                         AC_DEFINE(ADMIN_GRP, 0)
145                         AC_MSG_RESULT([disabling administrative group support])
146         fi
147  )
148
149 AC_ARG_ENABLE(afs,
150         [  --enable-afs           enable AFS support],
151         if test "$enableval" = "yes"; then
152                 AC_DEFINE(AFS, 1)
153                 AC_MSG_RESULT([enabling AFS support])
154         fi
155 )
156
157 AC_ARG_WITH(auth-printing-dir,
158         [  --with-auth-printing-dir=path
159               path to authenticated printing directory],
160                 cap_dir="$withval"
161                 AC_DEFINE_UNQUOTED(CAPDIR, "$cap_dir")
162                 AC_DEFINE(USE_CAP)
163                 AC_MSG_RESULT([enabling authenticated printing support]),
164 )
165
166 AC_ARG_WITH(config-dir,
167         [  --with-config-dir=path  path to config files [default=/etc/atalk]],
168                 config_dir="$withval",
169                 config_dir="/etc/atalk"
170 )
171
172 AC_ARG_WITH(cracklib,
173         [  --with-cracklib=dict    enable/set location of cracklib dictionary],
174         cracklib="$withval"
175         AC_CHECK_LIB(crack, main,
176                 AC_DEFINE(USE_CRACKLIB) 
177                 LIBS="$LIBS -lcrack"
178                 AC_MSG_RESULT([enabling cracklib support])
179                 if test "$cracklib" = "yes"; then
180                         cracklib="/usr/lib/cracklib_dict"
181                 fi
182                 AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
183                         [path to cracklib dictionary])
184                 AC_MSG_RESULT([setting cracklib dictionary to $cracklib]),
185                 AC_MSG_ERROR([cracklib not found!])
186         )
187 )
188
189 AC_ARG_ENABLE(ddp,
190         [  --disable-ddp           disable DDP],
191         if test "$enableval" = "no"; then 
192                 AC_DEFINE(NO_DDP, 1)
193                 AC_MSG_RESULT([disabling DDP])
194         fi
195 )
196
197 AC_ARG_ENABLE(debug,
198         [  --enable-debug          enable debug code],
199         if test "$enableval" != "no"; then
200                 if test "$enableval" = "yes"; then
201                         AC_DEFINE(DEBUG, 1)
202                 else
203                         AC_DEFINE_UNQUOTED(DEBUG, $enableval)
204                 fi 
205                 AC_MSG_RESULT([enabling debugging code])
206         else
207                 AC_DEFINE(DEBUG, 0)
208         fi
209 )
210
211
212 dnl ----------- A NOTE ABOUT DROPKLUDGE
213 dnl The trouble with this fix is that if you know what the file is called, it
214 dnl can be read from the Unix side.  That's okay for most academic institutions
215 dnl since the students don't have telnet access to the Mac servers.  There is
216 dnl currently no one working on further development/fixes of DROPKLUDGE.
217 dnl -----------
218
219 AC_ARG_ENABLE(dropkludge,
220         [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],
221         if test "$enableval" = "yes"; then 
222                 AC_DEFINE(DROPKLUDGE, 1)
223                 AC_MSG_RESULT([enabling experimental dropbox support])
224         fi
225 )
226
227 AC_ARG_ENABLE(force-uidgid,
228         [  --enable-force-uidgid   allow forcing of uid/gid per volume (BROKEN) ],
229         if test "$enableval" = "yes"; then 
230                 AC_DEFINE(FORCE_UIDGID, 1)
231                 AC_MSG_RESULT([enabling forcing of uid/gid per volume])
232         fi
233 )
234
235 AC_ARG_ENABLE(lastdid,
236         [  --enable-lastdid        enable build without DID dev/inode mapping kludge],
237         if test "$enableval" = "yes"; then 
238                 AC_DEFINE(USE_LASTDID, 1)
239                 AC_MSG_RESULT([enabling build without DID dev/inode mapping kludge])
240         fi
241 )
242
243 msg_dir=""
244 AC_ARG_WITH(message-dir,
245         [  --with-msg-dir=path     path to message files [default=/etc/atalk/msg]],
246                 msg_dir="$withval"
247                 if test x"$msg_dir" = "x"; then
248                         msg_dir="$CONFIG_DIR/msg"
249                 fi
250                 AC_DEFINE_UNQUOTED(SERVERTEXT, "$msg_dir",
251                         [path to message dir [default=$CONFIG_DIR/msg]])
252                 SERVERTEXT="$msg_dir"
253                 AC_SUBST(SERVERTEXT)
254 )
255
256 AC_CHECK_LIB(pam, pam_start,
257         AC_DEFINE(USE_PAM, 1)
258         LIBS="$LIBS -lpam"
259         compile_pam=yes
260 )
261 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
262
263 AC_ARG_WITH(pam,
264         [  --with-pam              enable password authentication modules support],
265         if test "x$compile_pam" = "xyes"; then
266                 use_pam_so=yes
267                 AC_MSG_RESULT([enabling pam modules support])
268         else
269                 AC_MSG_RESULT([pam libraries not found. Disabling pam modules support])
270         fi
271 )
272
273 shadowpw=no
274 AC_ARG_WITH(shadow,
275         [  --with-shadow           enable shadow password support],
276         AC_MSG_RESULT([enabling shadow password support])
277         AC_DEFINE(SHADOWPW)
278         shadowpw=yes
279 )
280
281 AC_ARG_WITH(flock-locks,
282         [  --with-flock-locks      enable flock locks support],
283         AC_MSG_RESULT([enabling flock locks])
284         AC_DEFINE(USE_FLOCK_LOCKS)
285 )
286
287 AC_ARG_WITH(tcp-wrappers,
288         [  --with-tcp-wrappers     enable TCP wrappers support],
289         AC_CHECK_LIB(wrap, hosts_access,
290                 AC_DEFINE(TCPWRAP)
291                 LIBS="$LIBS -lwrap"
292                 AC_MSG_RESULT([enabling TCP wrappers support])
293         )
294 )
295
296 AC_ARG_ENABLE(redhat,
297         [  --enable-redhat         use redhat-style sysv configuration ],
298     if test "$enableval" = "yes"; then
299                 sysv_style=redhat
300         fi
301         AC_MSG_RESULT([enabling redhat-style sysv support])
302 )
303
304 AC_ARG_ENABLE(suse,
305         [  --enable-suse           use suse-style sysv configuration ],
306     if test "$enableval" = "yes"; then
307                 sysv_style=suse
308         fi
309         AC_MSG_RESULT([enabling suse-style sysv support])
310 )
311
312 AC_ARG_ENABLE(cobalt,
313         [  --enable-cobalt         use cobalt-style sysv configuration ],
314     if test "$enableval" = "yes"; then
315                 sysv_style=cobalt
316         fi
317         AC_MSG_RESULT([enabling cobalt-style sysv support])
318 )
319
320 AC_ARG_WITH(uams-path,
321         [  --with-uams-path=path   path to UAMs [default=/etc/atalk/uams]],
322         uams_path="$withval",
323         uams_path="$config_dir/uams"
324 )
325
326 dnl --------------------------------------------------------------------------
327 dnl FHS stuff has to be done last because it overrides other defaults
328 dnl --------------------------------------------------------------------------
329
330 AC_ARG_ENABLE(fhs,
331         [  --enable-fhs            use Filesystem Hierarchy Standard (FHS) compatibility],
332     if test "$enableval" = "yes"; then
333                 uams_path="/usr/lib/netatalk"
334                 config_dir="/etc/netatalk"
335                 use_pam_so=yes
336                 dnl FIXME: NEED TO HAVE --mandir=/usr/share/man AT SOME POINT...
337                 AC_DEFINE(FHS_COMPATIBILITY)
338         fi
339         AC_MSG_RESULT([enabling Filesystem Hierarchy Standard (FHS) compatibility])
340 )
341
342 dnl --------------------------------------------------------------------------
343 dnl post-FHS substitutions, etc
344 dnl --------------------------------------------------------------------------
345
346 dnl ***** CONFIG_DIR
347 AC_DEFINE_UNQUOTED(CONFIG_DIR, "$config_dir",
348         [path to config dir [default=/etc/atalk]])
349 CONFIG_DIR="$config_dir"
350 AC_SUBST(CONFIG_DIR)
351 AC_MSG_RESULT([setting configuration files location to $CONFIG_DIR])
352
353 dnl ***** UAMS_PATH
354 AC_DEFINE_UNQUOTED(UAMS_PATH, "$uams_path",
355         [path to UAMs [default=/etc/atalk/uams]])
356 UAMS_PATH="$uams_path"
357 AC_SUBST(UAMS_PATH)
358
359 dnl --------------------------------------------------------------------------
360 dnl drop in includes for top level directory structures here...
361 dnl --------------------------------------------------------------------------
362 LDFLAGS="$LDFLAGS -L\$(top_srcdir)/libatalk/"
363 CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys"
364
365 dnl --------------------------------------------------------------------------
366 dnl specific configuration comes in here:
367 dnl --------------------------------------------------------------------------
368
369 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
370
371 dnl --------------------- determine operating system from "target"
372 case "$host_os" in
373         *freebsd*)                      this_os=freebsd ;;
374         *linux*)                        this_os=linux ;;
375         *osx*)                          this_os=macosx ;;
376         *netbsd*)                       this_os=netbsd ;;
377         *openbsd*)                      this_os=openbsd ;;
378         *osf*)                          this_os=tru64 ;;
379         *solaris*)                      this_os=solaris ;;
380 esac
381
382 case "$host_cpu" in
383         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
384         alpha)                                          this_cpu=alpha ;;
385         mips)                                           this_cpu=mips ;;
386         powerpc|ppc)                            this_cpu=ppc ;;
387 esac
388
389 dnl --------------------- operating system specific flags (port from sys/*)
390
391 dnl ----- FreeBSD specific -----
392 if test x"$this_os" = "xfreebsd"; then 
393         AC_MSG_RESULT([ * FreeBSD specific configuration])
394         AC_DEFINE(BSD4_4)
395         AC_DEFINE(SENDFILE_FLAVOR_BSD)
396 fi
397
398 dnl ----- Linux specific -----
399 if test x"$this_os" = "xlinux"; then 
400         AC_MSG_RESULT([ * Linux specific configuration])
401         AC_DEFINE(SENDFILE_FLAVOR_LINUX)
402
403         dnl ----- check if we need the quotactl wrapper
404         AC_CHECK_HEADER(sys/quota.h,,
405                 AC_MSG_RESULT([enabling quotactl wrapper])
406                 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
407         )
408
409         dnl ----- Linux/alpha specific -----
410         if test x"$this_cpu" = "xalpha"; then 
411                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
412                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
413         fi
414         need_dash_r=no
415 fi
416
417 dnl ----- Mac OSX specific -----
418 if test x"$this_os" = "xmacosx"; then 
419         AC_MSG_RESULT([ * Mac OSX specific configuration])
420         AC_DEFINE(BSD4_4)
421         AC_DEFINE(HAVE_BROKEN_CPP)
422         AC_DEFINE(HAVE_2ARG_DBTOB)
423         AC_DEFINE(NO_DLFCN_H)
424         AC_DEFINE(MACOSX_SERVER)
425 fi
426
427 dnl ----- NetBSD specific -----
428 if test x"$this_os" = "xnetbsd"; then 
429         AC_MSG_RESULT([ * NetBSD specific configuration])
430         AC_DEFINE(BSD4_4)
431         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
432         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
433         need_dash_r=yes 
434 fi
435
436 dnl ----- OpenBSD specific -----
437 if test x"$this_os" = "xopenbsd"; then 
438         AC_MSG_RESULT([ * OpenBSD specific configuration])
439         AC_DEFINE(BSD4_4)
440 fi
441
442 dnl ----- Solaris specific -----
443 if test x"$this_os" = "xsolaris"; then 
444         AC_MSG_RESULT([ * Solaris specific configuration])
445         AC_DEFINE(__svr4__)
446         AC_DEFINE(_ISOC9X_SOURCE)
447         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
448         AC_DEFINE(SOLARIS)
449         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
450         need_dash_r=yes
451         AC_MSG_RESULT([enabling Solaris kernel module build])
452         solaris_module=yes
453 fi
454
455 dnl ----- Tru64 specific -----
456 if test x"$this_os" = "xtru64"; then 
457         AC_MSG_RESULT([ * Tru64 specific configuration])
458         AC_DEFINE(NO_DDP)
459         AC_DEFINE(HAVE_64BIT_LONGS)
460         AC_DEFINE(USE_MOUNT_H)
461         AC_DEFINE(USE_OLD_RQUOTA)
462         AC_DEFINE(USE_UFS_QUOTA_H)
463         AC_DEFINE(TRU64)
464         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
465         LDSHAREDFLAGS="-expect_unresolved \*"
466         need_dash_r=no
467         sysv_style=tru64
468 fi
469
470 dnl -- look for openssl  
471 AC_ARG_WITH(ssl-dir,
472         [  --with-ssl-dir=PATH     specify path to openssl installation (must contain
473                           lib and include dirs) ],
474         [
475                 if test "x$withval" != "$xno"; then
476                         tryssldir=$withval
477                 fi
478         ]
479 )
480
481 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
482         if test -f "$ssldir/include/openssl/cast.h" ; then
483                 LDFLAGS="$LDFLAGS -L$ssldir/lib -L$ssldir"
484                 CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl"
485                 if test "$need_dash_r" = "yes"; then
486                         LIBS="$LIBS -R$ssldir/lib -R$ssldir"
487                 fi
488
489                 dnl Check for the crypto library:
490                 AC_CHECK_LIB(crypto, main)
491                 dnl LIBS="$LIBS -lcrypto"
492                 dnl Check for "DES" library (for SSLeay, not openssl):
493                 AC_CHECK_LIB(des, main)
494
495                 AC_DEFINE(OPENSSL_DHX,  1)
496                 AC_DEFINE(UAM_DHX,      1)
497 dnl             AC_DEFINE(UAM_PGP,      1)
498                 AC_DEFINE(UAM_RNDNUM,   1)
499                 use_pgp=no
500                 compile_dhx=yes
501                 AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"])
502                 break
503         fi
504 done
505
506 dnl --------------------- last minute substitutions
507
508 AC_SUBST(LIBS)
509 AC_SUBST(CFLAGS)
510 AC_SUBST(LDSHAREDFLAGS)
511 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
512 AM_CONDITIONAL(USE_DHX, test x$compile_dhx = xyes)
513 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
514 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
515 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
516 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
517 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
518 AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse)
519 AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
520 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
521
522 dnl --------------------- generate files
523
524 AC_OUTPUT([Makefile
525         bin/Makefile
526         bin/adv1tov2/Makefile
527         bin/aecho/Makefile
528         bin/afile/Makefile
529         bin/afppasswd/Makefile
530         bin/getzones/Makefile
531         bin/megatron/Makefile
532         bin/nbp/Makefile
533         bin/pap/Makefile
534         bin/psorder/Makefile
535         config/Makefile
536         contrib/Makefile
537         contrib/nu/Makefile
538         contrib/printing/Makefile
539         contrib/shell_utils/Makefile
540         contrib/timelord/Makefile
541         distrib/Makefile
542         distrib/config/Makefile
543         distrib/config/netatalk-config
544         distrib/initscripts/Makefile
545         distrib/m4/Makefile
546         etc/Makefile
547         etc/afpd/Makefile
548         etc/afpd/nls/Makefile
549         etc/atalkd/Makefile
550         etc/uams/Makefile
551         etc/papd/Makefile
552         etc/psf/Makefile
553         include/Makefile
554         include/atalk/Makefile
555         libatalk/Makefile
556         libatalk/adouble/Makefile
557         libatalk/asp/Makefile
558         libatalk/atp/Makefile
559         libatalk/compat/Makefile
560         libatalk/dsi/Makefile
561         libatalk/nbp/Makefile
562         libatalk/netddp/Makefile
563         libatalk/util/Makefile
564         man/Makefile
565         man/man1/Makefile
566         man/man3/Makefile
567         man/man4/Makefile
568         man/man5/Makefile
569         man/man8/Makefile
570         sys/Makefile
571         sys/netatalk/Makefile
572         ],
573         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
574 )
575