1 dnl Process this file with autoconf to produce a configure script.
2 dnl
3 dnl This is the syscollector 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 collector],[m4_esyscmd(./version-gen.sh)],
30 [sh@tokkee.org],
31 [syscollector],
32 [http://git.tokkee.org/?p=syscollector.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/syscollector.c])
37 AC_CONFIG_HEADERS([src/config.h])
38 AC_PREFIX_DEFAULT([/opt/syscollector])
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 \
175 -Wunreachable-code; do
176 AC_MSG_CHECKING([whether $CC accepts $flag])
178 if test_cc_flags $flag; then
179 STRICT_CFLAGS="$STRICT_CFLAGS $flag"
180 AC_MSG_RESULT([yes])
181 else
182 AC_MSG_RESULT([no])
183 fi
184 done
185 fi
186 AC_SUBST([STRICT_CFLAGS])
188 AC_CHECK_HEADERS(libgen.h)
190 dnl Check for dependencies.
191 build_documentation="yes"
193 have_xsltproc="yes"
194 AC_PATH_PROG([XSLTPROC], [xsltproc])
195 if test "x$XSLTPROC" = "x"; then
196 have_xsltproc="no"
197 build_documentation="no (missing xsltproc)"
198 fi
200 have_a2x="yes"
201 AC_PATH_PROG([A2X], [a2x])
202 if test "x$A2X" = "x"; then
203 have_a2x="no"
204 build_documentation="no (missing a2x)"
205 fi
206 AC_SUBST([A2X])
208 m4_divert_once([HELP_ENABLE], [
209 Backends:])
211 AC_SC_PLUGIN_INIT
212 AC_SC_PLUGIN([collectd], [yes],
213 [backend accessing the system statistics collection daemon])
215 AM_CONDITIONAL([BUILD_DOCUMENTATION], test "x$build_documentation" = "xyes")
217 AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile
218 src/liboconfig/Makefile])
219 AC_OUTPUT
221 BUILD_DATE="`date --utc '+%F %T'` (UTC)"
223 AC_MSG_RESULT()
224 AC_MSG_RESULT([$PACKAGE_NAME has been configured successfully.])
225 AC_MSG_RESULT()
226 AC_MSG_RESULT([Run 'make' to compile the software and use 'make install' to])
227 AC_MSG_RESULT([install the package into $prefix.])
228 AC_MSG_RESULT()
229 AC_MSG_RESULT([Configuration summary:])
230 AC_MSG_RESULT()
231 AC_MSG_RESULT([ package version: $PACKAGE_VERSION])
232 AC_MSG_RESULT([ build date: $BUILD_DATE])
233 AC_MSG_RESULT()
234 AC_MSG_RESULT([ Tools:])
235 AC_MSG_RESULT([ AsciiDoc (a2x): . . . . . . $have_a2x])
236 AC_MSG_RESULT([ xsltproc: . . . . . . . . . $have_xsltproc])
237 AC_MSG_RESULT()
238 AC_MSG_RESULT([ Features:])
239 AC_MSG_RESULT([ documentation: . . . . . . $build_documentation])
240 AC_MSG_RESULT()
241 AC_MSG_RESULT([ Backends:])
242 AC_MSG_RESULT([ collectd: . . . . . . . . . $enable_collectd])
243 AC_MSG_RESULT()
244 AC_MSG_RESULT([This package is maintained by $PACKAGE_MAINTAINER.])
245 AC_MSG_RESULT([Please report bugs to $PACKAGE_BUGREPORT.])
246 AC_MSG_RESULT()