+ have_protoc_c="no (protoc-c compiler not found)"
+else
+ have_protoc_c="yes"
+fi
+
+# --with-libpython {{{
+AC_ARG_VAR([LIBPYTHON_CPPFLAGS], [Preprocessor flags for libpython])
+AC_ARG_VAR([LIBPYTHON_LDFLAGS], [Linker flags for libpython])
+AC_ARG_VAR([LIBPYTHON_LIBS], [Libraries for libpython])
+
+AC_ARG_WITH([libpython],
+ [AS_HELP_STRING([--with-libpython], [if we should build with libpython @<:@default=yes@:>@])],
+ [with_libpython="$withval"],
+ [with_libpython="check"]
+)
+
+if test "$with_libpython" != "no"; then
+ if test "$LIBPYTHON_CPPFLAGS" = "" && test "$LIBPYTHON_LDFLAGS" = ""; then
+ AC_ARG_VAR([PYTHON_CONFIG], [path to python-config])
+ AC_PATH_PROGS([PYTHON_CONFIG],
+ [python3-config python2-config python-config]
+ )
+ if test "$PYTHON_CONFIG" = ""; then
+ if test "$with_libpython" = "yes"; then
+ AC_MSG_ERROR([Unable to find python-config])
+ fi
+ with_libpython="no"
+ fi
+ fi
+fi
+
+if test "$PYTHON_CONFIG" != ""; then
+ LIBPYTHON_CPPFLAGS="`${PYTHON_CONFIG} --includes`"
+ if test $? -ne 0; then
+ with_libpython="no"
+ fi
+ LIBPYTHON_LDFLAGS="`${PYTHON_CONFIG} --ldflags`"
+ if test $? -ne 0; then
+ with_libpython="no"
+ fi
+ LIBPYTHON_LIBS="`${PYTHON_CONFIG} --libs`"
+ if test $? -ne 0; then
+ with_libpython="no"
+ fi
+fi
+
+if test "$with_libpython" != "xno"; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ SAVE_LDFLAGS="$LDFLAGS"
+ SAVE_LIBS="$LIBS"
+ CPPFLAGS="$LIBPYTHON_CPPFLAGS $CPPFLAGS"
+ LDFLAGS="$LIBPYTHON_LDFLAGS $LDFLAGS"
+ LIBS="$LIBPYTHON_LIBS $LIBS"
+
+ AC_CHECK_HEADERS([Python.h],
+ [
+ AC_MSG_CHECKING([for libpython])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[#include <Python.h>]],
+ [[Py_Initialize();]])
+ ],
+ [with_libpython="yes"],
+ [with_libpython="no"]
+ )
+ AC_MSG_RESULT([$with_libpython])
+ ],
+ [with_libpython="no"]
+ )
+
+ CPPFLAGS="$SAVE_CPPFLAGS"
+ LDFLAGS="$SAVE_LDFLAGS"
+ LIBS="$SAVE_LIBS"
+fi
+# }}} --with-libpython
+
+# --with-librabbitmq {{{
+AC_ARG_WITH([librabbitmq],
+ [AS_HELP_STRING([--with-librabbitmq@<:@=PREFIX@:>@], [Path to librabbitmq.])],
+ [
+ if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
+ with_librabbitmq_cppflags="-I$withval/include"
+ with_librabbitmq_ldflags="-L$withval/lib"
+ with_librabbitmq="yes"
+ else
+ with_librabbitmq="$withval"
+ fi
+ ],
+ [with_librabbitmq="yes"]
+)
+
+if test "x$with_librabbitmq" = "xyes"; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
+
+ AC_CHECK_HEADERS([amqp.h],
+ [with_librabbitmq="yes"],
+ [with_librabbitmq="no (amqp.h not found)"]
+ )
+
+ CPPFLAGS="$SAVE_CPPFLAGS"
+fi
+
+if test "x$with_librabbitmq" = "xyes"; then
+ # librabbitmq up to version 0.9.1 provides "library_errno", later
+ # versions use "library_error". The library does not provide a version
+ # macro :(.
+
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
+
+ AC_CHECK_MEMBERS([amqp_rpc_reply_t.library_errno],
+ [],
+ [],
+ [[
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdint.h>
+ #include <inttypes.h>
+ #include <amqp.h>
+ ]]
+ )
+ CPPFLAGS="$SAVE_CPPFLAGS"
+
+ SAVE_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $with_librabbitmq_ldflags"
+
+ AC_CHECK_LIB([rabbitmq], [amqp_basic_publish],
+ [with_librabbitmq="yes"],
+ [with_librabbitmq="no (Symbol 'amqp_basic_publish' not found)"]
+ )
+
+ LDFLAGS="$SAVE_LDFLAGS"
+fi
+
+if test "x$with_librabbitmq" = "xyes"; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ SAVE_LDFLAGS="$LDFLAGS"
+ SAVE_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
+ LDFLAGS="$LDFLAGS $with_librabbitmq_ldflags"
+ LIBS="-lrabbitmq"
+
+ AC_CHECK_HEADERS([amqp_tcp_socket.h amqp_socket.h])
+ AC_CHECK_FUNC([amqp_tcp_socket_new],
+ [
+ AC_DEFINE([HAVE_AMQP_TCP_SOCKET], [1],
+ [Define if librabbitmq provides the new TCP socket interface.])
+ ]
+ )
+
+ AC_CHECK_DECLS([amqp_socket_close],
+ [],
+ [],
+ [[
+ #include <amqp.h>
+ #ifdef HAVE_AMQP_TCP_SOCKET_H
+ # include <amqp_tcp_socket.h>
+ #endif
+ #ifdef HAVE_AMQP_SOCKET_H
+ # include <amqp_socket.h>
+ #endif
+ ]]
+ )
+
+ CPPFLAGS="$SAVE_CPPFLAGS"
+ LDFLAGS="$SAVE_LDFLAGS"
+ LIBS="$SAVE_LIBS"
+fi
+
+if test "x$with_librabbitmq" = "xyes"; then
+ BUILD_WITH_LIBRABBITMQ_CPPFLAGS="$with_librabbitmq_cppflags"
+ BUILD_WITH_LIBRABBITMQ_LDFLAGS="$with_librabbitmq_ldflags"
+ BUILD_WITH_LIBRABBITMQ_LIBS="-lrabbitmq"
+fi
+
+AC_SUBST(BUILD_WITH_LIBRABBITMQ_CPPFLAGS)
+AC_SUBST(BUILD_WITH_LIBRABBITMQ_LDFLAGS)
+AC_SUBST(BUILD_WITH_LIBRABBITMQ_LIBS)
+
+# }}}
+
+# --with-librdkafka {{{
+AC_ARG_WITH([librdkafka],
+ [AS_HELP_STRING([--with-librdkafka@<:@=PREFIX@:>@], [Path to librdkafka.])],
+ [
+ if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
+ with_librdkafka_cppflags="-I$withval/include"
+ with_librdkafka_ldflags="-L$withval/lib"
+ with_librdkafka_rpath="$withval/lib"
+ with_librdkafka="yes"
+ else
+ with_librdkafka="$withval"
+ fi
+ ],
+ [with_librdkafka="yes"]
+)
+
+if test "x$with_librdkafka" = "xyes"; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_librdkafka_cppflags"
+
+ AC_CHECK_HEADERS([librdkafka/rdkafka.h],
+ [with_librdkafka="yes"],
+ [with_librdkafka="no (librdkafka/rdkafka.h not found)"]
+ )
+
+ CPPFLAGS="$SAVE_CPPFLAGS"
+fi
+
+if test "x$with_librdkafka" = "xyes"; then
+ SAVE_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $with_librdkafka_ldflags"
+
+ AC_CHECK_LIB([rdkafka], [rd_kafka_new],
+ [with_librdkafka="yes"],
+ [with_librdkafka="no (Symbol 'rd_kafka_new' not found)"])
+
+ AC_CHECK_LIB([rdkafka], [rd_kafka_conf_set_log_cb],
+ [with_librdkafka_log_cb="yes"],
+ [with_librdkafka_log_cb="no"])
+
+ AC_CHECK_LIB([rdkafka], [rd_kafka_set_logger],
+ [with_librdkafka_logger="yes"],
+ [with_librdkafka_logger="no"]
+ )
+
+ LDFLAGS="$SAVE_LDFLAGS"
+fi
+
+if test "x$with_librdkafka" = "xyes"; then
+ BUILD_WITH_LIBRDKAFKA_CPPFLAGS="$with_librdkafka_cppflags"
+ BUILD_WITH_LIBRDKAFKA_LDFLAGS="$with_librdkafka_ldflags"
+
+ if test "x$with_librdkafka_rpath" != "x"; then
+ BUILD_WITH_LIBRDKAFKA_LIBS="-Wl,-rpath,$with_librdkafka_rpath -lrdkafka"
+ else
+ BUILD_WITH_LIBRDKAFKA_LIBS="-lrdkafka"
+ fi
+
+ if test "x$with_librdkafka_log_cb" = "xyes"; then
+ AC_DEFINE(HAVE_LIBRDKAFKA_LOG_CB, 1, [Define if librdkafka log facility is present and usable.])
+ else if test "x$with_librdkafka_logger" = "xyes"; then
+ AC_DEFINE(HAVE_LIBRDKAFKA_LOGGER, 1, [Define if librdkafka log facility is present and usable.])
+ fi; fi
+fi
+
+AC_SUBST([BUILD_WITH_LIBRDKAFKA_CPPFLAGS])
+AC_SUBST([BUILD_WITH_LIBRDKAFKA_LDFLAGS])
+AC_SUBST([BUILD_WITH_LIBRDKAFKA_LIBS])
+# }}}
+
+# --with-librouteros {{{
+AC_ARG_WITH([librouteros],
+ [AS_HELP_STRING([--with-librouteros@<:@=PREFIX@:>@], [Path to librouteros.])],
+ [
+ if test "x$withval" = "xyes" || test "x$withval" = "xno"; then
+ with_librouteros="$witval"
+ else
+ with_librouteros_cppflags="-I$withval/include"
+ with_librouteros_ldflags="-L$withval/lib"
+ with_librouteros="yes"
+ fi
+ ],
+ [with_librouteros="yes"]
+)
+
+if test "x$with_librouteros" = "xyes"; then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_librouteros_cppflags"
+
+ AC_CHECK_HEADERS([routeros_api.h],
+ [with_librouteros="yes"],
+ [with_librouteros="no (routeros_api.h not found)"]
+ )
+
+ CPPFLAGS="$SAVE_CPPFLAGS"