diff --git a/configure.ac b/configure.ac
index b7a07e662bdaf80ccfde933aaf26ce5a38cdf0ba..b94b2a0e0fca679d3f55f697649f177d39e64e51 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)],
dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AC_INIT([System DataBase],[m4_esyscmd(./version-gen.sh)],
- [sh@tokkee.org],
+ [sysdb@sysdb.io],
[sysdb],
[sysdb],
- [http://git.tokkee.org/?p=sysdb.git])
-PACKAGE_MAINTAINER="Sebastian 'tokkee' Harl <sh@tokkee.org>"
+ [http://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_DEFINE_UNQUOTED([PACKAGE_MAINTAINER], ["$PACKAGE_MAINTAINER"],
[Define to the name of the maintainer of this package.])
AC_CONFIG_SRCDIR([src/sysdb.c])
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
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
AM_PROG_CC_C_O
AM_PROG_LEX
return $ret
}
return $ret
}
+STRICT_CFLAGS=""
+
m4_divert_once([HELP_ENABLE], [
Build options:])
m4_divert_once([HELP_ENABLE], [
Build options:])
[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.])
[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([_XOPEN_SOURCE], 600,
- [Define to enforce X/Open 6 (XSI) compliance.])
+ AC_DEFINE([_XOPEN_SOURCE], 700,
+ [Define to enforce X/Open 7 (XSI) compliance.])
AC_DEFINE([_REENTRANT], 1,
[Define to enable reentrant interfaces.])
AC_DEFINE([_THREAD_SAFE], 1,
[Define to enable reentrant interfaces.])
AC_DEFINE([_REENTRANT], 1,
[Define to enable reentrant interfaces.])
AC_DEFINE([_THREAD_SAFE], 1,
[Define to enable reentrant interfaces.])
- for flag in -std=c99 -pedantic; do
+ 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])
if test_cc_flags $flag; then
AC_MSG_CHECKING([whether $CC accepts $flag])
if test_cc_flags $flag; then
- CFLAGS="$CFLAGS $flag"
+ STRICT_CFLAGS="$STRICT_CFLAGS $flag"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_CHECKING([whether $CC accepts $flag])
if test_cc_flags $flag; then
AC_MSG_CHECKING([whether $CC accepts $flag])
if test_cc_flags $flag; then
- CFLAGS="$CFLAGS $flag"
+ STRICT_CFLAGS="$STRICT_CFLAGS $flag"
hardening=$(($hardening + 1))
AC_MSG_RESULT([yes])
else
hardening=$(($hardening + 1))
AC_MSG_RESULT([yes])
else
[enable_strict_checks="$enableval"],
[enable_strict_checks="yes"])
[enable_strict_checks="$enableval"],
[enable_strict_checks="yes"])
-STRICT_CFLAGS=""
for flag in -Wall -Werror; do
AC_MSG_CHECKING([whether $CC accepts $flag])
for flag in -Wall -Werror; do
AC_MSG_CHECKING([whether $CC accepts $flag])
done
if test "x$enable_strict_checks" = "xyes"; then
done
if test "x$enable_strict_checks" = "xyes"; then
+ dnl -Wsign-conversion may cause problems in expanded macros from libc
for flag in -Wextra \
-Wbad-function-cast \
-Wcast-align \
-Wcast-qual \
-Wconversion \
for flag in -Wextra \
-Wbad-function-cast \
-Wcast-align \
-Wcast-qual \
-Wconversion \
+ -Wno-sign-conversion \
-Wdeclaration-after-statement \
-Wmissing-prototypes \
-Wpointer-arith \
-Wdeclaration-after-statement \
-Wmissing-prototypes \
-Wpointer-arith \
fi
AC_SUBST([STRICT_CFLAGS])
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])
+
+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:])
dnl Testing.
PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],
m4_divert_once([HELP_ENABLE], [
Build dependencies:])
dnl Testing.
PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],
- [build_testing="yes"], [build_testing="no"])
+ [unit_tests="yes"], [unit_tests="no"])
AC_CHECK_HEADERS(libgen.h)
AC_CHECK_HEADERS(libgen.h)
[AS_HELP_STRING([--with-libdbi], [libdbi support (default: auto)])],
[with_libdbi="$withval"],
[with_libdbi="yes"])
[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"],
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"],
if test "x$with_libdbi" = "xyes"; then
AC_CHECK_LIB([dbi], [dbi_initialize],
[with_libdbi="yes"],
if test "x$readline_support" = "xyes"; then
readline_support="auto"
if test "x$readline_support" = "xyes"; then
readline_support="auto"
-fi
+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" \
have_libedit="no"
if test "x$readline_support" = "xauto" \
fi
have_libreadline="no"
fi
have_libreadline="no"
-if test "x$have_libedit" = "xno"; then
+if test "x$have_libedit" != "xyes"; then
if test "x$readline_support" = "xauto" \
|| test "x$readline_support" = "xlibreadline"; then
AC_CHECK_LIB([readline], [readline],
if test "x$readline_support" = "xauto" \
|| test "x$readline_support" = "xlibreadline"; then
AC_CHECK_LIB([readline], [readline],
have_xmlto="no"
build_documentation="no (missing xmlto)"
fi
have_xmlto="no"
build_documentation="no (missing xmlto)"
fi
+AC_SUBST([XMLTO])
-have_xsltproc="yes"
-AC_PATH_PROG([XSLTPROC], [xsltproc])
-if test "x$XSLTPROC" = "x"; then
- have_xsltproc="no"
- build_documentation="no (missing xsltproc)"
+have_asciidoc="yes"
+AC_PATH_PROG([ASCIIDOC], [asciidoc])
+if test "x$ASCIIDOC" = "x"; then
+ have_asciidoc="no"
+ build_documentation="no (missing asciidoc)"
fi
fi
+AC_SUBST([ASCIIDOC])
+
+AC_ARG_VAR([ADOCFLAGS], [AsciiDoc flags])
-have_a2x="yes"
-AC_PATH_PROG([A2X], [a2x])
-if test "x$A2X" = "x"; then
- have_a2x="no"
- build_documentation="no (missing a2x)"
+integration_tests="yes"
+AC_PATH_PROG([VALGRIND], [valgrind])
+if test "x$VALGRIND" = "x"; then
+ integration_tests="no (missing valgrind)"
fi
fi
-AC_SUBST([A2X])
+AM_CONDITIONAL([INTEGRATION_TESTING], test "x$integration_tests" = "xyes")
dnl Plugin checks.
puppet_storeconfigs_default=$with_libdbi
dnl Plugin checks.
puppet_storeconfigs_default=$with_libdbi
[backend accessing Nagios/Icinga/Shinken using MK Livestatus])
AC_SDB_PLUGIN([puppet-storeconfigs], [$puppet_storeconfigs_default],
[backend accessing the Puppet stored configuration database])
[backend accessing Nagios/Icinga/Shinken using MK Livestatus])
AC_SDB_PLUGIN([puppet-storeconfigs], [$puppet_storeconfigs_default],
[backend accessing the Puppet stored configuration database])
-AC_SDB_PLUGIN([syslog], [yes],
- [plugin logging to syslog])
+
+m4_divert_once([HELP_ENABLE], [
+Plugins:])
+
AC_SDB_PLUGIN([cname-dns], [yes],
[canonicalize hostnames by querying DNS])
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_DOCUMENTATION], test "x$build_documentation" = "xyes")
-AM_CONDITIONAL([BUILD_TESTING], test "x$build_testing" = "xyes")
+AM_CONDITIONAL([UNIT_TESTING], test "x$unit_tests" = "xyes")
AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile
src/liboconfig/Makefile t/Makefile])
AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile
src/liboconfig/Makefile t/Makefile])
AC_MSG_RESULT([ build date: $BUILD_DATE])
AC_MSG_RESULT()
AC_MSG_RESULT([ Tools:])
AC_MSG_RESULT([ build date: $BUILD_DATE])
AC_MSG_RESULT()
AC_MSG_RESULT([ Tools:])
-AC_MSG_RESULT([ AsciiDoc (a2x): . . . . . . $have_a2x])
-AC_MSG_RESULT([ xmlto / xsltproc: . . . . . $have_xmlto / $have_xsltproc])
+AC_MSG_RESULT([ AsciiDoc: . . . . . . . . . $have_asciidoc])
+AC_MSG_RESULT([ xmlto: . . . . . . . . . . $have_xmlto])
AC_MSG_RESULT()
AC_MSG_RESULT([ Features:])
AC_MSG_RESULT([ documentation: . . . . . . $build_documentation])
AC_MSG_RESULT()
AC_MSG_RESULT([ Features:])
AC_MSG_RESULT([ documentation: . . . . . . $build_documentation])
-AC_MSG_RESULT([ unit testing: . . . . . . . $build_testing])
+AC_MSG_RESULT([ unit testing: . . . . . . . $unit_tests])
AC_MSG_RESULT([ stdio mocking: . . . . . $have_fopencookie])
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()
AC_MSG_RESULT([ Libraries:])
AC_MSG_RESULT([ libdbi: . . . . . . . . . . $with_libdbi])
AC_MSG_RESULT()
AC_MSG_RESULT([ Plugins:])
AC_MSG_RESULT([ cname::dns: . . . . . . . . $enable_cname_dns])
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()
AC_MSG_RESULT([This package is maintained by $PACKAGE_MAINTAINER.])
AC_MSG_RESULT([Please report bugs to $PACKAGE_BUGREPORT.])