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_AUX_DIR(scripts/build/unix) dnl package and version. (synchronization with common/jk_version.h ?) PACKAGE=mod_jk VERSION=1.2.2 AM_INIT_AUTOMAKE(${PACKAGE}, ${VERSION}) 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_PROG_CC AC_PROG_LD 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) AC_PATH_PROG(LIBTOOL,libtool,$PATH)dnl AC_SUBST(LIBTOOL) 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" APXSCFLAGS="`${APXS} -q CFLAGS` `${APXS} -q EXTRA_CFLAGS`" APXSCPPFLAGS="`${APXS} -q EXTRA_CPPFLAGS`" APACHE_CONFIG_VARS=${apache_dir}/build/config_vars.mk 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 ])