mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-13 21:36:00 +03:00
345 lines
8.6 KiB
Plaintext
345 lines
8.6 KiB
Plaintext
dnl
|
|
dnl Autoconf configuration for ModSecurity
|
|
dnl
|
|
dnl Use ./buildconf to produce a configure script
|
|
dnl
|
|
|
|
AC_PREREQ(2.50)
|
|
|
|
AC_INIT()
|
|
dnl AC_INIT(ModSecurity, 2.5, mod-security-users@lists.sourceforge.net, modsecurity-apache)
|
|
AC_CONFIG_SRCDIR([mod_security2.c])
|
|
AC_CONFIG_HEADER([mod_security2_config.h])
|
|
AC_CONFIG_AUX_DIR([build])
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CXX
|
|
AC_PROG_CC
|
|
AC_PROG_CPP
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_RANLIB
|
|
AC_PATH_PROGS(PERL, [perl perl5], )
|
|
|
|
# Checks for header files.
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h string.h unistd.h])
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_RESTRICT
|
|
AC_TYPE_SIZE_T
|
|
AC_STRUCT_TM
|
|
AC_TYPE_UINT8_T
|
|
|
|
# Checks for library functions.
|
|
AC_FUNC_MALLOC
|
|
AC_FUNC_MEMCMP
|
|
AC_CHECK_FUNCS([atexit fchmod getcwd memset strcasecmp strchr strdup strerror strncasecmp strrchr strstr strtol])
|
|
|
|
# Some directories
|
|
MSC_BASE_DIR=`pwd`
|
|
MSC_PKGBASE_DIR="$MSC_BASE_DIR/.."
|
|
MSC_TEST_DIR="$MSC_BASE_DIR/t"
|
|
MSC_REGRESSION_DIR="$MSC_TEST_DIR/regression"
|
|
MSC_REGRESSION_SERVERROOT_DIR="$MSC_REGRESSION_DIR/server_root"
|
|
MSC_REGRESSION_CONF_DIR="$MSC_REGRESSION_SERVERROOT_DIR/conf"
|
|
MSC_REGRESSION_LOGS_DIR="$MSC_REGRESSION_SERVERROOT_DIR/logs"
|
|
MSC_REGRESSION_DOCROOT_DIR="$MSC_REGRESSION_SERVERROOT_DIR/htdocs"
|
|
|
|
AC_SUBST(MSC_BASE_DIR)
|
|
AC_SUBST(MSC_PKGBASE_DIR)
|
|
AC_SUBST(MSC_TEST_DIR)
|
|
AC_SUBST(MSC_REGRESSION_DIR)
|
|
AC_SUBST(MSC_REGRESSION_SERVERROOT_DIR)
|
|
AC_SUBST(MSC_REGRESSION_CONF_DIR)
|
|
AC_SUBST(MSC_REGRESSION_LOGS_DIR)
|
|
AC_SUBST(MSC_REGRESSION_DOCROOT_DIR)
|
|
|
|
# Find apxs
|
|
AC_MSG_NOTICE(looking for Apache module support via DSO through APXS)
|
|
AC_ARG_WITH(apxs,
|
|
[AS_HELP_STRING([[--with-apxs=FILE]],
|
|
[FILE is the path to apxs; defaults to "apxs".])],
|
|
[
|
|
if test "$withval" = "yes"; then
|
|
APXS=apxs
|
|
else
|
|
APXS="$withval"
|
|
fi
|
|
])
|
|
|
|
if test -z "$APXS"; then
|
|
for i in /usr/local/apache22/bin \
|
|
/usr/local/apache2/bin \
|
|
/usr/local/apache/bin \
|
|
/usr/local/sbin \
|
|
/usr/local/bin \
|
|
/usr/sbin \
|
|
/usr/bin;
|
|
do
|
|
if test -f "$i/apxs2"; then
|
|
APXS="$i/apxs2"
|
|
break
|
|
elif test -f "$i/apxs"; then
|
|
APXS="$i/apxs"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# arbitrarily picking the same version subversion looks for, don't know how
|
|
# accurate this really is, but at least it'll force us to have apache2...
|
|
HTTPD_WANTED_MMN=20020903
|
|
|
|
if test -n "$APXS" -a "$APXS" != "no" -a -x "$APXS" ; then
|
|
APXS_INCLUDE="`$APXS -q INCLUDEDIR`"
|
|
if test -r $APXS_INCLUDE/httpd.h; then
|
|
AC_MSG_NOTICE(found apxs at $APXS)
|
|
AC_MSG_NOTICE(checking httpd version)
|
|
AC_EGREP_CPP(VERSION_OK,
|
|
[
|
|
#include "$APXS_INCLUDE/ap_mmn.h"
|
|
#if AP_MODULE_MAGIC_AT_LEAST($HTTPD_WANTED_MMN,0)
|
|
VERSION_OK
|
|
#endif],
|
|
[AC_MSG_NOTICE(httpd is recent enough)],
|
|
[AC_MSG_ERROR(apache is too old, mmn must be at least $HTTPD_WANTED_MMN)])
|
|
fi
|
|
APXS_INCLUDEDIR="`$APXS -q INCLUDEDIR`"
|
|
# Make sure the include dir is used
|
|
if test -n "$APXS_INCLUDEDIR"; then
|
|
APXS_INCLUDES="-I${APXS_INCLUDEDIR} `$APXS -q INCLUDES` `$APXS -q EXTRA_INCLUDES`"
|
|
else
|
|
APXS_INCLUDES="`$APXS -q INCLUDES` `$APXS -q EXTRA_INCLUDES`"
|
|
fi
|
|
APXS_CFLAGS="`$APXS -q CFLAGS` `$APXS -q EXTRA_CFLAGS`"
|
|
APXS_LDFLAGS="`$APXS -q LDFLAGS` `$APXS -q EXTRA_LDFLAGS`"
|
|
APXS_LIBDIR="`$APXS -q LIBDIR`"
|
|
# Make sure the lib dir is used
|
|
if test -n "$APXS_LIBDIR"; then
|
|
APXS_LIBS="-L{$APXS_LIBDIR} `$APXS -q LIBS` `$APXS -q EXTRA_LIBS`"
|
|
else
|
|
APXS_LIBS="`$APXS -q LIBS` `$APXS -q EXTRA_LIBS`"
|
|
fi
|
|
APXS_LIBTOOL="`$APXS -q LIBTOOL`"
|
|
APXS_CC="`$APXS -q CC`"
|
|
APXS_BINDIR="`$APXS -q BINDIR`"
|
|
APXS_SBINDIR="`$APXS -q SBINDIR`"
|
|
APXS_PROGNAME="`$APXS -q PROGNAME`"
|
|
APXS_LIBEXECDIR="`$APXS -q LIBEXECDIR`"
|
|
if test "$APXS_SBINDIR" = "/"; then
|
|
APXS_HTTPD="$APXS_SBINDIR/$APXS_PROGNAME"
|
|
else
|
|
APXS_HTTPD="$APXS_SBINDIR/$APXS_PROGNAME"
|
|
fi
|
|
else
|
|
AC_MSG_ERROR(couldn't find APXS)
|
|
fi
|
|
|
|
# Use Apache httpd source srclib as base for pcre, apr and apu config scripts
|
|
AC_ARG_WITH(httpd-src,
|
|
[AS_HELP_STRING([[--with-httpd-src=PATH]],
|
|
[PATH is to the Apache httpd source tree where srclib will be used as a base for pcre, apr and apu config scripts.])],
|
|
[
|
|
if test -n "$withval"; then
|
|
CPPFLAGS="$CPPFLAGS -I$withval/srclib/pcre"
|
|
LDFLAGS="$LDFLAGS -L$withval/srclib/pcre"
|
|
pcre_path="$withval/srclib/pcre"
|
|
apr_path="$withval/srclib/apr"
|
|
apu_path="$withval/srclib/apr-util"
|
|
else
|
|
AC_MSG_ERROR(--with-httpd-src requires a path)
|
|
fi
|
|
])
|
|
|
|
# Include M4 macros
|
|
sinclude(build/find_pcre.m4)
|
|
sinclude(build/find_apr.m4)
|
|
sinclude(build/find_apu.m4)
|
|
sinclude(build/find_xml.m4)
|
|
sinclude(build/find_lua.m4)
|
|
sinclude(build/find_curl.m4)
|
|
|
|
|
|
### Configure Options
|
|
|
|
# Strict Compile
|
|
AC_ARG_ENABLE(strict-compile,
|
|
AS_HELP_STRING([--enable-strict-compile],
|
|
[Enable strict compilation (warnings are errors).]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
strict_compile="-Werror"
|
|
else
|
|
strict_compile=
|
|
fi
|
|
],
|
|
[
|
|
strict_compile=
|
|
])
|
|
|
|
# DEBUG_CONF
|
|
AC_ARG_ENABLE(debug-conf,
|
|
AS_HELP_STRING([--enable-debug-conf],
|
|
[Enable debug during configuration.]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
debug_conf="-DDEBUG_CONF"
|
|
else
|
|
debug_conf=
|
|
fi
|
|
],
|
|
[
|
|
debug_conf=
|
|
])
|
|
|
|
# CACHE_DEBUG
|
|
AC_ARG_ENABLE(debug-cache,
|
|
AS_HELP_STRING([--enable-debug-cache],
|
|
[Enable debug for transformation caching.]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
debug_cache="-DCACHE_DEBUG"
|
|
else
|
|
debug_cache=
|
|
fi
|
|
],
|
|
[
|
|
debug_cache=
|
|
])
|
|
|
|
# DEBUG_ACMP
|
|
AC_ARG_ENABLE(debug-acmp,
|
|
AS_HELP_STRING([--enable-debug-acmp],
|
|
[Enable debugging acmp code.]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
debug_acmp="-DDEBUG_ACMP"
|
|
else
|
|
debug_acmp=
|
|
fi
|
|
],
|
|
[
|
|
debug_acmp=
|
|
])
|
|
|
|
# DEBUG_MEM
|
|
AC_ARG_ENABLE(debug-mem,
|
|
AS_HELP_STRING([--enable-debug-mem],
|
|
[Enable debug during configuration.]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
debug_mem="-DDEBUG_MEM"
|
|
else
|
|
debug_mem=
|
|
fi
|
|
],
|
|
[
|
|
debug_mem=
|
|
])
|
|
|
|
# PERFORMANCE_MEASUREMENT
|
|
AC_ARG_ENABLE(performance-measurement,
|
|
AS_HELP_STRING([--enable-performance-measurement],
|
|
[Enable performance-measurement stats.]),
|
|
[
|
|
if test "$enableval" != "no"; then
|
|
perf_meas="-DPERFORMANCE_MEASUREMENT"
|
|
else
|
|
perf_meas=
|
|
fi
|
|
],
|
|
[
|
|
perf_meas=
|
|
])
|
|
|
|
# NO_MODSEC_API
|
|
AC_ARG_ENABLE(modsec-api,
|
|
AS_HELP_STRING([--disable-modsec-api],
|
|
[Disable the API; compiling against some older Apache versions require this.]),
|
|
[
|
|
if test "$enableval" != "yes"; then
|
|
modsec_api="-DNO_MODSEC_API"
|
|
else
|
|
modsec_api=
|
|
fi
|
|
],
|
|
[
|
|
modsec_api=
|
|
])
|
|
|
|
### Build *EXTRA_CFLAGS vars
|
|
|
|
if test -n "$debug_mem"; then
|
|
EXTRA_CFLAGS="-O0 -g -Wall"
|
|
else
|
|
EXTRA_CFLAGS="-O2 -g -Wall $strict_compile"
|
|
fi
|
|
MODSEC_EXTRA_CFLAGS="$debug_conf $debug_cache $debug_acmp $debug_mem $perf_meas $modsec_api"
|
|
|
|
APXS_WRAPPER=build/apxs-wrapper
|
|
APXS_EXTRA_CFLAGS=""
|
|
for f in $EXTRA_CFLAGS; do
|
|
APXS_EXTRA_CFLAGS="$APXS_EXTRA_CFLAGS -Wc,$f"
|
|
done;
|
|
MODSEC_APXS_EXTRA_CFLAGS=""
|
|
for f in $MODSEC_EXTRA_CFLAGS; do
|
|
MODSEC_APXS_EXTRA_CFLAGS="$MODSEC_APXS_EXTRA_CFLAGS -Wc,$f"
|
|
done;
|
|
|
|
### Substitute the vars
|
|
|
|
save_CPPFLAGS=$CPPFLAGS
|
|
CPPFLAGS="$APXS_INCLUDES $CPPFLAGS"
|
|
save_LDFLAGS=$LDFLAGS
|
|
LDFLAGS="$APXS_LDFLAGS $LDFLAGS"
|
|
|
|
AC_SUBST(EXTRA_CFLAGS)
|
|
AC_SUBST(MODSEC_EXTRA_CFLAGS)
|
|
AC_SUBST(APXS)
|
|
AC_SUBST(APXS_WRAPPER)
|
|
AC_SUBST(APXS_INCLUDEDIR)
|
|
AC_SUBST(APXS_INCLUDES)
|
|
AC_SUBST(APXS_EXTRA_CFLAGS)
|
|
AC_SUBST(MODSEC_APXS_EXTRA_CFLAGS)
|
|
AC_SUBST(APXS_LDFLAGS)
|
|
AC_SUBST(APXS_LIBS)
|
|
AC_SUBST(APXS_CFLAGS)
|
|
AC_SUBST(APXS_LIBTOOL)
|
|
AC_SUBST(APXS_CC)
|
|
AC_SUBST(APXS_LIBDIR)
|
|
AC_SUBST(APXS_BINDIR)
|
|
AC_SUBST(APXS_SBINDIR)
|
|
AC_SUBST(APXS_PROGNAME)
|
|
AC_SUBST(APXS_LIBEXECDIR)
|
|
AC_SUBST(APXS_HTTPD)
|
|
|
|
CHECK_PCRE()
|
|
CHECK_APR()
|
|
CHECK_APU()
|
|
CHECK_LIBXML()
|
|
CHECK_LUA()
|
|
CHECK_CURL()
|
|
|
|
AC_CONFIG_FILES([Makefile])
|
|
AC_CONFIG_FILES([build/apxs-wrapper], [chmod +x build/apxs-wrapper])
|
|
if test -e "$PERL"; then
|
|
AC_CONFIG_FILES([mlogc-src/mlogc-batch-load.pl], [chmod +x mlogc-src/mlogc-batch-load.pl])
|
|
AC_CONFIG_FILES([t/run-unit-tests.pl], [chmod +x t/run-unit-tests.pl])
|
|
AC_CONFIG_FILES([t/run-regression-tests.pl], [chmod +x t/run-regression-tests.pl])
|
|
AC_CONFIG_FILES([t/gen_rx-pm.pl], [chmod +x t/gen_rx-pm.pl])
|
|
AC_CONFIG_FILES([t/csv_rx-pm.pl], [chmod +x t/csv_rx-pm.pl])
|
|
AC_CONFIG_FILES([t/regression/server_root/conf/httpd.conf])
|
|
|
|
# Perl based tools
|
|
AC_CONFIG_FILES([../tools/rules-updater.pl], [chmod +x ../tools/rules-updater.pl])
|
|
fi
|
|
if test -e "mlogc-src/Makefile.in"; then
|
|
AC_CONFIG_FILES([mlogc-src/Makefile])
|
|
fi
|
|
|
|
AC_OUTPUT
|