2011-01-31 Joel Brobecker <brobecker@adacore.com>
+ * configure.ac: Remove fallback behavior for building
+ against Python. Remove tweaking of Python include path.
+ Add PYTHON_CPPFLAGS and PYTHON_LIBS substitution.
+ (AC_TRY_LIBPYTHON): Adjust program used in linking test.
+ If link is successful, set PYTHON_CPPFLAGS and PYTHON_LIBS.
+ Always restore CPPFLAGS and LIBS after linking test.
+ * configure: Regenerated.
+ * Makefile.in (INTERNAL_CPPFLAGS): Add @PYTHON_CPPFLAGS@.
+ (INSTALLED_LIBS, CLIBS): Add @PYTHON_LIBS@.
+ * python/python-internal.h: Adjust includes of Python .h files.
+
+2011-01-31 Joel Brobecker <brobecker@adacore.com>
+
* tracepoint.c (traceframe_walk_blocks): Add missing i18n markup
in error message.
# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
CFLAGS = @CFLAGS@
-# Set by configure, for e.g. expat.
-INTERNAL_CPPFLAGS = @CPPFLAGS@
+# Set by configure, for e.g. expat. Python installations are such that
+# C headers are included using their basename (for example, we #include
+# <Python.h> rather than, say, <python/Python.h>). Since the file names
+# are sometimes a little generic, we think that the risk of collision
+# with other header files is high. If that happens, we try to mitigate
+# a bit the consequences by putting the Python includes last in the list.
+INTERNAL_CPPFLAGS = @CPPFLAGS@ @PYTHON_CPPFLAGS@
# Need to pass this to testsuite for "make check". Probably should be
# consistent with top-level Makefile.in and gdb/testsuite/Makefile.in
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty -ldecnumber \
- $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
+ $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ @PYTHON_LIBS@ \
-lintl -liberty $(LIBGNU)
CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
- $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
+ $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ @PYTHON_LIBS@ \
$(LIBEXPAT) \
$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
CONFIG_LDFLAGS
RDYNAMIC
ALLOCA
+PYTHON_LIBS
+PYTHON_CPPFLAGS
PYTHON_CFLAGS
python_prog_path
LTLIBEXPAT
fi
fi
else
- # Fall back to gdb 7.0/7.1 behaviour.
- if test -z ${python_prefix}; then
- python_includes=
- python_libs=
- else
- python_includes="-I${python_prefix}/include"
- python_libs="-L${python_prefix}/lib"
- fi
+ # We do not have a python executable we can use to determine where
+ # to find the Python headers and libs. We cannot guess the include
+ # path from the python_prefix either, because that include path
+ # depends on the Python version. So, there is nothing much we can
+ # do except assume that the compiler will be able to find those files.
+ python_includes=
+ python_libs=
have_python_config=no
fi
- # Having "/pythonX.Y" in the include path is awkward.
- # All those python headers get bubbled up to the top inviting lots
- # of random collisions. GDB originally didn't use python-config to
- # find the compilation parameters and includes "pythonX.Y/" in the
- # path of the, umm, include file. So strip away this part of the
- # output of python-config --includes.
- python_includes=`echo "${python_includes} " \
- | sed -e 's,/python[0-9]*[.][0-9]* , ,g'`
-
# If we have python-config, only try the configuration it provides.
# Otherwise fallback on the old way of trying different versions of
# python in turn.
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
found_usable_python=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include "${version}/Python.h"
+#include "Python.h"
int
main ()
{
if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
-else
- CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
$as_echo "${found_usable_python}" >&6; }
fi
+
+
# ------------------------- #
# Checks for header files. #
# ------------------------- #
CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
LIBS="$LIBS $new_LIBS"
found_usable_python=no
- AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "${version}/Python.h"]],
+ AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "Python.h"]],
[[Py_Initialize ();]]),
[have_libpython_var=${version}
- found_usable_python=yes],
- [CPPFLAGS=$save_CPPFLAGS
- LIBS=$save_LIBS])
+ found_usable_python=yes
+ PYTHON_CPPFLAGS=$new_CPPFLAGS
+ PYTHON_LIBS=$new_LIBS])
+ CPPFLAGS=$save_CPPFLAGS
+ LIBS=$save_LIBS
AC_MSG_RESULT([${found_usable_python}])
])
fi
fi
else
- # Fall back to gdb 7.0/7.1 behaviour.
- if test -z ${python_prefix}; then
- python_includes=
- python_libs=
- else
- python_includes="-I${python_prefix}/include"
- python_libs="-L${python_prefix}/lib"
- fi
+ # We do not have a python executable we can use to determine where
+ # to find the Python headers and libs. We cannot guess the include
+ # path from the python_prefix either, because that include path
+ # depends on the Python version. So, there is nothing much we can
+ # do except assume that the compiler will be able to find those files.
+ python_includes=
+ python_libs=
have_python_config=no
fi
- # Having "/pythonX.Y" in the include path is awkward.
- # All those python headers get bubbled up to the top inviting lots
- # of random collisions. GDB originally didn't use python-config to
- # find the compilation parameters and includes "pythonX.Y/" in the
- # path of the, umm, include file. So strip away this part of the
- # output of python-config --includes.
- python_includes=`echo "${python_includes} " \
- | sed -e 's,/python[[0-9]]*[[.]][[0-9]]* , ,g'`
-
# If we have python-config, only try the configuration it provides.
# Otherwise fallback on the old way of trying different versions of
# python in turn.
python/py-prettyprint.c python/py-auto-load.c"
fi
AC_SUBST(PYTHON_CFLAGS)
+AC_SUBST(PYTHON_CPPFLAGS)
+AC_SUBST(PYTHON_LIBS)
# ------------------------- #
# Checks for header files. #
around technique as above. */
#undef _FILE_OFFSET_BITS
+/* Include the Python header files using angle brackets rather than
+ double quotes. On case-insensitive filesystems, this prevents us
+ from including our python/python.h header file. */
+#include <Python.h>
+#include <frameobject.h>
#if HAVE_LIBPYTHON2_4
-#include "python2.4/Python.h"
-#include "python2.4/frameobject.h"
/* Py_ssize_t is not defined until 2.5.
Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit
compilation due to several apparent mistakes in python2.4 API, so we
use 'int' instead. */
typedef int Py_ssize_t;
-#elif HAVE_LIBPYTHON2_5
-#include "python2.5/Python.h"
-#include "python2.5/frameobject.h"
-#elif HAVE_LIBPYTHON2_6
-#include "python2.6/Python.h"
-#include "python2.6/frameobject.h"
-#elif HAVE_LIBPYTHON2_7
-#include "python2.7/Python.h"
-#include "python2.7/frameobject.h"
-#else
-#error "Unable to find usable Python.h"
#endif
/* If Python.h does not define WITH_THREAD, then the various