altcross-2stage: use in-tree sources

This commit is contained in:
Алексей Шепляков 2023-01-28 02:05:10 +04:00
parent e8dce540b1
commit 2a92904f17

View File

@ -1,18 +1,27 @@
#!/bin/bash
set -e
set -x
MYDIR="${0%/*}"
TARGET=aarch64-linux-gnu
ARCH=aarch64
LINUX_ARCH=arm64
QEMU_ARCH=aarch64
TARGET='loongarch64-linux-gnu'
ARCH=loongarch64
LINUX_ARCH=loongarch
QEMU_ARCH=loongarch64
TARGET_LD_LINUX='/lib64/ld-linux-loongarch-lp64d.so.1'
TARGET_LIBDIR=lib64
unset NIL
KERNEL_SOURCE="`find /usr/src/kernel/sources -type f -name 'kernel-source-*.tar'`"
BINUTILS_SOURCE="`find /usr/src/binutils-source -type f -name 'binutils-*.tar'`"
GCC_SOURCE="`find /usr/src/gcc-source -type f -name 'gcc-*.tar'`"
GLIBC_SOURCE="`find /usr/src/glibc-source -type f -name 'glibc-*.tar'`"
cd "$MYDIR"
MYDIR=`pwd`
BUILDDIR="`pwd`/build"
SRCDIR="`pwd`/src"
KERNEL_SOURCE="`find $(pwd) -maxdepth 1 -type f -name 'kernel-source-*.tar*'`"
BINUTILS_SOURCE="`find $(pwd) -maxdepth 1 -type f -name 'binutils-*.tar*'`"
GCC_SOURCE="`find $(pwd) -maxdepth 1 -type f -name 'gcc-*.tar*'`"
GLIBC_SOURCE="`find $(pwd) -maxdepth 1 -type f -name 'glibc-*.tar*'`"
GCC_PATCHES="`find $(pwd)/patches/gcc -maxdepth 1 -type f -name '*.patch'`"
getversion() {
local fname="${1##*/}"
@ -24,8 +33,6 @@ getversion() {
GCC_VERSION=`getversion $GCC_SOURCE`
GCC_MAJOR_VERSION="${GCC_VERSION%%.*}"
BUILDDIR="`pwd`/build"
SRCDIR="`pwd`/src"
INSTALLDIR="`pwd`/inst/altcross-gcc-${GCC_VERSION}"
BOOTSTRAP_INSTALLDIR="`pwd`/stage1/altcross-gcc-${GCC_VERSION}"
SYSROOT=/$TARGET/libc
@ -35,14 +42,17 @@ mkdir -p -m755 "$SRCDIR"
cd "$SRCDIR"
mkdir -p -m755 linux binutils gcc glibc
tar -x --strip-components=1 -f "$KERNEL_SOURCE" -C linux
tar -x --strip-components=1 -f "$BINUTILS_SOURCE" -C binutils
tar -x --strip-components=1 -f "$GCC_SOURCE" -C gcc
tar -x --strip-components=1 -f "$GLIBC_SOURCE" -C glibc
tar -x -a --strip-components=1 -f "$KERNEL_SOURCE" -C linux
tar -x -a --strip-components=1 -f "$BINUTILS_SOURCE" -C binutils
tar -x -a --strip-components=1 -f "$GCC_SOURCE" -C gcc
tar -x -a --strip-components=1 -f "$GLIBC_SOURCE" -C glibc
cd "gcc"
sed -i contrib/download_prerequisites -e '/base_url=/s/ftp/http/'
./contrib/download_prerequisites
for p in $GCC_PATCHES; do
patch -p1 -i $p
done
mkdir -p -m755 "$INSTALLDIR/bin" "$BOOTSTRAP_INSTALLDIR/bin"
save_PATH="$PATH"
@ -66,6 +76,7 @@ cd "$BUILDDIR/obj_binutils"
--with-sysroot="$SYSROOT" \
--with-build-sysroot="$SYSROOTDIR" \
--disable-multilib \
--disable-gdb \
${NIL}
make -j$(nproc)
@ -167,10 +178,12 @@ sed -e "s; objcopy ; ../../../../bin/${TARGET}-objcopy ;" -i $BUILDDIR/specs
mv $BUILDDIR/specs "$INSTALLDIR/lib/gcc/$TARGET/${GCC_MAJOR_VERSION}/"
# relocate libgcc_s
mv $INSTALLDIR/lib/gcc/$TARGET/lib64/libgcc_s.so* "$INSTALLDIR/lib/gcc/$TARGET/${GCC_MAJOR_VERSION}/"
rmdir "$INSTALLDIR/lib/gcc/$TARGET/lib64"
if [ -d "$INSTALLDIR/lib/gcc/$TARGET/lib64" ]; then
mv $INSTALLDIR/lib/gcc/$TARGET/lib64/libgcc_s.so* "$INSTALLDIR/lib/gcc/$TARGET/${GCC_MAJOR_VERSION}/"
rmdir "$INSTALLDIR/lib/gcc/$TARGET/lib64"
fi
cd "$MYDIR"
$INSTALLDIR/bin/${TARGET}-gcc -o ${BUILDDIR}/hello_c hello.c || exit 2
$INSTALLDIR/bin/${TARGET}-g++ -o ${BUILDDIR}/hello_cpp hello.cpp || exit 3
$INSTALLDIR/bin/${TARGET}-gcc -o ${BUILDDIR}/bye_asm -static -nostdlib bye-${LINUX_ARCH}.S || exit 11