Code

configure: Added cname::dns to summary output.
[sysdb.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl
3 dnl This is the SysDB configure script.
4 dnl
5 dnl Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
6 dnl All rights reserved.
7 dnl
8 dnl Redistribution and use in source and binary forms, with or without
9 dnl modification, are permitted provided that the following conditions
10 dnl are met:
11 dnl 1. Redistributions of source code must retain the above copyright
12 dnl    notice, this list of conditions and the following disclaimer.
13 dnl 2. Redistributions in binary form must reproduce the above copyright
14 dnl    notice, this list of conditions and the following disclaimer in the
15 dnl    documentation and/or other materials provided with the distribution.
16 dnl
17 dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 dnl ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 dnl TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 dnl PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
21 dnl CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 dnl EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 dnl PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24 dnl OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 dnl WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26 dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27 dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 AC_INIT([System DataBase],[m4_esyscmd(./version-gen.sh)],
30                 [sh@tokkee.org],
31                 [sysdb],
32                 [http://git.tokkee.org/?p=sysdb.git])
33 PACKAGE_MAINTAINER="Sebastian 'tokkee' Harl <sh@tokkee.org>"
34 AC_DEFINE_UNQUOTED([PACKAGE_MAINTAINER], ["$PACKAGE_MAINTAINER"],
35                 [Define to the name of the maintainer of this package.])
36 AC_CONFIG_SRCDIR([src/sysdb.c])
37 AC_CONFIG_HEADERS([src/config.h])
38 AC_PREFIX_DEFAULT([/opt/sysdb])
40 AM_INIT_AUTOMAKE([foreign -Wall])
42 AC_LANG(C)
44 AC_SYS_LARGEFILE
46 AC_PROG_CC
47 AC_PROG_CPP
48 AC_PROG_INSTALL
49 AC_PROG_LN_S
50 AC_PROG_MAKE_SET
52 AM_PROG_CC_C_O
53 AM_PROG_LEX
54 AC_PROG_YACC
56 m4_ifdef([LT_INIT],
57         [
58          LT_CONFIG_LTDL_DIR([libltdl])
59          LT_INIT([dlopen])
60          LTDL_INIT([convenience])
61         ],
62         # else
63         # (older libtools)
64         [
65          AC_CONFIG_SUBDIRS(libltdl)
66          AC_LIBLTDL_CONVENIENCE
67          AC_SUBST(LTDLINCL)
68          AC_SUBST(LIBLTDL)
69          AC_LIBTOOL_DLOPEN
70         ]
71 )
73 test_cc_flags() {
74         AC_LANG_CONFTEST([AC_LANG_PROGRAM([[ ]], [[ ]])])
75         $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
76         ret=$?
77         rm -f conftest.o
78         return $ret
79 }
81 m4_divert_once([HELP_ENABLE], [
82 Build options:])
84 dnl Optionally stick to standard C99 and POSIX:2001 as close as possible.
85 AC_ARG_ENABLE([standards],
86                 AS_HELP_STRING([--enable-standards],
87                                 [C99 / POSIX standards compliance mode @<:@default=no@:>@]),
88                 [enable_standards="$enableval"],
89                 [enable_standards="no"])
91 if test "x$enable_standards" = "xyes"; then
92         AC_DEFINE([_ISOC99_SOURCE], 1,
93                         [Define to enforce ISO/IEC 9899:1999 (C99) compliance.])
94         AC_DEFINE([_POSIX_C_SOURCE], 200112L,
95                         [Define to enforce IEEE 1003.1-2001 (POSIX:2001) compliance.])
96         AC_DEFINE([_XOPEN_SOURCE], 600,
97                         [Define to enforce X/Open 6 (XSI) compliance.])
98         AC_DEFINE([_REENTRANT], 1,
99                         [Define to enable reentrant interfaces.])
100         AC_DEFINE([_THREAD_SAFE], 1,
101                         [Define to enable reentrant interfaces.])
103         for flag in -std=c99 -pedantic; do
104                 AC_MSG_CHECKING([whether $CC accepts $flag])
106                 if test_cc_flags $flag; then
107                         CFLAGS="$CFLAGS $flag"
108                         AC_MSG_RESULT([yes])
109                 else
110                         AC_MSG_RESULT([no])
111                 fi
112         done
113 fi
115 dnl Hardening (see e.g. http://wiki.debian.org/Hardening for a motivation).
116 AC_DEFINE([_FORTIFY_SOURCE], 2,
117                 [Define to enable protection against static sized buffer overflows.])
118 AC_ARG_ENABLE([hardening],
119                 AS_HELP_STRING([--disable-hardening],
120                                 [hardening options @<:@default=yes@:>@]),
121                 [enable_hardening="$enableval"],
122                 [enable_hardening="yes"])
124 if test "x$enable_hardening" = "xyes"; then
125         hardening=0
126         hardening_tests=0
127         for flag in -Wformat -Wformat-security; do
128                 hardening_tests=$(($hardening_tests + 1))
129                 AC_MSG_CHECKING([whether $CC accepts $flag])
131                 if test_cc_flags $flag; then
132                         CFLAGS="$CFLAGS $flag"
133                         hardening=$(($hardening + 1))
134                         AC_MSG_RESULT([yes])
135                 else
136                         AC_MSG_RESULT([no])
137                 fi
138         done
139         if test $hardening -ne $hardening_tests; then
140                 AC_MSG_WARN(
141                                 [Some hardening options are not supported by your compiler!])
142         fi
143 fi
145 dnl Strict checking for potential problems.
146 AC_ARG_ENABLE([strict-checks],
147                 AS_HELP_STRING([--disable-strict-checks],
148                                 [strict compiler checks @<:@default=yes@:>@]),
149                 [enable_strict_checks="$enableval"],
150                 [enable_strict_checks="yes"])
152 STRICT_CFLAGS=""
153 for flag in -Wall -Werror; do
154         AC_MSG_CHECKING([whether $CC accepts $flag])
156         if test_cc_flags $flag; then
157                 STRICT_CFLAGS="$STRICT_CFLAGS $flag"
158                 AC_MSG_RESULT([yes])
159         else
160                 AC_MSG_RESULT([no])
161         fi
162 done
164 if test "x$enable_strict_checks" = "xyes"; then
165         for flag in -Wextra \
166                         -Wbad-function-cast \
167                         -Wcast-align \
168                         -Wcast-qual \
169                         -Wconversion \
170                         -Wdeclaration-after-statement \
171                         -Wmissing-prototypes \
172                         -Wpointer-arith \
173                         -Wshadow \
174                         -Wstrict-prototypes; do
175                 AC_MSG_CHECKING([whether $CC accepts $flag])
177                 if test_cc_flags $flag; then
178                         STRICT_CFLAGS="$STRICT_CFLAGS $flag"
179                         AC_MSG_RESULT([yes])
180                 else
181                         AC_MSG_RESULT([no])
182                 fi
183         done
184 fi
185 AC_SUBST([STRICT_CFLAGS])
187 AC_CHECK_HEADERS(libgen.h)
189 dnl Check for dependencies.
190 AC_ARG_WITH([libdbi],
191                 [AS_HELP_STRING([--with-libdbi], [libdbi support (default: auto)])],
192                 [with_libdbi="$withval"],
193                 [with_libdbi="yes"])
194 if test "x$with_libdbi" = "xyes"; then
195         AC_CHECK_HEADERS([dbi/dbi.h],
196                         [with_libdbi="yes"],
197                         [with_libdbi="no (dbi/dbi.h) not found"])
198 fi
199 if test "x$with_libdbi" = "xyes"; then
200         AC_CHECK_LIB([dbi], [dbi_initialize],
201                         [with_libdbi="yes"],
202                         [with_libdbi="no (libdbi or symbol 'dbi_initialize' not found)"])
203 fi
204 AM_CONDITIONAL([BUILD_WITH_LIBDBI], test "x$with_libdbi" = "xyes")
206 dnl Feature checks.
207 build_documentation="yes"
209 have_xmlto="yes"
210 AC_PATH_PROG([XMLTO], [xmlto])
211 if test "x$XMLTO" = "x"; then
212         have_xmlto="no"
213         build_documentation="no (missing xmlto)"
214 fi
216 have_xsltproc="yes"
217 AC_PATH_PROG([XSLTPROC], [xsltproc])
218 if test "x$XSLTPROC" = "x"; then
219        have_xsltproc="no"
220        build_documentation="no (missing xsltproc)"
221 fi
223 have_a2x="yes"
224 AC_PATH_PROG([A2X], [a2x])
225 if test "x$A2X" = "x"; then
226        have_a2x="no"
227        build_documentation="no (missing a2x)"
228 fi
229 AC_SUBST([A2X])
231 dnl Plugin checks.
232 puppet_storeconfigs_default=$with_libdbi
233 if test "x$puppet_storeconfigs_default" != "xyes"; then
234         puppet_storeconfigs_default="no (requires libdbi)"
235 fi
237 m4_divert_once([HELP_ENABLE], [
238 Backends:])
240 AC_SDB_PLUGIN_INIT
241 AC_SDB_PLUGIN([collectd], [yes],
242                 [backend accessing the system statistics collection daemon])
243 AC_SDB_PLUGIN([mk-livestatus], [yes],
244                 [backend accessing Nagios/Icinga/Shinken using MK Livestatus])
245 AC_SDB_PLUGIN([puppet-storeconfigs], [$puppet_storeconfigs_default],
246                 [backend accessing the Puppet stored configuration database])
247 AC_SDB_PLUGIN([syslog], [yes],
248                 [plugin logging to syslog])
249 AC_SDB_PLUGIN([cname-dns], [yes],
250                 [canonicalize hostnames by querying DNS])
252 AM_CONDITIONAL([BUILD_DOCUMENTATION], test "x$build_documentation" = "xyes")
254 AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile
255                 src/liboconfig/Makefile])
256 AC_OUTPUT
258 BUILD_DATE="`date --utc '+%F %T'` (UTC)"
260 AC_MSG_RESULT()
261 AC_MSG_RESULT([$PACKAGE_NAME has been configured successfully.])
262 AC_MSG_RESULT()
263 AC_MSG_RESULT([Run 'make' to compile the software and use 'make install' to])
264 AC_MSG_RESULT([install the package into $prefix.])
265 AC_MSG_RESULT()
266 AC_MSG_RESULT([Configuration summary:])
267 AC_MSG_RESULT()
268 AC_MSG_RESULT([  package version: $PACKAGE_VERSION])
269 AC_MSG_RESULT([  build date: $BUILD_DATE])
270 AC_MSG_RESULT()
271 AC_MSG_RESULT([  Tools:])
272 AC_MSG_RESULT([    AsciiDoc (a2x): . . . . . . $have_a2x])
273 AC_MSG_RESULT([    xmlto / xsltproc: . . . . . $have_xmlto / $have_xsltproc])
274 AC_MSG_RESULT()
275 AC_MSG_RESULT([  Features:])
276 AC_MSG_RESULT([    documentation:  . . . . . . $build_documentation])
277 AC_MSG_RESULT()
278 AC_MSG_RESULT([  Libraries:])
279 AC_MSG_RESULT([    libdbi: . . . . . . . . . . $with_libdbi])
280 AC_MSG_RESULT()
281 AC_MSG_RESULT([  Backends:])
282 AC_MSG_RESULT([    collectd: . . . . . . . . . $enable_collectd])
283 AC_MSG_RESULT([    mk-livestatus:  . . . . . . $enable_mk_livestatus])
284 AC_MSG_RESULT([    puppet-storeconfigs:  . . . $enable_puppet_storeconfigs])
285 AC_MSG_RESULT()
286 AC_MSG_RESULT([  Plugins:])
287 AC_MSG_RESULT([    cname::dns: . . . . . . . . $enable_cname_dns])
288 AC_MSG_RESULT()
289 AC_MSG_RESULT([This package is maintained by $PACKAGE_MAINTAINER.])
290 AC_MSG_RESULT([Please report bugs to $PACKAGE_BUGREPORT.])
291 AC_MSG_RESULT()