diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 152 |
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. |