Enable tls psk
[radsecproxy.git] / configure.ac
index de8652e..d99bab4 100644 (file)
@@ -1,81 +1,68 @@
-AC_INIT(radsecproxy, 2.0-devel, venaas@uninett.no)
+# -*- Autoconf -*- script for libradsec.
+
+AC_PREREQ([2.63])
+AC_INIT([libradsec], [0.0.5], [linus+libradsec@nordu.net])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_SRCDIR([radsec.c])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE
+LT_INIT
+
+# Checks for programs.
 AC_PROG_CC
-AM_PROG_CC_C_O
-udp=yes
-AC_ARG_ENABLE(udp,
-  [  --enable-udp whether to enable UDP transport: yes/no; default yes ],
-  [ if test "x$enableval" = "xyes" -o "x$enableval" = "xno" ; then
-      udp=$enableval
-    else
-      echo "--enable-udp argument must be yes or no"
-      exit -1
-    fi
-  ])
-tcp=yes
-AC_ARG_ENABLE(tcp,
-  [  --enable-tcp whether to enable TCP transport: yes/no; default yes ],
-  [ if test "x$enableval" = "xyes" -o "x$enableval" = "xno" ; then
-      tcp=$enableval
-    else
-      echo "--enable-tcp argument must be yes or no"
-      exit -1
-    fi
-  ])
-tls=yes
-AC_ARG_ENABLE(tls,
-  [  --enable-tls whether to enable TLS (RadSec) transport: yes/no; default yes ],
-  [ if test "x$enableval" = "xyes" -o "x$enableval" = "xno" ; then
-      tls=$enableval
-    else
-      echo "--enable-tls argument must be yes or no"
-      exit -1
-    fi
-  ])
-dtls=yes
-AC_ARG_ENABLE(dtls,
-  [  --enable-dtls whether to enable DTLS transport: yes/no; default yes ],
-  [ if test "x$enableval" = "xyes" -o "x$enableval" = "xno" ; then
-      dtls=$enableval
-    else
-      echo "--enable-dtls argument must be yes or no"
-      exit -1
-    fi
-  ])
-dnl Check if we're on Solaris and set CFLAGS accordingly
-AC_CANONICAL_SYSTEM
-case "${target_os}" in
-  solaris*)
-    TARGET_CFLAGS="-mt -DSYS_SOLARIS9 -D_POSIX_PTHREAD_SEMANTICS"
-    TARGET_LDFLAGS="-lpthread -lsocket -lnsl"
-    ;;
-  *)
-    TARGET_CFLAGS="-Wall -pedantic -pthread"
-    TARGET_LDFLAGS=""
-  esac
-dnl Adding enabled options
-if test "x$udp" = "xyes" ; then
-  echo "UDP transport enabled"
-  TARGET_CFLAGS="$TARGET_CFLAGS -DRADPROT_UDP"
+
+# Checks for libraries.
+AC_CHECK_LIB([confuse], [cfg_init],,
+    AC_MSG_ERROR([required library libconfuse not found]))
+AC_CHECK_LIB([event_core], [event_get_version],,
+    AC_MSG_ERROR([required library libevent_core not found]))
+AH_TEMPLATE([HAVE_PTHREADS], [POSIX threads are available on this system])
+AC_SEARCH_LIBS([pthread_create], [pthread], AC_DEFINE([HAVE_PTHREADS]))
+
+# Enable-knobs.
+## Enable TLS (RadSec), default on.
+want_tls=yes
+AH_TEMPLATE([RS_ENABLE_TLS], [TLS (RadSec) enabled])
+AH_TEMPLATE([RADPROT_TLS], [])
+AC_ARG_ENABLE([tls],
+    AS_HELP_STRING([--disable-tls], [disable TLS (RadSec)]),
+    [want_tls=$enableval])
+AM_CONDITIONAL([RS_ENABLE_TLS], [test $want_tls = yes])
+if test $want_tls = yes; then
+    AC_CHECK_LIB([event_openssl], [bufferevent_openssl_socket_new],,
+        AC_MSG_ERROR([required library event_openssl not found]))
+    AC_DEFINE([RS_ENABLE_TLS])
+    AC_DEFINE([RADPROT_TLS])
+else
+    # Define WITHOUT_OPENSSL for radius/client.h.
+    CPPFLAGS="$CPPFLAGS -DWITHOUT_OPENSSL"
 fi
-if test "x$tcp" = "xyes" ; then
-  echo "TCP transport enabled"
-  TARGET_CFLAGS="$TARGET_CFLAGS -DRADPROT_TCP"
-fi
-if test "x$tls" = "xyes" ; then
-  echo "TLS (RadSec) transport enabled"
-  TARGET_CFLAGS="$TARGET_CFLAGS -DRADPROT_TLS"
-fi
-if test "x$dtls" = "xyes" ; then
-  echo "DTLS transport enabled"
-  TARGET_CFLAGS="$TARGET_CFLAGS -DRADPROT_DTLS"
-fi
-AC_SUBST(TARGET_CFLAGS)
-AC_SUBST(TARGET_LDFLAGS)
-AX_CHECK_SSL
-AC_OUTPUT(Makefile)
+## Enable TLS-PSK (preshared keys).
+AH_TEMPLATE([RS_ENABLE_TLS_PSK], [TLS-PSK (TLS preshared keys) enabled])
+AC_ARG_ENABLE([tls-psk], AS_HELP_STRING([--enable-tls-psk], [enable TLS-PSK (TLS preshared keys)]),
+    [AC_CHECK_LIB([ssl], [SSL_set_psk_client_callback],,
+         AC_MSG_ERROR([required library openssl with SSL_set_psk_client_callback() not found]))
+     AC_DEFINE([RS_ENABLE_TLS_PSK])])
+AM_CONDITIONAL([RS_ENABLE_TLS_PSK], [test "${enable_tls_psk+set}" = set])
+
+# Checks for header files.
+AC_CHECK_HEADERS(
+    [sys/time.h time.h netdb.h netinet/in.h stdint.h stdlib.h strings.h string.h \
+     sys/socket.h unistd.h syslog.h sys/select.h fcntl.h arpa/inet.h pthread.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_SIZE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UINT8_T
+
+# Checks for library functions.
+AC_CHECK_FUNCS([memset socket strdup strerror strrchr])
+
+AC_CONFIG_FILES([Makefile libradsec.spec
+                 radsecproxy/Makefile
+                 radius/Makefile
+                 include/Makefile
+                 examples/Makefile
+                 tests/Makefile])
+AC_OUTPUT