mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-14 05:45:59 +03:00
This commit makes it possible to build ModSecurity on systems where /bin/sh is a POSIX-compliant shell that is not Bash. Debian, Alpine Linux, and Gentoo Linux with the system shell set to not Bash, are examples of such systems. Previously, the helper macros contained two types of Bashisms: * The '==' comparison operator. Very easy to change, as the proper POSIX-compliant form is '='. For example: if test "${var}" == "myvalue" -> if test "${var}" = "myvalue" * The '-a' (and) operator in the 'test' builtin. The '-a' and '-o' operators were removed in POSIX 2024 (Issue 8). The correct form is to use the '&&' and '||' operators respectively. For instance: if test -d "${var}" -a -r "${var}/file" -> if test -d "${var}" && test -r "${var}/file" Bug: https://bugs.gentoo.org/887135 Signed-off-by: Zurab Kvachadze <zurabid2016@gmail.com>
128 lines
3.9 KiB
Plaintext
128 lines
3.9 KiB
Plaintext
dnl Check for PCRE Libraries
|
|
dnl CHECK_PCRE(ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
|
dnl Sets:
|
|
dnl PCRE_CFLAGS
|
|
dnl PCRE_LIBS
|
|
|
|
PCRE_CONFIG=""
|
|
PCRE_VERSION=""
|
|
PCRE_CPPFLAGS=""
|
|
PCRE_CFLAGS=""
|
|
PCRE_LDFLAGS=""
|
|
PCRE_LDADD=""
|
|
PCRE_LD_PATH=""
|
|
|
|
AC_DEFUN([CHECK_PCRE],
|
|
[dnl
|
|
|
|
AC_ARG_WITH(
|
|
pcre,
|
|
[AS_HELP_STRING([--with-pcre=PATH],[Path to pcre prefix or config script])],
|
|
[test_paths="${with_pcre}"],
|
|
[test_paths="/usr/local/libpcre /usr/local/pcre /usr/local /opt/libpcre /opt/pcre /opt /usr /opt/local"])
|
|
|
|
if test "x${with_pcre}" = "x" && test "x${with_pcre}" != "xno"; then
|
|
AC_MSG_NOTICE([Support for pcre not requested; omitting check for pcre])
|
|
else
|
|
|
|
AC_MSG_CHECKING([for libpcre config script])
|
|
|
|
AC_CHECK_PROG([PCRE_CONFIG_IN_ENV], [pcre-config], [yes], [no])
|
|
|
|
if test "$PCRE_CONFIG_IN_ENV" = "yes"; then
|
|
AC_MSG_NOTICE([pcre-config found in envinronment])
|
|
|
|
PCRE_CONFIG=pcre-config
|
|
pcre_path="no"
|
|
else
|
|
AC_MSG_NOTICE([pcre-config not found in environment. checking known paths])
|
|
|
|
for x in ${test_paths}; do
|
|
dnl # Determine if the script was specified and use it directly
|
|
if test ! -d "$x" && test -e "$x"; then
|
|
PCRE_CONFIG=$x
|
|
pcre_path="no"
|
|
break
|
|
fi
|
|
|
|
dnl # Try known config script names/locations
|
|
for PCRE_CONFIG in pcre-config; do
|
|
if test -e "${x}/bin/${PCRE_CONFIG}"; then
|
|
pcre_path="${x}/bin"
|
|
break
|
|
elif test -e "${x}/${PCRE_CONFIG}"; then
|
|
pcre_path="${x}"
|
|
break
|
|
else
|
|
pcre_path=""
|
|
fi
|
|
done
|
|
if test -n "$pcre_path"; then
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if test -n "${pcre_path}"; then
|
|
if test "${pcre_path}" != "no"; then
|
|
PCRE_CONFIG="${pcre_path}/${PCRE_CONFIG}"
|
|
fi
|
|
AC_MSG_RESULT([${PCRE_CONFIG}])
|
|
PCRE_VERSION="`${PCRE_CONFIG} --version`"
|
|
if test ! -z "${PCRE_VERSION}"; then AC_MSG_NOTICE(pcre VERSION: $PCRE_VERSION); fi
|
|
PCRE_CFLAGS="`${PCRE_CONFIG} --cflags`"
|
|
if test ! -z "${PCRE_CFLAGS}"; then AC_MSG_NOTICE(pcre CFLAGS: $PCRE_CFLAGS); fi
|
|
PCRE_LDADD="`${PCRE_CONFIG} --libs`"
|
|
if test ! -z "${PCRE_LDADD}"; then AC_MSG_NOTICE(pcre LDADD: $PCRE_LDADD); fi
|
|
PCRE_LD_PATH="/`${PCRE_CONFIG} --libs | cut -d'/' -f2,3,4,5,6 | cut -d ' ' -f1`"
|
|
if test ! -z "${PCRE_LD_PATH}"; then AC_MSG_NOTICE(pcre PCRE_LD_PATH: $PCRE_LD_PATH); fi
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
|
|
if test -n "${PCRE_VERSION}"; then
|
|
AC_MSG_CHECKING(for PCRE JIT)
|
|
save_CFLAGS=$CFLAGS
|
|
save_LDFLAGS=$LDFLAGS
|
|
save_LIBS=$LIBS
|
|
CFLAGS="${PCRE_CFLAGS} ${CFLAGS}"
|
|
LDFLAGS="${PCRE_LDADD} ${LDFLAGS}"
|
|
LIBS="${PCRE_LDADD} ${LIBS}"
|
|
AC_LINK_IFELSE(
|
|
[AC_LANG_PROGRAM([[ #include <pcre.h> ]],
|
|
[[ pcre_jit_exec(NULL, NULL, NULL, 0, 0, 0, NULL, 0, NULL); ]])],
|
|
[ pcre_jit_available=yes ],
|
|
[:]
|
|
)
|
|
|
|
if test "x$pcre_jit_available" = "xyes"; then
|
|
AC_MSG_RESULT(yes)
|
|
PCRE_CFLAGS="${PCRE_CFLAGS} -DPCRE_HAVE_JIT"
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
CFLAGS=$save_CFLAGS
|
|
LDFLAGS=$save_LDFLAGS
|
|
LIBS=$save_LIBS
|
|
fi
|
|
|
|
PCRE_CFLAGS="-DWITH_PCRE ${PCRE_CFLAGS}"
|
|
AC_SUBST(PCRE_CONFIG)
|
|
AC_SUBST(PCRE_VERSION)
|
|
AC_SUBST(PCRE_CPPFLAGS)
|
|
AC_SUBST(PCRE_CFLAGS)
|
|
AC_SUBST(PCRE_LDFLAGS)
|
|
AC_SUBST(PCRE_LDADD)
|
|
AC_SUBST(PCRE_LD_PATH)
|
|
|
|
if test -z "${PCRE_VERSION}"; then
|
|
AC_MSG_NOTICE([*** pcre library not found.])
|
|
ifelse([$2], , AC_MSG_ERROR([pcre library is required]), $2)
|
|
else
|
|
AC_MSG_NOTICE([using pcre v${PCRE_VERSION}])
|
|
ifelse([$1], , , $1)
|
|
PCRE_LDADD="${PCRE_LDADD} -lpcre"
|
|
fi
|
|
fi
|
|
])
|