mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-23 13:58:00 +08:00
149 lines
4.6 KiB
Bash
Executable File
149 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
TARGET_HOST=$1
|
|
ESP_CHIP_ARCHITECTURE=$2
|
|
BUILD_PYTHON_VERSION=$3
|
|
GDB_DIST=$4
|
|
GDB_REPO_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
GDB_BUILD_DIR="${GDB_REPO_ROOT}/_build"
|
|
|
|
if [[ -z $TARGET_HOST || -z $BUILD_PYTHON_VERSION || -z $ESP_CHIP_ARCHITECTURE ]]; then
|
|
echo "Target host, chip arch and python version must be specified (set python version \"without_python\" to build without python), eg:"
|
|
echo " ./build_esp_gdb.sh i686-w64-mingw32 xtensa 3.6.0"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $GDB_DIST ]; then
|
|
GDB_DIST="${GDB_REPO_ROOT}/dist"
|
|
fi
|
|
|
|
PLATFORM=
|
|
if [[ ${TARGET_HOST} == *"mingw32" ]] ; then
|
|
PLATFORM="windows"
|
|
elif [[ ${TARGET_HOST} == *"apple-darwin"* ]] ; then
|
|
PLATFORM="macos"
|
|
else # linux
|
|
PLATFORM="linux"
|
|
fi
|
|
|
|
# Prepare build configure variables
|
|
if [ $BUILD_PYTHON_VERSION != "without_python" ]; then
|
|
PYTHON_CROSS_DIR=/opt/python-$TARGET_HOST-$BUILD_PYTHON_VERSION
|
|
PYTHON_CROSS_DIR_INCLUDE=`find $PYTHON_CROSS_DIR -name Python.h | xargs -n1 dirname`
|
|
fi
|
|
PYTHON_CROSS_DIR_LIB=
|
|
PYTHON_CROSS_LINK_FLAG=
|
|
PYTHON_LIB_POINT=
|
|
PYTHON_LIB_SUFFIX=
|
|
PYTHON_LIB_PREFIX=
|
|
EXE=
|
|
if [[ ${PLATFORM} == "windows" ]] ; then
|
|
PYTHON_LIB_SUFFIX=".dll"
|
|
EXE=".exe"
|
|
elif [[ ${PLATFORM} == "macos" ]] ; then
|
|
PYTHON_LIB_POINT="."
|
|
PYTHON_LIB_SUFFIX=".dylib"
|
|
PYTHON_LIB_PREFIX="lib"
|
|
else # linux
|
|
PYTHON_LIB_POINT="."
|
|
PYTHON_LIB_SUFFIX=".so"
|
|
PYTHON_LIB_PREFIX="lib"
|
|
fi
|
|
|
|
# Clean build and dist directories
|
|
rm -fr $GDB_BUILD_DIR $GDB_DIST
|
|
|
|
# Build xtensa-config libs
|
|
pushd xtensaconfig
|
|
make clean
|
|
AR="$TARGET_HOST-ar" CC="$TARGET_HOST-gcc" TARGET_ESP_ARCH=${ESP_CHIP_ARCHITECTURE} DESTDIR=$GDB_DIST PLATFORM=$PLATFORM make install
|
|
popd
|
|
|
|
# Temporary rename wrapper
|
|
mv $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb${EXE} ${GDB_DIST}/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb-wrapper${EXE} 2> /dev/null || true
|
|
|
|
PYTHON_CONFIG_OPTS=
|
|
if [ $BUILD_PYTHON_VERSION != "without_python" ]; then
|
|
PYTHON_CROSS_LIB_PATH=$(find $PYTHON_CROSS_DIR -name ${PYTHON_LIB_PREFIX}python3${PYTHON_LIB_POINT}[0-9]*${PYTHON_LIB_SUFFIX} | head -1)
|
|
PYTHON_CROSS_LINK_FLAG=$(basename $PYTHON_CROSS_LIB_PATH)
|
|
PYTHON_CROSS_LINK_FLAG="${PYTHON_CROSS_LINK_FLAG%$PYTHON_LIB_SUFFIX}"
|
|
PYTHON_CROSS_LINK_FLAG="-l${PYTHON_CROSS_LINK_FLAG#$PYTHON_LIB_PREFIX}"
|
|
PYTHON_CROSS_DIR_LIB=$(dirname $PYTHON_CROSS_LIB_PATH)
|
|
PYTHON_LDFLAGS="-L$PYTHON_CROSS_DIR_LIB $PYTHON_CROSS_LINK_FLAG -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes"
|
|
PYTHON_CONFIG_OPTS="--with-python \
|
|
--with-python-libdir=$PYTHON_CROSS_DIR/lib \
|
|
--with-python-includes=-I$PYTHON_CROSS_DIR_INCLUDE \
|
|
--with-python-ldflags=\"$PYTHON_LDFLAGS\""
|
|
else
|
|
PYTHON_CONFIG_OPTS="--without-python"
|
|
fi
|
|
|
|
WITH_XTENSACONFIG_OPTS=
|
|
if [ $ESP_CHIP_ARCHITECTURE == "xtensa" ]; then
|
|
WITH_XTENSACONFIG_OPTS="--with-xtensaconfig"
|
|
fi
|
|
|
|
CONFIG_OPTS=" \
|
|
--host=$TARGET_HOST \
|
|
--target=${ESP_CHIP_ARCHITECTURE}-esp-elf \
|
|
--build=`gcc -dumpmachine` \
|
|
--disable-werror \
|
|
--with-expat \
|
|
--with-libexpat-prefix=/opt/expat-$TARGET_HOST \
|
|
--disable-threads \
|
|
--disable-sim \
|
|
--disable-nls \
|
|
--disable-binutils \
|
|
--disable-ld \
|
|
--disable-gas \
|
|
--disable-source-highlight \
|
|
--prefix=/ \
|
|
--with-gmp=/opt/gmp-$TARGET_HOST \
|
|
--with-libgmp-prefix=/opt/gmp-$TARGET_HOST \
|
|
--with-mpc=/opt/mpc-$TARGET_HOST \
|
|
--without-mpfr \
|
|
${PYTHON_CONFIG_OPTS} \
|
|
${WITH_XTENSACONFIG_OPTS} \
|
|
--with-libexpat-type=static \
|
|
--with-liblzma-type=static \
|
|
--with-libgmp-type=static \
|
|
--with-static-standard-libraries \
|
|
--with-pkgversion="esp-gdb"\
|
|
"
|
|
|
|
# Makes configure happy if native build
|
|
export LD_LIBRARY_PATH="$PYTHON_CROSS_DIR_LIB:$LD_LIBRARY_PATH"
|
|
|
|
# Link with static libncurses for linux/macos
|
|
if [[ ${PLATFORM} != "windows" ]] ; then
|
|
export CFLAGS="-I/opt/ncurses-$TARGET_HOST/include"
|
|
export CXXFLAGS="-I/opt/ncurses-$TARGET_HOST/include"
|
|
export LDFLAGS="-L/opt/ncurses-$TARGET_HOST/lib"
|
|
fi
|
|
|
|
mkdir $GDB_BUILD_DIR && cd $GDB_BUILD_DIR
|
|
eval "$GDB_REPO_ROOT/configure $CONFIG_OPTS"
|
|
|
|
# Build GDB
|
|
|
|
make
|
|
make install DESTDIR=$GDB_DIST
|
|
|
|
#strip binaries. Save user's disc space
|
|
${TARGET_HOST}-strip $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb${EXE}
|
|
${TARGET_HOST}-strip $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gprof${EXE}
|
|
|
|
GDB_PROGRAM_SUFFIX=
|
|
if [ $BUILD_PYTHON_VERSION == "without_python" ]; then
|
|
GDB_PROGRAM_SUFFIX="no-python"
|
|
else
|
|
GDB_PROGRAM_SUFFIX=${BUILD_PYTHON_VERSION%.*}
|
|
fi
|
|
|
|
# rename gdb to have python version in filename
|
|
mv $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb${EXE} $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb-${GDB_PROGRAM_SUFFIX}${EXE}
|
|
|
|
# rename wrapper to original gdb name
|
|
mv $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb-wrapper${EXE} $GDB_DIST/bin/${ESP_CHIP_ARCHITECTURE}-esp-elf-gdb${EXE} 2> /dev/null || true
|