| # 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 |
| |
| # 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 |