diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-01-17 00:10:22 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-02-20 10:14:43 +0000 |
commit | d13c7322fe1266984024644154003a19664610ea (patch) | |
tree | 1177c0438c9e3fe8741c5e7f3b561aba2ad7f9e7 /gdb/configure.ac | |
parent | d7445728b14851cb8535a6a9fa2995817dea2e60 (diff) | |
download | gdb-d13c7322fe1266984024644154003a19664610ea.zip gdb-d13c7322fe1266984024644154003a19664610ea.tar.gz gdb-d13c7322fe1266984024644154003a19664610ea.tar.bz2 |
gdb: Allow more control over where to find python libraries
The motivation behind this commit is to make it easier to bundle the
Python *.py library files with GDB when statically linking GDB against
libpython. The Python files will be manually added into the GDB
installation tree, and GDB should be able to find them at run-time.
The installation tree will look like this:
.
|-- bin/
|-- include/
|-- lib/
| `-- python3.8/
`-- share/
The benefit here is that the entire installation tree can be bundled
into a single archive and copied to another machine with a different
version of Python installed, and GDB will still work, including its
Python support.
In use the new configure options would be used something like this,
first build and install a static Python library:
mkdir python
cd python
# Clone or download Python into a src/ directory.
mkdir build
export PYTHON_INSTALL_PATH=$PWD/install
cd build
../src/configure --disable-shared --prefix=$PYTHON_INSTALL_PATH
make
make install
Now build and install GDB:
mkdir binutils-gdb
cd binutils-gdb
# Clone or download GDB into a src/ directory.
mkdir build
export GDB_INSTALL_DIR=$PWD/install
cd build
../src/configure \
--prefix=$GDB_INSTALL_DIR \
--with-python=$PYTHON_INSTALL_PATH/bin/python3 \
--with-python-libdir=$GDB_INSTALL_DIR/lib
make all-gdb
make install-gdb
Finally, copy the Python libraries into the GDB install:
cp -r $PYTHON_INSTALL_DIR/lib/python3.8/ $GDB_INSTALL_DIR/lib
After this the Python src, build, and install directories are no
longer needed and can be deleted.
If the new --with-python-libdir option is not used then the existing
behaviour is left unchanged, GDB will look for the Python libraries in
the lib/ directory within the python path. The concatenation of the
python prefix and the string 'lib/' is now done at configure time,
rather than at run time in GDB as it was previous, however, this was
never something that the user had dynamic control over, so there's no
loss of functionality.
gdb/ChangeLog:
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add --with-python-libdir option.
* main.c: Use WITH_PYTHON_LIBDIR.
Diffstat (limited to 'gdb/configure.ac')
-rw-r--r-- | gdb/configure.ac | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gdb/configure.ac b/gdb/configure.ac index 335971f..a51c5ed 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -890,6 +890,24 @@ else fi fi +dnl Use --with-python-libdir to control where GDB looks for the Python +dnl libraries. +dnl +dnl If this is not given then the default will be based on the value +dnl passed to --with-python, which is in the python_prefix variable. +dnl If the --with-python option wasn't given then the default value in +dnl python_prefix is based on running the 'gdb/python/python-config +dnl --exec-prefix' script. +AC_ARG_WITH(python-libdir, + AS_HELP_STRING([--with-python-libdir@<:@=DIR@:>@], [search for python's libraries in DIR]), + [],[ + # If no python libdir is specified then select one based on + # python's prefix path. + if test -n "${python_prefix}"; then + with_python_libdir=${python_prefix}/lib + fi + ]) + if test "${have_libpython}" != no; then AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.]) CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)" @@ -898,6 +916,12 @@ if test "${have_libpython}" != no; then CONFIG_INSTALL="$CONFIG_INSTALL install-python" ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)" + if test -n "${with_python_libdir}"; then + AC_DEFINE_UNQUOTED(WITH_PYTHON_LIBDIR, "${with_python_libdir}", + [Directory containing Python's standard libraries from --with-python-libdir.]) + GDB_AC_DEFINE_RELOCATABLE(PYTHON_LIBDIR, [python lib], ${with_python_libdir}) + fi + # Flags needed to compile Python code (taken from python-config --cflags). # We cannot call python-config directly because it will output whatever was # used when compiling the Python interpreter itself, including flags which |