]> arthur.barton.de Git - netatalk.git/blob - configure.in
conditional PAM config file install fixed (USE_PAM conditional)
[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 dnl Checks for header files.
76 AC_HEADER_DIRENT
77 AC_HEADER_STDC
78 AC_HEADER_SYS_WAIT
79 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)
80 AC_CHECK_HEADER(sys/cdefs.h,,
81         AC_MSG_RESULT([enabling generic cdefs.h from tree])
82         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
83 )
84
85 # Allow user to specify flags
86 AC_ARG_WITH(cflags,
87         [  --with-cflags           specify additional flags to pass to compiler],
88         [
89                 if test "x$withval" != "xno" ; then
90                         CFLAGS="$CFLAGS $withval"
91                 fi
92         ]       
93 )
94 AC_ARG_WITH(libs,
95         [  --with-libs             specify additional libraries to link with],
96         [
97                 if test "x$withval" != "xno" ; then
98                         LIBS="$LIBS $withval"
99                 fi
100         ]
101 )
102
103 dnl Checks for typedefs, structures, and compiler characteristics.
104 AC_C_CONST
105 AC_TYPE_UID_T
106 AC_C_INLINE
107 AC_TYPE_MODE_T
108 AC_TYPE_OFF_T
109 AC_TYPE_PID_T
110 AC_TYPE_SIZE_T
111 AC_STRUCT_ST_RDEV
112 AC_HEADER_TIME
113 AC_STRUCT_TM
114
115 dnl Checks for library functions.
116 AC_TYPE_GETGROUPS
117 AC_PROG_GCC_TRADITIONAL
118 AC_FUNC_MEMCMP
119 AC_HEADER_MAJOR
120 AC_FUNC_MMAP
121 AC_TYPE_SIGNAL
122 AC_FUNC_UTIME_NULL
123 AC_FUNC_WAIT3
124 AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp)
125 AC_FUNC_SETPGRP
126
127 dnl --------------------------------------------------------------------------
128 dnl specific configuration comes in here:
129 dnl --------------------------------------------------------------------------
130
131 AC_DEFINE(ADMIN_GRP, 1)
132
133 AC_ARG_WITH(admin-group,
134         [  --disable-admin-group  disable admin group],
135         if test "$enableval" = "no"; then
136                 AC_DEFINE(ADMIN_GRP, 0)
137                 AC_MSG_RESULT([disabling administrative group support])
138         fi
139  )
140
141 AC_ARG_WITH(auth-printing-dir,
142         [  --with-auth-printing-dir=path
143               path to authenticated printing directory],
144                 cap_dir="$withval"
145                 AC_DEFINE_UNQUOTED(CAPDIR, "$cap_dir")
146                 AC_DEFINE(USE_CAP)
147                 AC_MSG_RESULT([enabling authenticated printing support]),
148 )
149
150 AC_ARG_WITH(config-dir,
151         [  --with-config-dir=path  path to config files [default=/etc/atalk]],
152                 config_dir="$withval",
153                 config_dir="/etc/atalk"
154 )
155 AC_DEFINE_UNQUOTED(CONFIG_DIR, "$config_dir",
156         [path to config dir [default=/etc/atalk]])
157 CONFIG_DIR="$config_dir"
158 AC_SUBST(CONFIG_DIR)
159 AC_MSG_RESULT([setting configuration files location to $CONFIG_DIR])
160
161 AC_ARG_WITH(cracklib,
162         [  --with-cracklib=dict    enable/set location of cracklib dictionary],
163         cracklib="$withval"
164         AC_CHECK_LIB(crack, main,
165                 AC_DEFINE(USE_CRACKLIB) 
166                 LIBS="$LIBS -lcrack"
167                 AC_MSG_RESULT([enabling cracklib support])
168                 if test "$cracklib" = "yes"; then
169                         cracklib="/usr/lib/cracklib_dict"
170                 fi
171                 AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
172                         [path to cracklib dictionary])
173                 AC_MSG_RESULT([setting cracklib dictionary to $cracklib]),
174                 AC_MSG_ERROR([cracklib not found!])
175         )
176 )
177
178 AC_ARG_ENABLE(ddp,
179         [  --disable-ddp           disable DDP],
180         if test "$enableval" = "no"; then 
181                 AC_DEFINE(NO_DDP, 1)
182                 AC_MSG_RESULT([disabling DDP])
183         fi
184 )
185
186 AC_ARG_ENABLE(force2GB,
187         [  --enable-force2GB           enable force 2GB max reported volume size],
188         if test "x$enableval" = "xyes"; then 
189                 AC_DEFINE(FORCE_2GB, 1)
190                 AC_MSG_RESULT([enable forge 2GB])
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_ARG_WITH(pam,
244         [  --with-pam              enable password authentication modules support],
245         AC_CHECK_LIB(pam, pam_start,
246                 AC_DEFINE(USE_PAM, 1)
247                 LIBS="$LIBS -lpam"
248                 compile_pam=yes
249                 AC_MSG_RESULT([enabling pam modules support])
250         )
251 )
252
253 AC_ARG_WITH(shadow,
254         [  --with-shadow           enable shadow password support],
255         AC_MSG_RESULT([enabling shadow password support])
256         AC_DEFINE(SHADOWPW)
257 )
258
259 AC_ARG_WITH(flock-locks,
260         [  --with-flock-locks      enable flock locks support],
261         AC_MSG_RESULT([enabling flock locks])
262         AC_DEFINE(USE_FLOCK_LOCKS)
263 )
264
265 AC_ARG_WITH(tcp-wrappers,
266         [  --with-tcp-wrappers     enable TCP wrappers support],
267         AC_CHECK_LIB(wrap, main,
268                 AC_DEFINE(TCPWRAP)
269                 LIBS="$LIBS -lwrap"
270                 AC_MSG_RESULT([enabling TCP wrappers support])
271         )
272 )
273
274 AC_ARG_WITH(uams-path,
275         [  --with-uams-path=path   path to UAMs [default=/etc/atalk/uams]],
276         uams_path="$withval",
277         uams_path="/etc/atalk/uams"
278 )
279 AC_DEFINE_UNQUOTED(UAMS_PATH, "$uams_path",
280         [path to UAMs [default=/etc/atalk/uams]])
281 UAMS_PATH="$uams_path"
282 AC_SUBST(UAMS_PATH)
283
284 dnl --------------------------------------------------------------------------
285 dnl drop in includes for top level directory structures here...
286 dnl --------------------------------------------------------------------------
287 LIBS="$LIBS -L\$(top_srcdir)/libatalk/"
288 CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/sys"
289
290 dnl --------------------------------------------------------------------------
291 dnl specific configuration comes in here:
292 dnl --------------------------------------------------------------------------
293
294 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
295
296 dnl --------------------- determine operating system from "target"
297 case "$host_os" in
298         *freebsd*)                      this_os=freebsd ;;
299         *linux*)                        this_os=linux ;;
300         *osx*)                          this_os=macosx ;;
301         *netbsd*)                       this_os=netbsd ;;
302         *openbsd*)                      this_os=openbsd ;;
303         *solaris*)                      this_os=solaris ;;
304 esac
305
306 case "$host_cpu" in
307         i386|i486|i586|i686|k7)         this_cpu=x86 ;;
308         alpha)                          this_cpu=alpha ;;
309         mips)                           this_cpu=mips ;;
310         powerpc|ppc)                    this_cpu=ppc ;;
311 esac
312
313 dnl --------------------- operating system specific flags (port from sys/*)
314
315 dnl ----- FreeBSD specific -----
316 if test x"$this_os" = "xfreebsd"; then 
317         AC_MSG_RESULT([ * FreeBSD specific configuration])
318         AC_DEFINE(BSD4_4)
319         AC_DEFINE(SENDFILE_FLAVOR_BSD)
320 fi
321
322 dnl ----- Linux specific -----
323 if test x"$this_os" = "xlinux"; then 
324         AC_MSG_RESULT([ * Linux specific configuration])
325         AC_DEFINE(SENDFILE_FLAVOR_LINUX)
326
327         dnl ----- check if we need the quotactl wrapper
328         AC_CHECK_HEADER(sys/quota.h,,
329                 AC_MSG_RESULT([enabling quotactl wrapper])
330                 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
331         )
332
333         dnl ----- Linux/alpha specific -----
334         if test x"$this_cpu" = "xalpha"; then 
335                 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
336                 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
337         fi
338         need_dash_r=no
339 fi
340
341 dnl ----- Mac OSX specific -----
342 if test x"$this_os" = "xmacosx"; then 
343         AC_MSG_RESULT([ * Mac OSX specific configuration])
344         AC_DEFINE(BSD4_4)
345         AC_DEFINE(HAVE_BROKEN_CPP)
346         AC_DEFINE(HAVE_2ARG_DBTOB)
347         AC_DEFINE(NO_DLFCN_H)
348         AC_DEFINE(MACOSX_SERVER)
349 fi
350
351 dnl ----- NetBSD specific -----
352 if test x"$this_os" = "xnetbsd"; then 
353         AC_MSG_RESULT([ * NetBSD specific configuration])
354         AC_DEFINE(BSD4_4)
355         AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
356         CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
357         need_dash_r=yes 
358 fi
359
360 dnl ----- OpenBSD specific -----
361 if test x"$this_os" = "xopenbsd"; then 
362         AC_MSG_RESULT([ * OpenBSD specific configuration])
363         AC_DEFINE(BSD4_4)
364 fi
365
366 dnl ----- Solaris specific -----
367 if test x"$this_os" = "xsolaris"; then 
368         AC_MSG_RESULT([ * Solaris specific configuration])
369         AC_DEFINE(__svr4__)
370         AC_DEFINE(_ISOC9X_SOURCE)
371         AC_DEFINE(NO_STRUCT_TM_GMTOFF)
372         AC_DEFINE(SOLARIS)
373         CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
374         need_dash_r=yes
375 fi
376
377 dnl -- look for openssl  
378 AC_ARG_WITH(ssl-dir,
379         [  --with-ssl-dir=PATH     specify path to openssl installation (must contain
380                           lib and include dirs) ],
381         [
382                 if test "x$withval" != "$xno"; then
383                         tryssldir=$withval
384                 fi
385         ]
386 )
387
388 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
389         if test -f "$ssldir/include/openssl/cast.h" ; then
390                 LIBS="$LIBS -L$ssldir/lib -L$ssldir"
391                 CFLAGS="$CFLAGS -I$ssldir/include -I$ssldir/include/openssl"
392                 if test "$need_dash_r" = "yes"; then
393                         LIBS="$LIBS -R$ssldir/lib -R$ssldir"
394                 fi
395
396                 dnl Check for the crypto library:
397                 AC_CHECK_LIB(crypto, main)
398                 LIBS="$LIBS -lcrypto"
399                 dnl Check for "DES" library (for SSLeay, not openssl):
400                 AC_CHECK_LIB(des, main)
401
402                 AC_DEFINE(OPENSSL_DHX,  1)
403                 AC_DEFINE(UAM_DHX,              1)
404                 AC_DEFINE(UAM_PGP,              1)
405                 AC_DEFINE(UAM_RNDNUM,   1)
406                 compile_dhx=yes
407                 AC_MSG_RESULT([Found ssl and enabling RANDNUM and DHX support "$ssldir"])
408                 break
409         fi
410 done
411
412 dnl --------------------- last minute substitutions
413
414 AC_SUBST(LIBS)
415 AC_SUBST(CFLAGS)
416 AM_CONDITIONAL(USE_DHX, test x$compile_dhx = xyes)
417 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
418
419 dnl --------------------- generate files
420
421 AC_OUTPUT([Makefile
422         bin/Makefile
423         bin/adv1tov2/Makefile
424         bin/aecho/Makefile
425         bin/afile/Makefile
426         bin/afppasswd/Makefile
427         bin/getzones/Makefile
428         bin/megatron/Makefile
429         bin/nbp/Makefile
430         bin/pap/Makefile
431         bin/psorder/Makefile
432         config/Makefile
433         contrib/Makefile
434         contrib/nu/Makefile
435         contrib/printing/Makefile
436         contrib/shell_utils/Makefile
437         contrib/timelord/Makefile
438         distrib/Makefile
439         distrib/config/Makefile
440         distrib/config/netatalk-config
441         distrib/initscripts/Makefile
442         distrib/m4/Makefile
443         etc/Makefile
444         etc/afpd/Makefile
445         etc/afpd/nls/Makefile
446         etc/atalkd/Makefile
447         etc/uams/Makefile
448         etc/papd/Makefile
449         etc/psf/Makefile
450         include/Makefile
451         include/atalk/Makefile
452         libatalk/Makefile
453         libatalk/adouble/Makefile
454         libatalk/asp/Makefile
455         libatalk/atp/Makefile
456         libatalk/compat/Makefile
457         libatalk/dsi/Makefile
458         libatalk/nbp/Makefile
459         libatalk/netddp/Makefile
460         libatalk/util/Makefile
461         man/Makefile
462         man/man1/Makefile
463         man/man3/Makefile
464         man/man4/Makefile
465         man/man5/Makefile
466         man/man8/Makefile
467         sys/Makefile
468         sys/netatalk/Makefile
469         ],
470         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
471 )
472