blob: 560e1d5368c8a8df09115aadc27ed32dafd65582 [file] [log] [blame]
dnl
dnl Process this file with autoconf to produce a configure script
dnl
AC_REVISION($Id$)dnl
AC_PREREQ(2.13)
AC_INIT(common/jk_worker.h)
AC_CONFIG_HEADER(common/portable.h)
AC_CONFIG_AUX_DIR(scripts/build/unix)
AC_CANONICAL_SYSTEM
dnl package and version. (synchronization with common/jk_version.h ?)
PACKAGE=mod_jk
VERSION=1.2.7
AM_INIT_AUTOMAKE(${PACKAGE}, ${VERSION})
AC_PROG_CC
AC_PROG_LD
dnl Not sure what it does, but the libtool manual seems to require this
dnl It should use the native platform dlopen ( if available )
AC_LIBTOOL_DLOPEN
dnl AM_PROG_LIBTOOL often causes problems.
dnl I have solved them once using aclocal --acdir=/usr/local/share/aclocal/
AM_PROG_LIBTOOL
AC_PATH_PROG(TEST,test,$PATH)dnl
AC_SUBST(TEST)
AC_PATH_PROG(RM,rm,$PATH)dnl
AC_SUBST(RM)
AC_PATH_PROG(GREP,grep,$PATH)dnl
AC_SUBST(GREP)
AC_PATH_PROG(ECHO,echo,echo,$PATH)dnl
AC_SUBST(ECHO)
AC_PATH_PROG(SED,sed,$PATH)dnl
AC_SUBST(SED)
AC_PATH_PROG(CP,cp,$PATH)dnl
AC_SUBST(CP)
AC_PATH_PROG(MKDIR,mkdir,$PATH)dnl
AC_SUBST(MKDIR)
dnl AC_PATH_PROG(LIBTOOL,libtool,$PATH)dnl
AC_SUBST(LIBTOOL)
dnl check for snprintf and vsnprintf.
AC_CHECK_FUNC(snprintf, AC_DEFINE(HAVE_SNPRINTF,1,[Have snprintf()]))
AC_CHECK_FUNC(vsnprintf, AC_DEFINE(HAVE_VSNPRINTF,1,[Have vsnprintf()]))
APACHE_CONFIG_VARS=`pwd`/scripts/build/config_vars.mk
WEBSERVER=""
apache_dir=""
apache_include=""
APXS="apxs"
AC_ARG_WITH(apxs,
[ --with-apxs[=FILE] Build shared Apache module. FILE is the optional
pathname to the apxs tool; defaults to finding
apxs in your PATH.],
[
case "${withval}" in
y | yes | true) find_apxs=true ;;
n | no | false) find_apxs=false ;;
*) find_apxs=false ;;
esac
if ${TEST} ${find_apxs} ; then
AC_MSG_RESULT([need to check for Perl first, apxs depends on it...])
AC_PATH_PROG(PERL,perl,$PATH)dnl
if ${TEST} ${find_apxs} ; then
APXS=${withval}
else
AC_PATH_PROG(APXS,apxs,$PATH)dnl
fi
if ${TEST} -n "${APXS}" ; then
dnl Seems that we have it, but have to check if it is OK first
if ${TEST} ! -x "${APXS}" ; then
AC_MSG_ERROR(Invalid location for apxs: '${APXS}')
fi
${APXS} -q PREFIX >/dev/null 2>/dev/null || apxs_support=false
if ${TEST} "${apxs_support}" = "false" ; then
AC_MSG_RESULT(could not find ${APXS})
AC_MSG_ERROR(You must specify a valid --with-apxs path)
fi
dnl apache_dir and apache_include are also needed.
apache_dir=`$APXS -q PREFIX`
apache_include="-I`$APXS -q INCLUDEDIR`"
dnl test apache version
APA=`${GREP} STANDARD20 ${APXS}`
if ${TEST} -z "$APA" ; then
WEBSERVER="apache-1.3"
APXSCFLAGS=`$APXS -q CFLAGS`
APXS_CPPFLAGS=""
else
WEBSERVER="apache-2.0"
APRINCLUDEDIR="-I`$APXS -q APR_INCLUDEDIR`"
APXSCFLAGS="`${APXS} -q CFLAGS` `${APXS} -q EXTRA_CFLAGS` -DHAVE_APR ${APRINCLUDEDIR}"
APXSCPPFLAGS="`${APXS} -q EXTRA_CPPFLAGS`"
APACHE_CONFIG_VARS="`${APXS} -q exp_installbuilddir`/config_vars.mk"
LIBTOOL=`$APXS -q LIBTOOL`
fi
AC_MSG_RESULT([building connector for \"$WEBSERVER\"])
AC_SUBST(APXS)
fi
fi
],
[
AC_MSG_RESULT(no apxs given)
])
AC_SUBST(APACHE_CONFIG_VARS)
dnl Apache-2.0 needs the os subdirectory to include os.h
dnl this include is copy from os/config.m4
sinclude(../../common/build/os_apache.m4)
dnl it is copied from the configure of JServ ;=)
dnl and adapted.
apache_dir_is_src="false"
AC_ARG_WITH(apache,
[ --with-apache=DIR Build static Apache module. DIR is the pathname
to the Apache source directory.],
[
if ${TEST} ! -z "$WEBSERVER" ; then
AC_MSG_ERROR([Sorry cannot use --with-apxs=${APXS} and --with-apache=${withval} togother, please choose one of both])
fi
AC_MSG_CHECKING([for Apache source directory (assume static build)])
if ${TEST} -n "${withval}" && ${TEST} -d "${withval}" ; then
if ${TEST} -d "${withval}/src" ; then
# handle the case where people use relative paths to
# the apache source directory by pre-pending the current
# build directory to the path. there are probably
# errors with this if configure is run while in a
# different directory than what you are in at the time
if ${TEST} -n "`${ECHO} ${withval}|${GREP} \"^\.\.\"`" ; then
withval=`pwd`/${withval}
fi
apache_dir=${withval}
apache_dir_is_src="true"
AC_MSG_RESULT(${apache_dir})
AC_MSG_CHECKING(for Apache include directory)
if ${TEST} -d "${withval}/src/include" ; then
# read osdir from the existing apache.
osdir=`${GREP} '^OSDIR=' ${withval}/src/Makefile.config | ${SED} -e 's:^OSDIR=.*/os:os:'`
if ${TEST} -z "${osdir}" ; then
osdir=os/unix
fi
apache_include="-I${withval}/src/include \
-I${withval}/src/${osdir}"
WEBSERVER="apache-1.3"
LIB_JK_TYPE=mod_jk.a
AC_MSG_RESULT([${apache_include}, version 1.3])
else
AC_MSG_ERROR([Sorry Apache 1.2.x is no longer supported.])
fi
else
if ${TEST} -d "${withval}/include" ; then
# osdir for Apache20.
WEBSERVER="apache-2.0"
apache_dir=${withval}
apache_dir_is_src="true"
LIB_JK_TYPE=lib_jk.la
apache_include="-I${withval}/include -I${withval}/srclib/apr/include -I${withval}/os/${OS_APACHE_DIR} -I${withval}/srclib/apr-util/include"
AC_MSG_RESULT(${apache_dir})
fi
fi
fi
dnl Make sure we have a result.
if ${TEST} -z "$WEBSERVER" ; then
AC_MSG_ERROR([Directory $apache_dir is not a valid Apache source distribution])
fi
# VT: Now, which one I'm supposed to use? Let's figure it out later
configure_apache=true
configure_src=true
AC_MSG_RESULT([building connector for \"$WEBSERVER\"])
],
[
AC_MSG_RESULT(no apache given)
])
AC_SUBST(apache_include)
APACHE_DIR=${apache_dir}
AC_SUBST(APACHE_DIR)
dnl Check for enable-jni
JK_JNI_WORKER=""
AC_ARG_ENABLE(jni,
[ --enable-jni Build jni_connect.so and enable jni_worker.],
[
AC_MSG_RESULT(jni enable (need JDK))
CFLAGS="${CFLAGS} -DHAVE_JNI"
JK_JNI_WORKER="\${JK}jk_jni_worker\${OEXT}"
])dnl
AC_SUBST(JK_JNI_WORKER)
dnl CFLAGS for EAPI mod_ssl (Apache 1.3)
dnl it also allows the CFLAGS environment variable.
CFLAGS="${CFLAGS}"
AC_ARG_ENABLE(
EAPI,
[ --enable-EAPI Enable EAPI support (mod_ssl, Apache 1.3)],
[
case "${enableval}" in
y | Y | YES | yes | TRUE | true )
CFLAGS="${CFLAGS} -DEAPI"
AC_MSG_RESULT([...Enabling EAPI Support...])
;;
esac
])
AC_SUBST(CFLAGS)
dnl the APXSCFLAGS is given by apxs to the C compiler
dnl the APXSLDFLAGS is given to the linker (for APRVARS).
dnl APXSLDFLAGS=""
dnl APXSCFLAGS=""
if ${TEST} -n "${CFLAGS}" ; then
APXSCFLAGS="${APXSCFLAGS} ${CFLAGS}"
fi
dnl the APXSLDFLAGS is normaly empty but APXSCFLAGS is not.
if ${TEST} -n "${LDFLAGS}" ; then
APXSLDFLAGS="-Wl,${LDFLAGS}"
fi
AC_SUBST(APXSCFLAGS)
AC_SUBST(APXSCPPFLAGS)
AC_SUBST(APXSLDFLAGS)
if ${TEST} -n "${JK_JNI_WORKER}" ; then
WEBSERVER="jni ${WEBSERVER}"
dnl Find the JDK
dnl Results go in JAVA_HOME
dnl Also sets JAVA_PLATFORM to 1 for 1.1 and to 2 for 1.2
AC_MSG_CHECKING([for JDK location (please wait)])
dnl The order is: --with-java-home first, environment second, guessed value third.
dnl This is a safe default. Could screw up on the security features, but
dnl oh well, this is what --with-java2 is for.
if ${TEST} -n "${JAVA_HOME}" ; then
JAVA_HOME_ENV="${JAVA_HOME}"
else
JAVA_HOME_ENV=""
fi
JAVA_HOME=""
JAVA_PLATFORM="1"
AC_ARG_WITH(java-home,
[ --with-java-home=DIR Where is your JDK root directory.],
[
# This stuff works if the command line parameter --with-java-home was
# specified, so it takes priority rightfully.
JAVA_HOME=${withval}
if ${TEST} ! -d "${JAVA_HOME}" ; then
AC_MSG_ERROR(Not a directory: ${JAVA_HOME})
fi
AC_MSG_RESULT(${JAVA_HOME})
],
[
# This works if the parameter was NOT specified, so it's a good time
# to see what the enviroment says.
# Since Sun uses JAVA_HOME a lot, we check it first and ignore the
# JAVA_HOME, otherwise just use whatever JAVA_HOME was specified.
if ${TEST} -n "${JAVA_HOME_ENV}" ; then
JAVA_HOME=${JAVA_HOME_ENV}
AC_MSG_RESULT(${JAVA_HOME_ENV} from environment)
fi
])
if ${TEST} -z "${JAVA_HOME}" ; then
# Oh well, nobody set neither JAVA_HOME nor JAVA_HOME, have to guess
# The following code is based on the code submitted by Henner Zeller
# for ${srcdir}/src/scripts/package/rpm/ApacheJServ.spec
# Two variables will be set as a result:
#
# JAVA_HOME
# JAVA_PLATFORM
AC_MSG_CHECKING([Try to guess JDK location])
for JAVA_PREFIX in \
/usr/local \
/usr/local/lib \
/usr \
/usr/lib \
/opt \
/
do
for JAVA_PLATFORM in 3 2 1 ;
do
for subversion in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ;
do
for VARIANT in IBMJava2- java java- jdk jdk-;
do
GUESS="${JAVA_PREFIX}/${VARIANT}1.${JAVA_PLATFORM}${subversion}"
dnl AC_MSG_CHECKING([${GUESS}])
if ${TEST} -d "${GUESS}/bin" \
&& ${TEST} -d "${GUESS}/include" ; then
JAVA_HOME="${GUESS}"
AC_MSG_RESULT([${GUESS}])
break
fi
done
if ${TEST} -n "${JAVA_HOME}" ; then
break;
fi
done
if ${TEST} -n "${JAVA_HOME}" ; then
break;
fi
done
if ${TEST} -n "${JAVA_HOME}" ; then
break;
fi
done
if ${TEST} -n "${JAVA_HOME}" ; then
dnl Just to have the messages looking uniformly
AC_MSG_CHECKING(Java platform)
AC_MSG_RESULT([guess ${JAVA_PLATFORM}])
fi
else
AC_MSG_CHECKING(Java platform)
AC_ARG_WITH(java-platform,
[ --with-java-platform=VAL Force the Java platorm
(value is 1 for 1.1.x or 2 for 1.2.x or greater)],
[
dnl This requires a bit of tweaking to be handled properly, but
dnl the default is good enough
JAVA_PLATFORM="2"
])
AC_MSG_RESULT(forced Java ${JAVA_PLATFORM})
fi
dnl end of JServ ;=)
dnl test if --enable-jni give but not valid JAVA_HOME
if ${TEST} -z "${JAVA_HOME}" ; then
AC_MSG_ERROR([JDK home not found, please specify one with --with-java-home option (run ./configure --help for more options)])
fi
dnl guess OS = OS_TYPE for jni_md.h
OS=""
AC_ARG_WITH(os-type,
[ --with-os-type[=SUBDIR] Where is your JDK os-type subdirectory.],
[
OS=${withval}
if ${TEST} ! -d "${JAVA_HOME}/${OS}" ; then
AC_MSG_ERROR(Not a directory: ${JAVA_HOME}/${OS})
fi
],
[
AC_MSG_CHECKING(os_type directory)
if ${TEST} -f ${JAVA_HOME}/include/jni_md.h; then
OS=""
else
for f in ${JAVA_HOME}/include/*/jni_md.h; do
if ${TEST} -f $f; then
OS=`dirname ${f}`
OS=`basename ${OS}`
echo " ${OS}"
fi
done
if ${TEST} -z "${OS}"; then
AC_MSG_RESULT(Cannot find jni_md.h in ${JAVA_HOME}/${OS})
AC_MSG_ERROR(You should retry --with-os-type=SUBDIR)
fi
fi
])
fi
AC_SUBST(JAVA_HOME)
AC_SUBST(OS)
dnl Check that a WEBSERVER has been given
if ${TEST} -z "$WEBSERVER" ; then
AC_MSG_ERROR(Cannot find the WebServer)
fi
dnl Add common to subdir list
WEBSERVER="common ${WEBSERVER}"
AC_SUBST(WEBSERVER)
AM_CONDITIONAL(MAKE_DYNAMIC_APACHE, ${TEST} "${apache_dir_is_src}" = "false")
if ${TEST} "${apache_dir_is_src}" = "false" ; then
dnl normal apxs handling
APACHE20_OEXT=.c
LIB_JK_TYPE=mod_jk.so
INSTALL_TYPE=install_dynamic
else
dnl install static library in apache sources.
APACHE20_OEXT=.lo
INSTALL_TYPE=install_static
fi
AC_SUBST(APACHE20_OEXT)
AC_SUBST(LIB_JK_TYPE)
AC_SUBST(INSTALL_TYPE)
dnl automake needs the path it does not work with $WEBSERVER
dnl that why useless Makefiles are build.
AC_OUTPUT([
Makefile
apache-1.3/Makefile
apache-1.3/Makefile.apxs
apache-2.0/Makefile
apache-2.0/Makefile.apxs
common/Makefile
common/list.mk
jni/Makefile
])