summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--configure.ac275
1 files changed, 275 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..1ad3308
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,275 @@
+
+dnl ----------------------
+dnl Initialization macros
+dnl ----------------------
+
+AC_INIT([LibHTP], m4_esyscmd([./get-version.sh VERSION]))
+AM_INIT_AUTOMAKE()
+
+AC_CONFIG_HEADERS([htp_config_auto_gen.h])
+AC_CONFIG_FILES([htp/htp_version.h])
+
+
+dnl -----------------------------------------------
+dnl Package name and version number (user defined)
+dnl -----------------------------------------------
+
+GENERIC_LIBRARY_NAME=htp
+
+# This is _NOT_ the library release version, it's an API version.
+GENERIC_LIBRARY_VERSION=2:0:0
+# | | |
+# +------+ | +---+
+# | | |
+# current:revision:age
+# | | |
+# | | +- increment if interfaces have been added
+# | | set to zero if interfaces have been removed
+# | | or changed
+# | +- increment if source code has changed
+# | set to zero if current is incremented
+# +- increment if interfaces have been added, removed or changed
+AC_SUBST(GENERIC_LIBRARY_VERSION)
+
+dnl --------------------------------
+dnl Package name and version number
+dnl --------------------------------
+
+PACKAGE=$GENERIC_LIBRARY_NAME
+AC_SUBST(GENERIC_LIBRARY_NAME)
+
+GENERIC_VERSION=$PACKAGE_VERSION
+GENERIC_RELEASE=$PACKAGE_VERSION
+AC_SUBST(GENERIC_RELEASE)
+AC_SUBST(GENERIC_VERSION)
+
+VERSION=$GENERIC_VERSION
+
+AC_CONFIG_MACRO_DIR([m4])
+
+dnl --------------------------------
+dnl Options
+dnl --------------------------------
+
+AC_ARG_ENABLE(debug, [ --enable-debug Enable debug mode],, [ enable_debug=no ])
+if test "x$enable_debug" = "xyes"; then
+ CFLAGS="${CFLAGS} -DHTP_DEBUG"
+ echo "Debug mode enabled"
+fi
+
+OLEVEL=2
+
+AC_ARG_ENABLE(devmode, [ --enable-devmode Enable development mode],, [ enable_devmode=no ])
+if test "$enable_devmode" = "yes"; then
+ OLEVEL=0
+ CFLAGS="${CFLAGS} -Werror -Wfatal-errors"
+ CPPFLAGS="${CPPFLAGS} -Werror -Wfatal-errors"
+ echo "Development mode enabled"
+fi
+
+AC_ARG_ENABLE(gcov, [ --enable-gcov Enable gcov support],, [ enable_gcov=no ])
+if test "$enable_gcov" = "yes"; then
+ OLEVEL=0
+ CFLAGS="${CFLAGS} --coverage -fprofile-arcs -ftest-coverage"
+ CPPFLAGS="${CPPFLAGS} --coverage -fprofile-arcs -ftest-coverage"
+ LDFLAGS="${LDFLAGS} -lgcov --coverage -fprofile-arcs"
+ echo "gcov support enabled"
+fi
+
+CFLAGS="${CFLAGS} -O${OLEVEL}"
+CPPFLAGS="${CPPFLAGS} -O${OLEVEL}"
+
+dnl -----------------------------------------------
+dnl Checks for programs.
+dnl -----------------------------------------------
+
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_CXX
+AM_PROG_LIBTOOL
+AM_SANITY_CHECK
+
+# Checks for library functions
+#AC_CHECK_FUNCS([strlcpy strlcat])
+ OCFLAGS=$CFLAGS
+ CFLAGS=""
+ AC_CHECK_FUNCS([strlcpy strlcat])
+ CFLAGS=$OCFLAGS
+
+dnl -----------------------------------------------
+dnl Checks for libs.
+dnl -----------------------------------------------
+AC_CHECK_HEADER(zlib.h,,[AC_ERROR(zlib.h not found ...)])
+ZLIB=""
+AC_CHECK_LIB(z, inflate,, ZLIB="no")
+if test "$ZLIB" = "no"; then
+ echo
+ echo " ERROR! zlib library not found"
+ echo
+ exit 1
+fi
+
+# Determine the OS
+AC_MSG_CHECKING([OS])
+OS=`uname -s`
+case "$OS" in
+ MINGW*)
+ AC_MSG_RESULT(MinGW)
+ OS_WINDOWS="true"
+ NO_STACK_PROTECTOR="true"
+ ;;
+ MSYS*)
+ AC_MSG_RESULT(MSYS)
+ OS_WINDOWS="true"
+ NO_STACK_PROTECTOR="true"
+ ;;
+ CYGWIN*)
+ AC_MSG_RESULT(Cygwin)
+ OS_CYGWIN="true"
+ NO_STACK_PROTECTOR="true"
+ ;;
+ FreeBSD*)
+ AC_MSG_RESULT(FreeBSD)
+ OS_FREEBSD="true"
+ CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
+ LDFLAGS="${LDFLAGS} -L/usr/local/lib"
+ ;;
+ OpenBSD*)
+ AC_MSG_RESULT(OpenBSD)
+ OS_OPENBSD="true"
+ CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
+ LDFLAGS="${LDFLAGS} -L/usr/local/lib"
+ ;;
+ Linux*)
+ AC_MSG_RESULT(Linux)
+ OS_LINUX="true"
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ ;;
+esac
+#We need to call the iconv macro after OS detection for FreeBSD to work properly
+sinclude(m4/iconv.m4)
+sinclude(m4/lib-ld.m4)
+sinclude(m4/lib-link.m4)
+sinclude(m4/lib-prefix.m4)
+AM_ICONV
+AM_CONDITIONAL([CYGWIN], [test x${OS_CYGWIN} = xtrue])
+
+# iconvctl is not standard, it is defined only in GNU libiconv
+AC_MSG_CHECKING(for iconvctl)
+TMPLIBS="${LIBS}"
+LIBS="${LIBS} ${LIBICONV}"
+
+AC_TRY_LINK([#include <stdlib.h>
+ #include <iconv.h>],
+ [int iconv_param = 0;
+ iconv_t cd = iconv_open("","");
+ iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &iconv_param);
+ iconv_close(cd);],
+ [ac_cv_func_iconvctl=yes])
+AC_MSG_RESULT($ac_cv_func_iconvctl)
+if test "$ac_cv_func_iconvctl" == yes; then
+ AC_DEFINE(HAVE_ICONVCTL,1,"Define to 1 if you have the `iconvctl' function.")
+fi
+LIBS="${TMPLIBS}"
+
+dnl -----------------------------------------------
+dnl Check and enable the GCC opts we want to use.
+dnl We may need to add more checks
+dnl -----------------------------------------------
+
+dnl -----------------------------------------------
+dnl Check for GCC signed overflow warning support
+dnl -----------------------------------------------
+AC_MSG_CHECKING(for gcc support of -Wstrict-overflow=1)
+TMPCFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -Wstrict-overflow=1"
+AC_TRY_COMPILE(,,[gcc_have_strict_overflow=yes],[gcc_have_strict_overflow=no])
+AC_MSG_RESULT($gcc_have_strict_overflow)
+if test "$gcc_have_strict_overflow" != "yes"; then
+ CFLAGS="${TMPCFLAGS}"
+fi
+
+if test "$NO_STACK_PROTECTOR" != "true"; then
+dnl -----------------------------------------------
+dnl Check for GCC stack smashing protection
+dnl -----------------------------------------------
+AC_MSG_CHECKING(for gcc support of stack smashing protection)
+TMPCFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -fstack-protector"
+AC_TRY_COMPILE(,,[gcc_have_fstack_protector=yes],[gcc_have_fstack_protector=no])
+AC_MSG_RESULT($gcc_have_fstack_protector)
+if test "$gcc_have_fstack_protector" != "yes"; then
+ CFLAGS="${TMPCFLAGS}"
+fi
+fi
+
+dnl -----------------------------------------------
+dnl Check for GCC -D_FORTIFY_SOURCE support
+dnl -----------------------------------------------
+AC_MSG_CHECKING(for gcc support of FORTIFY_SOURCE)
+TMPCFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -D_FORTIFY_SOURCE=2"
+AC_TRY_COMPILE(,,[gcc_have_fortify_source=yes],[gcc_have_fortify_source=no])
+AC_MSG_RESULT($gcc_have_fortify_source)
+if test "$gcc_have_fortify_source" != "yes"; then
+ CFLAGS="${TMPCFLAGS}"
+fi
+
+dnl -----------------------------------------------
+dnl Check for GCC -Wformat-security support
+dnl -----------------------------------------------
+AC_MSG_CHECKING(for gcc support of -Wformat -Wformat-security)
+TMPCFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -Wformat -Wformat-security"
+AC_TRY_COMPILE(,,[gcc_have_format_security=yes],[gcc_have_format_security=no])
+AC_MSG_RESULT($gcc_have_format_security)
+if test "$gcc_have_format_security" != "yes"; then
+ CFLAGS="${TMPCFLAGS}"
+fi
+
+AC_MSG_CHECKING(for gcc support of -fPIC)
+TMPCFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -fPIC"
+AC_TRY_COMPILE(,,[gcc_have_fpic=yes],[gcc_have_fpic=no])
+AC_MSG_RESULT($gcc_have_fpic)
+if test "$gcc_have_fpic" != "yes"; then
+ CFLAGS="${TMPCFLAGS}"
+fi
+
+dnl -----------------------------------------------
+dnl Check for doxygen
+dnl -----------------------------------------------
+AC_ARG_WITH([doxygen],
+ [ --with-doxygen=PROG doxygen executable],
+ [doxygen="$withval"],[doxygen=no])
+
+if test "$doxygen" != "no"; then
+ AC_MSG_NOTICE([Using doxygen: $doxygen])
+else
+ AC_PATH_PROGS([doxygen],[doxygen],[])
+fi
+
+DOXYGEN=$doxygen
+AC_SUBST(DOXYGEN)
+
+dnl -----------------------------------------------
+dnl Check for lcov
+dnl -----------------------------------------------
+AC_PATH_PROG(LCOV, lcov, [no])
+AC_SUBST(LCOV)
+
+
+dnl -----------------------------------------------
+dnl Generates Makefiles, configuration files and scripts
+dnl -----------------------------------------------
+
+AC_PREFIX_DEFAULT(/usr/local)
+AC_OUTPUT(Makefile \
+ htp.pc \
+ htp/Makefile \
+ htp/lzma/Makefile \
+ test/Makefile \
+ docs/Makefile
+)