# ==================================================================== # The Apache Software License, Version 1.1 # # Copyright (c) 2000-2002 The Apache Software Foundation. All rights # reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. The end-user documentation included with the redistribution, # if any, must include the following acknowledgment: # "This product includes software developed by the # Apache Software Foundation (http://www.apache.org/)." # Alternately, this acknowledgment may appear in the software itself, # if and wherever such third-party acknowledgments normally appear. # # 4. The names "Apache" and "Apache Software Foundation" must # not be used to endorse or promote products derived from this # software without prior written permission. For written # permission, please contact apache@apache.org. # # 5. Products derived from this software may not be called "Apache", # "mod_python", or "modpython", nor may these terms appear in their # name, without prior written permission of the Apache Software # Foundation. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ==================================================================== # # This software consists of voluntary contributions made by many # individuals on behalf of the Apache Software Foundation. For more # information on the Apache Software Foundation, please see # . # # Originally developed by Gregory Trubetskoy. # dnl Process this file with autoconf to produce a configure script. AC_INIT(src/mod_python.c) # includes INCLUDES="-I`pwd`/src/include" dnl Checks for programs. AC_PROG_CC AC_SUBST(AR) AC_CHECK_PROGS(AR, ar aal, ar) AC_PROG_INSTALL AC_PROG_MAKE_SET dnl Replace `main' with a function in -lm: AC_CHECK_LIB(m, main) dnl Checks for header files. dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST ### humor lowers blood pressure AC_MSG_CHECKING(your blood pressure) AC_MSG_RESULT([a bit high, but we can proceed]) ## The goal is to find apxs AC_CHECKING(whether apxs is available) AC_SUBST(APXS) AC_SUBST(DSO) AC_SUBST(ALL) # check for --with-apxs AC_MSG_CHECKING(for --with-apxs) AC_ARG_WITH(apxs, [--with-apxs=PATH Path to apxs], [ if test -x "$withval" then AC_MSG_RESULT([$withval executable, good]) APXS=$withval else echo AC_MSG_ERROR([$withval not found or not executable]) fi ], AC_MSG_RESULT(no)) # if no apxs found yet, check /usr/local/apache/sbin # since it's the default Apache location if test -z "$APXS"; then AC_MSG_CHECKING(for apxs in /usr/local/apache/sbin) if test -x /usr/local/apache/sbin/apxs; then APXS=/usr/local/apache/sbin/apxs AC_MSG_RESULT([found, we'll use this. Use --with-apxs to specify another.]) else AC_MSG_RESULT(no) fi fi # last resort if test -z "$APXS"; then AC_MSG_CHECKING(for apxs in your PATH) AC_PATH_PROG(APXS, apxs) if test -n "$APXS"; then AC_MSG_RESULT([found $APXS, we'll use this. Use --with-apxs to specify another.]) fi fi # if apxs was still not found, then no DSO AC_SUBST(LIBEXECDIR) AC_SUBST(SOLARIS_HACKS) AC_SUBST(HTTPD) if test -z "$APXS"; then AC_MSG_WARN([**** apxs was not found, DSO compilation will not be available.]) AC_MSG_WARN([**** You can use --with-apxs to specify where your apxs is.]) DSO="no_dso" ALL="static" else DSO="do_dso" ALL="dso" # check Apache version AC_MSG_CHECKING(Apache version) HTTPD="`${APXS} -q SBINDIR`/`${APXS} -q TARGET`" ver=`$HTTPD -v | awk '/version/ {print $3}' | awk -F/ '{print $2}'` AC_MSG_RESULT($ver) # make sure version begins with 2 if test -z "`echo $ver | egrep \^2`"; then AC_MSG_ERROR([This version of mod_python only works with Apache 2. The one you have seems to be $ver.]) fi # determine LIBEXEC AC_MSG_CHECKING(for Apache libexec directory) LIBEXECDIR=`${APXS} -q LIBEXECDIR` AC_MSG_RESULT($LIBEXECDIR) # determine INCLUDES AC_MSG_CHECKING([for Apache include directory]) AP_INCLUDES="-I`${APXS} -q INCLUDEDIR`" AC_MSG_RESULT($AP_INCLUDES) dnl Small hack to work around _eprintf.o problem on Solaris if test "`uname`" = "SunOS"; then AC_MSG_CHECKING([for gcc on Solaris possible missing _eprintf problem]) if test "$CC" = "gcc"; then SOLARIS_HACKS="_eprintf.o _floatdidf.o _muldi3.o" fi AC_MSG_RESULT("done") fi fi # check for --with-apache AC_SUBST(AP_SRC) AC_SUBST(AP_SRC_OWN) AC_SUBST(AP_SRC_GRP) ## static is disabled, thus no --with-apache ##AC_MSG_CHECKING(for --with-apache) AC_ARG_WITH(apache, [--with-apache=DIR Path to Apache sources], [ # temporarily disable static on 2.0 until I figure out how to # do it right AC_MSG_ERROR([Sorry, --with-apache (static compilation) is not supported at this time!]) AP_SRC=`cd $withval; pwd` dnl Make sure this looks like Apache source if test ! -f "$AP_SRC/include/httpd.h"; then AC_MSG_ERROR([$withval does not look like an Apache 2.0 source directory.]) fi AC_MSG_RESULT($AP_SRC) AP_INCLUDES="-I${AP_SRC}/src/include -I${AP_SRC}/src/os/unix" # note who owns the apache source directory AP_SRC_OWN="`ls -ld $AP_SRC | awk '{print $3}'`" AP_SRC_GRP="`ls -ld $AP_SRC | awk '{print $4}'`" ],) ##AC_MSG_RESULT(no)) AC_SUBST(STATIC) if test -z "$AP_SRC"; then ## AC_MSG_WARN([**** No apache sources specified, static compilation will not be available.]) ## AC_MSG_WARN([**** You can use --with-apache to specify where your Apache sources are.]) STATIC="no_static" else STATIC="do_static" fi if test "$STATIC" = "no_static" -a "$DSO" = "no_dso"; then AC_MSG_ERROR([Neither static nor DSO option available, there is no point in continuing.]) fi AC_SUBST(PYTHON_BIN) AC_MSG_CHECKING(for --with-python) AC_ARG_WITH(python, [--with-python=DIR Path to specific Python binary], [ PYTHON_BIN="$withval" AC_MSG_RESULT($PYTHON_BIN) ], AC_MSG_RESULT(no)) # check for Python executable if test -z "$PYTHON_BIN"; then AC_PATH_PROG(PYTHON_BIN, python) if test -z "$PYTHON_BIN"; then AC_MSG_ERROR(python binary not found in path) fi fi # find out python version AC_MSG_CHECKING(Python version) PyVERSION=`$PYTHON_BIN -c ['import sys; print sys.version[:3]'`] PyMAJVERSION=`$PYTHON_BIN -c ['import sys; print sys.version[:1]'`] AC_MSG_RESULT($PyVERSION) # make sure Python is version 2 if test "$PyMAJVERSION" != "2"; then AC_MSG_ERROR([This version of mod_python only works with Python major version 2. The one you have seems to be $PyVERSION.]) fi # find out compiled in install prefix AC_MSG_CHECKING(Python install prefix) PyEXEC_INSTALLDIR=`$PYTHON_BIN -c "import sys; print sys.exec_prefix"` AC_MSG_RESULT($PyEXEC_INSTALLDIR) # this is where the Python libraries will get installed AC_SUBST(PY_STD_LIB) PY_STD_LIB=${PyEXEC_INSTALLDIR}/lib/python${PyVERSION} # set python std library variable AC_SUBST(LIBS) PyLIBP=${PyEXEC_INSTALLDIR}/lib/python${PyVERSION} PyLIBPL=${PyLIBP}/config PyPYTHONLIBS=${PyLIBPL}/libpython${PyVERSION}.a PyLIBS=`grep "^LIB[[SMC]]=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyMODLIBS=`grep "^LOCALMODLIBS=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyFRAMEWORK=`grep "^PYTHONFRAMEWORK=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyFRAMEWORKDIR=`grep "^PYTHONFRAMEWORKDIR=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' ' | awk '{print $1}'` save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" if test "$PyFRAMEWORKDIR" != "no-framework"; then if test -n "$PyFRAMEWORK"; then PyPYTHONLIBS="-framework $PyFRAMEWORK" fi else LDFLAGS="${LDFLAGS} -L${PyLIBPL}" AC_CHECK_LIB(python${PyVERSION}, Py_NewInterpreter, [ PyPYTHONLIBS="-lpython${PyVERSION}" ], [ LDFLAGS="$save_LDFLAGS" if test -f ${PyLIBPL}/libpython${PyVERSION}.a; then PyPYTHONLIBS=${PyLIBPL}/libpython${PyVERSION}.a else AC_ERROR(Can not link to python) fi ], [ ${PyLIBS} ${PyMODLIBS} ] ) fi LIBS="$save_LIBS" # (actually this check already just happened above) AC_MSG_CHECKING(what libraries Python was linked with) PY_LIBS="${PyPYTHONLIBS} ${PyLIBS} ${PyMODLIBS}" ## XXX this is a small work around for a weird RedHat problem ## erase -lieee from library list if test -f /etc/redhat-release; then PY_LIBS="`echo $PY_LIBS | sed s/-lieee//`" fi LIBS="${LIBS} ${PY_LIBS}" AC_MSG_RESULT($PY_LIBS) AC_MSG_CHECKING(linker flags used to link Python) AC_SUBST(LDFLAGS) PyLFS=`grep "^LINKFORSHARED=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyLDFLAGS=`grep "^LDFLAGS=" ${PyLIBPL}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` LDFLAGS="${LDFLAGS} ${PyLFS} ${PyLDFLAGS}" LDFLAGS="${LDFLAGS} ${PY_LDFLAGS}" AC_MSG_RESULT($PY_LDFLAGS) AC_MSG_CHECKING(where Python include files are) AC_SUBST(INCLUDES) PY_INCLUDES="-I${PyEXEC_INSTALLDIR}/include/python${PyVERSION}" INCLUDES="${INCLUDES} ${AP_INCLUDES} ${PY_INCLUDES}" AC_MSG_RESULT($PY_INCLUDES) # this for the test.py script AC_SUBST(TEST_SERVER_ROOT) TEST_SERVER_ROOT="`pwd`/test" AC_SUBST(MOD_PYTHON_SO) MOD_PYTHON_SO="`pwd`/src/mod_python.so" # get the mod_python version AC_SUBST(MP_VERSION) MP_VERSION=`awk '/MPV_STRING/ {print $3}' src/include/mpversion.h` MP_VERSION=`echo $MP_VERSION | sed s/\\"//g` AC_OUTPUT(Makefile src/Makefile Doc/Makefile test/testconf.py dist/setup.py dist/Makefile)