Enhance python detection. Several OS do not include a python-config script (e.g. Centos, Fedora, OpenSolaris), so use the distutils module directly (like python-config does) to extract the required information. I am keeping the python-config support for now (used when distutils is not found). Several minor cleanups of the code too...

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8450 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Stefan Knoblich 2008-05-16 18:49:52 +00:00
parent c4657914eb
commit 2d14539e47
1 changed files with 75 additions and 30 deletions

View File

@ -446,6 +446,9 @@ AC_ARG_WITH(
if test "$with_python" != "no"
then
save_CFLAGS="$CFLAGS"
save_LIBS="$LIBS"
if test "$with_python" != "yes" -a "$with_python" != "try" ; then
AC_MSG_CHECKING([for python])
if test ! -x "$with_python" ; then
@ -482,52 +485,94 @@ then
AC_MSG_RESULT([$PYTHON_SITE_DIR])
AC_SUBST([PYTHON_SITE_DIR], [$PYTHON_SITE_DIR])
if test "$with_python_config" != "no" ; then
AC_MSG_CHECKING([for python-config])
if test ! -x "$with_python_config" ; then
AC_MSG_ERROR([Specified python-config does not exist or is not executable: $with_python_config])
AC_MSG_CHECKING([for python distutils])
python_has_distutils="no"
if test "$PYTHON -c 'import distutils;' 2>/dev/null" ; then
python_has_distutils="yes"
fi
AC_MSG_RESULT([$python_has_distutils])
if test "$python_has_distutils" = "no" ; then
AC_MSG_RESULT([Falling back to python-config])
#
# no python distutils, try to use python-config
# (do we really need to keep this?)
if test "$with_python_config" != "no" ; then
AC_MSG_CHECKING([for python-config])
if test ! -x "$with_python_config" ; then
AC_MSG_ERROR([Specified python-config does not exist or is not executable: $with_python_config])
fi
AC_MSG_RESULT([$with_python_config])
AC_SUBST([PYTHON_CONFIG], ["$with_python_config"])
else
AC_PATH_PROG([PYTHON_CONFIG], ["python-config"], ["no"], ["$PATH:/usr/bin:/usr/local/bin"])
fi
if test "$PYTHON_CONFIG" != "no" ; then
PYTHON_CFLAGS="`$PYTHON_CONFIG --cflags`"
PYTHON_LDFLAGS="`$PYTHON_CONFIG --ldflags`"
else
AS_IF([test "$with_python" = "try"],
[AC_MSG_WARN([python-config could not be found, mod_python will not build, use --with-python-config to specify the location])],
[AC_MSG_ERROR([python-config could not be found, use --with-python-config to specify the location])]
)
fi
AC_MSG_RESULT([$with_python_config])
AC_SUBST([PYTHON_CONFIG], ["$with_python_config"])
else
AC_PATH_PROG([PYTHON_CONFIG], ["python-config"], ["no"], ["$PATH:/usr/bin:/usr/local/bin"])
#
# python distutils found, get settings from python directly
#
PYTHON_CFLAGS="`$PYTHON -c 'from distutils import sysconfig; flags = ["-I" + sysconfig.get_python_inc(0), "-I" + sysconfig.get_python_inc(1), " ".join(sysconfig.get_config_var("CFLAGS").split())]; print " ".join(flags);'`"
PYTHON_LDFLAGS="`$PYTHON -c 'from distutils import sysconfig; libs = sysconfig.get_config_var("LIBS").split() + sysconfig.get_config_var("SYSLIBS").split(); libs.append("-lpython"+sysconfig.get_config_var("VERSION")); print " ".join(libs);'`"
PYTHON_LIB="`$PYTHON -c 'from distutils import sysconfig; print "python" + sysconfig.get_config_var("VERSION");'`"
fi
# this one is fatal if with_python != try
if test "$PYTHON_CONFIG" != "no" ; then
PYTHON_CFLAGS="`$PYTHON_CONFIG --cflags`"
PYTHON_LDFLAGS="`$PYTHON_CONFIG --ldflags`"
if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LDFLAGS"
then
# check libpython
AC_CHECK_LIB([$PYTHON_LIB], [main], [has_libpython="yes"], [has_libpython="no"])
if test "$has_libpython" = "no" ; then
AS_IF([test "$with_python" = "try"],
[AC_MSG_WARN([$PYTHON_LIB is unusable])],
[AC_MSG_ERROR([$PYTHON_LIB is unusable])]
)
fi
# check whether system libpython is usable and has threads support
save_LIBS="$LIBS"
CFLAGS="$PYTHON_CFLAGS"
LIBS="$PYTHON_LDFLAGS"
AC_CHECK_FUNC([PyThread_init_thread], [python_has_threads="yes"], [python_has_threads="no"])
LIBS="$save_LIBS"
if test "$python_has_threads" = "no" ; then
if test "$with_python" = "try" ; then
AC_MSG_ERROR([Your python lacks threads support, can not build mod_python])
fi
AC_MSG_WARN([Your python lacks threads support, can not build mod_python])
if test "$python_has_threads" = "no"; then
AS_IF([test "$with_python" = "try"],
[AC_MSG_WARN([Your python lacks threads support, can not build mod_python])],
[AC_MSG_ERROR([Your python lacks threads support, can not build mod_python])]
)
else
AC_MSG_NOTICE([Your python seems OK, do not forget to enable mod_python in modules.conf])
AC_SUBST([PYTHON_CFLAGS], [$PYTHON_CFLAGS])
AC_SUBST([PYTHON_CFLAGS], [$PYTHON_CFLAGS])
AC_SUBST([PYTHON_LDFLAGS], [$PYTHON_LDFLAGS])
fi
else
if test "$with_python" != "try" ; then
AC_MSG_ERROR([python-config could not be found, use --with-python-config to specify the location])
fi
AC_MSG_WARN([python-config could not be found, mod_python will not build, use --with-python-config to specify the location])
AS_IF([test "$with_python" = "try"],
[AC_MSG_WARN([Unable to use python, maybe you need to install "python-devel"])],
[AC_MSG_ERROR([Unable to use python, maybe you need to install "python-devel"])]
)
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
unset python_has_threads
unset python_has_distutils
else
if test "$with_python" != "try" ; then
AC_MSG_ERROR([Could not find python, use --with-python to specify the location])
fi
AC_MSG_WARN([Could not find python, mod_python will not build, use --with-python to specify the location])
AS_IF([test "$with_python" = "try"],
[AC_MSG_WARN([Could not find python, mod_python will not build, use --with-python to specify the location])],
[AC_MSG_ERROR([Could not find python, use --with-python to specify the location])]
)
fi
else
AC_MSG_WARN([python support disabled, building mod_python will fail!])