]> arthur.barton.de Git - netatalk.git/blob - configure.in
code beautification. nothing major.
[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/file.h sys/ioctl.h sys/time.h syslog.h unistd.h termios.h netdb.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_WITH(auth-printing-dir,
150         [  --with-auth-printing-dir=path
151               path to authenticated printing directory],
152                 cap_dir="$withval"
153                 AC_DEFINE_UNQUOTED(CAPDIR, "$cap_dir")
154                 AC_DEFINE(USE_CAP)
155                 AC_MSG_RESULT([enabling authenticated printing support]),
156 )
157
158 AC_ARG_WITH(config-dir,
159         [  --with-config-dir=path  path to config files [default=/etc/atalk]],
160                 config_dir="$withval",
161                 config_dir="/etc/atalk"
162 )
163 AC_DEFINE_UNQUOTED(CONFIG_DIR, "$config_dir",
164         [path to config dir [default=/etc/atalk]])
165 CONFIG_DIR="$config_dir"
166 AC_SUBST(CONFIG_DIR)
167 AC_MSG_RESULT([setting configuration files location to $CONFIG_DIR])
168
169 AC_ARG_WITH(cracklib,
170         [  --with-cracklib=dict    enable/set location of cracklib dictionary],
171         cracklib="$withval"
172         AC_CHECK_LIB(crack, main,
173                 AC_DEFINE(USE_CRACKLIB) 
174                 LIBS="$LIBS -lcrack"
175                 AC_MSG_RESULT([enabling cracklib support])
176                 if test "$cracklib" = "yes"; then
177                         cracklib="/usr/lib/cracklib_dict"
178                 fi
179                 AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
180                         [path to cracklib dictionary])
181                 AC_MSG_RESULT([setting cracklib dictionary to $cracklib]),
182                 AC_MSG_ERROR([cracklib not found!])
183         )
184 )
185
186 AC_ARG_ENABLE(ddp,
187         [  --disable-ddp           disable DDP],
188         if test "$enableval" = "no"; then 
189                 AC_DEFINE(NO_DDP, 1)
190                 AC_MSG_RESULT([disabling DDP])
191         fi
192 )
193
194 AC_ARG_ENABLE(debug,
195         [  --enable-debug          enable debug code],
196         if test "$enableval" != "no"; then
197                 if test "$enableval" = "yes"; then
198                         AC_DEFINE(DEBUG, 1)
199                 else
200                         AC_DEFINE_UNQUOTED(DEBUG, $enableval)
201                 fi 
202                 AC_MSG_RESULT([enabling debugging code])
203         else
204                 AC_DEFINE(DEBUG, 0)
205         fi
206 )
207
208
209 dnl ----------- A NOTE ABOUT DROPKLUDGE
210 dnl The trouble with this fix is that if you know what the file is called, it
211 dnl can be read from the Unix side.  That's okay for most academic institutions
212 dnl since the students don't have telnet access to the Mac servers.  There is
213 dnl currently no one working on further development/fixes of DROPKLUDGE.
214 dnl -----------
215
216 AC_ARG_ENABLE(dropkludge,
217         [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],
218         AC_DEFINE(DROPKLUDGE, 1)
219         AC_MSG_RESULT([enabling experimental dropbox support])
220 )
221
222 AC_ARG_ENABLE(lastdid,
223         [  --enable-lastdid        enable build without DID dev/inode mapping kludge],
224         if test "$enableval" = "yes"; then 
225                 AC_DEFINE(USE_LASTDID, 1)
226                 AC_MSG_RESULT([enabling build without DID dev/inode mapping kludge])
227         fi
228 )
229
230 msg_dir=""
231 AC_ARG_WITH(message-dir,
232         [  --with-msg-dir=path     path to message files [default=/etc/atalk/msg]],
233                 msg_dir="$withval"
234                 if test x"$msg_dir" = "x"; then
235                         msg_dir="$CONFIG_DIR/msg"
236                 fi
237                 AC_DEFINE_UNQUOTED(SERVERTEXT, "$msg_dir",
238                         [path to message dir [default=$CONFIG_DIR/msg]])
239                 SERVERTEXT="$msg_dir"
240                 AC_SUBST(SERVERTEXT)
241 )
242
243 AC_CHECK_LIB(pam, pam_start,
244         AC_DEFINE(USE_PAM, 1)
245         LIBS="$LIBS -lpam"
246         compile_pam=yes
247 )
248 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
249
250 AC_ARG_WITH(pam,
251         [  --with-pam              enable password authentication modules support],
252         if test "x$compile_pam" = "xyes"; then
253                 use_pam_so=yes
254                 AC_MSG_RESULT([enabling pam modules support])
255         else
256                 AC_MSG_RESULT([pam libraries not found. Disabling pam modules support])
257         fi
258 )
259
260 AC_ARG_WITH(shadow,
261         [  --with-shadow           enable shadow password support],
262         AC_MSG_RESULT([enabling shadow password support])
263         AC_DEFINE(SHADOWPW)
264 )
265
266 AC_ARG_WITH(flock-locks,
267         [  --with-flock-locks      enable flock locks support],
268         AC_MSG_RESULT([enabling flock locks])
269         AC_DEFINE(USE_FLOCK_LOCKS)
270 )
271
272 AC_ARG_WITH(tcp-wrappers,
273         [  --with-tcp-wrappers     enable TCP wrappers support],
274         AC_CHECK_LIB(wrap, main,
275                 AC_DEFINE(TCPWRAP)
276                 LIBS="$LIBS -lwrap"
277                 AC_MSG_RESULT([enabling TCP wrappers support])
278         )
279 )
280
281 AC_ARG_ENABLE(redhat,
282         [  --enable-redhat     use redhat-style sysv configuration ],
283     if test "$enableval" = "yes"; then
284                 sysv_style=redhat
285         fi
286         AC_MSG_RESULT([enabling redhat-style sysv support])
287 )
288
289 AC_ARG_ENABLE(cobalt,
290         [  --enable-cobalt     use cobalt-style sysv configuration ],
291     if test "$enableval" = "yes"; then
292                 sysv_style=cobalt
293         fi
294         AC_MSG_RESULT([enabling cobalt-style sysv support])
295 )
296
297 AC_ARG_WITH(uams-path,
298         [  --with-uams-path=path   path to UAMs [default=/etc/atalk/uams]],
299         uams_path="$withval",
300         uams_path="$config_dir/uams"
301 )
302 AC_DEFINE_UNQUOTED(UAMS_PATH, "$uams_path",
303         [path to UAMs [default=/etc/atalk/uams]])
304 UAMS_PATH="$uams_path"
305 AC_SUBST(UAMS_PATH)
306
307 dnl --------------------------------------------------------------------------
308 dnl drop in includes for top level directory structures here...
309 dnl --------------------------------------------------------------------------
310 LDFLAGS="$LDFLAGS -L\$(top_srcdir)/libatalk/"
311 CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys"
312
313 dnl --------------------------------------------------------------------------
314 dnl specific configuration comes in here:
315 dnl --------------------------------------------------------------------------
316
317 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
318
319 dnl --------------------- determine operating system from "target"
320 case "$host_os" in
321         *freebsd*)                      this_os=freebsd ;;
322         *linux*)                        this_os=linux ;;
323         *osx*)                          this_os=macosx ;;
324         *netbsd*)                       this_os=netbsd ;;
325         *openbsd*)                      this_os=openbsd ;;
326         *osf*)                          this_os=tru64 ;;
327         *solaris*)                      this_os=solaris ;;
328 esac
329
330 case "$host_cpu" in
331         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
332         alpha)                                          this_cpu=alpha ;;
333         mips)                                           this_cpu=mips ;;
334         powerpc|ppc)                            this_cpu=ppc ;;
335 esac
336
337 dnl --------------------- operating system specific flags (port from sys/*)
338
339 dnl ----- FreeBSD specific -----
340 if test x"$this_os" = "xfreebsd"; then 
341         AC_MSG_RESULT([ * FreeBSD specific configuration])
342         AC_DEFINE(BSD4_4)
343         AC_DEFINE(SENDFILE_FLAVOR_BSD)
344 fi
345
346 dnl ----- Linux specific -----
347 if test x"$this_os" = "xlinux"; then 
348         AC_MSG_RESULT([ * Linux specific configuration])
349         AC_DEFINE(SENDFILE_FLAVOR_LINUX)
350
351         dnl ----- check if we need the quotactl wrapper
352         AC_CHECK_HEADER(sys/quota.h,,
353                 AC_MSG_RESULT([enabling quotactl wrapper])
354                 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
355         )
356
357         dnl ----- Linux/alpha specific -----
358         if test x"$this_cpu" = "xalpha"; then 
359                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
360                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
361         fi
362         need_dash_r=no
363 fi
364
365 dnl ----- Mac OSX specific -----
366 if test x"$this_os" = "xmacosx"; then 
367         AC_MSG_RESULT([ * Mac OSX specific configuration])
368         AC_DEFINE(BSD4_4)
369         AC_DEFINE(HAVE_BROKEN_CPP)
370         AC_DEFINE(HAVE_2ARG_DBTOB)
371         AC_DEFINE(NO_DLFCN_H)
372         AC_DEFINE(MACOSX_SERVER)
373 fi
374
375 dnl ----- NetBSD specific -----
376 if test x"$this_os" = "xnetbsd"; then 
377         AC_MSG_RESULT([ * NetBSD specific configuration])
378         AC_DEFINE(BSD4_4)
379         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
380         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
381         need_dash_r=yes 
382 fi
383
384 dnl ----- OpenBSD specific -----
385 if test x"$this_os" = "xopenbsd"; then 
386         AC_MSG_RESULT([ * OpenBSD specific configuration])
387         AC_DEFINE(BSD4_4)
388 fi
389
390 dnl ----- Solaris specific -----
391 if test x"$this_os" = "xsolaris"; then 
392         AC_MSG_RESULT([ * Solaris specific configuration])
393         AC_DEFINE(__svr4__)
394         AC_DEFINE(_ISOC9X_SOURCE)
395         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
396         AC_DEFINE(SOLARIS)
397         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
398         need_dash_r=yes
399 fi
400
401 dnl ----- Tru64 specific -----
402 if test x"$this_os" = "xtru64"; then 
403         AC_MSG_RESULT([ * Tru64 specific configuration])
404         AC_DEFINE(NO_DDP)
405         AC_DEFINE(HAVE_64BIT_LONGS)
406         AC_DEFINE(USE_MOUNT_H)
407         AC_DEFINE(USE_OLD_RQUOTA)
408         AC_DEFINE(USE_UFS_QUOTA_H)
409         AC_DEFINE(TRU64)
410         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
411         LDSHAREDFLAGS="-expect_unresolved \*"
412         need_dash_r=no
413         sysv_style=tru64
414 fi
415
416 dnl -- look for openssl  
417 AC_ARG_WITH(ssl-dir,
418         [  --with-ssl-dir=PATH     specify path to openssl installation (must contain
419                           lib and include dirs) ],
420         [
421                 if test "x$withval" != "$xno"; then
422                         tryssldir=$withval
423                 fi
424         ]
425 )
426
427 for ssldir in "" $tryssldir /usr /usr/local/openssl /usr/lib/openssl/ /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
428         if test -f "$ssldir/include/openssl/cast.h" ; then
429                 LDFLAGS="$LDFLAGS -L$ssldir/lib -L$ssldir"
430                 CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl"
431                 if test "$need_dash_r" = "yes"; then
432                         LIBS="$LIBS -R$ssldir/lib -R$ssldir"
433                 fi
434
435                 dnl Check for the crypto library:
436                 AC_CHECK_LIB(crypto, main)
437                 dnl LIBS="$LIBS -lcrypto"
438                 dnl Check for "DES" library (for SSLeay, not openssl):
439                 AC_CHECK_LIB(des, main)
440
441                 AC_DEFINE(OPENSSL_DHX,  1)
442                 AC_DEFINE(UAM_DHX,      1)
443 dnl             AC_DEFINE(UAM_PGP,      1)
444                 AC_DEFINE(UAM_RNDNUM,   1)
445                 use_pgp=no
446                 compile_dhx=yes
447                 AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"])
448                 break
449         fi
450 done
451
452 dnl --------------------- last minute substitutions
453
454 AC_SUBST(LIBS)
455 AC_SUBST(CFLAGS)
456 AC_SUBST(LDSHAREDFLAGS)
457 AM_CONDITIONAL(USE_DHX, test x$compile_dhx = xyes)
458 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
459 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
460 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
461 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
462 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
463 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
464
465 dnl --------------------- generate files
466
467 AC_OUTPUT([Makefile
468         bin/Makefile
469         bin/adv1tov2/Makefile
470         bin/aecho/Makefile
471         bin/afile/Makefile
472         bin/afppasswd/Makefile
473         bin/getzones/Makefile
474         bin/megatron/Makefile
475         bin/nbp/Makefile
476         bin/pap/Makefile
477         bin/psorder/Makefile
478         config/Makefile
479         contrib/Makefile
480         contrib/nu/Makefile
481         contrib/printing/Makefile
482         contrib/shell_utils/Makefile
483         contrib/timelord/Makefile
484         distrib/Makefile
485         distrib/config/Makefile
486         distrib/config/netatalk-config
487         distrib/initscripts/Makefile
488         distrib/m4/Makefile
489         etc/Makefile
490         etc/afpd/Makefile
491         etc/afpd/nls/Makefile
492         etc/atalkd/Makefile
493         etc/uams/Makefile
494         etc/papd/Makefile
495         etc/psf/Makefile
496         include/Makefile
497         include/atalk/Makefile
498         libatalk/Makefile
499         libatalk/adouble/Makefile
500         libatalk/asp/Makefile
501         libatalk/atp/Makefile
502         libatalk/compat/Makefile
503         libatalk/dsi/Makefile
504         libatalk/nbp/Makefile
505         libatalk/netddp/Makefile
506         libatalk/util/Makefile
507         man/Makefile
508         man/man1/Makefile
509         man/man3/Makefile
510         man/man4/Makefile
511         man/man5/Makefile
512         man/man8/Makefile
513         sys/Makefile
514         sys/netatalk/Makefile
515         ],
516         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
517 )
518