dnl ## Process this file with autoconf to produce a configure script

AC_PREREQ(2.13)
AC_INIT(acinclude.m4)

AC_CONFIG_HEADER(include/ap_config_auto.h)
AC_CONFIG_AUX_DIR(.)
 
dnl ## This is the central place where Apache's version should be kept.
dnl AM_INIT_AUTOMAKE(apache, 2.0-dev)

VERSION="apache-2.0-dev"
	
APACHE_VERSION=$VERSION
APACHE_SUBST(APACHE_VERSION)

test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
test "$prefix" = "NONE" && prefix='/usr/local'

dnl Absolute source/build directory
abs_srcdir=`(cd $srcdir && pwd)`
abs_builddir=`pwd`

MKDIR=$abs_srcdir/srclib/apr/helpers/mkdir.sh

APACHE_CONFIG_NICE(config.nice)

dnl If the source dir is not equal to the build dir, 
dnl then we are running in VPATH mode.

if test "$abs_builddir" != "$abs_srcdir"; then
  USE_VPATH=1
fi

AC_CANONICAL_SYSTEM

dnl
dnl ## Preload our OS configuration
APR_PRELOAD
APACHE_PRELOAD

dnl
dnl Process command line arguments. This is done early in the process so the
dnl user can get feedback quickly in case of an error.
dnl
dnl ### need to move some of the arguments "up here"

dnl ## Check for programs

AC_PATH_PROG(RM, rm)
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_CHECK_TOOL(RANLIB, ranlib, true)
dnl AC_PATH_PROG(PERL_PATH, perl)

REENTRANCY_FLAGS

dnl various OS checks that apparently set required flags
AC_AIX
AC_ISC_POSIX
AC_MINIX

dnl ## Check for libraries

dnl ## Check for header files

dnl I think these are just used all over the place, so just check for
dnl them at the base of the tree. If some are specific to a single
dnl directory, they should be moved (Comment #Spoon)

dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
dnl explicitly so that the normal HAVE_xxx_H symbol is defined.

AC_HEADER_STDC
AC_CHECK_HEADERS( \
string.h \
stdlib.h \
ctype.h \
limits.h \
unistd.h \
sys/time.h \
sys/types.h \
sys/socket.h \
netinet/in.h \
netinet/tcp.h \
arpa/inet.h \
netdb.h \
pwd.h \
grp.h \
strings.h
)
AC_HEADER_SYS_WAIT

dnl ## Check for typedefs, structures, and compiler characteristics.

AC_C_CONST

dnl ## Check for library functions

dnl See Comment #Spoon

AC_CHECK_FUNCS( \
initgroups \
)

AC_CHECK_LIB(nsl, gethostbyname)
AC_CHECK_LIB(nsl, gethostname)
AC_CHECK_LIB(socket, socket)

AC_ARG_WITH(optim,[  --with-optim="FLAG"       obsolete (use OPTIM environment variable)],
        [AC_MSG_ERROR('option --with-optim is obsolete; use OPTIM environment variable instead')])

AC_ARG_WITH(port,[  --with-port=PORT        Port on which to listen (default is 80)],
        [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
	[PORT=80])

AC_ARG_WITH(debug,[  --with-debug            Turn on debugging and compile time warnings],
        [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall"; else CFLAGS="$CFLAGS -g"; fi])

AC_ARG_WITH(maintainer-mode,[  --with-maintainer-mode  Turn on debugging and compile time warnings],
        [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG"; else CFLAGS="$CFLAGS -g"; fi])

APACHE_ENABLE_LAYOUT
APACHE_ENABLE_MODULES
APACHE_ENABLE_SHARED

INCLUDES="-I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include"
if test -n "$USE_VPATH"; then
  INCLUDES="$INCLUDES -I\$(top_builddir)/include -I\$(top_builddir)/srclib/apr/include"
fi

dnl reading config stubs
esyscmd(./build/config-stubs .)

INCLUDES="$INCLUDES -I\$(top_srcdir)/os/\$(OS_DIR)"
EXTRA_LIBS="$EXTRA_LIBS $LIBS"
EXTRA_LDFLAGS="$LDFLAGS"
LIBS=""
LDFLAGS=""
APACHE_SUBST(progname)
APACHE_SUBST(EXTRA_CFLAGS)
APACHE_SUBST(EXTRA_LDFLAGS)
APACHE_SUBST(EXTRA_LIBS)
APACHE_SUBST(INCLUDES)
APACHE_SUBST(MPM_LIB)
APACHE_SUBST(OS)
APACHE_SUBST(OS_DIR)
APACHE_SUBST(BUILTIN_LIBS)

AM_DISABLE_SHARED
AM_PROG_LIBTOOL
APACHE_LIBTOOL_SILENT

if test "$apache_need_shared" = "yes"; then
  $SHELL $srcdir/ltconfig --output=shlibtool --disable-static --srcdir=$srcdir --cache-file=./config.cache $srcdir/ltmain.sh
  case $PLATFORM in
    *os390)
      CFLAGS="$CFLAGS -Wc,DLL,EXPORTALL"
      ;;
  esac
fi

AC_ARG_WITH(program-name,
[  --with-program-name     alternate executable name],[
  progname="$withval" ], [
  progname="httpd"] )

# SuExec parameters
AC_ARG_WITH(suexec-caller,
[  --with-suexec-caller    User allowed to call SuExec],[
  AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )

AC_ARG_WITH(suexec-userdir,
[  --with-suexec-userdir   User subdirectory],[
  AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )

AC_ARG_WITH(suexec-docroot,
[  --with-suexec-docroot   SuExec root directory],[
  AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )

AC_ARG_WITH(suexec-uidmin,
[  --with-suexec-uidmin    Minimal allowed UID],[
  AC_DEFINE_UNQUOTED(AP_UID_MIN, "$withval", [Minimal allowed UID] ) ] )

AC_ARG_WITH(suexec-gidmin,
[  --with-suexec-gidmin    Minimal allowed GID],[
  AC_DEFINE_UNQUOTED(AP_GID_MIN, "$withval", [Minimal allowed GID] ) ] )

AC_ARG_WITH(suexec-logfile,
[  --with-suexec-logfile   Set the logfile],[
  AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )

AC_ARG_WITH(suexec-safepath,
[  --with-suexec-safepath  Set the safepath],[
  AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )

dnl ### util_xml is always included, so we always need Expat (for now)
apache_need_expat=yes

dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
dnl AP_LIBS specifies the actual libraries. note we have some required libs.
AP_LIBS="srclib/pcre/libpcre.la srclib/apr-util/libaprutil.la $AP_LIBS"

if test "$apache_need_expat" = "yes"; then
  AP_LIB_DIRS="$AP_LIB_DIRS expat-lite"
  AP_LIBS="$AP_LIBS srclib/expat-lite/libexpat.la"
  INCLUDES="$INCLUDES -I\$(top_srcdir)/srclib/expat-lite"
fi

dnl APR should go after the other libs, so the right symbols can be picked up
AP_LIBS="$AP_LIBS srclib/apr/libapr.la"
APACHE_SUBST(AP_LIB_DIRS)
APACHE_SUBST(AP_LIBS)

AC_DEFINE(AP_USING_AUTOCONF, 1,
		[Using autoconf to configure Apache])

if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
    AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
              [This platform doesn't suffer from the thundering herd problem])
fi

dnl check for endianness
if test "$cross_compiling" = "no"; then
  AC_C_BIGENDIAN
else
  AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
		[byte order is unknown due to cross-compilation])
fi

APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
APACHE_FAST_OUTPUT(support/Makefile test/Makefile srclib/pcre/Makefile)
for i in $AP_LIB_DIRS; do
  APACHE_FAST_OUTPUT(srclib/$i/Makefile)
done

dnl ## Run configure for packages Apache uses
dnl ## This has been placed at this location for a reason.  This allows
dnl ## Apache to set some variable that APR needs (like whether to enable
dnl ## or disable threads), while still allowing APR to run and generate
dnl ## APRVARS before Apache generates it's Makefiles and the related files.
dnl ## This allows APR to detect libraries like dl and tell Apache that it
dnl ## needs to include or not include them.
RUN_SUBDIR_CONFIG_NOW(srclib/apr, "$apache_apr_flags --disable-shared")
RUN_SUBDIR_CONFIG_NOW(srclib/apr-util, "--with-apr=../apr --disable-shared")
RUN_SUBDIR_CONFIG_NOW(srclib/pcre)
. ./srclib/apr/APRVARS

dnl get the exported vars from APRUTIL
. ./srclib/apr-util/export_vars.sh
EXTRA_LIBS="$EXTRA_LIBS $APRUTIL_EXPORT_LIBS"
AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"

APACHE_GEN_CONFIG_VARS

dnl ## Build modules.c
rm -f modules.c
echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c

AC_OUTPUT_COMMANDS([
echo '/* Generated by configure */' > ${path_h}.new
echo "#define HTTPD_ROOT \"$prefix\"" >> ${path_h}.new
echo "#define SERVER_CONFIG_FILE \"conf/$progname.conf\"" >> ${path_h}.new
echo "#define APACHE_MPM_DIR \"$mpmdir\"" >> ${path_h}.new

cmp ${path_h}.new ${path_h} >/dev/null 2>&1
if test $? -ne 0 ; then
    rm -f ${path_h} && mv ${path_h}.new ${path_h} && \
    echo "Updated ${path_h}"
else
    rm -f ${path_h}.new && \
    echo "${path_h} unchanged"
fi
],[
path_h=./include/ap_config_path.h
prefix=$prefix
exec_prefix=$exec_prefix
bindir=$bindir
progname=$progname
mpmdir=$MPM_DIR
])

AC_TYPE_RLIM_T

perlbin=`$srcdir/build/PrintPath perl`
AC_SUBST(perlbin)

dnl If we are running on BSD/OS, we need to use the BSD .include syntax.

BSD_MAKEFILE=no
case "$host_alias" in
*bsdi*)
    BSD_MAKEFILE=yes;;
esac

AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl,,[
  APACHE_GEN_MAKEFILES
])

