dnl dnl Copyright 1999-2004 The Apache Software Foundation dnl dnl Licensed under the Apache License, Version 2.0 (the "License"); dnl you may not use this file except in compliance with the License. dnl You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl dnl Unless required by applicable law or agreed to in writing, software dnl distributed under the License is distributed on an "AS IS" BASIS, dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dnl See the License for the specific language governing permissions and dnl limitations under the License. dnl dnl -------------------------------------------------------------------------- dnl Author Pier Fumagalli dnl Version $Id$ dnl dnl NOTE: close all functions with ]) on the same line otherwise M4 will spit dnl out the last argument of the function with an extra newline. dnl -------------------------------------------------------------------------- sinclude(./support/wa_util.m4) sinclude(./support/wa_exec.m4) sinclude(./support/wa_version.m4) sinclude(./support/wa_apr.m4) sinclude(./support/wa_apxs.m4) sinclude(./support/wa_ant.m4) sinclude(./support/wa_perl.m4) dnl -------------------------------------------------------------------------- dnl Initialize GNU Autoconf (note, this requires autoconf vers. >= 2.52) dnl -------------------------------------------------------------------------- AC_INIT([WebApp Module],[""],[http://nagoya.apache.org/bugzilla]) AC_CONFIG_SRCDIR([configure.in]) AC_CONFIG_AUX_DIR([support]) dnl -------------------------------------------------------------------------- dnl Get rid of all that "--prefix" ... "--xxxdir" in the help message dnl -------------------------------------------------------------------------- WA_HEADER([Configuring AC_PACKAGE_STRING]) WA_HELP() dnl -------------------------------------------------------------------------- dnl What are we compiling for dnl -------------------------------------------------------------------------- AC_CANONICAL_HOST() dnl -------------------------------------------------------------------------- dnl Directories locations are defined here dnl -------------------------------------------------------------------------- WA_VARIABLE([APR_DIR]) WA_VARIABLE([APR_LIB]) WA_VARIABLE([APR_LIBNAME]) WA_VARIABLE([SRC_DIR]) WA_VARIABLE([TGT_DIR]) WA_VARIABLE([TC4_DIR]) WA_PATH_DIR([SRC_DIR],[${srcdir}],[sources]) WA_PATH_DIR([TGT_DIR],[.],[build]) dnl -------------------------------------------------------------------------- dnl Define the variables we need in Makedefs.in dnl -------------------------------------------------------------------------- WA_VARIABLE([CC]) WA_VARIABLE([CPP]) WA_VARIABLE([SHELL]) WA_VARIABLE([LIBTOOL]) WA_VARIABLE([APXS]) WA_VARIABLE([ANT]) WA_VARIABLE([PERL]) WA_VARIABLE([CPPFLAGS]) WA_VARIABLE([CFLAGS]) WA_VARIABLE([LDFLAGS]) WA_VARIABLE([INCLUDES]) INCLUDES="-I. -I${SRC_DIR}/include" WA_VARIABLE([EXTRA_CFLAGS]) WA_VARIABLE([EXTRA_CPPFLAGS]) WA_VARIABLE([EXTRA_LDFLAGS]) WA_VARIABLE([EXTRA_INCLUDES]) WA_VARIABLE([EXTRA_BUILD]) WA_VARIABLE([EXTRA_CLEAN]) WA_VARIABLE([MODULE]) WA_VARIABLE([APACHE_VERSION]) WA_VARIABLE([WEBAPP_VERSION]) WA_VARIABLE([HOST]) WA_VARIABLE([DATE]) HOST="${host}" DATE="`date`" WA_VARIABLE([ANT_TARGETS]) dnl -------------------------------------------------------------------------- dnl Figure out if we have APXS, where it's located, and what version it is dnl -------------------------------------------------------------------------- WA_HEADER([Checking Apache APXS]) WA_APXS([APXS]) WA_APXS_CHECK([APXS_VERSION],[${APXS}]) dnl -------------------------------------------------------------------------- dnl Decide based on what version of APXS we found dnl -------------------------------------------------------------------------- if test "${APXS_VERSION}" = "1.3" ; then dnl ---------------------------------------------------------------------- dnl APXS version 1.3, meaning Apache 1.3. We _require_ APR sources dnl ---------------------------------------------------------------------- WA_HEADER([Apache 1.3 module compilation (APR checks)]) dnl ---------------------------------------------------------------------- dnl Check where the APR sources are and issue "configure" dnl ---------------------------------------------------------------------- WA_APR([APR_DIR]) tempret="0" tempval="--enable-static --disable-shared --disable-threads" tempval="${tempval} --libdir=${TGT_DIR}/objects" WA_EXEC( [tempret], [./configure ${tempval}], [apr], [${APR_DIR}]) AC_MSG_CHECKING([for proper command execution]) if test "${tempret}" = "0" ; then AC_MSG_RESULT([ok (${tempret})]) else WA_ERROR([command returned with ${tempret}]) fi unset tempret unset tempval dnl ---------------------------------------------------------------------- dnl Retrieve APR variables dnl ---------------------------------------------------------------------- WA_APR_GET([CC],[${APR_DIR}],[CC]) WA_APR_GET([CPP],[${APR_DIR}],[CPP]) WA_APR_GET([SHELL],[${APR_DIR}],[SHELL]) WA_APR_GET([CFLAGS],[${APR_DIR}],[CFLAGS]) WA_APR_GET([CPPFLAGS],[${APR_DIR}],[CPPFLAGS]) WA_APR_GET([LDFLAGS],[${APR_DIR}],[LDFLAGS]) WA_APR_GET([LDFLAGS],[${APR_DIR}],[LIBS]) WA_APR_GET([CPPFLAGS],[${APR_DIR}],[EXTRA_INCLUDES]) WA_APR_LIB([APR_LIB],[${APR_DIR}]) WA_APR_LIBNAME([APR_LIBNAME],[${APR_DIR}]) AC_MSG_CHECKING([for apr headers]) WA_APPEND([INCLUDES],[-I${APR_DIR}/include]) AC_MSG_RESULT([-I${APR_DIR}/include]) AC_MSG_CHECKING([for apr libtool]) LIBTOOL="${SHELL} ${APR_DIR}/libtool --silent" AC_MSG_RESULT([${LIBTOOL}]) dnl ---------------------------------------------------------------------- dnl Done with APR, let's see what APXS says dnl ---------------------------------------------------------------------- WA_HEADER([Apache 1.3 module compilation (APXS checks)]) dnl ---------------------------------------------------------------------- dnl Do a check on the C compiler to see if apxs reports the same one dnl ---------------------------------------------------------------------- WA_APXS_GET([tempval],[${APXS}],[CC]) AC_MSG_CHECKING([for compiler coherency]) if test "${tempval}" != "${CC}" ; then AC_MSG_RESULT([error]) AC_MSG_RESULT([compiler discovered by apr: ${CC}]) AC_MSG_RESULT([compiler used by apache apxs: ${tempval}]) AC_MSG_ERROR([the apache apxs and apr compilers must be the same]) exit 1 fi AC_MSG_RESULT([ok (${CC})]) unset tempval dnl ---------------------------------------------------------------------- dnl Apache 1.3 configuration complete dnl ---------------------------------------------------------------------- MODULE="apache-1.3" WA_APPEND([EXTRA_BUILD],[apr-build]) WA_APPEND([EXTRA_CLEAN],[apr-clean]) WA_APXS_GET([tempval],[${APXS}],[INCLUDEDIR]) WA_PATH_DIR([tempdir],[${tempval}],[apache 1.3 headers]) WA_APPEND([INCLUDES],[-I${tempdir}]) unset tempval unset tempdir WA_APXS_GET([EXTRA_CFLAGS],[${APXS}],[CFLAGS]) WA_APXS_GET([EXTRA_CFLAGS],[${APXS}],[CFLAGS_SHLIB]) WA_APXS_GET([EXTRA_LDFLAGS],[${APXS}],[LIBS_SHLIB]) WA_APXS_GET([EXTRA_LDFLAGS],[${APXS}],[LDFLAGS_SHLIB]) else dnl ---------------------------------------------------------------------- dnl APXS version 2.0, meaning Apache 2.0. We use APR from there dnl ---------------------------------------------------------------------- WA_HEADER([Apache 2.0 module]) WA_APXS_GET([CC],[${APXS}],[CC]) WA_APXS_GET([CPP],[${APXS}],[CPP]) WA_APXS_GET([SHELL],[${APXS}],[SHELL]) WA_APXS_GET([LIBTOOL],[${APXS}],[LIBTOOL]) WA_APXS_GET([CPPFLAGS],[${APXS}],[CPPFLAGS]) WA_APXS_GET([CPPFLAGS],[${APXS}],[NOTEST_CPPFLAGS]) WA_APXS_GET([CPPFLAGS],[${APXS}],[EXTRA_CPPFLAGS]) WA_APXS_GET([LDFLAGS],[${APXS}],[LDFLAGS]) WA_APXS_GET([LDFLAGS],[${APXS}],[NOTEST_LDFLAGS]) WA_APXS_GET([LDFLAGS],[${APXS}],[EXTRA_LDFLAGS]) WA_APXS_GET([CFLAGS],[${APXS}],[CFLAGS]) WA_APXS_GET([CFLAGS],[${APXS}],[NOTEST_CFLAGS]) WA_APXS_GET([CFLAGS],[${APXS}],[EXTRA_CFLAGS]) WA_APXS_GET([tempval],[${APXS}],[INCLUDEDIR]) WA_PATH_DIR([tempdir],[${tempval}],[apache 2.0 headers]) WA_APPEND([INCLUDES],[-I${tempdir}]) unset tempval unset tempdir MODULE="apache-2.0" fi dnl -------------------------------------------------------------------------- dnl Retrieve Apache and WebApp version dnl -------------------------------------------------------------------------- WA_HEADER([Checking component versions]) WA_APXS_SERVER([APACHE_VERSION],[${APXS}]) WA_VERSION([WEBAPP_VERSION],[${CC}]) dnl -------------------------------------------------------------------------- dnl Detect another couple of binaries we _might_ require for compilation dnl -------------------------------------------------------------------------- WA_HEADER([Checking optional binaries]) WA_PERL([PERL]) WA_ANT([ANT]) dnl -------------------------------------------------------------------------- dnl Optional targets dnl -------------------------------------------------------------------------- WA_HEADER([Optional targets]) dnl -------------------------------------------------------------------------- dnl Do we want to build also tomcat-webapp.jar or not? dnl -------------------------------------------------------------------------- AC_MSG_CHECKING([for java compilation]) AC_ARG_ENABLE( [java], [ --enable-java[[=tc4dir]] compile java code (tc4dir must be specifed)], [ case "${enableval}" in ""|"yes"|"YES"|"true"|"TRUE") WA_ERROR([path of Tomcat 4.0 binary distribution unspecified]) ;; "no"|"NO"|"false"|"FALSE") AC_MSG_RESULT([no]) ;; *) dnl -------------------------------------------------------------- dnl We were given something as a parameter, we need to make sure dnl that what we were given is the path to the Tomcat 4.0 distrib. dnl -------------------------------------------------------------- if test -z "${ANT}" ; then WA_ERROR([java compilation desired but ANT not found]) fi AC_MSG_RESULT([yes]) WA_PATH_DIR([TC4_DIR],[${enableval}],[tomcat 4.0 distribution]) AC_MSG_CHECKING([for proper tomcat layout]) if test ! -f "${TC4_DIR}/server/lib/catalina.jar" ; then WA_ERROR([cannot find "${TC4_DIR}/server/lib/catalina.jar"]) fi if test ! -f "${TC4_DIR}/common/lib/servlet.jar" ; then WA_ERROR([cannot find "${TC4_DIR}/common/lib/servlet.jar"]) fi dnl -------------------------------------------------------------- dnl We found what we were looking for, make sure ANT gets called dnl with the "compile" target dnl -------------------------------------------------------------- WA_APPEND([ANT_TARGETS],[compile]) WA_APPEND([EXTRA_BUILD],[ant-build]) WA_APPEND([EXTRA_CLEAN],[ant-clean]) AC_MSG_RESULT([ok]) ;; esac ],[ AC_MSG_RESULT([no]) ]) dnl -------------------------------------------------------------------------- dnl Do we want to build also the documentation from XML? dnl -------------------------------------------------------------------------- AC_MSG_CHECKING([for documentation generation]) AC_ARG_ENABLE( [docs], [ --enable-docs generate documentation (requires ANT)], [ case "${enableval}" in ""|"yes"|"YES"|"true"|"TRUE") if test -z "${ANT}" ; then WA_ERROR([docs generation desired but ANT not found]) fi AC_MSG_RESULT([yes]) dnl -------------------------------------------------------------- dnl We were specifically requested to compile docs, and we found dnl ANT, we need to call it with the "docs" target dnl -------------------------------------------------------------- WA_APPEND([ANT_TARGETS],[docs]) WA_APPEND([EXTRA_BUILD],[ant-build]) WA_APPEND([EXTRA_CLEAN],[ant-clean]) ;; "no"|"NO"|"false"|"FALSE") AC_MSG_RESULT([no]) ;; *) WA_ERROR([invalid parameter --enable-docs="${enableval}"]) ;; esac ],[ dnl ------------------------------------------------------------------ dnl We are going to call ANT only if we found it, but making sure dnl that we specify the "docs" target dnl ------------------------------------------------------------------ if test -z "${ANT}" ; then AC_MSG_RESULT([no (ant required)]) else AC_MSG_RESULT([yes (ant detected)]) WA_APPEND([ANT_TARGETS],[docs]) WA_APPEND([EXTRA_BUILD],[ant-build]) WA_APPEND([EXTRA_CLEAN],[ant-clean]) fi ]) dnl -------------------------------------------------------------------------- dnl Do we want to build also the Java API documentation? dnl -------------------------------------------------------------------------- AC_MSG_CHECKING([for Java API docs generation]) AC_ARG_ENABLE( [apidoc-java], [ --enable-apidoc-java generate Java API docs (requires ANT)], [ case "${enableval}" in ""|"yes"|"YES"|"true"|"TRUE") if test -z "${ANT}" ; then WA_ERROR([docs generation desired but ANT not found]) fi AC_MSG_RESULT([yes]) dnl -------------------------------------------------------------- dnl We were specifically requested to create javadocs, and we dnl found ANT, we need to call it with the "javadoc" target dnl -------------------------------------------------------------- WA_APPEND([ANT_TARGETS],[javadoc]) WA_APPEND([EXTRA_BUILD],[ant-build]) WA_APPEND([EXTRA_CLEAN],[ant-clean]) ;; "no"|"NO"|"false"|"FALSE") AC_MSG_RESULT([no]) ;; *) WA_ERROR([invalid parameter --enable-apidoc-java="${enableval}"]) ;; esac ],[ dnl ------------------------------------------------------------------ dnl We are going to call ANT only if we found it, but making sure dnl that we specify the "javadoc" target dnl ------------------------------------------------------------------ if test -z "${ANT}" ; then AC_MSG_RESULT([no (ant required)]) else AC_MSG_RESULT([yes (ant detected)]) WA_APPEND([ANT_TARGETS],[javadoc]) WA_APPEND([EXTRA_BUILD],[ant-build]) WA_APPEND([EXTRA_CLEAN],[ant-clean]) fi ]) dnl -------------------------------------------------------------------------- dnl Do we want to build also the C API documentation? dnl -------------------------------------------------------------------------- AC_MSG_CHECKING([for C API docs generation]) AC_ARG_ENABLE( [apidoc-c], [ --enable-apidoc-c generate C API docs (requires PERL)], [ case "${enableval}" in ""|"yes"|"YES"|"true"|"TRUE") if test -z "${PERL}" ; then WA_ERROR([docs generation desired but PERL not found]) fi AC_MSG_RESULT([yes]) dnl -------------------------------------------------------------- dnl We were specifically requested to create c api docs, and we dnl found PERL, we need to define a couple of new targets dnl -------------------------------------------------------------- WA_APPEND([EXTRA_BUILD],[capi-build]) WA_APPEND([EXTRA_CLEAN],[capi-clean]) ;; "no"|"NO"|"false"|"FALSE") AC_MSG_RESULT([no]) ;; *) WA_ERROR([invalid parameter --enable-apidoc-c="${enableval}"]) ;; esac ],[ dnl ------------------------------------------------------------------ dnl We are going to call the C Api generation/cleanup targets only if dnl we found PERL dnl ------------------------------------------------------------------ if test -z "${PERL}" ; then AC_MSG_RESULT([no (perl required)]) else AC_MSG_RESULT([yes (perl detected)]) WA_APPEND([EXTRA_BUILD],[capi-build]) WA_APPEND([EXTRA_CLEAN],[capi-clean]) fi ]) dnl -------------------------------------------------------------------------- dnl All done dnl -------------------------------------------------------------------------- WA_HEADER([All done]) AC_OUTPUT( [ Makedefs Makefile lib/Makefile ${MODULE}/Makefile build.properties ])