diff --git a/configure.ac b/configure.ac
index 6847c08c9da269681eddfcc3c269bb110314e10d..5cae366f0e47b6d16ee649b491ae17d34a8e7d2c 100644 (file)
--- a/configure.ac
+++ b/configure.ac
AC_CONFIG_HEADERS([src/config.h])
AC_PREFIX_DEFAULT([/opt/sysdb])
-AM_INIT_AUTOMAKE([foreign -Wall])
+AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
AC_LANG(C)
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
+AM_PROG_AR
AM_PROG_CC_C_O
AM_PROG_LEX
fi
AC_SUBST([STRICT_CFLAGS])
+AC_ARG_ENABLE([gcov],
+ AS_HELP_STRING([--enable-gcov],
+ [Gcov coverage statistics @<:@default=no@:>@]),
+ [enable_gcov="$enableval"],
+ [enable_gcov="no"])
+
+dnl $GCC is based on some heuristics which might apply to clang as well.
+dnl However, clang does not support gcov.
+cc_is_gcc="no"
+case "x$CC" in
+ xgcc)
+ cc_is_gcc="yes"
+ ;;
+ xgcc-*)
+ cc_is_gcc="yes"
+ ;;
+esac
+
+COVERAGE_CFLAGS=""
+COVERAGE_LDFLAGS=""
+if test "x$enable_gcov" = "xyes" && test "x$GCC$cc_is_gcc" == "xyesyes"; then
+ COVERAGE_CFLAGS="-O0"
+ cov_flag_have_problem="no"
+
+ AC_MSG_CHECKING([whether $CC accepts --coverage])
+ if test_cc_flags --coverage; then
+ COVERAGE_CFLAGS="$COVERAGE_CFLAGS --coverage"
+ COVERAGE_LDFLAGS="$COVERAGE_LDFLAGS --coverage"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ cov_flag_have_problem="yes"
+ fi
+
+ for flag in -fno-inline; do
+ AC_MSG_CHECKING([whether $CC accepts $flag])
+ if test_cc_flags $flag; then
+ COVERAGE_CFLAGS="$COVERAGE_CFLAGS $flag"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ cov_flag_have_problem="yes"
+ fi
+ done
+
+ if test "x$cov_flag_have_problem" != "xno"; then
+ AC_MSG_WARN([Some coverage flags are not supported by your compiler!])
+ fi
+else if test "x$enable_gcov" = "xyes"; then
+ AC_MSG_WARN([Your compiler ($CC) is not known to support Gcov!])
+ enable_gcov="no (requires GCC)"
+fi; fi
+AC_SUBST([COVERAGE_CFLAGS])
+AC_SUBST([COVERAGE_LDFLAGS])
+
+m4_divert_once([HELP_ENABLE], [
+Build dependencies:])
+
+dnl Testing.
+PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],
+ [build_testing="yes"], [build_testing="no"])
+
AC_CHECK_HEADERS(libgen.h)
dnl Check for dependencies.
[AS_HELP_STRING([--with-libdbi], [libdbi support (default: auto)])],
[with_libdbi="$withval"],
[with_libdbi="yes"])
-if test "x$with_libdbi" = "xyes"; then
+if test "x$with_libdbi" = "xyes" || test "x$with_libdbi" = "xauto"; then
AC_CHECK_HEADERS([dbi/dbi.h],
[with_libdbi="yes"],
- [with_libdbi="no (dbi/dbi.h) not found"])
-fi
+ [with_libdbi="no (dbi/dbi.h not found)"])
+else if test "x$with_libdbi" = "xno"; then
+ with_libdbi="$with_libdbi (disabled on command-line)"
+else
+ AC_MSG_ERROR([Invalid value for option --with-libdbi=$with_libdbi (expected "yes", "no", or "auto")])
+fi; fi
if test "x$with_libdbi" = "xyes"; then
AC_CHECK_LIB([dbi], [dbi_initialize],
[with_libdbi="yes"],
fi
AM_CONDITIONAL([BUILD_WITH_LIBDBI], test "x$with_libdbi" = "xyes")
+dnl Required for mocking FILE related functions.
+orig_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -D_GNU_SOURCE"
+AC_CHECK_FUNCS([fopencookie],
+ [have_fopencookie="yes"],
+ [have_fopencookie="no (fopencookie not available)"])
+CFLAGS="$orig_CFLAGS"
+AM_CONDITIONAL([BUILD_WITH_FOPENCOOKIE], test "x$have_fopencookie" = "xyes")
+if test "x$have_fopencookie" = "xyes"; then
+ AC_DEFINE([HAVE_FOPENCOOKIE], 1)
+fi
+
+dnl readline support
+AC_ARG_WITH([readline],
+ [AS_HELP_STRING([--with-readline],
+ [readline support (libedit/libreadline) (default: auto, prefer libedit)])],
+ [readline_support="$withval"],
+ [readline_support="auto"])
+
+if test "x$readline_support" = "xyes"; then
+ readline_support="auto"
+else if test "x$readline_support" != "xauto" \
+ && test "x$readline_support" != "xno" \
+ && test "x$readline_support" != "xlibedit" \
+ && test "x$readline_support" != "xlibreadline"; then
+ AC_MSG_ERROR([Invalid value for option --with-readline=$readline_support (expected "yes", "no", "auto", "libedit", or "libreadline")])
+fi; fi
+
+have_libedit="no"
+if test "x$readline_support" = "xauto" \
+ || test "x$readline_support" = "xlibedit"; then
+ PKG_CHECK_MODULES([LIBEDIT], [libedit],
+ [have_libedit="yes"], [have_libedit="no"])
+ if test "x$have_libedit" = "xyes"; then
+ AC_CHECK_HEADERS([editline/readline.h], [],
+ [AC_CHECK_HEADERS([readline.h], [],
+ [have_libedit="no (readline header not found"])])
+ fi
+ if test "x$have_libedit" = "xyes"; then
+ AC_CHECK_HEADERS([editline/history.h], [],
+ [AC_CHECK_HEADERS([history.h], [],
+ [have_libedit="no (history header not found"])])
+ fi
+else
+ have_libedit="disabled on command-line"
+fi
+
+have_libreadline="no"
+if test "x$have_libedit" != "xyes"; then
+ if test "x$readline_support" = "xauto" \
+ || test "x$readline_support" = "xlibreadline"; then
+ AC_CHECK_LIB([readline], [readline],
+ [have_libreadline="yes"],
+ [have_libreadline="no (libreadline or symbol 'readline' not found)"])
+ fi
+ if test "x$have_libreadline" = "xyes"; then
+ AC_CHECK_HEADERS([readline/readline.h], [],
+ [AC_CHECK_HEADERS([readline.h], [],
+ [have_libreadline="no (readline header not found"])])
+ fi
+ if test "x$have_libreadline" = "xyes"; then
+ AC_CHECK_HEADERS([readline/history.h], [],
+ [AC_CHECK_HEADERS([history.h], [],
+ [have_libreadline="no (history header not found"])])
+ fi
+else
+ have_libreadline="unchecked (prefer libedit)"
+fi
+
+if test "x$have_libedit" = "xyes"; then
+ READLINE_LIBS="$LIBEDIT_LIBS"
+ READLINE_CFLAGS="$LIBEDIT_CFLAGS"
+ readline_support="libedit"
+else if test "x$have_libreadline" = "xyes"; then
+ READLINE_LIBS="-lreadline -lhistory"
+ READLINE_CFLAGS=""
+ readline_support="libreadline"
+else
+ READLINE_LIBS=""
+ READLINE_CFLAGS=""
+ if test "x$readline_support" = "xno"; then
+ AC_MSG_WARN([*** readline support disabled; disabling SysDB client])
+ else if test "x$readline_support" = "xauto"; then
+ AC_MSG_WARN([*** readline not found; disabling SysDB client])
+ else
+ AC_MSG_ERROR([readline not found])
+ fi; fi
+ readline_support="no"
+fi; fi
+AC_SUBST([READLINE_LIBS])
+AC_SUBST([READLINE_CFLAGS])
+AM_CONDITIONAL([BUILD_CLIENT], test "x$readline_support" != "no")
+
dnl Feature checks.
build_documentation="yes"
[backend accessing Nagios/Icinga/Shinken using MK Livestatus])
AC_SDB_PLUGIN([puppet-storeconfigs], [$puppet_storeconfigs_default],
[backend accessing the Puppet stored configuration database])
+
+m4_divert_once([HELP_ENABLE], [
+Plugins:])
+
+AC_SDB_PLUGIN([cname-dns], [yes],
+ [canonicalize hostnames by querying DNS])
AC_SDB_PLUGIN([syslog], [yes],
[plugin logging to syslog])
AM_CONDITIONAL([BUILD_DOCUMENTATION], test "x$build_documentation" = "xyes")
+AM_CONDITIONAL([BUILD_TESTING], test "x$build_testing" = "xyes")
AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile
- src/liboconfig/Makefile])
+ src/liboconfig/Makefile t/Makefile])
AC_OUTPUT
BUILD_DATE="`date --utc '+%F %T'` (UTC)"
AC_MSG_RESULT()
AC_MSG_RESULT([ Features:])
AC_MSG_RESULT([ documentation: . . . . . . $build_documentation])
+AC_MSG_RESULT([ unit testing: . . . . . . . $build_testing])
+AC_MSG_RESULT([ stdio mocking: . . . . . $have_fopencookie])
+AC_MSG_RESULT([ coverage testing: . . . . . $enable_gcov])
AC_MSG_RESULT()
AC_MSG_RESULT([ Libraries:])
-AC_MSG_RESULT([ libdbi: . . . . . . . . . $with_libdbi])
+AC_MSG_RESULT([ libdbi: . . . . . . . . . . $with_libdbi])
+AC_MSG_RESULT([ libedit: . . . . . . . . . $have_libedit])
+AC_MSG_RESULT([ libreadline: . . . . . . . $have_libreadline])
AC_MSG_RESULT()
AC_MSG_RESULT([ Backends:])
AC_MSG_RESULT([ collectd: . . . . . . . . . $enable_collectd])
AC_MSG_RESULT([ mk-livestatus: . . . . . . $enable_mk_livestatus])
AC_MSG_RESULT([ puppet-storeconfigs: . . . $enable_puppet_storeconfigs])
AC_MSG_RESULT()
+AC_MSG_RESULT([ Plugins:])
+AC_MSG_RESULT([ cname::dns: . . . . . . . . $enable_cname_dns])
+AC_MSG_RESULT([ syslog: . . . . . . . . . . $enable_syslog])
+AC_MSG_RESULT()
AC_MSG_RESULT([This package is maintained by $PACKAGE_MAINTAINER.])
AC_MSG_RESULT([Please report bugs to $PACKAGE_BUGREPORT.])
AC_MSG_RESULT()
+dnl vim: set tw=78 sw=4 ts=4 noexpandtab :