Code

sysdb: Use a custom output format instead of pretty-printed JSON.
[sysdb.git] / configure.ac
index 59f4ee7c413c0e5c5cdfeb2f66309d0e86d5d89e..4d7ccaece38ca902af25d737637652931599779d 100644 (file)
@@ -33,11 +33,18 @@ AC_INIT([System DataBase],[m4_esyscmd(./version-gen.sh)],
 PACKAGE_MAINTAINER="Sebastian 'tokkee' Harl <tokkee@sysdb.io>"
 AC_DEFINE_UNQUOTED([PACKAGE_MAINTAINER], ["$PACKAGE_MAINTAINER"],
                [Define to the name of the maintainer of this package.])
+if test "x$PACKAGE_URL" = "x"; then
+       PACKAGE_URL="https://sysdb.io/"
+       AC_DEFINE_UNQUOTED([PACKAGE_URL], ["$PACKAGE_URL"],
+                       [Define to the home page for this package.])
+fi
+
 AC_CONFIG_SRCDIR([src/sysdb.c])
 AC_CONFIG_HEADERS([src/config.h])
 AC_PREFIX_DEFAULT([/opt/sysdb])
 
 AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
 AC_LANG(C)
 
@@ -76,16 +83,16 @@ test_cc_flags() {
        AC_LANG_CONFTEST([int main(void){}])
        $CC -c conftest.c $CFLAGS $STRICT_CFLAGS $@ > /dev/null 2> /dev/null
        ret=$?
-       rm -f conftest.o
+       rm -f conftest.o conftest.c
        return $ret
 }
 
 test_cxx_flags() {
        AC_LANG_PUSH(C++)
        AC_LANG_CONFTEST([int main(void){}])
-       $CXX -c conftest.c $CXXFLAGS $STRICT_CXXFLAGS $@ > /dev/null 2> /dev/null
+       $CXX -c conftest.cpp $CXXFLAGS $STRICT_CXXFLAGS $@ > /dev/null 2> /dev/null
        ret=$?
-       rm -f conftest.o
+       rm -f conftest.o conftest.cpp
        AC_LANG_POP(C++)
        return $ret
 }
@@ -106,8 +113,8 @@ AC_ARG_ENABLE([standards],
 if test "x$enable_standards" = "xyes"; then
        AC_DEFINE([_ISOC99_SOURCE], 1,
                        [Define to enforce ISO/IEC 9899:1999 (C99) compliance.])
-       AC_DEFINE([_POSIX_C_SOURCE], 200112L,
-                       [Define to enforce IEEE 1003.1-2001 (POSIX:2001) compliance.])
+       AC_DEFINE([_POSIX_C_SOURCE], 200809L,
+                       [Define to enforce IEEE 1003.1-2008 (POSIX:2008) compliance.])
        AC_DEFINE([_XOPEN_SOURCE], 700,
                        [Define to enforce X/Open 7 (XSI) compliance.])
        AC_DEFINE([_REENTRANT], 1,
@@ -115,11 +122,6 @@ if test "x$enable_standards" = "xyes"; then
        AC_DEFINE([_THREAD_SAFE], 1,
                        [Define to enable reentrant interfaces.])
 
-       dnl GNU libc defines strcasecmp() only when using _BSD_SOURCE even though
-       dnl the function is conforming to POSIX.1-2001 as well. Let's weaken
-       dnl strict standards compliance a bit to work around this.
-       AC_DEFINE([_BSD_SOURCE], 1, [Define to enable 4.3BSD support.])
-
        for flag in -std=c99; do
                AC_MSG_CHECKING([whether $CC accepts $flag])
 
@@ -444,6 +446,9 @@ if test "x$have_struct_ucred" != "xyes"; then
        AC_MSG_RESULT([$have_struct_ucred])
 fi
 
+dnl Only check this after potentially defining _GNU_SOURCE.
+AC_FUNC_STRERROR_R
+
 dnl Testing.
 PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],
                [unit_tests="yes"], [unit_tests="no"])
@@ -471,6 +476,17 @@ if test "x$with_libdbi" = "xyes"; then
 fi
 AM_CONDITIONAL([BUILD_WITH_LIBDBI], test "x$with_libdbi" = "xyes")
 
+AC_ARG_WITH([libyajl],
+               [AS_HELP_STRING([--with-liyajl], [libyajl support (default: auto)])],
+               [with_libyajl="$withval"],
+               [with_libyajl="yes"])
+if test "x$with_libyajl" = "xyes" || test "x$with_libyajl" = "xauto"; then
+       PKG_CHECK_MODULES([YAJL], [yajl], [have_libyajl="yes"], [have_libyajl="no"])
+fi
+if test "x$have_libyajl" = "xyes"; then
+       AC_DEFINE([HAVE_LIBYAJL], 1, [Define to 1 if you have the 'yajl' library.])
+fi
+
 dnl Required for mocking FILE related functions.
 orig_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -D_GNU_SOURCE"
@@ -483,6 +499,12 @@ if test "x$have_fopencookie" = "xyes"; then
        AC_DEFINE([HAVE_FOPENCOOKIE], 1)
 fi
 
+dnl OpenSSL support
+PKG_CHECK_MODULES([OPENSSL], [openssl], [have_openssl="yes"], [have_openssl="no"])
+if test "x$have_openssl" != "xyes"; then
+       AC_MSG_ERROR([OpenSSL not found])
+fi
+
 dnl readline support
 AC_ARG_WITH([readline],
                [AS_HELP_STRING([--with-readline],
@@ -609,7 +631,8 @@ else
 fi; fi
 
 if test "x$have_librrd" = "xyes"; then
-       AC_CHECK_HEADERS([rrd_client.h])
+       AC_CHECK_HEADERS([rrd.h])
+       AC_CHECK_HEADERS([rrd_client.h], [], [], [[#include <rrd.h>]])
 fi
 
 dnl Feature checks.
@@ -672,6 +695,13 @@ Time-series fetchers:])
 AC_SDB_PLUGIN([timeseries-rrdtool], [$rrdtool_default],
                [fetch time-series data from RRD files])
 
+m4_divert_once([HELP_ENABLE], [
+Store implementations:])
+AC_SDB_PLUGIN([store-memory], [yes],
+               [store objects in a volatile, in-memory database (read/write)])
+AC_SDB_PLUGIN([store-network], [yes],
+               [send stored objects to a remote instance (write only)])
+
 m4_divert_once([HELP_ENABLE], [
 Plugins:])
 
@@ -689,6 +719,36 @@ AC_OUTPUT
 
 BUILD_DATE="`date --utc '+%F %T'` (UTC)"
 
+asciidoc_info="$have_asciidoc"
+if test "x$have_asciidoc" = "xyes"; then
+       asciidoc_info="`$ASCIIDOC --version`"
+fi
+xmlto_info="$have_xmlto"
+if test "x$have_xmlto" = "xyes"; then
+       xmlto_info="`$XMLTO --version`"
+fi
+
+if test "x$unit_tests" = "xyes"; then
+       unit_tests="yes (check `$PKG_CONFIG --modversion check`)"
+fi
+
+openssl_info="$have_openssl"
+if test "x$have_openssl" = "xyes"; then
+       openssl_info="yes (version `$PKG_CONFIG --modversion openssl`)"
+fi
+libedit_info="$have_libedit"
+if test "x$have_libedit" = "xyes"; then
+       libedit_info="yes (version `$PKG_CONFIG --modversion libedit`)"
+fi
+librrd_info="$have_librrd"
+if test "x$have_librrd" = "xyes"; then
+       librrd_info="yes (version `$PKG_CONFIG --modversion librrd`)"
+fi
+libyajl_info="$have_libyajl"
+if test "x$have_libyajl" = "xyes"; then
+       libyajl_info="yes (version `$PKG_CONFIG --modversion yajl`)"
+fi
+
 AC_MSG_RESULT()
 AC_MSG_RESULT([$PACKAGE_NAME has been configured successfully.])
 AC_MSG_RESULT()
@@ -701,8 +761,8 @@ AC_MSG_RESULT([  package version: $PACKAGE_VERSION])
 AC_MSG_RESULT([  build date: $BUILD_DATE])
 AC_MSG_RESULT()
 AC_MSG_RESULT([  Tools:])
-AC_MSG_RESULT([    AsciiDoc: . . . . . . . . . $have_asciidoc])
-AC_MSG_RESULT([    xmlto:  . . . . . . . . . . $have_xmlto])
+AC_MSG_RESULT([    AsciiDoc: . . . . . . . . . $asciidoc_info])
+AC_MSG_RESULT([    xmlto:  . . . . . . . . . . $xmlto_info])
 AC_MSG_RESULT()
 AC_MSG_RESULT([  Features:])
 AC_MSG_RESULT([    documentation:  . . . . . . $build_documentation])
@@ -714,9 +774,11 @@ AC_MSG_RESULT([    profiling:  . . . . . . . . $enable_gprof])
 AC_MSG_RESULT()
 AC_MSG_RESULT([  Libraries:])
 AC_MSG_RESULT([    libdbi: . . . . . . . . . . $with_libdbi])
-AC_MSG_RESULT([    libedit:  . . . . . . . . . $have_libedit])
+AC_MSG_RESULT([    libedit:  . . . . . . . . . $libedit_info])
+AC_MSG_RESULT([    libopenssl: . . . . . . . . $openssl_info])
 AC_MSG_RESULT([    libreadline:  . . . . . . . $have_libreadline])
-AC_MSG_RESULT([    librrd: . . . . . . . . . . $have_librrd])
+AC_MSG_RESULT([    librrd: . . . . . . . . . . $librrd_info])
+AC_MSG_RESULT([    libyajl:  . . . . . . . . . $libyajl_info])
 AC_MSG_RESULT()
 AC_MSG_RESULT([  Backends:])
 AC_MSG_RESULT([    collectd::unixsock: . . . . $enable_collectd_unixsock])
@@ -727,6 +789,10 @@ AC_MSG_RESULT()
 AC_MSG_RESULT([  Time-series fetchers:])
 AC_MSG_RESULT([    rrdtool:  . . . . . . . . . $enable_timeseries_rrdtool])
 AC_MSG_RESULT()
+AC_MSG_RESULT([  Store implementations:])
+AC_MSG_RESULT([    memory: . . . . . . . . . . $enable_store_memory])
+AC_MSG_RESULT([    network (writer): . . . . . $enable_store_network])
+AC_MSG_RESULT()
 AC_MSG_RESULT([  Plugins:])
 AC_MSG_RESULT([    cname::dns: . . . . . . . . $enable_cname_dns])
 AC_MSG_RESULT([    syslog: . . . . . . . . . . $enable_syslog])