summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac152
1 files changed, 137 insertions, 15 deletions
diff --git a/configure.ac b/configure.ac
index 942c7a3..bb25c33 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,31 +6,153 @@ AC_INIT([rexmpp], [0.0.0], [defanor@uberspace.net])
AM_INIT_AUTOMAKE([-Werror -Wall])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/rexmpp.c])
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_FILES([Makefile src/Makefile rexmpp.pc Doxyfile])
+AC_CONFIG_HEADERS([src/config.h])
+AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile rexmpp.pc Doxyfile])
# Checks for programs.
AC_PROG_CC
AM_PROG_AR
+
+# Checks for libraries and related parameters.
+
+AC_ARG_WITH([rust],
+ AS_HELP_STRING([--with-rust],
+ [use available Rust implementations of modules]))
+AC_ARG_WITH([expat],
+ AS_HELP_STRING([--with-expat], [use libexpat instead of libxml2]))
+
+AS_IF([test "x$with_rust" == "xyes"],
+ [AC_PATH_PROG([RUSTC], [rustc], [notfound])
+ AS_IF([test "x$RUSTC" == "xnotfound"], [AC_MSG_ERROR([rustc is required])])
+ AC_PATH_PROG([CARGO], [cargo], [notfound])
+ AS_IF([test "x$CARGO" == "xnotfound"], [AC_MSG_ERROR([cargo is required])])
+ AC_DEFINE([USE_RUST], [1], [Use Rust sources over C ones])],
+ [AS_IF([test "x$with_expat" == "xyes"],
+ [PKG_CHECK_MODULES([EXPAT], [expat],
+ [AC_DEFINE([USE_EXPAT], [1], [Use libexpat])])],
+ [PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
+ [AC_DEFINE([USE_LIBXML2], [1], [Use libxml2])])])])
+AM_CONDITIONAL([USE_RUST], [test "x$with_rust" == "xyes"])
+
LT_INIT
-# Checks for libraries.
-PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
-AC_SUBST(LIBXML_CFLAGS)
-AC_SUBST(LIBXML_LIBS)
-PKG_CHECK_MODULES([GNUTLS], [gnutls])
-AC_SUBST(GNUTLS_CFLAGS)
-AC_SUBST(GNUTLS_LIBS)
+# Cryptographic libraries, for hashing
+
+AC_ARG_WITH([gcrypt],
+ AS_HELP_STRING([--without-gcrypt], [do not use gcrypt]))
+AC_ARG_WITH([nettle],
+ AS_HELP_STRING([--without-nettle], [do not use nettle]))
+
+AS_IF([test "x$with_gcrypt" != "xno"],
+ [AM_PATH_LIBGCRYPT([],
+ [AC_DEFINE([HAVE_GCRYPT], [1], [Libgcrypt is available])])])
+
+AS_IF([test "x$with_gcrypt" == "xno" -a "x$with_nettle" != "xno"],
+ [PKG_CHECK_MODULES([NETTLE], [nettle],
+ [AC_DEFINE([HAVE_NETTLE], [1], [Libnettle is available])])])
+
+AS_IF([test "x$with_gcrypt" == "xno" -a "x$with_nettle" == "xno"],
+ [PKG_CHECK_MODULES([OPENSSL], [openssl],
+ [AC_DEFINE([HAVE_OPENSSL], [1], [OpenSSL is available])])])
+
+
+# libnice (+ glib) and libsrtp for media calls, optional
+
+AC_ARG_ENABLE([calls], AS_HELP_STRING([--disable-calls],
+ [build without Jingle media call support]))
+AC_ARG_WITH([opus],
+ AS_HELP_STRING([--without-opus], [Do not use libopus]))
+AS_IF([test "x$enable_calls" != "xno"],
+ [PKG_CHECK_MODULES([NICE], [nice],
+ [AC_DEFINE([HAVE_NICE], [1], [libnice is available])])
+ PKG_CHECK_MODULES([GLIB], [glib-2.0],
+ [AC_DEFINE([HAVE_GLIB], [1], [glib is available])])
+ PKG_CHECK_MODULES([SRTP], [libsrtp2],
+ [AC_DEFINE([HAVE_SRTP], [1], [libsrtp2 is available])])
+ PKG_CHECK_MODULES([PORTAUDIO], [portaudio-2.0],
+ [AC_DEFINE([HAVE_PORTAUDIO], [1], [portaudio-2.0 is available])])
+ AS_IF([test "x$with_opus" != "xno"],
+ PKG_CHECK_MODULES([OPUS], [opus],
+ [AC_DEFINE([HAVE_OPUS], [1], [libopus is available])]))
+ AC_DEFINE([ENABLE_CALLS], [1], [Jingle ICE-UDP DTLS-SRTP calls are enabled])])
+
+# GSASL, optional
+
+AC_ARG_WITH([gsasl],
+ AS_HELP_STRING([--without-gsasl], [Don't use libgsasl for SASL]))
+AS_IF([test "x$with_gsasl" != "xno"],
+ [PKG_CHECK_MODULES([GSASL], [libgsasl], [AC_DEFINE([HAVE_GSASL], [1], [GSASL is available])])])
+
+# DNS: libunbound or c-ares, optional
+
+AC_ARG_VAR([DNSSEC_TRUST_ANCHOR_FILE],
+ [A DNSSEC trust anchor, containing DNSKEY in zone file format])
+AS_IF([test "x$DNSSEC_TRUST_ANCHOR_FILE" == "x"],
+ [DNSSEC_TRUST_ANCHOR_FILE="/usr/share/dns/root.key"])
+AC_DEFINE_UNQUOTED([DNSSEC_TRUST_ANCHOR_FILE],
+ "$DNSSEC_TRUST_ANCHOR_FILE",
+ [A DNSSEC trust anchor, containing DNSKEY in zone file format])
+
+AC_ARG_WITH([unbound],
+ AS_HELP_STRING([--without-unbound], [don't use libunbound]))
+AC_ARG_WITH([cares],
+ AS_HELP_STRING([--with-cares], [use c-ares]))
+
+AS_IF([test "x$with_unbound" != "xno"],
+ [PKG_CHECK_MODULES([UNBOUND], [libunbound],
+ [AC_DEFINE([USE_UNBOUND], [1], [Use libunbound])])])
+AS_IF([test "x$with_cares" == "xyes"],
+ [PKG_CHECK_MODULES([CARES], [libcares],
+ [AC_DEFINE([USE_CARES], [1], [Use c-ares])])])
+
+# GPGME, optional
+
+AC_ARG_WITH([gpgme],
+ AS_HELP_STRING([--without-gpgme], [Don't use GPGME for OpenPGP]))
+AS_IF([test "x$with_gpgme" != "xno"],
+ [AM_PATH_GPGME([], [AC_DEFINE([HAVE_GPGME], [1], [GPGME is available])])])
+
+# TLS: GnuTLS, OpenSSL, or none
+
+AC_ARG_ENABLE([tls], AS_HELP_STRING([--disable-tls], [build without TLS support]))
+AC_ARG_WITH([openssl],
+ AS_HELP_STRING([--with-openssl], [use OpenSSL]))
+AC_ARG_WITH([gnutls],
+ AS_HELP_STRING([--with-gnutls], [use GnuTLS]))
+
+AS_IF([test "x$with_gnutls" == "xyes"],
+ [PKG_CHECK_MODULES([GNUTLS], [gnutls],
+ [PKG_CHECK_MODULES([LIBDANE], [gnutls-dane],
+ [AC_DEFINE([USE_GNUTLS], [1], [Use GnuTLS])])])],
+
+ [test "x$with_openssl" == "xyes"],
+ [PKG_CHECK_MODULES([OPENSSL], [openssl],
+ [AC_DEFINE([USE_OPENSSL], [1], [Use OpenSSL])])],
+
+ [test "x$enable_tls" != "xno"],
+ [PKG_CHECK_MODULES([GNUTLS], [gnutls],
+ [PKG_CHECK_MODULES([LIBDANE], [gnutls-dane],
+ [AC_DEFINE([USE_GNUTLS], [1], [Use GnuTLS])],
+ [PKG_CHECK_MODULES([OPENSSL], [openssl],
+ [AC_DEFINE([USE_OPENSSL], [1], [Use OpenSSL])])])])])
+
+# ICU, optional
+
+AC_ARG_WITH([icu],
+ AS_HELP_STRING([--without-icu], [don't use ICU for JID checks]))
+AS_IF([test "x$with_icu" != "xno"],
+ [PKG_CHECK_MODULES([ICU_I18N], [icu-i18n],
+ AC_DEFINE([HAVE_ICU], [1], [icu-i18n is available]))])
-PKG_CHECK_MODULES([GSASL], [libgsasl])
-AC_SUBST(GSASL_CFLAGS)
-AC_SUBST(GSASL_LIBS)
+# curl, optional
-PKG_CHECK_MODULES([CARES], [libcares])
-AC_SUBST(CARES_CFLAGS)
-AC_SUBST(CARES_LIBS)
+AC_ARG_WITH([curl],
+ AS_HELP_STRING([--without-curl], [don't use curl for HTTP file upload]))
+AS_IF([test "x$with_curl" != "xno"],
+ [PKG_CHECK_MODULES([CURL], [libcurl],
+ AC_DEFINE([HAVE_CURL], [1], [curl is available]))])
# Checks for header files.