diff --git a/Makefile.am b/Makefile.am index 3b6f66b..dd1fe05 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ PARSER_LIBS=@PARSER_LIBS@ SSL_CFLAGS = @openssl_CFLAGS@ SSL_LIBS = @openssl_LIBS@ -DIST_LIBS = @DIST_LIBS@ +RESOLV_LIBS = @RESOLV_LIBS@ STROPHE_FLAGS = -I$(top_srcdir) STROPHE_LIBS = libstrophe.la @@ -18,18 +18,24 @@ STROPHE_LIBS = libstrophe.la lib_LTLIBRARIES = libstrophe.la libstrophe_la_CFLAGS = $(SSL_CFLAGS) $(STROPHE_FLAGS) $(PARSER_CFLAGS) -libstrophe_la_LDFLAGS = $(SSL_LIBS) $(PARSER_LIBS) $(DIST_LIBS) -no-undefined +libstrophe_la_LDFLAGS = $(SSL_LIBS) $(PARSER_LIBS) $(RESOLV_LIBS) -no-undefined # Export only public API libstrophe_la_LDFLAGS += -export-symbols-regex '^xmpp_' libstrophe_la_SOURCES = src/auth.c src/conn.c src/ctx.c \ src/event.c src/handler.c src/hash.c src/jid.c src/md5.c \ src/resolver.c src/sasl.c src/scram.c src/sha1.c \ - src/snprintf.c src/sock.c src/stanza.c \ - src/tls_openssl.c src/util.c src/rand.c src/uuid.c \ + src/snprintf.c src/sock.c src/stanza.c src/util.c \ + src/rand.c src/uuid.c \ src/common.h src/hash.h src/md5.h src/ostypes.h src/parser.h \ src/resolver.h src/sasl.h src/scram.h src/sha1.h src/snprintf.h \ src/sock.h src/tls.h src/util.h src/rand.h +if DISABLE_TLS +libstrophe_la_SOURCES += src/tls_dummy.c +else +libstrophe_la_SOURCES += src/tls_openssl.c +endif + if PARSER_EXPAT libstrophe_la_SOURCES += src/parser_expat.c else diff --git a/configure.ac b/configure.ac index 264c817..99c16ca 100644 --- a/configure.ac +++ b/configure.ac @@ -9,108 +9,117 @@ PKG_PROG_PKG_CONFIG AC_CANONICAL_HOST AS_CASE([$host_os], - [freebsd*], [PLATFORM="bsd"], - [openbsd*], [PLATFORM="bsd"], - [netbsd*], [PLATFORM="bsd"], - [*nto*|*qnx*], [PLATFORM="qnx"], - [*solaris*], [PLATFORM="solaris"], - [PLATFORM="nix"]) - -PKG_CHECK_MODULES([openssl], [openssl], [PC_REQUIRES="openssl ${PC_REQUIRES}"], - [AC_CHECK_HEADER([openssl/ssl.h], - [ - openssl_LIBS="-lssl -lcrypto" - PC_LIBS="${openssl_LIBS} ${PC_LIBS}" - ], - [AC_MSG_ERROR([openssl not found; openssl required])] - )]) - -PKG_CHECK_MODULES([check], [check >= 0.9.4], [], [AC_MSG_WARN([libcheck not found; unit tests will not be compilable])]) + [freebsd*], [PLATFORM="bsd"], + [openbsd*], [PLATFORM="bsd"], + [netbsd*], [PLATFORM="bsd"], + [*nto*|*qnx*], [PLATFORM="qnx"], + [*solaris*], [PLATFORM="solaris"], + [PLATFORM="nix"]) AC_ARG_WITH([libxml2], - [AS_HELP_STRING([--with-libxml2], [use libxml2 for XML parsing])], - [], [with_libxml2=no]) + [AS_HELP_STRING([--with-libxml2], [use libxml2 for XML parsing, expat is the default])]) +AC_ARG_ENABLE([tls], + [AS_HELP_STRING([--disable-tls], [disable TLS support])]) -if test "x$with_libxml2" != xno; then - PKG_CHECK_MODULES([libxml2], [libxml-2.0 >= 2.7], - [ - with_libxml2=yes - PC_REQUIRES="libxml-2.0 ${PC_REQUIRES}" - ], - [ - old_CFLAGS=$CFLAGS - CFLAGS="-I${includedir}/libxml2" - AC_CHECK_HEADER([libxml/parser.h], - [ - with_libxml2=yes - libxml2_CFLAGS="-I${includedir}/libxml2" - libxml2_LIBS="-lxml2" - PC_LIBS="${libxml2_LIBS} ${PC_LIBS}" - PC_CFLAGS="${libxml2_CFLAGS} ${PC_CFLAGS}" - ], - [AC_MSG_ERROR([libxml2 not found.])]) - CFLAGS=$old_CFLAGS - ]) -else - PKG_CHECK_MODULES([expat], [expat >= 2.0.0], - [PC_REQUIRES="expat ${PC_REQUIRES} "], - [AC_CHECK_HEADER([expat.h], - [ - expat_LIBS="-lexpat" - PC_LIBS="${expat_LIBS} ${PC_LIBS}" - ], - [AC_MSG_ERROR([expat not found; expat required.])] - ) - ]) +PKG_CHECK_MODULES([check], [check >= 0.9.4], + [], [AC_MSG_WARN([libcheck not found; unit tests will not be compilable])]) + +if test "x$enable_tls" != xno; then + PKG_CHECK_MODULES([openssl], [openssl], + [PC_REQUIRES="openssl ${PC_REQUIRES}"], + [AC_CHECK_HEADER([openssl/ssl.h], + [ + openssl_LIBS="-lssl -lcrypto" + PC_LIBS="${openssl_LIBS} ${PC_LIBS}" + ], + [AC_MSG_ERROR([openssl not found; openssl required])] + )]) fi -if test "x$with_libxml2" = xyes; then - with_parser=libxml2 - PARSER_CFLAGS=$libxml2_CFLAGS - PARSER_LIBS=$libxml2_LIBS +with_parser="" +if test "x$with_libxml2" != xyes; then + PKG_CHECK_MODULES([expat], [expat >= 2.0.0], + [ + with_parser="expat" + PC_REQUIRES="expat ${PC_REQUIRES}" + ], + [AC_CHECK_HEADER([expat.h], + [ + with_parser="expat" + expat_LIBS="-lexpat" + PC_LIBS="${expat_LIBS} ${PC_LIBS}" + ]) + ]) +fi +if test "x$with_libxml2" != xno -a "x$with_parser" = x; then + PKG_CHECK_MODULES([libxml2], [libxml-2.0 >= 2.7], + [ + with_parser="libxml2" + PC_REQUIRES="libxml-2.0 ${PC_REQUIRES}" + ], + [ + old_CFLAGS=$CFLAGS + CFLAGS="-I${includedir}/libxml2" + AC_CHECK_HEADER([libxml/parser.h], + [ + with_parser="libxml2" + libxml2_CFLAGS="-I${includedir}/libxml2" + libxml2_LIBS="-lxml2" + PC_LIBS="${libxml2_LIBS} ${PC_LIBS}" + PC_CFLAGS="${libxml2_CFLAGS} ${PC_CFLAGS}" + ]) + CFLAGS=$old_CFLAGS + ]) +fi + +if test "x$with_parser" = xlibxml2; then + PARSER_CFLAGS=$libxml2_CFLAGS + PARSER_LIBS=$libxml2_LIBS +elif test "x$with_parser" = xexpat; then + PARSER_CFLAGS=$expat_CFLAGS + PARSER_LIBS=$expat_LIBS else - with_parser=expat - PARSER_CFLAGS=$expat_CFLAGS - PARSER_LIBS=$expat_LIBS + AC_MSG_ERROR([no XML parser was found, libstrophe requires expat or libxml2]) fi AC_MSG_NOTICE([libstrophe will use the $with_parser XML parser]) + AC_SEARCH_LIBS([socket], [socket]) -DIST_LIBS="" AS_CASE([$PLATFORM], - [bsd], [DIST_LIBS="${DIST_LIBS}"], - [qnx], [DIST_LIBS="-lsocket ${DIST_LIBS}"], - [solaris], [DIST_LIBS="-lresolv -lsocket -lnsl ${DIST_LIBS}"], - [DIST_LIBS="-lresolv ${DIST_LIBS}"]) + [bsd], [RESOLV_LIBS=""], + [qnx], [RESOLV_LIBS="-lsocket"], + [solaris], [RESOLV_LIBS="-lresolv -lsocket -lnsl"], + [RESOLV_LIBS="-lresolv"]) LIBS_TMP="${LIBS}" -LIBS="${DIST_LIBS}" +LIBS="${RESOLV_LIBS}" AC_LINK_IFELSE([AC_LANG_SOURCE([ - #include - #include - #include - #include - #include + #include + #include + #include + #include + #include - int main() { - (void)res_query(NULL, 0, 0, NULL, 0); - return 0; - } - ])], - [], - [AC_MSG_ERROR([res_query() not found with LIBS="${LIBS}"])]) + int main() { + (void)res_query(NULL, 0, 0, NULL, 0); + return 0; + } + ])], + [], + [AC_MSG_ERROR([res_query() not found with LIBS="${LIBS}"])]) LIBS="${LIBS_TMP}" -PC_LIBS="${DIST_LIBS} ${PC_LIBS}" +PC_LIBS="${RESOLV_LIBS} ${PC_LIBS}" m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], - [AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], - [install directory for libstrophe.pc pkg-config file])], - [],[with_pkgconfigdir='$(libdir)/pkgconfig']) - AC_SUBST([pkgconfigdir], [${with_pkgconfigdir}])]) + [AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], + [install directory for libstrophe.pc pkg-config file])], + [], [with_pkgconfigdir='$(libdir)/pkgconfig']) + AC_SUBST([pkgconfigdir], [${with_pkgconfigdir}])]) AM_CONDITIONAL([PARSER_EXPAT], [test x$with_parser != xlibxml2]) +AM_CONDITIONAL([DISABLE_TLS], [test x$enable_tls = xno]) AC_SUBST([PC_REQUIRES], [${PC_REQUIRES}]) AC_SUBST([PC_CFLAGS], [${PC_CFLAGS}]) @@ -118,6 +127,6 @@ AC_SUBST([PC_LIBS], [${PC_LIBS}]) AC_SUBST(PARSER_CFLAGS) AC_SUBST(PARSER_LIBS) -AC_SUBST(DIST_LIBS) +AC_SUBST(RESOLV_LIBS) AC_CONFIG_FILES([Makefile libstrophe.pc]) AC_OUTPUT