ef8d1a2af8
debug build (using -g and disabling all -O options), but also sets a whole range of picky/strict compiler options depending on what compiler and version that is used. This function is ripped right off the curl configure script, written by yours truly. I left it using the same name as in the curl script to 1) make it obvious where it comes from, so that 2) it will be easier to update and keep it in sync with future modifications. Now, this shows MAAAAAAAAANY warnings...
259 lines
8.4 KiB
Plaintext
259 lines
8.4 KiB
Plaintext
# AC_PREREQ(2.57)
|
|
AC_INIT(libssh2, 0.15, libssh2-devel@lists.sourceforge.net)
|
|
AM_INIT_AUTOMAKE(libssh2, 0.15)
|
|
AC_CONFIG_SRCDIR([src])
|
|
AC_CONFIG_HEADER([src/libssh2_config.h])
|
|
AB_INIT
|
|
|
|
# Check for the OS.
|
|
# Daniel's note: this should not be necessary and we need to work to
|
|
# get this removed.
|
|
AC_CANONICAL_HOST
|
|
case "$host" in
|
|
*-cygwin)
|
|
CFLAGS="$CFLAGS -DLIBSSH2_WIN32"
|
|
;;
|
|
*darwin*)
|
|
CFLAGS="$CFLAGS -DLIBSSH2_DARWIN"
|
|
;;
|
|
*hpux*)
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
AC_CHECK_LIB(socket, socket, [
|
|
SHLIB_LDFLAGS="$SHLIB_LDFLAGS -lsocket"
|
|
LIBS="$LIBS -lsocket"
|
|
])
|
|
AC_CHECK_LIB(m, ceil, [ SHLIB_LDFLAGS="$SHLIB_LDFLAGS -lm" ])
|
|
|
|
|
|
AC_SUBST(SHLIB_SUFFIX_NAME)
|
|
AC_SUBST(SHLIB_LDFLAGS)
|
|
AC_SUBST(LIBS)
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_LIBTOOL
|
|
AC_C_BIGENDIAN
|
|
if test -z "$PKG_CONFIG"; then
|
|
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
|
fi
|
|
|
|
#
|
|
# Look for OpenSSL
|
|
#
|
|
AC_ARG_WITH(openssl,
|
|
AC_HELP_STRING([--with-openssl=DIR],[Look for OpenSSL in PATH]),
|
|
[LIBSSH2_OPENSSL_DIR=$withval],[LIBSSH2_OPENSSL_DIR=yes])
|
|
|
|
if test "$LIBSSH2_OPENSSL_DIR" = "no" || test "$LIBSSH2_OPENSSL_DIR" = "yes"; then
|
|
unset LIBSSH2_OPENSSL_DIR
|
|
fi
|
|
|
|
found_openssl=no
|
|
pkgcfg_openssl=no
|
|
unset OPENSSL_INCDIR
|
|
unset OPENSSL_INCLINE
|
|
unset OPENSSL_LIBLINE
|
|
|
|
AC_MSG_CHECKING([for OpenSSL])
|
|
|
|
# Explicit path given, use it rather than pkg-config
|
|
if test ! -z "$LIBSSH2_OPENSSL_DIR"; then
|
|
found_openssl=yes
|
|
OPENSSL_LIBLINE="-L$LIBSSH2_OPENSSL_DIR/lib -lcrypto"
|
|
OPENSSL_INCLINE="-I$LIBSSH2_OPENSSL_DIR/include"
|
|
OPENSSL_INCDIR=$LIBSSH2_OPENSSL_DIR/include
|
|
AC_MSG_RESULT([Using explicit path $LIBSSH2_OPENSSL_DIR])
|
|
fi
|
|
|
|
# If pkg-config is found try using it
|
|
if test "$found_openssl" = "no" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then
|
|
found_openssl=yes
|
|
pkgcfg_openssl=yes
|
|
OPENSSL_LIBLINE=`$PKG_CONFIG --libs openssl`
|
|
OPENSSL_INCLINE=`$PKG_CONFIG --cflags-only-I openssl`
|
|
AC_MSG_RESULT([Using paths from pkg-config])
|
|
fi
|
|
|
|
# Elsewise, search for OpenSSL wherever it might be
|
|
if test "$found_openssl" = "no"; then
|
|
OPENSSL_SEARCH_PATH="/usr/local/ssl /usr/local /usr /usr/local/openssl"
|
|
|
|
for i in $OPENSSL_SEARCH_PATH; do
|
|
if test -r $i/include/openssl/evp.h; then
|
|
OPENSSL_INCLINE="-I$i/include"
|
|
OPENSSL_INCDIR=$i/include
|
|
fi
|
|
if test -r $i/include/openssl/hmac.h; then
|
|
OPENSSL_INCLINE="-I$i/include"
|
|
OPENSSL_INCDIR=$i/include
|
|
fi
|
|
if test -r $i/lib/libcrypto.a -o -r $i/lib/libcrypto.$SHLIB_SUFFIX_NAME; then
|
|
OPENSSL_LIBLINE="-L$i/lib -lcrypto"
|
|
fi
|
|
test -n "$OPENSSL_INCLINE" && test -n "$OPENSSL_LIBLINE" && break
|
|
done
|
|
|
|
if test -z "$OPENSSL_INCLINE"; then
|
|
AC_MSG_ERROR([Cannot find OpenSSL's <evp.h> or <hmac.h>])
|
|
fi
|
|
|
|
if test -z "$OPENSSL_LIBLINE"; then
|
|
AC_MSG_ERROR([Cannot find OpenSSL's libcrypto])
|
|
fi
|
|
|
|
AC_MSG_RESULT([$OPENSSL_INCLINE $OPENSSL_LIBLINE])
|
|
fi
|
|
|
|
#
|
|
# Confirm required OpenSSL libs
|
|
#
|
|
if test ! "$pkgcfg_openssl" = "yes"; then
|
|
if test ! -r $OPENSSL_INCDIR/openssl/bn.h || test ! -r $OPENSSL_INCDIR/openssl/evp.h || \
|
|
test ! -r $OPENSSL_INCDIR/openssl/hmac.h || test ! -r $OPENSSL_INCDIR/openssl/pem.h || \
|
|
test ! -r $OPENSSL_INCDIR/openssl/sha.h; then
|
|
AC_MSG_ERROR([Missing one or more of <openssl/bn.h>, <openssl/evp.h>, <openssl/hmac.h>, <openssl/pem.h>, <openssl/sha.h>])
|
|
fi
|
|
fi
|
|
|
|
CFLAGS="$CFLAGS $OPENSSL_INCLINE"
|
|
LDFLAGS="$LDFLAGS $OPENSSL_LIBLINE"
|
|
|
|
#
|
|
# zlib
|
|
#
|
|
AC_ARG_WITH(libz,
|
|
AC_HELP_STRING([--with-libz=PATH],[Look for libz in PATH]),
|
|
[LIBSSH2_LIBZ_DIR=$withval],[LIBSSH2_LIBZ_DIR="/usr/local /usr /usr/local/libz /usr/libz /usr/local/zlib /usr/zlib"])
|
|
|
|
if test "$LIBSSH2_LIBZ_DIR" = "no" || test "$LIBSSH2_LIBZ_DIR" = "yes"; then
|
|
unset LIBSSH2_LIBZ_DIR
|
|
fi
|
|
|
|
unset LIBZ_INCDIR
|
|
unset LIBZ_LIBDIR
|
|
|
|
AC_MSG_CHECKING([for libz])
|
|
|
|
for i in $LIBSSH2_LIBZ_DIR; do
|
|
if test -r $i/include/zlib.h; then
|
|
LIBZ_INCDIR=$i/include
|
|
fi
|
|
if test -r $i/lib/libz.a -o -r $i/lib/libz.$SHLIB_SUFFIX_NAME; then
|
|
LIBZ_LIBDIR=$i/lib
|
|
fi
|
|
test -n "$LIBZ_INCDIR" && test -n "$LIBZ_LIBDIR" && break
|
|
done
|
|
|
|
if test -n "$LIBZ_INCDIR" && test -n "$LIBZ_LIBDIR"; then
|
|
AC_MSG_RESULT([Found in $LIBZ_INCDIR $LIBZ_LIBDIR])
|
|
CFLAGS="$CFLAGS -I$LIBZ_INCDIR"
|
|
LDFLAGS="$LDFLAGS -L$LIBZ_LIBDIR -lz"
|
|
AC_DEFINE(LIBSSH2_HAVE_ZLIB, 1, [Compile in zlib support])
|
|
else
|
|
AC_MSG_RESULT([Cannot find libz's <zlib.h>])
|
|
fi
|
|
|
|
#
|
|
# Optional Settings
|
|
#
|
|
AC_ARG_ENABLE(crypt-none,
|
|
AC_HELP_STRING([--enable-crypt-none],[Permit "none" cipher -- NOT RECOMMENDED]),
|
|
[AC_DEFINE(LIBSSH2_CRYPT_NONE, 1, [Enable "none" cipher -- NOT RECOMMENDED])])
|
|
|
|
AC_ARG_ENABLE(mac-none,
|
|
AC_HELP_STRING([--enable-mac-none],[Permit "none" MAC -- NOT RECOMMENDED]),
|
|
[AC_DEFINE(LIBSSH2_MAC_NONE, 1, [Enable "none" MAC -- NOT RECOMMENDED])])
|
|
|
|
AC_ARG_ENABLE(gex-new,
|
|
AC_HELP_STRING([--disable-gex-new],[Disable "new" diffie-hellman-group-exchange-sha1 method]),
|
|
[GEX_NEW=$enableval])
|
|
if test "$GEX_NEW" != "no"; then
|
|
AC_DEFINE(LIBSSH2_DH_GEX_NEW, 1, [Enable newer diffie-hellman-group-exchange-sha1 syntax])
|
|
fi
|
|
|
|
#
|
|
# Optional debugging -- Meant for developer maintenance only
|
|
# When enabled, the relevant debugging information will be written on stderr
|
|
#
|
|
AC_ARG_ENABLE(debug-transport,
|
|
AC_HELP_STRING([--enable-debug-transport],[Output transport layer debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_TRANSPORT, 1, [Output transport layer debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-kex,
|
|
AC_HELP_STRING([--enable-debug-kex],[Output Key Exchange debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_KEX, 1, [Output Key Exchange debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-userauth,
|
|
AC_HELP_STRING([--enable-debug-userauth],[Output userauth debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_USERAUTH, 1, [Output userauth layer debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-channel,
|
|
AC_HELP_STRING([--enable-debug-connection],[Output connection layer debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_CONNECTION, 1, [Output connection layer debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-scp,
|
|
AC_HELP_STRING([--enable-debug-scp],[Output scp subsystem debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_SCP, 1, [Output scp subsystem debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-sftp,
|
|
AC_HELP_STRING([--enable-debug-sftp],[Output sftp subsystem debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_SFTP, 1, [Output sftp subsystem debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-publickey,
|
|
AC_HELP_STRING([--enable-debug-publickey],[Output publickey subsystem debugging info to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_PUBLICKEY, 1, [Output publickey subsystem debugging info to stderr])])
|
|
AC_ARG_ENABLE(debug-errors,
|
|
AC_HELP_STRING([--enable-debug-errors],[Output failure events to stderr]),
|
|
[AC_DEFINE(LIBSSH2_DEBUG_ERRORS, 1, [Output failure events to stderr])])
|
|
AC_ARG_ENABLE(debug-all,
|
|
AC_HELP_STRING([--enable-debug-all],[Output debugging info for all layers to stderr]),
|
|
[
|
|
AC_DEFINE(LIBSSH2_DEBUG_TRANSPORT, 1, [Output transport layer debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_KEX, 1, [Output Key Exchange debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_USERAUTH, 1, [Output userauth layer debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_CONNECTION, 1, [Output connection layer debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_SCP, 1, [Output scp subsystem debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_SFTP, 1, [Output sftp subsystem debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_PUBLICKEY, 1, [Output publickey subsystem debugging info to stderr])
|
|
AC_DEFINE(LIBSSH2_DEBUG_ERRORS, 1, [Output failure events to stderr])
|
|
])
|
|
|
|
|
|
dnl ************************************************************
|
|
dnl option to switch on compiler debug options
|
|
dnl
|
|
AC_MSG_CHECKING([whether to enable pedantic and debug compiler options])
|
|
AC_ARG_ENABLE(debug-build,
|
|
AC_HELP_STRING([--enable-debug-build],[Enable pedantic debug options])
|
|
AC_HELP_STRING([--disable-debug-build],[Disable debug options]),
|
|
[ case "$enableval" in
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
*) AC_MSG_RESULT(yes)
|
|
|
|
CPPFLAGS="$CPPFLAGS -DLIBSSH2DEBUG"
|
|
CFLAGS="$CFLAGS -g"
|
|
|
|
dnl set compiler "debug" options to become more picky, and remove
|
|
dnl optimize options from CFLAGS
|
|
CURL_CC_DEBUG_OPTS
|
|
;;
|
|
esac
|
|
],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
# Checks for header files.
|
|
# AC_HEADER_STDC
|
|
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h sys/select.h])
|
|
AC_CHECK_FUNCS(poll gettimeofday select)
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
src/Makefile])
|
|
AC_OUTPUT
|