diff --git a/configure.ac b/configure.ac
index a152b7bf766815c16c2174111573148aaad7fcd6..10c18c9add8aa80b8e2ff60fb132958722242d50 100644 (file)
--- a/configure.ac
+++ b/configure.ac
dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AC_INIT([System DataBase],[m4_esyscmd(./version-gen.sh)],
- [sh@tokkee.org],
+ [sysdb@sysdb.io],
[sysdb],
- [http://git.tokkee.org/?p=sysdb.git])
-PACKAGE_MAINTAINER="Sebastian 'tokkee' Harl <sh@tokkee.org>"
+ [https://sysdb.io/])
+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.])
AC_CONFIG_SRCDIR([src/sysdb.c])
AC_SYS_LARGEFILE
AC_PROG_CC
+AC_PROG_CXX
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
-AM_PROG_AR
+m4_ifdef([AM_PROG_AR],[AM_PROG_AR],[])
AM_PROG_CC_C_O
AM_PROG_LEX
)
test_cc_flags() {
- AC_LANG_CONFTEST([AC_LANG_PROGRAM([[ ]], [[ ]])])
- $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
+ AC_LANG_CONFTEST([int main(void){}])
+ $CC -c conftest.c $CFLAGS $STRICT_CFLAGS $@ > /dev/null 2> /dev/null
ret=$?
rm -f conftest.o
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
+ ret=$?
+ rm -f conftest.o
+ AC_LANG_POP(C++)
+ return $ret
+}
+
STRICT_CFLAGS=""
+STRICT_CXXFLAGS=""
m4_divert_once([HELP_ENABLE], [
Build options:])
[enable_hardening="yes"])
if test "x$enable_hardening" = "xyes"; then
- hardening=0
+ hardening_cc=0
+ hardening_cxx=0
hardening_tests=0
for flag in -Wformat -Wformat-security; do
hardening_tests=$(($hardening_tests + 1))
- AC_MSG_CHECKING([whether $CC accepts $flag])
+ AC_MSG_CHECKING([whether $CC accepts $flag])
if test_cc_flags $flag; then
STRICT_CFLAGS="$STRICT_CFLAGS $flag"
- hardening=$(($hardening + 1))
+ hardening_cc=$(($hardening_cc + 1))
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_MSG_CHECKING([whether $CXX accepts $flag])
+ if test_cxx_flags $flag; then
+ STRICT_CXXFLAGS="$STRICT_CXXFLAGS $flag"
+ hardening_cxx=$(($hardening_cxx + 1))
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
done
- if test $hardening -ne $hardening_tests; then
+ if test $hardening_cc -ne $hardening_tests; then
AC_MSG_WARN(
- [Some hardening options are not supported by your compiler!])
+ [Some hardening options are not supported by your C compiler!])
+ fi
+ if test $hardening_cxx -ne $hardening_tests; then
+ AC_MSG_WARN(
+ [Some hardening options are not supported by your C++ compiler!])
fi
fi
for flag in -Wall -Werror; do
AC_MSG_CHECKING([whether $CC accepts $flag])
-
if test_cc_flags $flag; then
STRICT_CFLAGS="$STRICT_CFLAGS $flag"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
+
+ AC_MSG_CHECKING([whether $CXX accepts $flag])
+ if test_cxx_flags $flag; then
+ STRICT_CXXFLAGS="$STRICT_CXXFLAGS $flag"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
done
if test "x$enable_strict_checks" = "xyes"; then
-Wshadow \
-Wstrict-prototypes; do
AC_MSG_CHECKING([whether $CC accepts $flag])
-
if test_cc_flags $flag; then
STRICT_CFLAGS="$STRICT_CFLAGS $flag"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
+
+ dnl -Wshadow produces unnecessary warnings/errors in case a
+ dnl C function name "shadows" a struct constructor.
+ if test "x$flag" != "x-Wshadow"; then
+ AC_MSG_CHECKING([whether $CXX accepts $flag])
+ if test_cxx_flags $flag; then
+ STRICT_CXXFLAGS="$STRICT_CXXFLAGS $flag"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
done
fi
AC_SUBST([STRICT_CFLAGS])
+AC_SUBST([STRICT_CXXFLAGS])
AC_ARG_ENABLE([gcov],
AS_HELP_STRING([--enable-gcov],
AC_SUBST([COVERAGE_CFLAGS])
AC_SUBST([COVERAGE_LDFLAGS])
+AC_ARG_ENABLE([gprof],
+ AS_HELP_STRING([--enable-gprof],
+ [Gprof profiling @<:@default=no@:>@]),
+ [enable_gprof="$enableval"],
+ [enable_gprof="no"])
+
+PROFILING_CFLAGS=""
+PROFILING_LDFLAGS=""
+if test "x$enable_gprof" = "xyes"; then
+ PROFILING_CFLAGS="-O0"
+ profiling_flag_have_problem="no"
+
+ AC_MSG_CHECKING([whether $CC accepts -pg])
+ if test_cc_flags -pg; then
+ PROFILING_CFLAGS="$PROFILING_CFLAGS -pg"
+ PROFILING_LDFLAGS="$PROFILING_LDFLAGS -pg"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ profiling_flag_have_problem="yes"
+ fi
+
+ for flag in -fprofile-arcs; do
+ AC_MSG_CHECKING([whether $CC accepts $flag])
+ if test_cc_flags $flag; then
+ PROFILING_CFLAGS="$PROFILING_CFLAGS $flag"
+ AC_MSG_RESULT([yes])
+ fi
+ # else: this is not a serious problem
+ done
+
+ if test "x$profiling_flag_have_problem" != "xno"; then
+ AC_MSG_WARN([Some profiling flags are not supported by your compiler!])
+ fi
+fi
+AC_SUBST([PROFILING_CFLAGS])
+AC_SUBST([PROFILING_LDFLAGS])
+
m4_divert_once([HELP_ENABLE], [
Build dependencies:])
AC_SUBST([READLINE_CFLAGS])
AM_CONDITIONAL([BUILD_CLIENT], test "x$readline_support" != "no")
+AC_ARG_WITH([librrd],
+ [AS_HELP_STRING([--with-librrd], [librrd support (default: auto)])],
+ [with_librrd="$withval"],
+ [with_librrd="yes"])
+if test "x$with_librrd" = "xyes" || test "x$with_librrd" = "xauto"; then
+ PKG_CHECK_MODULES([RRD], [librrd],
+ [have_librrd="yes"], [have_librrd="no"])
+else if test "x$with_librrd" = "xno"; then
+ have_librrd="$with_librrd (disabled on command-line)"
+else
+ AC_MSG_ERROR([Invalid value for option --with-librrd=$with_librrd (expected "yes", "no", or "auto")])
+fi; fi
+
+if test "x$have_librrd" = "xyes"; then
+ AC_CHECK_HEADERS([rrd_client.h])
+fi
+
dnl Feature checks.
build_documentation="yes"
if test "x$puppet_storeconfigs_default" != "xyes"; then
puppet_storeconfigs_default="no (requires libdbi)"
fi
+rrdtool_default=$have_librrd
+if test "x$rrdtool_default" != "xyes"; then
+ rrdtool_default="no (required librrd)"
+fi
m4_divert_once([HELP_ENABLE], [
Backends:])
AC_SDB_PLUGIN_INIT
-AC_SDB_PLUGIN([collectd], [yes],
+AC_SDB_PLUGIN([collectd-unixsock], [yes],
[backend accessing the system statistics collection daemon])
AC_SDB_PLUGIN([mk-livestatus], [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], [
+Time-series fetchers:])
+AC_SDB_PLUGIN([timeseries-rrdtool], [$rrdtool_default],
+ [fetch time-series data from RRD files])
+
m4_divert_once([HELP_ENABLE], [
Plugins:])
AC_MSG_RESULT([ stdio mocking: . . . . . $have_fopencookie])
AC_MSG_RESULT([ coverage testing: . . . . . $enable_gcov])
AC_MSG_RESULT([ integration testing: . . . $integration_tests])
+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([ libreadline: . . . . . . . $have_libreadline])
+AC_MSG_RESULT([ librrd: . . . . . . . . . . $have_librrd])
AC_MSG_RESULT()
AC_MSG_RESULT([ Backends:])
-AC_MSG_RESULT([ collectd: . . . . . . . . . $enable_collectd])
+AC_MSG_RESULT([ collectd::unixsock: . . . . $enable_collectd_unixsock])
AC_MSG_RESULT([ mk-livestatus: . . . . . . $enable_mk_livestatus])
-AC_MSG_RESULT([ puppet-storeconfigs: . . . $enable_puppet_storeconfigs])
+AC_MSG_RESULT([ puppet::storeconfigs: . . . $enable_puppet_storeconfigs])
+AC_MSG_RESULT()
+AC_MSG_RESULT([ Time-series fetchers:])
+AC_MSG_RESULT([ rrdtool: . . . . . . . . . $enable_timeseries_rrdtool])
AC_MSG_RESULT()
AC_MSG_RESULT([ Plugins:])
AC_MSG_RESULT([ cname::dns: . . . . . . . . $enable_cname_dns])