]> Pileus Git - ~andy/fetchmail/blob - configure.in
f146305eb1c00ebce7065a0151e6ba9c83231564
[~andy/fetchmail] / configure.in
1 dnl Autoconfigure input file for fetchmail
2 dnl Eric S. Raymond <esr@thyrsus.com>
3 dnl
4 dnl Process this file with autoconf to produce a configure script.
5 dnl
6
7 AC_INIT(fetchmail.h)            dnl A distinctive file to look for in srcdir. 
8 AC_CONFIG_HEADER(config.h)
9
10 dnl We want these before the checks, so the checks can modify their values.
11 test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS)
12 test -z "$LDFLAGS" && LDFLAGS=-s AC_SUBST(LDFLAGS)
13
14 AC_CANONICAL_HOST
15 AC_PROG_CC
16 AC_PROG_INSTALL
17 AC_PROG_CPP                     dnl Later checks need this.
18 AC_PROG_CC_C_O
19 AC_AIX
20 AC_ISC_POSIX
21 AC_MINIX
22 AC_HEADER_STDC
23 AC_TYPE_SIZE_T
24 AC_TYPE_PID_T
25 AC_TYPE_SIGNAL
26 AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h sys/itimer.h fcntl.h sys/fcntl.h memory.h sys/wait.h)
27
28 AC_C_CONST                      dnl getopt needs this.
29
30 AC_PROG_LEX
31 AC_PROG_YACC
32 AC_SUBST(CPFLAGS)
33 AC_SUBST(CEFLAGS)
34 AC_SUBST(LDEFLAGS)
35 AC_SUBST(LIBOBJS)
36 AC_SUBST(POMAKE)
37
38 PACKAGE=`sed -n '/PACKAGE *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
39 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
40 AC_SUBST(PACKAGE)
41
42 VERSION=`sed -n '/VERSION *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
43 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
44 AC_SUBST(VERSION)
45
46 # Check for LynxOS special case: -lbsd needed (at least on 2.3.0) and -s
47 # not working.
48 if test `uname` = "LynxOS" 
49 then
50   echo "Adding -lbsd to standard libraries"
51   LIBS="$LIBS -lbsd"
52   LDFLAGS=""
53   echo "Prepending standard include path to gcc flags"
54   CPFLAGS="-I/usr/include"
55 fi
56
57 # Check for FreeBSD special case: -lkvm needed
58 if test `uname` = "FreeBSD" 
59 then
60    echo "Adding -lkvm to standard libraries"
61    LIBS="$LIBS -lkvm"
62 fi
63  
64 # Check for Rhapsody special case: it doesn't like -s
65 if test `uname` = "Rhapsody" 
66 then
67    echo "Removing -s load flag"
68    LDFLAGS=`echo $LDFLAGS | sed "s/-s //"`
69 fi
70  
71 # i18n
72 # Arnaldo Carvalho de Melo <acme@conectiva.com.br>
73 # Sat Nov  7 15:39:03 EDT 1998
74
75 ALL_LINGUAS="cs es fr pl pt_BR ru"
76
77 AM_GNU_GETTEXT
78
79 # end i18n
80
81 # Under sysV68, socket and friends are provided by the C library.
82 # -linet does not provide socket, but causes multiple definition
83 # errors at link-time.  It is thus better to only use the C library.
84 # So don't add -linet to the link list unless it's necessary
85 AC_CHECK_FUNC(socket,
86     AC_MSG_RESULT(using libc's socket),
87     AC_CHECK_LIB(socket,socket)
88     AC_CHECK_LIB(inet,socket))
89
90 # If gettext isn't in the C library, maybe there's a -lintl.
91 AC_CHECK_FUNC(gettext,
92     AC_MSG_RESULT(using libc's gettext),
93     AC_CHECK_LIB(intl,gettext))
94
95 # The condition in this test copes with the presence of inet_addr in libc6.
96 AC_CHECK_FUNC(inet_addr,
97     AC_MSG_RESULT(using libc's inet_addr),
98     AC_CHECK_LIB(nsl,inet_addr))
99
100 dnl Port hack for Interactive UNIX System V/386 Release 3.2
101 AC_CHECK_LIB(cposix, strchr,
102                 [EXTRADEFS="$EXTRADEFS -D_SYSV3"
103                 LIBS="$LIBS -lcposix"])
104
105 AC_CHECK_FUNC(strstr, AC_DEFINE(HAVE_STRSTR), 
106               [EXTRASRC="$EXTRASRC \$(srcdir)/strstr.c"
107                EXTRAOBJ="$EXTRAOBJ strstr.o"])
108
109 AC_CHECK_FUNC(strcasecmp, AC_DEFINE(HAVE_STRCASECMP), 
110               [EXTRASRC="$EXTRASRC \$(srcdir)/strcasecmp.c"
111                EXTRAOBJ="$EXTRAOBJ strcasecmp.o"])
112              
113 AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE), 
114               [EXTRASRC="$EXTRASRC \$(srcdir)/memmove.c"
115                EXTRAOBJ="$EXTRAOBJ memmove.o"])
116              
117 AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPTLONG),
118               [EXTRASRC="$EXTRASRC \$(srcdir)/getopt.c \$(srcdir)/getopt1.c"
119                EXTRAOBJ="$EXTRAOBJ getopt.o getopt1.o"])
120
121 AC_FUNC_VPRINTF
122 AC_FUNC_ALLOCA
123 if test -n "$ALLOCA" 
124 then
125   EXTRASRC="$EXTRASRC \$(srcdir)/alloca.c"
126   EXTRAOBJ="$EXTRAOBJ alloca.o"
127 fi
128
129 dnl AC_CHECK_FUNC calls that might hack the Makefile must precede
130 dnl the following AC_SUBSTs
131
132 AC_SUBST(EXTRADEFS)
133 AC_SUBST(EXTRASRC)
134 AC_SUBST(EXTRAOBJ)
135
136 AC_CHECK_FUNCS(tcsetattr stty setsid geteuid seteuid gethostbyname \
137   res_search herror strrchr strerror setlinebuf syslog \
138   snprintf vprintf vsnprintf vsyslog \
139   atexit inet_aton strftime setrlimit socketpair sigprocmask)
140
141 # Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
142 # and breaks gethostbyname(2).  It's better to use the bind stuff in the C
143 # library.  So don't add -lresolv to the link list unless it's necessary
144 # (It will be necessary when using GNU libc6).
145 AC_CHECK_FUNC(res_search,
146     AC_MSG_RESULT(using libc's resolver functions),
147     AC_CHECK_LIB(resolv,res_search, 
148         [AC_DEFINE(HAVE_RES_SEARCH) AC_MSG_RESULT(found resolver functions in libresolv); LIBS="$LIBS -lresolv"], AC_MSG_RESULT(no resolver calls found)))
149
150 dnl Check for libcrypt
151 AC_CHECK_LIB(crypt,crypt)
152
153 dnl AC_FUNC_SETVBUF_REVERSED
154
155 dnl Check for usable void pointer type
156 AC_MSG_CHECKING(use of void pointer type)
157 AC_TRY_COMPILE([],
158    [char *p;
159     void *xmalloc();
160     p = (char *) xmalloc(1);
161    ],
162  [AC_DEFINE(HAVE_VOIDPOINTER) AC_MSG_RESULT(yes)],
163  AC_MSG_RESULT(no))
164
165 dnl Check for ANSI volatile
166 AC_MSG_CHECKING(for ANSI volatile)
167 AC_TRY_COMPILE([],
168    [volatile int n;],
169  [AC_DEFINE(HAVE_VOLATILE) AC_MSG_RESULT(yes)],
170  AC_MSG_RESULT(no))
171
172 dnl Check out the wait reality.  We have to assume sys/wait.h is present.
173 AC_CHECK_FUNCS(waitpid wait3)
174 AC_MSG_CHECKING(for union wait);
175 AC_TRY_LINK([#include <sys/types.h>
176 #include <sys/wait.h>],
177                  [union wait status; int pid; pid = wait (&status);
178 #ifdef WEXITSTATUS
179 /* Some POSIXoid systems have both the new-style macros and the old
180    union wait type, and they do not work together.  If union wait
181    conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
182 if (WEXITSTATUS (status) != 0) pid = -1;
183 #endif
184 #ifdef HAVE_WAITPID
185 /* Make sure union wait works with waitpid.  */
186 pid = waitpid (-1, &status, 0);
187 #endif
188 ],
189   [AC_DEFINE(HAVE_UNION_WAIT) AC_MSG_RESULT(yes)],
190   AC_MSG_RESULT(no))
191
192 AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h)
193 AC_TRY_LINK([#include <signal.h>
194 /* NetBSD declares sys_siglist in <unistd.h>.  */
195 #ifdef HAVE_UNISTD_H
196 #include <unistd.h>
197 #endif], [char *msg = *(sys_siglist + 1);],
198   [AC_DEFINE(SYS_SIGLIST_DECLARED) AC_MSG_RESULT(yes)],
199   AC_MSG_RESULT(no))
200
201 # Find the right directory to put the root-mode PID file in
202 for dir in "/var/run" "/etc"
203 do
204         if test -d $dir 
205         then
206                 break;
207         fi
208 done
209 AC_MSG_RESULT(root-mode pid file will go in $dir)
210 AC_DEFINE_UNQUOTED(PID_DIR, "$dir")
211
212 AC_CHECK_SIZEOF(short)
213 AC_CHECK_SIZEOF(int)
214 AC_CHECK_SIZEOF(long)
215
216 if test "$USE_NLS" = "yes"
217 then
218         echo 'Enabling internationalization support...'
219         POMAKE='$(MAKE) -C po'
220         if test "x$prefix" != xNONE; then
221                 EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$prefix/share/locale\"'"
222         else
223                 EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$ac_default_prefix/share/locale\"'"
224         fi
225 else
226         echo 'Disabling internationalization support...'
227         POMAKE="@echo '(NLS support disabled)'; #"
228 fi
229
230 ###     use option --enable-POP2 to compile in the POP2 support
231 AC_ARG_ENABLE(POP2,
232         [  --enable-POP2           compile in POP2 protocol support (obsolete)],
233         [with_POP2=$enableval],
234         [with_POP2=no])
235 test "$with_POP2" = "yes" && AC_DEFINE(POP2_ENABLE)
236
237 ###     use option --disable-POP3 to omit the POP3 support
238 AC_ARG_ENABLE(POP3,
239         [  --disable-POP3          don't compile in POP3 protocol support],
240         [with_POP3=$enableval],
241         [with_POP3=yes])
242 test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE)
243
244 ###     use option --disable-IMAP to omit the IMAP support
245 AC_ARG_ENABLE(IMAP,
246         [  --disable-IMAP          don't compile in IMAP protocol support],
247         [with_IMAP=$enableval],
248         [with_IMAP=yes])
249 test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE)
250
251 ###     use option --disable-ETRN to omit the ETRN support
252 AC_ARG_ENABLE(ETRN,
253         [  --disable-ETRN          don't compile in ETRN protocol support],
254         [with_ETRN=$enableval],
255         [with_ETRN=yes])
256 test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE)
257
258 ###     use option --enable-RPA to compile in the RPA support
259 AC_ARG_ENABLE(RPA,
260         [  --enable-RPA            compile in RPA protocol support],
261         [with_RPA=$enableval],
262         [with_RPA=no])
263 test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE)
264
265 ###     use option --enable-NTLM to compile in the NTLM support
266 AC_ARG_ENABLE(NTLM,
267         [  --enable-NTLM           compile in NTLM authentication support],
268         [with_NTLM=$enableval],
269         [with_NTLM=no])
270 test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE)
271
272 ###     use option --enable-SDPS to compile in the SDPS support
273 AC_ARG_ENABLE(SDPS,
274         [  --enable-SDPS           compile in SDPS protocol support],
275         [with_SDPS=$enableval],
276         [with_SDPS=no])
277 test "$with_SDPS" = "yes" && AC_DEFINE(SDPS_ENABLE)
278
279 ###     use option --enable-opie to compile in the OPIE support
280 AC_ARG_ENABLE(opie,
281         [  --enable-opie           support OTP through the OPIE library],
282         [ AC_CHECK_HEADER(opie.h,, [echo 'configure: cannot find <opie.h>, which is required for OPIE support.'; exit 1])
283           AC_CHECK_LIB(opie,opiegenerator,, [echo 'configure: cannot find libopie, which is required for OPIE support.'; exit 1])
284           AC_DEFINE(OPIE,1) ],
285         [with_opie=no])
286
287 AC_ARG_ENABLE(inet6,
288         [  --enable-inet6          support IPv6 (requires the inet6-apps library)],
289         [ unset ac_cv_lib_inet6_getaddrinfo; AC_CHECK_LIB(inet6, getaddrinfo,,
290         [ unset ac_cv_lib_inet6_getaddrinfo; LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, getaddrinfo,,
291         [ echo 'configure: cannot find libinet6, which is required for IPv6 support.'; exit 1]) ])
292           AC_DEFINE(INET6, 1) ])
293
294 AC_ARG_ENABLE(netsec,
295         [  --enable-netsec         support network security (requires inet6-apps library)],
296         [ unset ac_cv_lib_inet6_net_security_strtorequest; AC_CHECK_LIB(inet6, net_security_strtorequest,,
297         [ unset ac_cv_lib_inet6_net_security_strtorequest; LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, net_security_strtorequest,,
298         [ echo 'configure: cannot find net_security_strtorequest in libinet6, which is required';
299           echo '           for network security support. Either it does not exist, or it was';
300           echo '           not built with network security support enabled.';
301           exit 1]) ])
302           unset ac_cv_header_net_security_h; AC_CHECK_HEADER(net/security.h,,
303         [ unset ac_cv_header_net_security_h; CPPFLAGS="$CPPFLAGS -I/usr/inet6/include"; CFLAGS="$CFLAGS -I/usr/inet6/include"; AC_CHECK_HEADER(net/security.h,,
304         [ echo 'configure: cannot find <net/security.h>, which is required for network security';
305           echo '           support.';
306           exit 1]) ])
307           AC_DEFINE(NET_SECURITY, 1) ])
308   
309 ###     use option --with-kerberos5=DIR to point at a Kerberos 5 directory
310 AC_ARG_WITH(kerberos5,
311         [  --with-kerberos5=DIR    point fetchmail compilation at a Kerberos 5 directory])
312
313 # The "then" arm (nonempty $with_kerberos5) is kind of a crock.  It works for
314 # configuring the BSD/OS Kerberos IV support, though. 
315 if test -n "$with_kerberos5"
316 then
317     # Path given
318     CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$with_kerberos5/include"
319     LDEFLAGS="$LDEFLAGS -L$with_kerberos5/lib"
320     if test -f "$with_kerberos5/include/roken.h"
321     then
322        AC_DEFINE(HEIMDAL)
323        LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -lcom_err"
324     else
325        LIBS="$LIBS -lkrb5 -lcrypto -lcom_err"
326     fi
327 else
328   if test "$with_kerberos5" != "no" ; then
329     for dir in /usr/kerberos /usr/local/krb5 /usr/athena
330     do
331       if test -f "$dir/include/krb5.h"
332       then
333         CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$dir/include"
334         LDEFLAGS="$LDEFLAGS -L$dir/lib"
335         if test -f "$dir/include/roken.h"
336         then
337            AC_DEFINE(HEIMDAL)
338            LIBS="$LIBS -lkrb5 -lasn1 -ldes -lcom_err"
339         else
340            LIBS="$LIBS -lkrb5 -lcrypto -lcom_err"
341         fi
342         with_kerberos5=$dir
343         break
344       fi
345     done
346   fi
347 fi
348
349 ###     use option --with-kerberos=DIR to point at a Kerberos directory
350 AC_ARG_WITH(kerberos,
351         [  --with-kerberos=DIR     point fetchmail compilation at a Kerberos directory])
352
353 # The "elif" arm (nonempty $with_kerberos) is kind of a crock.  It works for
354 # configuring the BSD/OS Kerberos IV support, though. 
355
356 # Check for a NetBSD/OpenBSD special case
357 if test "$with_kerberos" = "yes" && test `uname` = "NetBSD" -o `uname` = "OpenBSD"
358 then
359   echo "Configuring kerberosIV for `uname`"
360   CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I/usr/include/kerberosIV"
361   LIBS="$LIBS -lkrb -ldes"
362 elif test -n "$with_kerberos" -a -n "$with_kerberos5"
363 then
364     CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include"
365     LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
366     if test -f "$with_kerberos5/roken.h"
367     then
368        AC_DEFINE(HEIMDAL)
369        LIBS="-lkrb4 -l45 $LIBS" 
370     else
371        LIBS="-lkrb4 -ldes425 $LIBS"
372     fi
373 elif test -n "$with_kerberos5"
374 then
375     for dir in /usr/kerberos /usr/kerberosIV /usr/athena
376     do
377       if test -f "$dir/include/kerberosIV/krb.h"
378       then
379         CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include"
380         LDEFLAGS="$LDEFLAGS -L$dir/lib"
381         LIBS="-lkrb4 -ldes425 $LIBS"
382         break
383       fi
384     done
385 elif test -n "$with_kerberos" -a "$with_kerberos" != "no"
386 then
387     CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include"
388     LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
389     LIBS="$LIBS -lkrb -ldes"
390 else
391   if test "$with_kerberos" != "no"
392   then
393     for dir in /usr/kerberos /usr/kerberosIV /usr/athena
394     do
395       if test -f "$dir/include/krb.h"
396       then
397         CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include"
398         LDEFLAGS="$LDEFLAGS -L$dir/lib"
399         LIBS="$LIBS -lkrb -ldes"
400         break
401       fi
402     done
403 fi
404
405 ###     use option --with-socks=DIR to point at SOCKS library
406 AC_ARG_WITH(socks,
407         [  --with-socks[=DIR]      add built-in SOCKS firewall access],
408 [
409 if test "$with_socks" != no
410 then
411     if test "$with_socks" != yes
412     then
413         LDEFLAGS="$LDEFLAGS -L$with_socks"
414     else
415         AC_CHECK_LIB(socks, Rconnect,,
416                AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support]))
417     fi
418     AC_DEFINE(HAVE_SOCKS)
419     CEFLAGS="$CEFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
420     LIBS="-lsocks $LIBS"
421 fi])
422
423 ###     use option --with-hesiod=DIR to point at a HESIOD directory
424 AC_ARG_WITH(hesiod,
425         [  --with-hesiod=DIR       point fetchmail compilation at a HESIOD directory])
426
427 if test -n "$with_hesiod"
428 then
429     # Path given
430     CEFLAGS="$CEFLAGS -DHESIOD -I$with_hesiod/include"
431     LDEFLAGS="$LDEFLAGS -L$with_hesiod/lib"
432     LIBS="$LIBS -lhesiod"
433 else
434     for dir in /usr/athena /usr /usr/local
435     do
436       if test -f "$dir/include/hesiod.h"
437       then
438         CEFLAGS="$CEFLAGS -DHESIOD -I$dir/include"
439         LDEFLAGS="$LDEFLAGS -L$dir/lib"
440         LIBS="$LIBS -lhesiod"
441         with_hesiod=$dir
442         break
443       fi
444     done
445   fi
446 fi
447
448 ###     use option --with-gssapi=DIR to compile in GSSAPI support
449 AC_ARG_WITH(gssapi,
450         [  --with-gssapi[=DIR]     compile in GSSAPI support using libraries in DIR],
451 [
452 if test "$with_gssapi" != "no"
453 then
454   if test "$with_gssapi" = "yes" -a -n "$with_kerberos5"
455   then
456     with_gssapi=$with_kerberos5
457   fi
458   if test "$with_gssapi" != "yes" -a -n "$with_gssapi"
459   then
460     CFLAGS="$CFLAGS -I$with_gssapi/include"
461     LDFLAGS="$LDFLAGS -L$with_gssapi/lib"
462   fi
463
464   AC_CHECK_LIB(krb5, krb5_init_context,,
465                AC_MSG_ERROR([could not find libkrb5 which is needed for GSSAPI support]))
466   if test -f "$with_kerberos5/include/roken.h"
467   then
468      AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi",
469                   AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), )
470      AC_DEFINE(HEIMDAL)
471   else
472      AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5",
473                   AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5)
474   fi
475   AC_DEFINE(GSSAPI)
476   save_CPPFLAGS=$CPPFLAGS
477   CPPFLAGS="-I$with_gssapi/include"
478   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
479   if test "$ac_cv_header_gssapi_h" = "yes"; then
480     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
481   else
482     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
483   fi
484   CPPFLAGS=$save_CPPFLAGS
485 fi])
486
487 AC_OUTPUT([Makefile intl/Makefile po/Makefile.in], [
488         # The reason for this odd makedepend line is that we want
489         # to have all dependencies evaluated relative to the source directory
490         # and let VPATH do all the dirty work when we build remotely
491         echo "You can ignore any makedepend error messages";
492         (cd $srcdir; makedepend -f - *.c) >>Makefile])
493
494 dnl Local Variables:
495 dnl comment-start: "dnl "
496 dnl comment-end: ""
497 dnl comment-start-skip: "\\bdnl\\b\\s *"
498 dnl compile-command: "make configure config.h.in"
499 dnl End: