# Process this file with autoconf to produce a configure script. # Portions of this file were adapted from GIMP. AC_PREREQ(2.54) m4_define([tinyproxy_version], esyscmd(sh scripts/version.sh | tr -d '\n')) AC_INIT([Tinyproxy], [tinyproxy_version], [https://tinyproxy.github.io/], [tinyproxy]) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([dist-bzip2 dist-xz]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4macros]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) dnl Temporarily defined here until we get tinyproxy-version.h AC_DEFINE(TINYPROXY_VERSION, "tinyproxy_version", [Tinyproxy version number]) dnl Check if we're compiling on a weird platform :) AC_USE_SYSTEM_EXTENSIONS dnl Set the domain name for find the statistics of tinyproxy AH_TEMPLATE([TINYPROXY_STATHOST], [This controls remote proxy stats display.]) AC_ARG_WITH(stathost, [AC_HELP_STRING([--with-stathost=HOST], [Default status host])], [AC_DEFINE_UNQUOTED(TINYPROXY_STATHOST, "$withval") TINYPROXY_STATHOST="$withval"], [AC_DEFINE_UNQUOTED(TINYPROXY_STATHOST, "tinyproxy.stats") TINYPROXY_STATHOST="tinyproxy.stats"]) AC_SUBST(TINYPROXY_STATHOST) dnl Add compiler-specific optimization flags TP_ARG_ENABLE(debug, [Enable debugging support code and methods (default is NO)], no) dnl Check to see if the XTinyproxy header is to be included AH_TEMPLATE([XTINYPROXY_ENABLE], [Define if you want to have the peer's IP address included in a XTinyproxy header sent to the server.]) TP_ARG_ENABLE(xtinyproxy, [Include the X-Tinyproxy header (default is YES)], yes) if test x"$xtinyproxy_enabled" = x"yes"; then AC_DEFINE(XTINYPROXY_ENABLE) fi dnl Include filtering for domain/URLs AH_TEMPLATE([FILTER_ENABLE], [Defined if you would like filtering code included.]) TP_ARG_ENABLE(filter, [Enable filtering of domains/URLS (default is YES)], yes) if test x"$filter_enabled" = x"yes"; then ADDITIONAL_OBJECTS="$ADDITIONAL_OBJECTS filter.o" AC_DEFINE(FILTER_ENABLE) fi dnl Include support for upstream proxies? AH_TEMPLATE([UPSTREAM_SUPPORT], [Include support for connecting to an upstream proxy.]) TP_ARG_ENABLE(upstream, [Enable upstream proxying (default is YES)], yes) if test x"$upstream_enabled" = x"yes"; then AC_DEFINE(UPSTREAM_SUPPORT) fi dnl Include support for reverse proxy? AH_TEMPLATE([REVERSE_SUPPORT], [Include support for reverse proxy.]) TP_ARG_ENABLE(reverse, [Enable reverse proxying (default is YES)], yes) if test x"$reverse_enabled" = x"yes"; then ADDITIONAL_OBJECTS="$ADDITIONAL_OBJECTS reverse-proxy.o" AC_DEFINE(REVERSE_SUPPORT) fi dnl Include the transparent proxy support AH_TEMPLATE([TRANSPARENT_PROXY], [Include support for using tinyproxy as a transparent proxy.]) TP_ARG_ENABLE(transparent, [Enable transparent proxying code (default is YES)], yes) if test x"$transparent_enabled" = x"yes"; then ADDITIONAL_OBJECTS="$ADDITIONAL_OBJECTS transparent-proxy.o" AC_DEFINE(TRANSPARENT_PROXY) fi # This is required to build test programs below AC_PROG_CC dnl dnl Checks for libraries dnl AC_CHECK_LIB(socket, socket, , [AC_CHECK_LIB(socket, htonl)]) dnl Some systems (OpenServer 5) dislike -lsocket -lnsl, so we try to dnl avoid -lnsl checks, if we already have the functions which are dnl usually in libnsl unset ac_cv_func_yp_get_default_domain AC_CHECK_FUNC(yp_get_default_domain, tinyproxy_no_nsl_checks=yes, tinyproxy_no_nsl_checks=no) unset ac_cv_func_yp_get_default_domain if test x"$tinyproxy_no_nsl_checks" != x"yes"; then AC_CHECK_LIB(nsl, gethostname, , [AC_CHECK_LIB(nsl, gethostbyaddr)]) fi AC_CHECK_LIB(resolv, inet_aton) dnl dnl Checks for headers dnl AC_HEADER_STDC AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([sys/ioctl.h alloca.h memory.h malloc.h sysexits.h \ values.h]) dnl Checks for libary functions AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([inet_ntoa strdup]) AC_CHECK_FUNCS([strlcpy strlcat setgroups]) dnl Enable extra warnings DESIRED_FLAGS="-fdiagnostics-show-option -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wfloat-equal -Wundef -Wformat=2 -Wlogical-op -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Waggregate-return -Winit-self -Wpacked --std=c89 -ansi -Wno-overlength-strings -Wno-long-long -Wno-overlength-strings -Wdeclaration-after-statement -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-qual -Wcast-align -Wwrite-strings -Wp,-D_FORTIFY_SOURCE=2 -fno-common" if test -n "${MAINTAINER_MODE_FALSE}"; then DESIRED_FLAGS="-Werror $DESIRED_FLAGS" fi for flag in $DESIRED_FLAGS; do AS_COMPILER_FLAG([$flag], [CFLAGS="$CFLAGS $flag"]) done dnl Disable debugging if it's not specified if test x"$debug_enabled" != x"yes" ; then CFLAGS="-DNDEBUG $CFLAGS" fi AS_ECHO_N(["checking to see if linker understands -z,defs... "]) LDFLAGS_OLD="-Wl $LDFLAGS" LDFLAGS="-Wl,-z,defs $LDFLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM()], AS_ECHO("yes"), AS_ECHO("no"); LDFLAGS="$LDFLAGS_OLD") dnl dnl Make sure we can actually handle the "--with-*" and "--enable-*" stuff. dnl dnl dnl Substitute the variables into the various Makefiles dnl AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LIBS) AC_SUBST(ADDITIONAL_OBJECTS) # Check for xml tools AC_PATH_PROG(XSLTPROC, xsltproc, no) AM_CONDITIONAL(HAVE_XSLTPROC, test "x$XSLTPROC" != "xno") # Check for asciidoc AC_PATH_PROG(A2X, a2x, no) AM_CONDITIONAL(HAVE_A2X, test "x$A2X" != "xno") # checking xmllint AC_PATH_PROG(XMLLINT, xmllint, no) if test "x$XMLLINT" != "xno"; then AS_ECHO_N("testing xmllint... ") echo "TEST" > conftest.txt if $A2X -f docbook conftest.txt 2>/dev/null; then AS_ECHO("ok") else AS_ECHO("failed") XMLLINT="no" fi rm -f conftest.txt conftest.xml fi AM_CONDITIONAL(HAVE_XMLLINT, test "x$XMLLINT" != "xno") AC_CONFIG_FILES([ Makefile src/Makefile data/Makefile data/templates/Makefile etc/Makefile docs/Makefile docs/man5/Makefile docs/man5/tinyproxy.conf.txt docs/man8/Makefile docs/man8/tinyproxy.txt m4macros/Makefile tests/Makefile tests/scripts/Makefile scripts/Makefile ]) AC_OUTPUT # the manpages are shipped in the release tarball and we don't want them to # get regenerated if a2x is not available. the intermediate files from # AC_CONFIG_FILES are created with config.status, which is created at configure # runtime, so we need to touch them after config.status terminated to prevent # make from rebuild them. if test "x$A2X" = "xno"; then touch docs/man5/tinyproxy.conf.txt touch docs/man8/tinyproxy.txt if test -e docs/man5/tinyproxy.conf.5 ; then touch docs/man5/tinyproxy.conf.5 fi if test -e docs/man8/tinyproxy.8 ; then touch docs/man8/tinyproxy.8 fi fi