d574d7dea0
the making of the release archive. Added 'maketgz' as a script to build release archives with, including automated snapshots or whatever. It updates the defines in include/libssh2.h. configure now extracts the version number from the include/libssh2.h header in the source tree instead of using it fixed set in the script (to remove the need for regenerating the configure script when we run maketgz). Makefile.am now has a dist-hook that puts ".dist" files in the release tree instead of the file without the .dist extension, so that we can easily add modified files in release archives. Like maketgz.
263 строки
7.3 KiB
Plaintext
263 строки
7.3 KiB
Plaintext
# AC_PREREQ(2.57)
|
|
AC_INIT(libssh2, [-], libssh2-devel@lists.sourceforge.net)
|
|
AC_CONFIG_SRCDIR([src])
|
|
AC_CONFIG_HEADER([src/libssh2_config.h])
|
|
|
|
dnl SED is needed by some of the tools
|
|
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
|
|
$PATH:/usr/bin:/usr/local/bin)
|
|
AC_SUBST(SED)
|
|
|
|
if test "x$SED" = "xsed-was-not-found-by-configure"; then
|
|
AC_MSG_WARN([sed was not found, this may ruin your chances to build fine])
|
|
fi
|
|
|
|
dnl figure out the libssh2 version
|
|
VERSION=`$SED -ne 's/^#define LIBSSH2_VERSION *"\(.*\)"/\1/p' ${srcdir}/include/libssh2.h`
|
|
AM_INIT_AUTOMAKE(libssh2,$VERSION)
|
|
AC_MSG_CHECKING([libssh2 version])
|
|
AC_MSG_RESULT($VERSION)
|
|
|
|
AB_VERSION=$VERSION
|
|
|
|
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
|
|
|
|
# Some systems (Solaris?) have socket() in -lsocket.
|
|
AC_SEARCH_LIBS(socket, socket)
|
|
|
|
# Solaris has inet_addr() in -lnsl.
|
|
AC_SEARCH_LIBS(inet_addr, nsl)
|
|
|
|
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 libgcrypt.
|
|
AC_ARG_WITH(libgcrypt,
|
|
AC_HELP_STRING([--with-libgcrypt],[Use libgcrypt for crypto]),
|
|
use_libgcrypt=$withval,use_libgcrypt=no)
|
|
if test "$use_libgcrypt" != "no"; then
|
|
AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [#include <gcrypt.h>])
|
|
fi
|
|
if test "$ac_cv_libgcrypt" = yes; then
|
|
use_libgcrypt=yes
|
|
AC_DEFINE(LIBSSH2_LIBGCRYPT, 1, [Use libgcrypt])
|
|
fi
|
|
AM_CONDITIONAL(LIBGCRYPT, test "$use_libgcrypt" != "no")
|
|
|
|
# Need to define SHLIB_SUFFIX_NAME before checking for libcrypt and libz
|
|
# $shrext_cmds (from libtool) can contain commands so it must be eval'd
|
|
# Simon's note: replace the find-openssl/libz logic with Bruno's
|
|
# AC_LIB_LINKFLAGS which is more portable and flexible.
|
|
eval SHLIB_SUFFIX_NAME=\"$shrext_cmds\"
|
|
AC_SUBST(SHLIB_SUFFIX_NAME)
|
|
|
|
#
|
|
# 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 "$use_libgcrypt" = "no"; then
|
|
|
|
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"
|
|
|
|
fi
|
|
|
|
#
|
|
# 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
|
|
|
|
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,
|
|
AC_HELP_STRING([--enable-debug],[Enable pedantic and debug options])
|
|
AC_HELP_STRING([--disable-debug],[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])
|
|
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/ioctl.h sys/time.h])
|
|
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
|
|
AC_CHECK_FUNCS(poll gettimeofday select)
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
|
|
CURL_CHECK_NONBLOCKING_SOCKET
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
src/Makefile
|
|
tests/Makefile
|
|
example/Makefile
|
|
example/simple/Makefile
|
|
docs/Makefile])
|
|
AC_OUTPUT
|