dnl Copyright 2000 Gregory Trubetskoy dnl $Id: configure.in,v 1.6 2000/10/29 01:29:06 gtrubetskoy Exp $ 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_PROG_RANLIB 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) 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" # 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) fi # check for --with-apache AC_SUBST(AP_SRC) AC_SUBST(AP_SRC_OWN) AC_SUBST(AP_SRC_GRP) AC_MSG_CHECKING(for --with-apache) AC_ARG_WITH(apache, [--with-apache=DIR Path to Apache sources], [ AP_SRC=`cd $withval; pwd` dnl For Apache 2.0 apxs in src/support may be usable if test ! -f "$AP_SRC/src/include/httpd.h"; then AC_MSG_ERROR([$withval does not look like an Apache 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_MSG_CHECKING(for --with-python) AC_ARG_WITH(python, [--with-python=DIR Path to Python sources], [ PYTHON_SRC=`cd $withval; pwd` AC_MSG_RESULT($PYTHON_SRC) ], AC_MSG_RESULT(no)) # check for Python executable if test -z "$PYTHON_SRC"; then AC_PATH_PROG(PYTHON_BIN, python) if test -z "$PYTHON_BIN"; then AC_MSG_ERROR(python binary not found) fi else AC_PATH_PROG(PYTHON_BIN, python, "", $PYTHON_SRC) if test -z "$PYTHON_BIN"; then AC_MSG_ERROR([python executable not found in ${withval}, perhaps you need to build Python first.]) fi fi # find out python version AC_MSG_CHECKING(Python version) PyVERSION=`$PYTHON_BIN -c ['import sys; print sys.version[:3]'`] AC_MSG_RESULT($PyVERSION) # check if python is compiled with threads AC_MSG_CHECKING(whether Python is compiled with thread support) PyTHREADS=`$PYTHON_BIN -c "import sys; print \"thread\" in sys.builtin_module_names"` if test "$PyTHREADS" = "1"; then AC_MSG_RESULT(yes) echo echo " ****** WARNING ******" echo " Python is compiled with thread support. Apache 1.3 does not use threads." echo " On some systems this will cause problems during compilation, on others " echo " it may result in unpredictable behaviour of your Apache server. Yet on" echo " others it will work just fine. The recommended approach is to compile" echo " Python without thread support in a separate location and specify it with" echo " --with-python option to this ./configure script." echo else AC_MSG_RESULT([no threads, good]) 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_MSG_CHECKING(what libraries Python was linked with) AC_SUBST(LIBS) if test -z "$PYTHON_SRC"; then 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' ' '` PY_LIBS="${PyPYTHONLIBS} ${PyLIBS} ${PyMODLIBS}" else PyPYTHONLIBS=${PYTHON_SRC}/libpython${PyVERSION}.a PyLIBS=`grep "^LIB[[SMC]]=" ${PYTHON_SRC}/Modules/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyMODLIBS=`grep "^LOCALMODLIBS=" ${PYTHON_SRC}/Modules/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PY_LIBS="${PyPYTHONLIBS} ${PyLIBS} ${PyMODLIBS}" fi ## 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) if test -z "$PYTHON_SRC"; then 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}" else PyLFS=`grep "^LINKFORSHARED=" ${PYTHON_SRC}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PyLDFLAGS=`grep "^LDFLAGS=" ${PYTHON_SRC}/Makefile | cut -f2 -d= | tr '\011\012\015' ' '` PY_LDFLAGS="${PyLFS} ${PyLDFLAGS}" fi LDFLAGS="${LDFLAGS} ${PY_LDFLAGS}" AC_MSG_RESULT($PY_LDFLAGS) AC_MSG_CHECKING(where Python include files are) AC_SUBST(INCLUDES) if test -z "$PYTHON_SRC"; then PY_INCLUDES="-I${PyEXEC_INSTALLDIR}/include/python${PyVERSION}" else PY_INCLUDES="-I${PYTHON_SRC} -I${PYTHON_SRC}/Include" fi INCLUDES="${INCLUDES} ${AP_INCLUDES} ${PY_INCLUDES}" AC_MSG_RESULT($PY_INCLUDES) AC_SUBST(MKDEP) # see if we have mkdep AC_PATH_PROG(MKDEP, "mkdep") if test -z "${MKDEP}"; then # or makedepend AC_PATH_PROG(MKDEP, "makedepend") fi AC_OUTPUT(Makefile src/Makefile src/libpython.module) if test -n "$MKDEP"; then # make dependencies echo "analyzing dependencies" cd src make depend > /dev/null 2>&1 fi