Merge pull request 'Fix toolchain compilation (closes #3)' (#6) from toolchain into master

Reviewed-on: #6
This commit is contained in:
Sateallia 2023-10-19 07:51:05 -07:00
commit 6c39867556
2 changed files with 86 additions and 66 deletions

View File

@ -2,8 +2,8 @@ override MAKEFLAGS += -rR
override IMAGE_NAME := asagiri override IMAGE_NAME := asagiri
override ARCH := aarch64 override ARCH := aarch64
override CC := aarch64-elf-gcc override CC := aarch64-none-elf-gcc
override LD := aarch64-elf-ld override LD := aarch64-none-elf-ld
override DEFAULT_HOST_CFLAGS := -g -O3 -pipe override DEFAULT_HOST_CFLAGS := -g -O3 -pipe
.PHONY: all .PHONY: all

44
compile-toolchain.sh Executable file → Normal file
View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
set -e set -euo pipefail
export PREFIX="$HOME/cross-aarch64" export PREFIX="$HOME/cross-aarch64"
export TARGET="aarch64-elf" export TARGET="aarch64-none-elf"
export PATH="$PREFIX/bin:$PATH" export PATH="$PREFIX/bin:$PATH"
# Get thread count # Get thread count
@ -11,6 +11,17 @@ else
export NPROC="nproc" export NPROC="nproc"
fi fi
existGCC=0
existBIN=0
if [ -e binutils-2.41.tar.gz ]; then
existBIN=1
fi
if [ -e gcc-13.2.0.tar.gz ]; then
existGCC=1
fi
startLoc=$(pwd)
# Create prefix path # Create prefix path
mkdir -p $PREFIX mkdir -p $PREFIX
# Create compilation directory # Create compilation directory
@ -20,8 +31,17 @@ mkdir -p toolchain
cd toolchain cd toolchain
# Get sources # Get sources
if [[ "${existBIN}" != "1" ]]; then
wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
else
cp "${startLoc}/binutils-2.41.tar.gz" .
fi
if [[ "${existGCC}" != "1" ]]; then
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
else
cp "${startLoc}/gcc-13.2.0.tar.gz" .
fi
# Build binutils for aarch64 # Build binutils for aarch64
# might need texinfo # might need texinfo
@ -29,12 +49,14 @@ mkdir -p binutils-src
tar -xvf binutils-2.41.tar.gz -C binutils-src/ tar -xvf binutils-2.41.tar.gz -C binutils-src/
mkdir -p binutils mkdir -p binutils
cd binutils cd binutils
../binutils-src/*/configure --target=$TARGET --prefix=$PREFIX \ ../binutils-src/*/configure --target=$TARGET --prefix=$PREFIX --libexecdir=$PREFIX/lib \
--enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \ --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \
--disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\ --disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\
--enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \ --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \
--enable-default-ssp --enable-gnu-unique-object --with-zstd=no --enable-default-ssp --enable-gnu-unique-object --with-zstd=no --with-arch=armv8-a --enable-fix-cortex-a53-835769 \
--enable-fix-cortex-a53-843419
make -j$($NPROC) make -j$($NPROC)
make install make install
@ -47,17 +69,15 @@ cd gcc-src/*/
cd ../../ cd ../../
mkdir -p gcc mkdir -p gcc
cd gcc cd gcc
../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c \ ../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --disable-shared --disable-nls --disable-threads --disable-tls \
--enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \ --enable-checking=release --enable-languages=c,c++ --with-newlib --with-gnu-as --with-gnu-ld
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \
--disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\
--enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \
--enable-default-ssp --enable-gnu-unique-object
make -j$($NPROC) all-gcc make -j$($NPROC) all-gcc
make install-gcc make install-gcc
make -j$($NPROC) all-target-libgcc
make install-target-libgcc
cd cd
rm -rf /tmp/toolchain rm -rf /tmp/toolchain
echo "Toolchain installation is complete!" echo "Toolchain installation is complete!"
echo "Please add this to your bashrc or zshrc or whatever" echo "Please add this to your bashrc or zshrc or whatever"
echo "export \$PATH=\"$PREFIX/bin:\$PATH\"" echo "export PATH=\"$PREFIX/bin:\$PATH\""