]> git.ipfire.org Git - thirdparty/sarg.git/blob - configure.ac
Add support to decompress xz files
[thirdparty/sarg.git] / configure.ac
1 dnl Process this file with autoconf or autoreconf to produce a configure script.
2 AC_INIT([sarg],[2.4.0-pre2])
3 AC_CONFIG_SRCDIR([log.c])
4 AC_CONFIG_AUX_DIR([cfgaux])
5 AC_CONFIG_MACRO_DIR([m4])
6
7 dnl We don't use automake but the following macro is required to
8 dnl install "install-sh" that is required by configure.
9 dnl I may be a bug in autoconf 2.69...
10 dnl But if it is enabled, the AM_GNU_GETTEXT produce a warning!
11 dnl The solution for now is to manually run automake -a before
12 dnl running the configure script
13 dnl AM_INIT_AUTOMAKE
14
15 AC_CANONICAL_HOST
16
17 AC_ARG_WITH(gcc,
18 AS_HELP_STRING([--without-gcc],[use CC to compile]))
19
20 test -n "$CC" && cc_specified=yes
21 case ${with_gcc} in
22 yes ) CC=gcc ;;
23 dnl yes ) CC=g++ ;;
24 no ) CC=cc ;;
25 * ) AC_PROG_CC;;
26 dnl * ) AC_PROG_CXX ;;
27 esac
28
29 dnl The purpose of the following condition is unknown but it is obsolete as it is.
30 dnl The -Aa option produces an error claiming that some argument are missing.
31 dnl if test "${CC}" = "cc" ; then
32 dnl CFLAGS="${CFLAGS} -g -O2 -Aa"
33 dnl fi
34
35 dnl C99 support is required to define LLONG_MAX (at least on CentOS 5.7)
36 AC_PROG_CC_C99
37
38 # Report more warnings to improve code quality.
39 CFLAGS="${CFLAGS} -Wall"
40
41 dnl Check for supported compiler options
42
43 AC_MSG_CHECKING([for extra warnings flag in $CC])
44 saved_CFLAGS="${CFLAGS}"
45 CFLAGS="${CFLAGS} -Wextra -Wno-unused-parameter"
46 AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_extra_warnings="yes"],[have_extra_warnings="no"])
47 AC_MSG_RESULT($have_extra_warnings)
48 AS_IF([test "$have_extra_warnings" = "no"],[CFLAGS="${saved_CFLAGS}"])
49
50 # Don't compare signs as it is a mess
51 CFLAGS="${CFLAGS} -Wno-sign-compare"
52
53 AC_MSG_CHECKING([for implicit-function-declaration error flag in $CC])
54 saved_CFLAGS="${CFLAGS}"
55 CFLAGS="${CFLAGS} -Werror=implicit-function-declaration"
56 AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_implicit_function_declaration="yes"],[have_implicit_function_declaration="no"])
57 AC_MSG_RESULT($have_implicit_function_declaration)
58 AS_IF([test "$have_implicit_function_declaration" = "no"],[CFLAGS="${saved_CFLAGS}"])
59
60 AC_MSG_CHECKING([for format error flag in $CC])
61 saved_CFLAGS="${CFLAGS}"
62 CFLAGS="${CFLAGS} -Werror=format"
63 AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_error_format="yes"],[have_error_format="no"])
64 AC_MSG_RESULT($have_error_format)
65 AS_IF([test "$have_error_format" = "no"],[CFLAGS="${saved_CFLAGS}"])
66
67 case "$host" in
68 *-solaris*)
69 LDFLAGS="${LDFLAGS} -lsocket -lnsl"
70 CFLAGS="-DSOLARIS ${CFLAGS}"
71 ;;
72 esac
73
74 #dnl Checks for programs.
75 #AC_PROG_CC
76
77 dnl Check for headers
78 AC_HEADER_DIRENT
79 AC_HEADER_STDC
80
81
82 AC_CHECK_HEADERS(stdio.h stdlib.h string.h strings.h sys/time.h time.h unistd.h sys/dirent.h \
83 dirent.h sys/types.h sys/socket.h netdb.h arpa/inet.h netinet/in.h sys/stat.h \
84 ctype.h errno.h sys/resource.h sys/wait.h stdarg.h inttypes.h limits.h locale.h \
85 execinfo.h math.h libintl.h libgen.h stdbool.h getopt.h fcntl.h fnmatch.h \
86 winsock.h)
87
88 AS_IF([test $ac_cv_header_getopt_h = "no"],[AC_MSG_ERROR("getopt.h is required to compile sarg")])
89
90 # Build with gd
91 AC_ARG_WITH([gd],
92 AS_HELP_STRING([--with-gd],[Compile with support for the graphical gd library]),
93 [],[with_gd=check])
94 AS_IF([test "x$with_gd" != "xno"],
95 [
96 AC_CHECK_HEADERS(gd.h gdfontl.h gdfontt.h gdfonts.h gdfontmb.h gdfontg.h)
97 AS_IF([test "x$ac_cv_header_gd_h" = "xyes"],
98 [
99 AC_CHECK_LIB(gd, gdImagePng,LIBS="-lgd ${LIBS}"; HAVE_GD_LIB="yes", HAVE_GD_LIB="")
100 AS_IF([test "x$HAVE_GD_LIB" != "xyes"],
101 [
102 AC_MSG_ERROR([libgd is required to compile sarg with gd])
103 ])
104 ],[
105 gd_status="not found"
106 ])
107 ],[
108 gd_status="disabled"
109 ])
110
111 # Build with LDAP
112 AC_ARG_WITH([ldap],
113 AS_HELP_STRING([--with-ldap],[Compile with LDAP support]),
114 [],[with_ldap=check])
115 AS_IF([test "x$with_ldap" != "xno"],
116 [
117 AC_CHECK_HEADERS([ldap_cdefs.h] [ldap_features.h] [ldap.h],,break)
118 AS_IF([test "x$ac_cv_header_ldap_h" = "xyes"],
119 [
120 AC_CHECK_LIB(ldap, ldap_init,LIBS="-lldap ${LIBS}"; HAVE_LDAP="yes", HAVE_LDAP="")
121 ],[
122 ldap_status="not found"
123 ])
124 ],[
125 ldap_status="disabled"
126 ])
127
128 # Build with iconv
129 AC_ARG_WITH([iconv],
130 AS_HELP_STRING([--with-iconv],[Compile with support for iconv]),
131 [],[with_iconv=check])
132 AS_IF([test "x$with_iconv" != "xno"],
133 [
134 dnl Check for iconv
135 AM_ICONV
136 AS_IF([test -n "$LIBICONV"],[LIBS="$LIBS $LIBICONV"])
137 AC_CHECK_HEADERS(iconv.h)
138 ],[
139 AC_MSG_NOTICE([Not building with iconv as requested on the configuration command line])
140 ])
141
142 # Build with pcre
143 AC_ARG_WITH([pcre],
144 AS_HELP_STRING([--with-pcre],[Compile with support for the Perl Compatible Regular Expressions library]),
145 [],[with_pcre=check])
146 AS_IF([test "x$with_pcre" != "xno"],
147 [
148 AC_CHECK_HEADERS(pcre.h)
149 AS_IF([test "x$ac_cv_header_pcre_h" = "xyes"],
150 [
151 LIBS="$LIBS $(pcre-config --libs)"
152 CFLAGS="$CFLAGS $(pcre-config --cflags)"
153 ],[
154 pcre_status="not found"
155 ])
156 ],[
157 pcre_status="disabled"
158 ])
159
160 # Build with file globbing
161 AC_ARG_WITH([glob],
162 AS_HELP_STRING([--without-glob],[Ignore wildcards in file names]),
163 [],[with_glob=yes])
164 AS_IF([test "x$with_glob" != "xno"],
165 [
166 AC_CHECK_HEADERS([glob.h],[],
167 [
168 AS_IF([test "x$with_glob" != "xcheck"],
169 [
170 AC_MSG_FAILURE([glob.h not found (use --without-glob to compile without file globbing)])
171 ])
172 ])
173 ],[
174 glob_status="disabled"
175 ])
176
177 # Build with zlib
178 AC_ARG_WITH([zlib],
179 AS_HELP_STRING([--with-zlib],[Compile with support to decompress gz files]),
180 [],[with_zlib=check])
181 AS_IF([test "x$with_zlib" != "xno" ],
182 [
183 AC_CHECK_HEADERS(zlib.h)
184 AS_IF([test "x$ac_cv_header_zlib_h" = "xyes"],
185 [
186 AC_CHECK_LIB([z],[gzopen],
187 [
188 LIBS="-lz ${LIBS}"
189 HAVE_ZLIB_LIB="yes"
190 ],[
191 HAVE_ZLIB_LIB=""
192 ])
193 AS_IF([test "x$HAVE_ZLIB_LIB" != "xyes"],[AC_MSG_ERROR([zlib was not found])])
194 ],[
195 zlib_status="not found"
196 ])
197 ],[
198 zlib_status="disabled"
199 ])
200
201 # Build with bzlib
202 AC_ARG_WITH([bzlib],
203 AS_HELP_STRING([--with-bzlib],[Compile with support to decompress bz2 files]),
204 [],[with_bzlib=check])
205 AS_IF([test "x$with_bzlib" != "xno" ],
206 [
207 AC_CHECK_HEADERS(bzlib.h)
208 AS_IF([test "x$ac_cv_header_bzlib_h" = "xyes"],
209 [
210 AC_CHECK_LIB([bz2],[BZ2_bzReadOpen],
211 [
212 LIBS="-lbz2 ${LIBS}"
213 HAVE_BZLIB_LIB="yes"
214 ],[
215 HAVE_BZLIB_LIB=""
216 ])
217 AS_IF([test "x$HAVE_BZLIB_LIB" != "xyes"],[AC_MSG_ERROR([bzlib was not found])])
218 ],[
219 bzlib_status="not found"
220 ])
221 ],[
222 bzlib_status="disabled"
223 ])
224
225 # Build with liblzma
226 AC_ARG_WITH([liblzma],
227 AS_HELP_STRING([--with-liblzma],[Compile with support to decompress xz files]),
228 [],[with_liblzma=check])
229 AS_IF([test "x$with_liblzma" != "xno" ],
230 [
231 AC_CHECK_HEADERS(lzma.h)
232 AS_IF([test "x$ac_cv_header_lzma_h" = "xyes"],
233 [
234 AC_CHECK_LIB([lzma],[lzma_stream_decoder],
235 [
236 LIBS="-llzma ${LIBS}"
237 HAVE_LIBLZMA_LIB="yes"
238 ],[
239 HAVE_LIBLZMA_LIB=""
240 ])
241 AS_IF([test "x$HAVE_LIBLZMA_LIB" != "xyes"],[AC_MSG_ERROR([liblzma was not found])])
242 ],[
243 liblzma_status="not found"
244 ])
245 ],[
246 liblzma_status="disabled"
247 ])
248
249 dnl Checks for typedefs, structures, and compiler characteristics.
250 AC_C_CONST
251 AC_STRUCT_TM
252
253 # Change the gettext version according to the available version on your system.
254 # It should not be necessary to change it unless you run autoreconf -fi.
255 AM_GNU_GETTEXT_VERSION([0.18])
256 AM_GNU_GETTEXT([external])
257
258 AC_SYS_LARGEFILE
259
260 # Check whether fopen64 is available and whether _LARGEFILE64_SOURCE
261 # needs to be defined for it
262 AC_MSG_CHECKING([for fopen64])
263 AC_CACHE_VAL(bu_cv_have_fopen64,
264 [noerror_CFLAGS=$CFLAGS
265 CFLAGS="$CFLAGS -Werror"
266 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[FILE *f = fopen64 ("/tmp/foo","r");fclose(f);]])],[bu_cv_have_fopen64=yes],
267 [CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
268 AC_TRY_LINK([#include <stdio.h>], [FILE *f = fopen64 ("/tmp/foo","r");fclose(f);],
269 bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE",
270 CFLAGS=$noerror_CFLAGS
271 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[FILE *f = fopen64 ("/tmp/foo","r");fclose(f);]])],[bu_cv_have_fopen64="yes without -Werror"
272 werror_status="fail"],
273 [CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
274 AC_TRY_LINK([#include <stdio.h>], [FILE *f = fopen64 ("/tmp/foo","r");fclose(f);],
275 bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE and no -Werror"
276 werror_status="fail",
277 bu_cv_have_fopen64=no)]))
278 ])
279 CFLAGS=$noerror_CFLAGS])
280 AC_MSG_RESULT($bu_cv_have_fopen64)
281 AS_IF([test "$bu_cv_have_fopen64" != no],
282 [
283 AC_DEFINE([HAVE_FOPEN64],1,[Is fopen64 available?])
284 AS_IF([test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE"],
285 [
286 AC_DEFINE([_LARGEFILE64_SOURCE],1,[Enable LFS])
287 ])
288 ])
289
290 dnl check for functions
291 AC_CHECK_FUNCS(backtrace)
292 AC_CHECK_FUNCS(symlink)
293 AC_CHECK_FUNCS(lstat)
294 AC_CHECK_FUNCS(getnameinfo)
295 AC_CHECK_FUNCS(getaddrinfo)
296 AC_CHECK_FUNCS(mkstemp)
297 AC_CHECK_FUNCS(fnmatch)
298
299 dnl check for structure members
300 AC_CHECK_MEMBER([struct sockaddr_storage.ss_len],[AC_DEFINE([HAVE_SOCKADDR_SA_LEN],1,[ss_len in sockaddr_storage])])
301
302 dnl windows require this library
303 AS_IF([test $ac_cv_header_winsock_h = "yes"],
304 [
305 # AC_CHECK_LIBS([ws2_32],[WSAGetLastError]) fails because of the __stdcall in the function prototype
306 LIBS="$LIBS -lws2_32"
307 ])
308
309 dnl check for the rlim_t size
310 AC_CHECK_SIZEOF(rlim_t,1,[#if HAVE_SYS_RESOURCE_H
311 #include <sys/resource.h>
312 #endif
313 ])
314 AS_IF([test $ac_cv_sizeof_rlim_t = "4"],
315 [
316 AC_DEFINE(RLIM_STRING, "%d", [Rlim string])
317 ],[test $ac_cv_sizeof_rlim_t = "8"],
318 [
319 AC_DEFINE(RLIM_STRING, "%lli", [Rlim string])
320 ],[
321 AC_MSG_WARN([can not detect the size of your system rlim_t type])
322 ])
323
324 dnl check for the long long int max constant
325 AC_CHECK_DECL(LLONG_MAX,HAVE_LLONG_MAX="yes",HAVE_LLONG_MAX="no",[[#include <limits.h>]])
326 AS_IF([test "x$ac_cv_have_decl_LLONG_MAX" != "xyes"],
327 [
328 AC_MSG_ERROR([LLONG_MAX is not defined on your system.])
329 ])
330
331 dnl Select sarg-php directory
332 AC_ARG_ENABLE(sargphp,
333 AS_HELP_STRING([--enable-sargphp=sargphpdir],
334 [Select sargphpdir as the directory to install sarg-php into]),
335 [
336 AS_IF([test "$enableval" -a "x$enableval" != "xno"],[SARGPHPDIR=$enableval])
337 ],[SARGPHPDIR="/var/www/html"])
338 AS_IF([test "$SARGPHPDIR"],
339 [
340 AC_MSG_NOTICE([using $SARGPHPDIR as the directory to install sarg-php])
341 AC_SUBST(SARGPHPDIR)
342 ])
343
344 dnl Select fonts dir
345 AC_ARG_ENABLE(fontdir,
346 AS_HELP_STRING([--enable-fontdir=fontdir],
347 [Select fontdir as the directory with the fonts to use in the reports]),
348 [
349 AS_IF([test "$enableval" -a "x$enableval" != "xno"],[FONTDIR=$enableval])
350 ],[FONTDIR="${datarootdir}/sarg/fonts"])
351 AS_IF([test "$FONTDIR"],
352 [
353 AS_IF([test "x$prefix" = "xNONE"],
354 [
355 tempfullpath=`prefix=$ac_default_prefix ; eval "echo $FONTDIR"`
356 ],[
357 tempfullpath=`eval "echo $FONTDIR"`
358 ])
359 AC_MSG_NOTICE([using $tempfullpath as the directory of the fonts])
360 AC_SUBST(FONTDIR)
361 ])
362
363 dnl Select images dir
364 AC_ARG_ENABLE(imagedir,
365 AS_HELP_STRING([--enable-imagedir=imagedir],
366 [Select imagedir as the directory with the images to use in the reports]),
367 [
368 AS_IF([test "$enableval"],[IMAGEDIR=$enableval])
369 ],[IMAGEDIR="${datarootdir}/sarg/images"])
370 AS_IF([test "x$prefix" = "xNONE"],
371 [
372 tempfullpath=`prefix=$ac_default_prefix ; eval "echo $IMAGEDIR"`
373 ],[
374 tempfullpath=`eval "echo $IMAGEDIR"`
375 ])
376 AC_MSG_NOTICE([using $tempfullpath as the directory of the images])
377 AC_SUBST(IMAGEDIR)
378
379 dnl Enable extra compile and run time protection
380 AC_ARG_ENABLE(extraprotection,
381 AS_HELP_STRING([--enable-extraprotection],
382 [Enable compile and runtime extra protections]),
383 [
384 AS_IF([test "$enableval"],
385 [
386 # _FORTIFY_SOURCE may have been defined by the system. It must be undefined before it is changed to the value we want.
387 CFLAGS="${CFLAGS} -fstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"
388 AS_IF([test "x$werror_status" != "xfail"],[CFLAGS="${CFLAGS} -Werror"])
389
390 AC_MSG_CHECKING([for format security flag in $CC])
391 saved_CFLAGS="${CFLAGS}"
392 CFLAGS="${CFLAGS} -Wformat -Werror=format-security"
393 AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_format_security="yes"],[have_format_security="no"])
394 AC_MSG_RESULT($have_format_security)
395 AS_IF([test "$have_format_security" = "no"],[CFLAGS="${saved_CFLAGS}"])
396
397 AC_MSG_CHECKING([for empty body flag in $CC])
398 saved_CFLAGS="${CFLAGS}"
399 CFLAGS="${CFLAGS} -Wempty-body"
400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_empty_body="yes"],[have_empty_body="no"])
401 AC_MSG_RESULT($have_empty_body)
402 AS_IF([test "$have_empty_body" = "no"],[CFLAGS="${saved_CFLAGS}"])
403 ])
404 ])
405
406 dnl Enable double check of the data written in the reports
407 AC_ARG_ENABLE(doublecheck,
408 AS_HELP_STRING([--enable-doublecheck],
409 [Make sarg double check the data it manipulates and output a warning if an error is found]),
410 [
411 AS_IF([test "$enableval"],
412 [
413 AC_DEFINE(ENABLE_DOUBLE_CHECK_DATA)
414 ])
415 ])
416
417 dnl Get the xsl stylesheet to produce the manpage
418 AC_ARG_ENABLE(xsl-man,
419 AS_HELP_STRING([--enable-xsl-man=man-xsl-style-sheet],
420 [Select the directory containing the the XSL stylesheets to convert DocBook into man page]),
421 [
422 AS_IF([test "$enableval"],
423 [
424 XSL_MAN_STYLESHEET=$enableval
425 AC_SUBST(XSL_MAN_STYLESHEET)
426 ])
427 ],
428 AC_CHECK_FILES([/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl],
429 [
430 # debian
431 XSL_MAN_STYLESHEET="/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl"
432 AC_SUBST(XSL_MAN_STYLESHEET)
433 ],[
434 AC_CHECK_FILES([/usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl],
435 [
436 # gentoo
437 XSL_MAN_STYLESHEET="/usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl"
438 AC_SUBST(XSL_MAN_STYLESHEET)
439 ])
440 ]))
441
442 dnl Get the xsl stylesheet to produce the html page
443 AC_ARG_ENABLE(xsl-html,
444 AS_HELP_STRING([--enable-xsl-html=html-xsl-style-sheet],
445 [Select the directory containing the the XSL stylesheets to convert DocBook into html page]),
446 [
447 AS_IF([test "$enableval"],
448 [
449 XSL_HTML_STYLESHEET=$enableval
450 AC_SUBST(XSL_HTML_STYLESHEET)
451 ])
452 ],
453 AC_CHECK_FILES([/usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/html/onechunk.xsl],
454 [
455 # debian
456 XSL_HTML_STYLESHEET="/usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/html/onechunk.xsl"
457 AC_SUBST(XSL_HTML_STYLESHEET)
458 ],
459 [
460 AC_CHECK_FILES([/usr/share/sgml/docbook/xsl-stylesheets/html/onechunk.xsl],
461 [
462 # gentoo
463 XSL_HTML_STYLESHEET="/usr/share/sgml/docbook/xsl-stylesheets/html/onechunk.xsl"
464 AC_SUBST(XSL_HTML_STYLESHEET)
465 ])
466 ]))
467
468 AC_SUBST(PACKAGE,"$PACKAGE_NAME")
469 AC_SUBST(VERSION,"$PACKAGE_VERSION")
470
471 AC_CONFIG_FILES([Makefile po/Makefile.in])
472 AC_OUTPUT
473
474 AS_IF([test "x$gd_status" = "xdisabled"],[
475 AC_MSG_NOTICE([Not building with gd as requested on the configuration command line])
476 ],[test "x$gd_status" = "xnot found"],[
477 AC_MSG_NOTICE([gd.h was not found so the graphs won't be available in the report])
478 ])
479
480 AS_IF([test "x$pcre_status" = "xdisabled"],[
481 AC_MSG_NOTICE([Not building with pcre as requested on the configuration command line])
482 ],[test "x$pcre_status" = "xnot found"],[
483 AC_MSG_NOTICE([pcre.h was not found so the regexp won't be available in hostalias])
484 ])
485
486 AS_IF([test "x$ldap_status" = "xdisabled"],[
487 AC_MSG_NOTICE([Not building with LDAP support as requested on the configuration command line])
488 ],[test "x$ldap_status" = "xnot found"],[
489 AC_MSG_NOTICE([ldap header files not found so LDAP is not available to resolve user's names])
490 ])
491
492 AS_IF([test "x$glob_status" = "xdisabled"],[
493 AC_MSG_NOTICE([Not building with file globbing as requested on the configuration command line])
494 ])
495
496 AS_IF([test "x$zlib_status" = "xdisabled"],[
497 AC_MSG_NOTICE([Not building with zlib as requested on the configuration command line])
498 ],[test "x$zlib_status" = "xnot found"],[
499 AC_MSG_NOTICE([zlib.h was not found so it won't be possible to process gzipped files])
500 ])
501
502 AS_IF([test "x$bzlib_status" = "xdisabled"],[
503 AC_MSG_NOTICE([Not building with bzlib as requested on the configuration command line])
504 ],[test "x$bzlib_status" = "xnot found"],[
505 AC_MSG_NOTICE([bzlib.h was not found so it won't be possible to process bzipped files])
506 ])
507
508 AS_IF([test "x$liblzma_status" = "xdisabled"],[
509 AC_MSG_NOTICE([Not building with liblzma as requested on the configuration command line])
510 ],[test "x$liblzma_status" = "xnot found"],[
511 AC_MSG_NOTICE([lzma.h was not found so it won't be possible to process xz files])
512 ])