1dnl Process this file with autoconf or autoreconf to produce a configure script. 2AC_INIT([sarg],[2.4.0]) 3AC_CONFIG_SRCDIR([log.c]) 4AC_CONFIG_AUX_DIR([cfgaux]) 5AC_CONFIG_MACRO_DIR([m4]) 6 7dnl We don't use automake but the following macro is required to 8dnl install "install-sh" that is required by configure. 9dnl I may be a bug in autoconf 2.69... 10dnl But if it is enabled, the AM_GNU_GETTEXT produce a warning! 11dnl The solution for now is to manually run automake -a before 12dnl running the configure script 13dnl AM_INIT_AUTOMAKE 14 15AC_CANONICAL_HOST 16 17AC_ARG_WITH(gcc, 18AS_HELP_STRING([--without-gcc],[use CC to compile])) 19 20test -n "$CC" && cc_specified=yes 21case ${with_gcc} in 22 yes ) CC=gcc ;; 23dnl yes ) CC=g++ ;; 24 no ) CC=cc ;; 25 * ) AC_PROG_CC;; 26dnl * ) AC_PROG_CXX ;; 27esac 28 29dnl The purpose of the following condition is unknown but it is obsolete as it is. 30dnl The -Aa option produces an error claiming that some argument are missing. 31dnl if test "${CC}" = "cc" ; then 32dnl CFLAGS="${CFLAGS} -g -O2 -Aa" 33dnl fi 34 35dnl C99 support is required to define LLONG_MAX (at least on CentOS 5.7) 36AC_PROG_CC_C99 37 38# Report more warnings to improve code quality. 39CFLAGS="${CFLAGS} -Wall" 40 41dnl Check for supported compiler options 42 43AC_MSG_CHECKING([for extra warnings flag in $CC]) 44saved_CFLAGS="${CFLAGS}" 45CFLAGS="${CFLAGS} -Wextra -Wno-unused-parameter" 46AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_extra_warnings="yes"],[have_extra_warnings="no"]) 47AC_MSG_RESULT($have_extra_warnings) 48AS_IF([test "$have_extra_warnings" = "no"],[CFLAGS="${saved_CFLAGS}"]) 49 50# Don't compare signs as it is a mess 51CFLAGS="${CFLAGS} -Wno-sign-compare" 52 53AC_MSG_CHECKING([for implicit-function-declaration error flag in $CC]) 54saved_CFLAGS="${CFLAGS}" 55CFLAGS="${CFLAGS} -Werror=implicit-function-declaration" 56AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_implicit_function_declaration="yes"],[have_implicit_function_declaration="no"]) 57AC_MSG_RESULT($have_implicit_function_declaration) 58AS_IF([test "$have_implicit_function_declaration" = "no"],[CFLAGS="${saved_CFLAGS}"]) 59 60AC_MSG_CHECKING([for format error flag in $CC]) 61saved_CFLAGS="${CFLAGS}" 62CFLAGS="${CFLAGS} -Werror=format" 63AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[have_error_format="yes"],[have_error_format="no"]) 64AC_MSG_RESULT($have_error_format) 65AS_IF([test "$have_error_format" = "no"],[CFLAGS="${saved_CFLAGS}"]) 66 67case "$host" in 68 *-solaris*) 69 LDFLAGS="${LDFLAGS} -lsocket -lnsl" 70 CFLAGS="-DSOLARIS ${CFLAGS}" 71 ;; 72esac 73 74#dnl Checks for programs. 75#AC_PROG_CC 76 77dnl Check for headers 78AC_HEADER_DIRENT 79AC_HEADER_STDC 80 81 82AC_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 88AS_IF([test $ac_cv_header_getopt_h = "no"],[AC_MSG_ERROR("getopt.h is required to compile sarg")]) 89 90# Build with gd 91AC_ARG_WITH([gd], 92 AS_HELP_STRING([--with-gd],[Compile with support for the graphical gd library]), 93 [],[with_gd=check]) 94AS_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 112AC_ARG_WITH([ldap], 113 AS_HELP_STRING([--with-ldap],[Compile with LDAP support]), 114 [],[with_ldap=check]) 115AS_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 129AC_ARG_WITH([iconv], 130 AS_HELP_STRING([--with-iconv],[Compile with support for iconv]), 131 [],[with_iconv=check]) 132AS_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 143AC_ARG_WITH([pcre], 144 AS_HELP_STRING([--with-pcre],[Compile with support for the Perl Compatible Regular Expressions library]), 145 [],[with_pcre=check]) 146AS_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 161AC_ARG_WITH([glob], 162 AS_HELP_STRING([--without-glob],[Ignore wildcards in file names]), 163 [],[with_glob=yes]) 164AS_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 178AC_ARG_WITH([zlib], 179 AS_HELP_STRING([--with-zlib],[Compile with support to decompress gz files]), 180 [],[with_zlib=check]) 181AS_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 202AC_ARG_WITH([bzlib], 203 AS_HELP_STRING([--with-bzlib],[Compile with support to decompress bz2 files]), 204 [],[with_bzlib=check]) 205AS_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 226AC_ARG_WITH([liblzma], 227 AS_HELP_STRING([--with-liblzma],[Compile with support to decompress xz files]), 228 [],[with_liblzma=check]) 229AS_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 249dnl Checks for typedefs, structures, and compiler characteristics. 250AC_C_CONST 251AC_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. 255AM_GNU_GETTEXT_VERSION([0.18]) 256AM_GNU_GETTEXT([external]) 257 258AC_SYS_LARGEFILE 259 260# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE 261# needs to be defined for it 262AC_MSG_CHECKING([for fopen64]) 263AC_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);], 269bu_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);], 275bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE and no -Werror" 276werror_status="fail", 277bu_cv_have_fopen64=no)])) 278 ]) 279 CFLAGS=$noerror_CFLAGS]) 280AC_MSG_RESULT($bu_cv_have_fopen64) 281AS_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 290dnl check for functions 291AC_CHECK_FUNCS(backtrace) 292AC_CHECK_FUNCS(symlink) 293AC_CHECK_FUNCS(lstat) 294AC_CHECK_FUNCS(getnameinfo) 295AC_CHECK_FUNCS(getaddrinfo) 296AC_CHECK_FUNCS(mkstemp) 297AC_CHECK_FUNCS(fnmatch) 298 299dnl check for structure members 300AC_CHECK_MEMBER([struct sockaddr_storage.ss_len],[AC_DEFINE([HAVE_SOCKADDR_SA_LEN],1,[ss_len in sockaddr_storage])]) 301 302dnl windows require this library 303AS_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 309dnl check for the rlim_t size 310AC_CHECK_SIZEOF(rlim_t,1,[#if HAVE_SYS_RESOURCE_H 311#include <sys/resource.h> 312#endif 313]) 314AS_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 324dnl check for the long long int max constant 325AC_CHECK_DECL(LLONG_MAX,HAVE_LLONG_MAX="yes",HAVE_LLONG_MAX="no",[[#include <limits.h>]]) 326AS_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 331dnl Select sarg-php directory 332AC_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"]) 338AS_IF([test "$SARGPHPDIR"], 339[ 340 AC_MSG_NOTICE([using $SARGPHPDIR as the directory to install sarg-php]) 341 AC_SUBST(SARGPHPDIR) 342]) 343 344dnl Select fonts dir 345AC_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"]) 351AS_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 363dnl Select images dir 364AC_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"]) 370AS_IF([test "x$prefix" = "xNONE"], 371[ 372 tempfullpath=`prefix=$ac_default_prefix ; eval "echo $IMAGEDIR"` 373],[ 374 tempfullpath=`eval "echo $IMAGEDIR"` 375]) 376AC_MSG_NOTICE([using $tempfullpath as the directory of the images]) 377AC_SUBST(IMAGEDIR) 378 379dnl Enable extra compile and run time protection 380AC_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 406dnl Enable double check of the data written in the reports 407AC_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 417dnl Get the xsl stylesheet to produce the manpage 418AC_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], 428AC_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 442dnl Get the xsl stylesheet to produce the html page 443AC_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], 453AC_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[ 460AC_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 468AC_SUBST(PACKAGE,"$PACKAGE_NAME") 469AC_SUBST(VERSION,"$PACKAGE_VERSION") 470 471AC_CONFIG_FILES([Makefile po/Makefile.in]) 472AC_OUTPUT 473 474AS_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 480AS_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 486AS_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 492AS_IF([test "x$glob_status" = "xdisabled"],[ 493 AC_MSG_NOTICE([Not building with file globbing as requested on the configuration command line]) 494]) 495 496AS_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 502AS_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 508AS_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]) 513