configure: allow building GDB along with the buildtools
from a stock GDB source tree. I was getting tired of doing it manually. Note the prefix is not exactly the same as the buildtools since the machine triplet is different, but it's not an issue. Tested with arm and ppc with GDB 7.8. Might need patching gdbTarget for other archs, as stock GDB doesn't know about Haiku.
This commit is contained in:
@@ -15,15 +15,18 @@ buildToolsDir=$3
|
|||||||
installDir=$4
|
installDir=$4
|
||||||
shift 4
|
shift 4
|
||||||
additionalMakeArgs=$*
|
additionalMakeArgs=$*
|
||||||
|
gdbSourceDir="$HAIKU_USE_GDB"
|
||||||
|
|
||||||
ccFlags="-O2"
|
ccFlags="-O2"
|
||||||
cxxFlags="-O2"
|
cxxFlags="-O2"
|
||||||
binutilsTargets="$haikuMachine"
|
binutilsTargets="$haikuMachine"
|
||||||
|
gdbTarget="$haikuMachine"
|
||||||
case $haikuMachine in
|
case $haikuMachine in
|
||||||
i586-*)
|
i586-*)
|
||||||
binutilsConfigureArgs="--disable-multilib"
|
binutilsConfigureArgs="--disable-multilib"
|
||||||
gccConfigureArgs="--disable-multilib"
|
gccConfigureArgs="--disable-multilib"
|
||||||
binutilsTargets="$binutilsTargets,i386-efi-pe,x86_64-efi-pe"
|
binutilsTargets="$binutilsTargets,i386-efi-pe,x86_64-efi-pe"
|
||||||
|
gdbConfigureArgs="--disable-multilib"
|
||||||
;;
|
;;
|
||||||
x86_64-*)
|
x86_64-*)
|
||||||
# GCC's default is to enable multilib, but there is a bug when
|
# GCC's default is to enable multilib, but there is a bug when
|
||||||
@@ -31,10 +34,12 @@ x86_64-*)
|
|||||||
# failure
|
# failure
|
||||||
binutilsConfigureArgs=""
|
binutilsConfigureArgs=""
|
||||||
binutilsTargets="$binutilsTargets,i386-efi-pe,x86_64-efi-pe"
|
binutilsTargets="$binutilsTargets,i386-efi-pe,x86_64-efi-pe"
|
||||||
|
gdbConfigureArgs="--disable-multilib"
|
||||||
;;
|
;;
|
||||||
m68k-*)
|
m68k-*)
|
||||||
binutilsConfigureArgs="--enable-multilib"
|
binutilsConfigureArgs="--enable-multilib"
|
||||||
gccConfigureArgs="--enable-multilib"
|
gccConfigureArgs="--enable-multilib"
|
||||||
|
gdbConfigureArgs="--disable-multilib"
|
||||||
;;
|
;;
|
||||||
arm-*)
|
arm-*)
|
||||||
# Multilib creates a lot of confusion as the wrong libs end up being linked.
|
# Multilib creates a lot of confusion as the wrong libs end up being linked.
|
||||||
@@ -47,15 +52,20 @@ arm-*)
|
|||||||
# TODO: Disable building with TLS support for ARM until implemented.
|
# TODO: Disable building with TLS support for ARM until implemented.
|
||||||
binutilsConfigureArgs="$binutilsConfigureArgs --disable-tls"
|
binutilsConfigureArgs="$binutilsConfigureArgs --disable-tls"
|
||||||
gccConfigureArgs="$gccConfigureArgs --disable-tls"
|
gccConfigureArgs="$gccConfigureArgs --disable-tls"
|
||||||
|
gdbConfigureArgs="--disable-multilib --disable-werror -enable-interwork"
|
||||||
|
gdbTarget="arm-unknown-elf"
|
||||||
;;
|
;;
|
||||||
powerpc-*)
|
powerpc-*)
|
||||||
binutilsConfigureArgs="--disable-multilib"
|
binutilsConfigureArgs="--disable-multilib"
|
||||||
gccConfigureArgs="--disable-multilib"
|
gccConfigureArgs="--disable-multilib"
|
||||||
binutilsTargets="$binutilsTargets,powerpc-apple-linux,powerpc-apple-freebsd,powerpc-apple-vxworks"
|
binutilsTargets="$binutilsTargets,powerpc-apple-linux,powerpc-apple-freebsd,powerpc-apple-vxworks"
|
||||||
|
gdbConfigureArgs="--disable-multilib --disable-werror"
|
||||||
|
gdbTarget="powerpc-unknown-elf"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
binutilsConfigureArgs="--disable-multilib"
|
binutilsConfigureArgs="--disable-multilib"
|
||||||
gccConfigureArgs="--disable-multilib"
|
gccConfigureArgs="--disable-multilib"
|
||||||
|
gdbConfigureArgs="--disable-multilib"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -75,6 +85,11 @@ if [ ! -d "$buildToolsDir" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$gdbSourceDir" -a ! -d "$gdbSourceDir" ]; then
|
||||||
|
echo "No such directory: \"$gdbSourceDir\"" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# create the output dir
|
# create the output dir
|
||||||
mkdir -p "$installDir" || exit 1
|
mkdir -p "$installDir" || exit 1
|
||||||
@@ -95,6 +110,12 @@ cd "$installDir"
|
|||||||
installDir=$(pwd)
|
installDir=$(pwd)
|
||||||
cd "$currentDir"
|
cd "$currentDir"
|
||||||
|
|
||||||
|
if [ -n "$gdbSourceDir" ]; then
|
||||||
|
cd "$gdbSourceDir"
|
||||||
|
gdbSourceDir=$(pwd)
|
||||||
|
cd "$currentDir"
|
||||||
|
fi
|
||||||
|
|
||||||
binutilsSourceDir="$buildToolsDir/binutils"
|
binutilsSourceDir="$buildToolsDir/binutils"
|
||||||
gccSourceDir="$buildToolsDir/gcc"
|
gccSourceDir="$buildToolsDir/gcc"
|
||||||
|
|
||||||
@@ -117,6 +138,7 @@ find "$binutilsSourceDir" "$gccSourceDir" -name \*.info -print0 | xargs -0 touch
|
|||||||
objDir="${installDir}-build"
|
objDir="${installDir}-build"
|
||||||
binutilsObjDir="$objDir/binutils"
|
binutilsObjDir="$objDir/binutils"
|
||||||
gccObjDir="$objDir/gcc"
|
gccObjDir="$objDir/gcc"
|
||||||
|
gdbObjDir="$objDir/gdb"
|
||||||
stdcxxObjDir="$objDir/stdcxx"
|
stdcxxObjDir="$objDir/stdcxx"
|
||||||
sysrootDir="$installDir/sysroot"
|
sysrootDir="$installDir/sysroot"
|
||||||
tmpIncludeDir="$sysrootDir/boot/system/develop/headers"
|
tmpIncludeDir="$sysrootDir/boot/system/develop/headers"
|
||||||
@@ -124,8 +146,8 @@ tmpLibDir="$sysrootDir/boot/system/develop/lib"
|
|||||||
|
|
||||||
rm -rf "$installDir" "$objDir"
|
rm -rf "$installDir" "$objDir"
|
||||||
|
|
||||||
mkdir -p "$installDir" "$objDir" "$binutilsObjDir" "$gccObjDir" "$stdcxxObjDir" \
|
mkdir -p "$installDir" "$objDir" "$binutilsObjDir" "$gccObjDir" "$gdbObjDir" \
|
||||||
"$tmpIncludeDir" "$tmpLibDir" || exit 1
|
"$stdcxxObjDir" "$tmpIncludeDir" "$tmpLibDir" || exit 1
|
||||||
mkdir -p "$installDir/lib/gcc/$haikuMachine/$gccVersion"
|
mkdir -p "$installDir/lib/gcc/$haikuMachine/$gccVersion"
|
||||||
|
|
||||||
if [ "$HAIKU_USE_GCC_GRAPHITE" = 1 ]; then
|
if [ "$HAIKU_USE_GCC_GRAPHITE" = 1 ]; then
|
||||||
@@ -155,6 +177,17 @@ fi
|
|||||||
# force the POSIX locale, as the build (makeinfo) might choke otherwise
|
# force the POSIX locale, as the build (makeinfo) might choke otherwise
|
||||||
export LC_ALL=POSIX
|
export LC_ALL=POSIX
|
||||||
|
|
||||||
|
# build gdb
|
||||||
|
if [ -n "$HAIKU_USE_GDB" ]; then
|
||||||
|
cd "$gdbObjDir"
|
||||||
|
"$gdbSourceDir/configure" \
|
||||||
|
--prefix="$installDir" --target=$gdbTarget \
|
||||||
|
$gdbConfigureArgs \
|
||||||
|
|| exit 1
|
||||||
|
$MAKE $additionalMakeArgs || exit 1
|
||||||
|
$MAKE $additionalMakeArgs install || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# build binutils
|
# build binutils
|
||||||
cd "$binutilsObjDir"
|
cd "$binutilsObjDir"
|
||||||
CFLAGS="$ccFlags" CXXFLAGS="$cxxFlags" "$binutilsSourceDir/configure" \
|
CFLAGS="$ccFlags" CXXFLAGS="$cxxFlags" "$binutilsSourceDir/configure" \
|
||||||
|
|||||||
@@ -103,6 +103,9 @@ options:
|
|||||||
Linux xattr respectively *BSD extattr support to
|
Linux xattr respectively *BSD extattr support to
|
||||||
make it more robust (i.e. attribute mix-ups become
|
make it more robust (i.e. attribute mix-ups become
|
||||||
less likely).
|
less likely).
|
||||||
|
--with-gdb <gdb sources dir>
|
||||||
|
specify the path to a GDB source dir, to build
|
||||||
|
GDB for each arch we build the cross-tools for.
|
||||||
|
|
||||||
environment variables:
|
environment variables:
|
||||||
CC The host compiler. Defaults to "gcc".
|
CC The host compiler. Defaults to "gcc".
|
||||||
@@ -410,6 +413,7 @@ useClang=0
|
|||||||
useGccGraphiteDefault=0
|
useGccGraphiteDefault=0
|
||||||
unknownArchIndex=1
|
unknownArchIndex=1
|
||||||
haikuTargetArchs=
|
haikuTargetArchs=
|
||||||
|
gdbSources=
|
||||||
|
|
||||||
if [ -z "$CC" ]; then
|
if [ -z "$CC" ]; then
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@@ -618,6 +622,7 @@ while [ $# -gt 0 ] ; do
|
|||||||
--use-32bit) HAIKU_HOST_USE_32BIT=1; shift 1;;
|
--use-32bit) HAIKU_HOST_USE_32BIT=1; shift 1;;
|
||||||
--use-xattr) HAIKU_HOST_USE_XATTR=1; shift 1;;
|
--use-xattr) HAIKU_HOST_USE_XATTR=1; shift 1;;
|
||||||
--use-xattr-ref) HAIKU_HOST_USE_XATTR_REF=1; shift 1;;
|
--use-xattr-ref) HAIKU_HOST_USE_XATTR_REF=1; shift 1;;
|
||||||
|
--with-gdb) gdbSources=$2; shift 2;;
|
||||||
*) echo Invalid argument: \`$1\'; exit 1;;
|
*) echo Invalid argument: \`$1\'; exit 1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -778,6 +783,7 @@ else
|
|||||||
HAIKU_USE_GCC_GRAPHITE=`get_variable \
|
HAIKU_USE_GCC_GRAPHITE=`get_variable \
|
||||||
HAIKU_USE_GCC_GRAPHITE_$targetArch` \
|
HAIKU_USE_GCC_GRAPHITE_$targetArch` \
|
||||||
HAIKU_USE_GCC_PIPE=$HAIKU_USE_GCC_PIPE \
|
HAIKU_USE_GCC_PIPE=$HAIKU_USE_GCC_PIPE \
|
||||||
|
HAIKU_USE_GDB="$gdbSources" \
|
||||||
"$script" $scriptArgs "$sourceDir" "$buildCrossTools" \
|
"$script" $scriptArgs "$sourceDir" "$buildCrossTools" \
|
||||||
"$crossToolsDir" $buildCrossToolsJobs || exit 1
|
"$crossToolsDir" $buildCrossToolsJobs || exit 1
|
||||||
crossToolsPrefix="$crossToolsDir/bin/${targetMachine}-"
|
crossToolsPrefix="$crossToolsDir/bin/${targetMachine}-"
|
||||||
|
|||||||
Reference in New Issue
Block a user