AC_INIT(ssh.c)
AC_CONFIG_HEADER(config.h)
+AC_PROG_CC
AC_CANONICAL_HOST
-# C Compiler features
-if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall"; fi
-AC_C_INLINE
-
# Checks for programs.
-AC_PROG_CC
AC_PROG_CPP
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PATH_PROG(PERL, perl)
AC_SUBST(PERL)
+if test -z "$LD" ; then
+ LD=$CC
+fi
+AC_SUBST(LD)
+
+# C Compiler features
+AC_C_INLINE
+if test "$GCC" = "yes"; then
+ CFLAGS="$CFLAGS -Wall"
+fi
+
# Check for some target-specific stuff
case "$host" in
*-*-aix*)
AFS_LIBS="-lld"
CFLAGS="$CFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ if test "$LD" != "gcc" -a -z "$blibpath"; then
+ blibpath="/usr/lib:/lib:/usr/local/lib"
+ fi
AC_DEFINE(BROKEN_GETADDRINFO)
;;
*-*-hpux10*)
;;
*-*-solaris*)
CFLAGS="$CFLAGS -I/usr/local/include"
- LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib -L/usr/ucblib -R/usr/ucblib"
need_dash_r=1
- LDFLAGS="-L/usr/ucblib -R/usr/ucblib"
AC_DEFINE(USE_UTMPX)
;;
*-*-sysv*)
AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h stddef.h util.h utmp.h utmpx.h)
# Checks for library functions.
-AC_CHECK_FUNCS(arc4random bindresvport_af freeaddrinfo gai_strerror getaddrinfo getnameinfo innetgr md5_crypt mkdtemp openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf _getpty)
+AC_CHECK_FUNCS(arc4random bindresvport_af clock freeaddrinfo gai_strerror getaddrinfo getnameinfo getrusage innetgr md5_crypt mkdtemp openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf _getpty)
AC_CHECK_FUNC(login,
[AC_DEFINE(HAVE_LOGIN)],
#include <openssl/bn.h>
#include <openssl/sha.h>
int main(void)
- {RSA *key; char seed[2048];memset(seed, 0, sizeof(seed));
- RAND_seed(seed, sizeof(seed));key=RSA_generate_key(32,3,NULL,NULL);
- return(key==NULL);}
+ {
+ RSA *key; char a[2048],b[2048];;
+ memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));
+ RAND_add(a, sizeof(a), sizeof(a));
+ key=RSA_generate_key(32,3,NULL,NULL);
+ if (key==NULL) return(1);
+ return(-1==RSA_private_decrypt(RSA_size(key),a,b,key,RSA_NO_PADDING));
+ }
],
[
AC_DEFINE(HAVE_OPENSSL)
break;
], []
)
- AC_TRY_RUN(
- [
- #include <ssl/rsa.h>
- #include <ssl/bn.h>
- #include <ssl/sha.h>
- int main(void)
- {RSA *key; char seed[2048];memset(seed, 0, sizeof(seed));
- RAND_seed(seed, sizeof(seed));key=RSA_generate_key(32,3,NULL,NULL);
- return(key==NULL);}
- ],
- [
- AC_DEFINE(HAVE_SSL)
- found_crypto=1
- break;
- ], []
- )
done
if test ! -z "$found_crypto" ; then
if test ! -z "$need_dash_r" ; then
LDFLAGS="$LDFLAGS -R$ssldir/lib -R$ssldir"
fi
+ if test ! -z "$blibpath" ; then
+ blibpath="$blibpath:$ssldir:$ssldir/lib"
+ fi
fi
if test -z "$WANTS_RSAREF" ; then
LIBS="$saved_LIBS -lcrypto"
AC_MSG_CHECKING([for intXX_t types])
AC_TRY_COMPILE(
[#include <sys/types.h>],
- [int16_t a; int32_t b; a = 1235; b = 1235;],
+ [int8_t a; int16_t b; int32_t c; a = b = c = 1;],
[
AC_DEFINE(HAVE_INTXX_T)
AC_MSG_RESULT(yes)
AC_MSG_CHECKING([for u_intXX_t types])
AC_TRY_COMPILE(
[#include <sys/types.h>],
- [u_int16_t c; u_int32_t d; c = 1235; d = 1235;],
+ [u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
[
AC_DEFINE(HAVE_U_INTXX_T)
AC_MSG_RESULT(yes)
AC_TRY_COMPILE(
[#include <sys/bitypes.h>],
[
- u_int16_t c; u_int32_t d;
- int16_t e; int32_t f;
- c = 1235; d = 1235;
- e = 1235; f = 1235;
+ int8_t a; int16_t b; int32_t c;
+ u_int8_t e; u_int16_t f; u_int32_t g;
+ a = b = c = e = f = g = 1;
],
[
AC_DEFINE(HAVE_U_INTXX_T)
)
fi
-AC_MSG_CHECKING([for uintXX_t types])
-AC_TRY_COMPILE(
- [#include <sys/types.h>],
- [uint16_t c; uint32_t d; c = 1235; d = 1235;],
- [
- AC_DEFINE(HAVE_UINTXX_T)
- AC_MSG_RESULT(yes)
- ],
- [AC_MSG_RESULT(no)]
-)
+if test -z "$have_u_intxx_t" ; then
+ AC_MSG_CHECKING([for uintXX_t types])
+ AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;],
+ [
+ AC_DEFINE(HAVE_UINTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+ )
+fi
AC_MSG_CHECKING([for socklen_t])
AC_TRY_COMPILE(
AC_ARG_WITH(random,
[ --with-random=FILE read randomness from FILE (default=/dev/urandom)],
[
- RANDOM_POOL="$withval";
- AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
+ if test "x$withval" != "xno" ; then
+ RANDOM_POOL="$withval";
+ AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
+ fi
],
[
# Check for random device
AC_ARG_WITH(egd-pool,
[ --with-egd-pool=FILE read randomness from EGD pool FILE (default none)],
[
- RANDOM_POOL="$withval";
- AC_DEFINE(HAVE_EGD)
- AC_SUBST(RANDOM_POOL)
- AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
+ if test "x$withval" != "xno" ; then
+ EGD_SOCKET="$withval";
+ AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET")
+ fi
]
)
-# Make sure we have some random number support
-if test -z "$RANDOM_POOL" -a -z "$EGD_POOL"; then
- AC_MSG_ERROR([No random device found, and no EGD random pool specified])
+if test -z "$RANDOM_POOL" -a -z "$EGD_SOCKET" ; then
+ # Use these commands to collect entropy
+ AC_PATH_PROG(PROG_LS, ls)
+ AC_PATH_PROG(PROG_NETSTAT, netstat)
+ AC_PATH_PROG(PROG_ARP, arp)
+ AC_PATH_PROG(PROG_IFCONFIG, ifconfig)
+ AC_PATH_PROG(PROG_PS, ps)
+ AC_PATH_PROG(PROG_W, w)
+ AC_PATH_PROG(PROG_WHO, who)
+ AC_PATH_PROG(PROG_LAST, last)
+ AC_PATH_PROG(PROG_LASTLOG, lastlog)
+ AC_PATH_PROG(PROG_DF, df)
+ AC_PATH_PROG(PROG_VMSTAT, vmstat)
+ AC_PATH_PROG(PROG_UPTIME, uptime)
+ AC_PATH_PROG(PROG_IPCS, ipcs)
+ AC_PATH_PROG(PROG_TAIL, tail)
+ AC_PATH_PROG(PROG_LS, ls)
+ if test ! -z "$PROG_LS" ; then
+ AC_DEFINE_UNQUOTED(PROG_LS, "$PROG_LS")
+ fi
+ if test ! -z "$PROG_NETSTAT" ; then
+ AC_DEFINE_UNQUOTED(PROG_NETSTAT, "$PROG_NETSTAT")
+ fi
+ if test ! -z "$PROG_ARP" ; then
+ AC_DEFINE_UNQUOTED(PROG_ARP, "$PROG_ARP")
+ fi
+ if test ! -z "$PROG_IFCONFIG" ; then
+ AC_DEFINE_UNQUOTED(PROG_IFCONFIG, "$PROG_IFCONFIG")
+ fi
+ if test ! -z "$PROG_PS" ; then
+ AC_DEFINE_UNQUOTED(PROG_PS, "$PROG_PS")
+ fi
+ if test ! -z "$PROG_W" ; then
+ AC_DEFINE_UNQUOTED(PROG_W, "$PROG_W")
+ fi
+ if test ! -z "$PROG_WHO" ; then
+ AC_DEFINE_UNQUOTED(PROG_WHO, "$PROG_WHO")
+ fi
+ if test ! -z "$PROG_LAST" ; then
+ AC_DEFINE_UNQUOTED(PROG_LAST, "$PROG_LAST")
+ fi
+ if test ! -z "$PROG_LASTLOG" ; then
+ AC_DEFINE_UNQUOTED(PROG_LASTLOG, "$PROG_LASTLOG")
+ fi
+ if test ! -z "$PROG_DF" ; then
+ AC_DEFINE_UNQUOTED(PROG_DF, "$PROG_DF")
+ fi
+ if test ! -z "$PROG_VMSTAT" ; then
+ AC_DEFINE_UNQUOTED(PROG_VMSTAT, "$PROG_VMSTAT")
+ fi
+ if test ! -z "$PROG_UPTIME" ; then
+ AC_DEFINE_UNQUOTED(PROG_UPTIME, "$PROG_UPTIME")
+ fi
+ if test ! -z "$PROG_UPTIME" ; then
+ AC_DEFINE_UNQUOTED(PROG_UPTIME, "$PROG_UPTIME")
+ fi
+ if test ! -z "$PROG_TAIL" ; then
+ AC_DEFINE_UNQUOTED(PROG_TAIL, "$PROG_TAIL")
+ fi
fi
AC_ARG_WITH(catman,
if test "x$withval" != "$xyes" ; then
CFLAGS="$CFLAGS -I${withval}/include"
LDFLAGS="$LDFLAGS -L${withval}/lib"
+ if test ! -z "$need_dash_r" ; then
+ LDFLAGS="$LDFLAGS -R${withval}/lib"
+ fi
+ if test ! -z "$blibpath" ; then
+ blibpath="$blibpath:${withval}/lib"
+ fi
else
if test -d /usr/include/kerberosIV ; then
CFLAGS="$CFLAGS -I/usr/include/kerberosIV"
AC_DEFINE_UNQUOTED(PIDDIR, "$piddir")
AC_SUBST(piddir)
+if test ! -z "$blibpath" ; then
+ LDFLAGS="$LDFLAGS -blibpath:$blibpath"
+ AC_MSG_WARN([Please check and edit -blibpath in LDFLAGS in Makefile])
+fi
+
AC_OUTPUT(Makefile)