2 # Process this file with autoconf and autoheader to produce a configure script.
4 # This Autoconf file was cobbled from various locations. In particular, a bunch
5 # of the platform checks have been taken straight from OpenSSH's configure.ac
6 # Huge thanks to them for dealing with the horrible platform-specifics :)
12 # Checks for programs.
16 if test -z "$LD" ; then
21 if test -z "$OLDCFLAGS" && test "$GCC" = "yes"; then
22 AC_MSG_NOTICE(No \$CFLAGS set... using "-Os -W -Wall" for GCC)
26 # large file support is useful for scp
29 # Host specific options
30 # this isn't a definitive list of hosts, they are just added as required
40 CFLAGS="$CFLAGS -I/usr/local/include"
41 LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
42 conf_lastlog_location="/var/adm/lastlog"
43 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
44 sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
45 if test "$sol2ver" -ge 8; then
47 AC_DEFINE(DISABLE_UTMP,,Disable utmp)
48 AC_DEFINE(DISABLE_WTMP,,Disable wtmp)
52 AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
53 AC_CHECK_LIB(nsl, yp_match, LIBS="$LIBS -lnsl")
57 AC_DEFINE(AIX,,Using AIX)
58 # OpenSSH thinks it's broken. If it isn't, let me know.
59 AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
64 # It's probably broken.
65 AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
68 AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
72 AC_CHECK_TOOL(AR, ar, :)
73 AC_CHECK_TOOL(RANLIB, ranlib, :)
74 AC_CHECK_TOOL(STRIP, strip, :)
75 AC_CHECK_TOOL(INSTALL, install, :)
77 dnl Can't use login() or logout() with uclibc
78 AC_CHECK_DECL(__UCLIBC__,
81 AC_MSG_NOTICE([Using uClibc - login() and logout() probably don't work, so we won't use them.])
84 # Checks for libraries.
85 AC_CHECK_LIB(crypt, crypt, CRYPTLIB="-lcrypt")
88 # Check if zlib is needed
90 [ --with-zlib=PATH Use zlib in PATH],
93 if test -d "$withval/lib"; then
94 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
96 LDFLAGS="-L${withval} ${LDFLAGS}"
98 if test -d "$withval/include"; then
99 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
101 CPPFLAGS="-I${withval} ${CPPFLAGS}"
107 [ --disable-zlib Don't include zlib support],
109 if test "x$enableval" = "xno"; then
110 AC_DEFINE(DISABLE_ZLIB,, Use zlib)
111 AC_MSG_NOTICE(Disabling zlib)
113 AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))
114 AC_MSG_NOTICE(Enabling zlib)
118 # if not disabled, check for zlib
119 AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))
120 AC_MSG_NOTICE(Enabling zlib)
124 # Check if pam is needed
126 [ --with-pam=PATH Use pam in PATH],
129 if test -d "$withval/lib"; then
130 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
132 LDFLAGS="-L${withval} ${LDFLAGS}"
134 if test -d "$withval/include"; then
135 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
137 CPPFLAGS="-I${withval} ${CPPFLAGS}"
144 [ --enable-pam Try to include PAM support],
146 if test "x$enableval" = "xyes"; then
147 AC_CHECK_LIB(pam, pam_authenticate, , AC_MSG_ERROR([*** PAM missing - install first or check config.log ***]))
148 AC_MSG_NOTICE(Enabling PAM)
149 AC_CHECK_FUNCS(pam_fail_delay)
151 AC_DEFINE(DISABLE_PAM,, Use PAM)
152 AC_MSG_NOTICE(Disabling PAM)
156 # disable it by default
157 AC_DEFINE(DISABLE_PAM,, Use PAM)
158 AC_MSG_NOTICE(Disabling PAM)
162 AC_ARG_ENABLE(openpty,
163 [ --disable-openpty Don't use openpty, use alternative method],
165 if test "x$enableval" = "xno"; then
166 AC_MSG_NOTICE(Not using openpty)
168 AC_MSG_NOTICE(Using openpty if available)
169 AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)])
173 AC_MSG_NOTICE(Using openpty if available)
174 AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY)])
179 AC_ARG_ENABLE(syslog,
180 [ --disable-syslog Don't include syslog support],
182 if test "x$enableval" = "xno"; then
183 AC_DEFINE(DISABLE_SYSLOG,, Using syslog)
184 AC_MSG_NOTICE(Disabling syslog)
186 AC_MSG_NOTICE(Enabling syslog)
190 AC_MSG_NOTICE(Enabling syslog)
194 AC_ARG_ENABLE(shadow,
195 [ --disable-shadow Don't use shadow passwords (if available)],
197 if test "x$enableval" = "xno"; then
198 AC_MSG_NOTICE(Not using shadow passwords)
200 AC_CHECK_HEADERS([shadow.h])
201 AC_MSG_NOTICE(Using shadow passwords if available)
205 AC_CHECK_HEADERS([shadow.h])
206 AC_MSG_NOTICE(Using shadow passwords if available)
211 # Checks for header files.
214 AC_CHECK_HEADERS([fcntl.h limits.h netinet/in.h netinet/tcp.h stdlib.h string.h sys/socket.h sys/time.h termios.h unistd.h crypt.h pty.h ioctl.h libutil.h libgen.h inttypes.h stropts.h utmp.h utmpx.h lastlog.h paths.h util.h netdb.h security/pam_appl.h pam/pam_appl.h netinet/in_systm.h])
216 # Checks for typedefs, structures, and compiler characteristics.
224 AC_CHECK_TYPES([uint16_t, u_int16_t, struct sockaddr_storage])
225 AC_CHECK_TYPE([socklen_t], ,[
226 AC_MSG_CHECKING([for socklen_t equivalent])
227 AC_CACHE_VAL([curl_cv_socklen_t_equiv],
229 # Systems have either "struct sockaddr *" or
230 # "void *" as the second argument to getpeername
231 curl_cv_socklen_t_equiv=
232 for arg2 in "struct sockaddr" void; do
233 for t in int size_t unsigned long "unsigned long"; do
235 #include <sys/types.h>
236 #include <sys/socket.h>
238 int getpeername (int, $arg2 *, $t *);
241 getpeername(0,0,&len);
243 curl_cv_socklen_t_equiv="$t"
249 if test "x$curl_cv_socklen_t_equiv" = x; then
250 AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
253 AC_MSG_RESULT($curl_cv_socklen_t_equiv)
254 AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
255 [type to use in place of socklen_t if not defined])],
256 [#include <sys/types.h>
257 #include <sys/socket.h>])
259 # for the fake-rfc2553 stuff - straight from OpenSSH
261 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
264 #include <sys/types.h>
265 #include <sys/socket.h>
267 [ struct sockaddr_storage s; ],
268 [ ac_cv_have_struct_sockaddr_storage="yes" ],
269 [ ac_cv_have_struct_sockaddr_storage="no" ]
272 if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
273 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
276 AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
279 #include <sys/types.h>
280 #include <netinet/in.h>
282 [ struct sockaddr_in6 s; s.sin6_family = 0; ],
283 [ ac_cv_have_struct_sockaddr_in6="yes" ],
284 [ ac_cv_have_struct_sockaddr_in6="no" ]
287 if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
288 AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6,,Have struct sockaddr_in6)
291 AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
294 #include <sys/types.h>
295 #include <netinet/in.h>
297 [ struct in6_addr s; s.s6_addr[0] = 0; ],
298 [ ac_cv_have_struct_in6_addr="yes" ],
299 [ ac_cv_have_struct_in6_addr="no" ]
302 if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
303 AC_DEFINE(HAVE_STRUCT_IN6_ADDR,,Have struct in6_addr)
306 AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
309 #include <sys/types.h>
310 #include <sys/socket.h>
313 [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
314 [ ac_cv_have_struct_addrinfo="yes" ],
315 [ ac_cv_have_struct_addrinfo="no" ]
318 if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
319 AC_DEFINE(HAVE_STRUCT_ADDRINFO,,Have struct addrinfo)
323 # IRIX has a const char return value for gai_strerror()
324 AC_CHECK_FUNCS(gai_strerror,[
325 AC_DEFINE(HAVE_GAI_STRERROR)
327 #include <sys/types.h>
328 #include <sys/socket.h>
331 const char *gai_strerror(int);],[
334 str = gai_strerror(0);],[
335 AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
336 [Define if gai_strerror() returns const char *])])])
340 AC_CHECK_MEMBERS([struct utmp.ut_host, struct utmp.ut_pid, struct utmp.ut_type, struct utmp.ut_tv, struct utmp.ut_id, struct utmp.ut_addr, struct utmp.ut_addr_v6, struct utmp.ut_exit, struct utmp.ut_time],,,[
341 #include <sys/types.h>
347 AC_CHECK_MEMBERS([struct utmpx.ut_host, struct utmpx.ut_syslen, struct utmpx.ut_type, struct utmpx.ut_id, struct utmpx.ut_addr, struct utmpx.ut_addr_v6, struct utmpx.ut_time, struct utmpx.ut_tv],,,[
348 #include <sys/types.h>
349 #include <sys/socket.h>
355 AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],,,[
356 #include <sys/types.h>
357 #include <sys/socket.h>
360 AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
361 AC_CHECK_FUNCS(utmpname)
362 AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
363 AC_CHECK_FUNCS(setutxent utmpxname)
364 AC_CHECK_FUNCS(logout updwtmp logwtmp)
366 AC_ARG_ENABLE(bundled-libtom,
367 [ --enable-bundled-libtom Use bundled libtomcrypt/libtommath even if a system version exists],
370 AC_MSG_NOTICE(Forcing bundled libtom*)
374 AC_CHECK_LIB(tomcrypt, register_cipher, , BUNDLED_LIBTOM=1)
375 AC_CHECK_LIB(tommath, mp_exptmod, , BUNDLED_LIBTOM=1)
379 if test $BUNDLED_LIBTOM = 1 ; then
380 AC_DEFINE(BUNDLED_LIBTOM,,Use bundled libtom)
383 AC_SUBST(BUNDLED_LIBTOM)
385 dnl Added from OpenSSH 3.6.1p2's configure.ac
387 dnl allow user to disable some login recording features
388 AC_ARG_ENABLE(lastlog,
389 [ --disable-lastlog Disable use of lastlog even if detected [no]],
390 [ AC_DEFINE(DISABLE_LASTLOG,,Disable use of lastlog()) ]
393 [ --disable-utmp Disable use of utmp even if detected [no]],
394 [ AC_DEFINE(DISABLE_UTMP,,Disable use of utmp) ]
397 [ --disable-utmpx Disable use of utmpx even if detected [no]],
398 [ AC_DEFINE(DISABLE_UTMPX,,Disable use of utmpx) ]
401 [ --disable-wtmp Disable use of wtmp even if detected [no]],
402 [ AC_DEFINE(DISABLE_WTMP,,Disable use of wtmp) ]
405 [ --disable-wtmpx Disable use of wtmpx even if detected [no]],
406 [ AC_DEFINE(DISABLE_WTMPX,,Disable use of wtmpx) ]
408 AC_ARG_ENABLE(loginfunc,
409 [ --disable-loginfunc Disable use of login() etc. [no]],
410 [ no_loginfunc_check=1
411 AC_MSG_NOTICE(Not using login() etc) ]
413 AC_ARG_ENABLE(pututline,
414 [ --disable-pututline Disable use of pututline() etc. ([uw]tmp) [no]],
415 [ AC_DEFINE(DISABLE_PUTUTLINE,,Disable use of pututline()) ]
417 AC_ARG_ENABLE(pututxline,
418 [ --disable-pututxline Disable use of pututxline() etc. ([uw]tmpx) [no]],
419 [ AC_DEFINE(DISABLE_PUTUTXLINE,,Disable use of pututxline()) ]
422 [ --with-lastlog=FILE|DIR specify lastlog location [common locations]],
424 if test "x$withval" = "xno" ; then
425 AC_DEFINE(DISABLE_LASTLOG)
427 conf_lastlog_location=$withval
432 if test -z "$no_loginfunc_check"; then
433 dnl Checks for libutil functions (login(), logout() etc, not openpty() )
434 AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN,,Have login() function)])
435 AC_CHECK_FUNCS(logout updwtmp logwtmp)
438 dnl lastlog, [uw]tmpx? detection
439 dnl NOTE: set the paths in the platform section to avoid the
440 dnl need for command-line parameters
441 dnl lastlog and [uw]tmp are subject to a file search if all else fails
443 dnl lastlog detection
444 dnl NOTE: the code itself will detect if lastlog is a directory
445 AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
447 #include <sys/types.h>
449 #ifdef HAVE_LASTLOG_H
450 # include <lastlog.h>
459 [ char *lastlog = LASTLOG_FILE; ],
460 [ AC_MSG_RESULT(yes) ],
463 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
465 #include <sys/types.h>
467 #ifdef HAVE_LASTLOG_H
468 # include <lastlog.h>
474 [ char *lastlog = _PATH_LASTLOG; ],
475 [ AC_MSG_RESULT(yes) ],
478 system_lastlog_path=no
483 if test -z "$conf_lastlog_location"; then
484 if test x"$system_lastlog_path" = x"no" ; then
485 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
486 if (test -d "$f" || test -f "$f") ; then
487 conf_lastlog_location=$f
490 if test -z "$conf_lastlog_location"; then
491 AC_MSG_WARN([** Cannot find lastlog **])
492 dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
497 if test -n "$conf_lastlog_location"; then
498 AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location", lastlog file location)
502 AC_MSG_CHECKING([if your system defines UTMP_FILE])
504 #include <sys/types.h>
510 [ char *utmp = UTMP_FILE; ],
511 [ AC_MSG_RESULT(yes) ],
513 system_utmp_path=no ]
515 if test -z "$conf_utmp_location"; then
516 if test x"$system_utmp_path" = x"no" ; then
517 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
519 conf_utmp_location=$f
522 if test -z "$conf_utmp_location"; then
523 AC_DEFINE(DISABLE_UTMP)
527 if test -n "$conf_utmp_location"; then
528 AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location", utmp file location)
532 AC_MSG_CHECKING([if your system defines WTMP_FILE])
534 #include <sys/types.h>
540 [ char *wtmp = WTMP_FILE; ],
541 [ AC_MSG_RESULT(yes) ],
543 system_wtmp_path=no ]
545 if test -z "$conf_wtmp_location"; then
546 if test x"$system_wtmp_path" = x"no" ; then
547 for f in /usr/adm/wtmp /var/log/wtmp; do
549 conf_wtmp_location=$f
552 if test -z "$conf_wtmp_location"; then
553 AC_DEFINE(DISABLE_WTMP)
557 if test -n "$conf_wtmp_location"; then
558 AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location", wtmp file location)
562 dnl utmpx detection - I don't know any system so perverse as to require
563 dnl utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
565 AC_MSG_CHECKING([if your system defines UTMPX_FILE])
567 #include <sys/types.h>
576 [ char *utmpx = UTMPX_FILE; ],
577 [ AC_MSG_RESULT(yes) ],
579 system_utmpx_path=no ]
581 if test -z "$conf_utmpx_location"; then
582 if test x"$system_utmpx_path" = x"no" ; then
583 AC_DEFINE(DISABLE_UTMPX)
586 AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location", utmpx file location)
590 AC_MSG_CHECKING([if your system defines WTMPX_FILE])
592 #include <sys/types.h>
601 [ char *wtmpx = WTMPX_FILE; ],
602 [ AC_MSG_RESULT(yes) ],
604 system_wtmpx_path=no ]
606 if test -z "$conf_wtmpx_location"; then
607 if test x"$system_wtmpx_path" = x"no" ; then
608 AC_DEFINE(DISABLE_WTMPX)
611 AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location", wtmpx file location)
614 # Checks for library functions.
615 AC_PROG_GCC_TRADITIONAL
617 AC_FUNC_SELECT_ARGTYPES
619 AC_CHECK_FUNCS([dup2 getspnam getusershell memset putenv select socket strdup clearenv strlcpy strlcat daemon basename _getpty getaddrinfo freeaddrinfo getnameinfo])
621 AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME))
624 if test -z "$no_ptmx_check" ; then
625 if test x"$cross_compiling" = x"no" ; then
626 AC_CHECK_FILE("/dev/ptmx", AC_DEFINE(USE_DEV_PTMX,,Use /dev/ptmx))
628 AC_MSG_NOTICE([Not checking for /dev/ptmx, we're cross-compiling])
632 if test -z "$no_ptc_check" ; then
633 if test x"$cross_compiling" = x"no" ; then
634 AC_CHECK_FILE("/dev/ptc", AC_DEFINE(HAVE_DEV_PTS_AND_PTC,,Use /dev/ptc & /dev/pts))
636 AC_MSG_NOTICE([Not checking for /dev/ptc & /dev/pts since we're cross-compiling])
642 # XXX there must be a nicer way to do this
643 AS_MKDIR_P(libtomcrypt/src/ciphers/aes)
644 AS_MKDIR_P(libtomcrypt/src/ciphers/safer)
645 AS_MKDIR_P(libtomcrypt/src/ciphers/twofish)
646 AS_MKDIR_P(libtomcrypt/src/encauth/ccm)
647 AS_MKDIR_P(libtomcrypt/src/encauth/eax)
648 AS_MKDIR_P(libtomcrypt/src/encauth/gcm)
649 AS_MKDIR_P(libtomcrypt/src/encauth/ocb)
650 AS_MKDIR_P(libtomcrypt/src/hashes)
651 AS_MKDIR_P(libtomcrypt/src/hashes/chc)
652 AS_MKDIR_P(libtomcrypt/src/hashes/helper)
653 AS_MKDIR_P(libtomcrypt/src/hashes/sha2)
654 AS_MKDIR_P(libtomcrypt/src/hashes/whirl)
655 AS_MKDIR_P(libtomcrypt/src/mac/hmac)
656 AS_MKDIR_P(libtomcrypt/src/mac/omac)
657 AS_MKDIR_P(libtomcrypt/src/mac/pelican)
658 AS_MKDIR_P(libtomcrypt/src/mac/pmac)
659 AS_MKDIR_P(libtomcrypt/src/mac/f9)
660 AS_MKDIR_P(libtomcrypt/src/mac/xcbc)
661 AS_MKDIR_P(libtomcrypt/src/math/fp)
662 AS_MKDIR_P(libtomcrypt/src/misc/base64)
663 AS_MKDIR_P(libtomcrypt/src/misc/crypt)
664 AS_MKDIR_P(libtomcrypt/src/misc/mpi)
665 AS_MKDIR_P(libtomcrypt/src/misc/pkcs5)
666 AS_MKDIR_P(libtomcrypt/src/modes/cbc)
667 AS_MKDIR_P(libtomcrypt/src/modes/cfb)
668 AS_MKDIR_P(libtomcrypt/src/modes/ctr)
669 AS_MKDIR_P(libtomcrypt/src/modes/ecb)
670 AS_MKDIR_P(libtomcrypt/src/modes/ofb)
671 AS_MKDIR_P(libtomcrypt/src/modes/f8)
672 AS_MKDIR_P(libtomcrypt/src/modes/lrw)
673 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/bit)
674 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/choice)
675 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/ia5)
676 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/integer)
677 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/object_identifier)
678 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/octet)
679 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/printable_string)
680 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/sequence)
681 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/short_integer)
682 AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/utctime)
683 AS_MKDIR_P(libtomcrypt/src/pk/dh)
684 AS_MKDIR_P(libtomcrypt/src/pk/dsa)
685 AS_MKDIR_P(libtomcrypt/src/pk/ecc)
686 AS_MKDIR_P(libtomcrypt/src/pk/pkcs1)
687 AS_MKDIR_P(libtomcrypt/src/pk/rsa)
688 AS_MKDIR_P(libtomcrypt/src/prng)
689 AC_CONFIG_HEADER(config.h)
691 AC_OUTPUT(libtomcrypt/Makefile)
692 AC_OUTPUT(libtommath/Makefile)
695 if test $BUNDLED_LIBTOM = 1 ; then
696 AC_MSG_NOTICE(Using bundled libtomcrypt and libtommath)
698 AC_MSG_NOTICE(Using system libtomcrypt and libtommath)
702 AC_MSG_NOTICE(Now edit options.h to choose features.)