]> arthur.barton.de Git - netatalk.git/blob - configure.in
configure.in : Modification done by Michel Jouvin to fix a problem with
[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 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
248
249 AC_ARG_WITH(pam,
250         [  --with-pam              enable password authentication modules support],
251         if test "x$compile_pam" = "xyes"; then
252                 use_pam_so=yes
253                 AC_MSG_RESULT([enabling pam modules support])
254         else
255                 AC_MSG_RESULT([pam libraries not found. Disabling pam modules support])
256         fi
257         )
258
259 AC_ARG_WITH(shadow,
260         [  --with-shadow           enable shadow password support],
261         AC_MSG_RESULT([enabling shadow password support])
262         AC_DEFINE(SHADOWPW)
263 )
264
265 AC_ARG_WITH(flock-locks,
266         [  --with-flock-locks      enable flock locks support],
267         AC_MSG_RESULT([enabling flock locks])
268         AC_DEFINE(USE_FLOCK_LOCKS)
269 )
270
271 AC_ARG_WITH(tcp-wrappers,
272         [  --with-tcp-wrappers     enable TCP wrappers support],
273         AC_CHECK_LIB(wrap, main,
274                 AC_DEFINE(TCPWRAP)
275                 LIBS="$LIBS -lwrap"
276                 AC_MSG_RESULT([enabling TCP wrappers support])
277         )
278 )
279
280 AC_ARG_ENABLE(redhat,
281         [  --enable-redhat     use redhat-style sysv configuration ],
282     if test "$enableval" = "yes"; then
283                 sysv_style=redhat
284         fi
285         AC_MSG_RESULT([enabling redhat-style sysv support])
286 )
287
288 AC_ARG_ENABLE(cobalt,
289         [  --enable-cobalt     use cobalt-style sysv configuration ],
290     if test "$enableval" = "yes"; then
291                 sysv_style=cobalt
292         fi
293         AC_MSG_RESULT([enabling cobalt-style sysv support])
294 )
295
296 AC_ARG_WITH(uams-path,
297         [  --with-uams-path=path   path to UAMs [default=/etc/atalk/uams]],
298         uams_path="$withval",
299         uams_path="$config_dir/uams"
300 )
301 AC_DEFINE_UNQUOTED(UAMS_PATH, "$uams_path",
302         [path to UAMs [default=/etc/atalk/uams]])
303 UAMS_PATH="$uams_path"
304 AC_SUBST(UAMS_PATH)
305
306 dnl --------------------------------------------------------------------------
307 dnl drop in includes for top level directory structures here...
308 dnl --------------------------------------------------------------------------
309 LDFLAGS="$LDFLAGS -L\$(top_srcdir)/libatalk/"
310 CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys"
311
312 dnl --------------------------------------------------------------------------
313 dnl specific configuration comes in here:
314 dnl --------------------------------------------------------------------------
315
316 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
317
318 dnl --------------------- determine operating system from "target"
319 case "$host_os" in
320         *freebsd*)                      this_os=freebsd ;;
321         *linux*)                        this_os=linux ;;
322         *osx*)                          this_os=macosx ;;
323         *netbsd*)                       this_os=netbsd ;;
324         *openbsd*)                      this_os=openbsd ;;
325         *osf*)                          this_os=tru64 ;;
326         *solaris*)                      this_os=solaris ;;
327 esac
328
329 case "$host_cpu" in
330         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
331         alpha)                          this_cpu=alpha ;;
332         mips)                           this_cpu=mips ;;
333         powerpc|ppc)                    this_cpu=ppc ;;
334 esac
335
336 dnl --------------------- operating system specific flags (port from sys/*)
337
338 dnl ----- FreeBSD specific -----
339 if test x"$this_os" = "xfreebsd"; then 
340         AC_MSG_RESULT([ * FreeBSD specific configuration])
341         AC_DEFINE(BSD4_4)
342         AC_DEFINE(SENDFILE_FLAVOR_BSD)
343 fi
344
345 dnl ----- Linux specific -----
346 if test x"$this_os" = "xlinux"; then 
347         AC_MSG_RESULT([ * Linux specific configuration])
348         AC_DEFINE(SENDFILE_FLAVOR_LINUX)
349
350         dnl ----- check if we need the quotactl wrapper
351         AC_CHECK_HEADER(sys/quota.h,,
352                 AC_MSG_RESULT([enabling quotactl wrapper])
353                 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
354         )
355
356         dnl ----- Linux/alpha specific -----
357         if test x"$this_cpu" = "xalpha"; then 
358                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
359                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
360         fi
361         need_dash_r=no
362 fi
363
364 dnl ----- Mac OSX specific -----
365 if test x"$this_os" = "xmacosx"; then 
366         AC_MSG_RESULT([ * Mac OSX specific configuration])
367         AC_DEFINE(BSD4_4)
368         AC_DEFINE(HAVE_BROKEN_CPP)
369         AC_DEFINE(HAVE_2ARG_DBTOB)
370         AC_DEFINE(NO_DLFCN_H)
371         AC_DEFINE(MACOSX_SERVER)
372 fi
373
374 dnl ----- NetBSD specific -----
375 if test x"$this_os" = "xnetbsd"; then 
376         AC_MSG_RESULT([ * NetBSD specific configuration])
377         AC_DEFINE(BSD4_4)
378         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
379         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
380         need_dash_r=yes 
381 fi
382
383 dnl ----- OpenBSD specific -----
384 if test x"$this_os" = "xopenbsd"; then 
385         AC_MSG_RESULT([ * OpenBSD specific configuration])
386         AC_DEFINE(BSD4_4)
387 fi
388
389 dnl ----- Solaris specific -----
390 if test x"$this_os" = "xsolaris"; then 
391         AC_MSG_RESULT([ * Solaris specific configuration])
392         AC_DEFINE(__svr4__)
393         AC_DEFINE(_ISOC9X_SOURCE)
394         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
395         AC_DEFINE(SOLARIS)
396         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
397         need_dash_r=yes
398 fi
399
400 dnl ----- Tru64 specific -----
401 if test x"$this_os" = "xtru64"; then 
402         AC_MSG_RESULT([ * Tru64 specific configuration])
403         AC_DEFINE(NO_DDP)
404         AC_DEFINE(HAVE_64BIT_LONGS)
405         AC_DEFINE(USE_MOUNT_H)
406         AC_DEFINE(USE_OLD_RQUOTA)
407         AC_DEFINE(USE_UFS_QUOTA_H)
408         AC_DEFINE(TRU64)
409         CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
410         LDSHAREDFLAGS="-expect_unresolved \*"
411         need_dash_r=no
412         sysv_style=tru64
413 fi
414
415 dnl -- look for openssl  
416 AC_ARG_WITH(ssl-dir,
417         [  --with-ssl-dir=PATH     specify path to openssl installation (must contain
418                           lib and include dirs) ],
419         [
420                 if test "x$withval" != "$xno"; then
421                         tryssldir=$withval
422                 fi
423         ]
424 )
425
426 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
427         if test -f "$ssldir/include/openssl/cast.h" ; then
428                 LDFLAGS="$LDFLAGS -L$ssldir/lib -L$ssldir"
429                 CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl"
430                 if test "$need_dash_r" = "yes"; then
431                         LIBS="$LIBS -R$ssldir/lib -R$ssldir"
432                 fi
433
434                 dnl Check for the crypto library:
435                 AC_CHECK_LIB(crypto, main)
436                 dnl LIBS="$LIBS -lcrypto"
437                 dnl Check for "DES" library (for SSLeay, not openssl):
438                 AC_CHECK_LIB(des, main)
439
440                 AC_DEFINE(OPENSSL_DHX,  1)
441                 AC_DEFINE(UAM_DHX,      1)
442 dnl             AC_DEFINE(UAM_PGP,      1)
443                 AC_DEFINE(UAM_RNDNUM,   1)
444                 use_pgp=no
445                 compile_dhx=yes
446                 AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"])
447                 break
448         fi
449 done
450
451 dnl --------------------- last minute substitutions
452
453 AC_SUBST(LIBS)
454 AC_SUBST(CFLAGS)
455 AC_SUBST(LDSHAREDFLAGS)
456 AM_CONDITIONAL(USE_DHX, test x$compile_dhx = xyes)
457 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
458 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
459 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
460 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
461 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
462 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
463
464 dnl --------------------- generate files
465
466 AC_OUTPUT([Makefile
467         bin/Makefile
468         bin/adv1tov2/Makefile
469         bin/aecho/Makefile
470         bin/afile/Makefile
471         bin/afppasswd/Makefile
472         bin/getzones/Makefile
473         bin/megatron/Makefile
474         bin/nbp/Makefile
475         bin/pap/Makefile
476         bin/psorder/Makefile
477         config/Makefile
478         contrib/Makefile
479         contrib/nu/Makefile
480         contrib/printing/Makefile
481         contrib/shell_utils/Makefile
482         contrib/timelord/Makefile
483         distrib/Makefile
484         distrib/config/Makefile
485         distrib/config/netatalk-config
486         distrib/initscripts/Makefile
487         distrib/m4/Makefile
488         etc/Makefile
489         etc/afpd/Makefile
490         etc/afpd/nls/Makefile
491         etc/atalkd/Makefile
492         etc/uams/Makefile
493         etc/papd/Makefile
494         etc/psf/Makefile
495         include/Makefile
496         include/atalk/Makefile
497         libatalk/Makefile
498         libatalk/adouble/Makefile
499         libatalk/asp/Makefile
500         libatalk/atp/Makefile
501         libatalk/compat/Makefile
502         libatalk/dsi/Makefile
503         libatalk/nbp/Makefile
504         libatalk/netddp/Makefile
505         libatalk/util/Makefile
506         man/Makefile
507         man/man1/Makefile
508         man/man3/Makefile
509         man/man4/Makefile
510         man/man5/Makefile
511         man/man8/Makefile
512         sys/Makefile
513         sys/netatalk/Makefile
514         ],
515         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
516 )
517