configure: Use AC_ARG_WITH also for openssl options.
authorAndre Noll <maan@systemlinux.org>
Tue, 1 Mar 2011 22:12:46 +0000 (23:12 +0100)
committerAndre Noll <maan@systemlinux.org>
Sun, 27 Mar 2011 14:43:12 +0000 (16:43 +0200)
Currently the check for openssl is performed by CHECK_SSL() in
configure.ac. This function searches the given directory for the
openssl-header but does not check the existence and usability of
the openssl libraries. The argument of --enable-ssldir, if given,
is tried first, and each member of a hard-coded list of directories
is searched next.

This patch replaces CHECK_SSL() by checks similar to those for
other headers and libraries. In particular, we now also check
for the openssl libraries, and the configure options are now
called --with-openssl-headers and --with-openssl-libs rather than
--enable-ssldir.

Makefile.in
configure.ac

index 8526716..d7640b6 100644 (file)
@@ -157,7 +157,7 @@ $(man_dir):
 
 $(object_dir)/crypt.o: crypt.c | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @SSL_CPPFLAGS@ $<
+       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @openssl_cppflags@ $<
 $(object_dir)/spx_common.o: spx_common.c | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
        $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
index 48f2958..0201896 100644 (file)
@@ -273,46 +273,52 @@ fi
 CPPFLAGS="$OLD_CPPFLAGS"
 LDFLAGS="$OLD_LDFLAGS"
 LIBS="$OLD_LIBS"
-########################################################################### ssl
-dnl @synopsis CHECK_SSL
-dnl
-dnl based on the follwing macro from the autoconf archive
-dnl
-dnl @category InstalledPackages
-dnl @author Mark Ethan Trostler <trostler@juniper.net>
-dnl @version 2003-01-28
-dnl @license AllPermissive
-
-AC_DEFUN([CHECK_SSL],
-[
-       for ssldir in $1 /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
-               AC_MSG_CHECKING(for openssl in $ssldir)
-               if test -f "$ssldir/include/openssl/ssl.h"; then
-                       found_ssl="yes"
-                       AC_MSG_RESULT(yes)
-                       SSL_CFLAGS="-I$ssldir/include"
-                       SSL_CPPFLAGS="-I$ssldir/include"
-                       break
-               fi
-               AC_MSG_RESULT(no)
-       done
-       if test x_$found_ssl != x_yes; then
-               AC_MSG_ERROR(Cannot find ssl libraries)
-       else
-               SSL_LIBS="-lssl -lcrypto";
-               SSL_LDFLAGS="-L$ssldir/lib";
+###################################################################### openssl
+OLD_CPPFLAGS="$CPPFLAGS"
+OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
+have_openssl="yes"
+AC_ARG_WITH(openssl_headers, [AC_HELP_STRING(--with-openssl-headers=dir,
+       [look for openssl headers also in dir])])
+if test -n "$with_openssl_headers"; then
+       openssl_cppflags="-I$with_openssl_headers"
+       CPPFLAGS="$CPPFLAGS $openssl_cppflags"
+fi
+AC_ARG_WITH(openssl_libs, [AC_HELP_STRING(--with-openssl-libs=dir,
+       [look for openssl libraries also in dir])])
+if test -n "$with_openssl_libs"; then
+       openssl_libs="-L$with_openssl_libs"
+       LDFLAGS="$LDFLAGS $openssl_libs"
+fi
+AC_CHECK_HEADER(openssl/ssl.h, [], [have_openssl="no"])
+AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
+if test "$have_openssl" = "no" -a -z "$with_openssl_headers$with_openssl_libs"; then
+       # try harder: openssl is sometimes installed in /usr/local/ssl
+       openssl_cppflags="-I/usr/local/ssl/include"
+       CPPFLAGS="$CPPFLAGS $openssl_cppflags"
+       openssl_libs="-L/usr/local/ssl/lib"
+       LDFLAGS="$LDFLAGS $openssl_libs"
+       # clear cache
+       unset ac_cv_header_openssl_ssl_h 2> /dev/null
+       unset ac_cv_lib_crypto_RAND_bytes 2> /dev/null
+       AC_CHECK_HEADER(openssl/ssl.h, [have_openssl="yes"], [])
+       if test "$have_openssl" = "yes"; then
+               AC_CHECK_LIB([crypto], [RAND_bytes], [], [have_openssl="no"])
        fi
-       AC_SUBST(SSL_CPPFLAGS)
-])dnl
-
-AC_ARG_ENABLE(ssldir, [AS_HELP_STRING(--enable-ssldir=path,
-       [Search for openssl also in path.])])
-if test "$enable_ssldir" = "yes"; then enable_ssldir=""; fi
-CHECK_SSL($enable_ssldir)
-server_ldflags="$server_ldflags $SSL_LDFLAGS $SSL_LIBS"
-client_ldflags="$client_ldflags $SSL_LDFLAGS $SSL_LIBS"
-audiod_ldflags="$audiod_ldflags $SSL_LDFLAGS $SSL_LIBS"
-
+fi
+if test "$have_openssl" = "yes"; then
+       AC_DEFINE(HAVE_OPENSSL, 1, [define to 1 to turn on openssl support])
+       AC_SUBST(openssl_cppflags)
+       openssl_libs="$openssl_libs -lssl -lcrypto"
+       server_ldflags="$server_ldflags $openssl_libs"
+       client_ldflags="$client_ldflags $openssl_libs"
+       audiod_ldflags="$audiod_ldflags $openssl_libs"
+else
+       AC_MSG_ERROR([openssl libraries not found])
+fi
+CPPFLAGS="$OLD_CPPFLAGS"
+LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
 ########################################################################### libsocket
 AC_CHECK_LIB([c], [socket],
        [socket_lib=],