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
@ -52,4 +52,4 @@ clean:
.PHONY: distclean .PHONY: distclean
distclean: clean distclean: clean
rm -rf limine ovmf rm -rf limine ovmf
$(MAKE) -C yukari distclean $(MAKE) -C yukari distclean

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

@ -1,63 +1,83 @@
#!/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
if [ "$(uname)" == "Darwin" ]; then if [ "$(uname)" == "Darwin" ]; then
export NPROC="sysctl -n hw.physicalcpu" export NPROC="sysctl -n hw.physicalcpu"
else else
export NPROC="nproc" export NPROC="nproc"
fi fi
# Create prefix path existGCC=0
mkdir -p $PREFIX existBIN=0
# Create compilation directory if [ -e binutils-2.41.tar.gz ]; then
cd /tmp existBIN=1
rm -rf toolchain fi
mkdir -p toolchain if [ -e gcc-13.2.0.tar.gz ]; then
cd toolchain existGCC=1
fi
# Get sources
wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz startLoc=$(pwd)
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
# Create prefix path
# Build binutils for aarch64 mkdir -p $PREFIX
# might need texinfo # Create compilation directory
mkdir -p binutils-src cd /tmp
tar -xvf binutils-2.41.tar.gz -C binutils-src/ rm -rf toolchain
mkdir -p binutils mkdir -p toolchain
cd binutils cd toolchain
../binutils-src/*/configure --target=$TARGET --prefix=$PREFIX \
--enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \ # Get sources
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \ if [[ "${existBIN}" != "1" ]]; then
--disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\ wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
--enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \ else
--enable-default-ssp --enable-gnu-unique-object --with-zstd=no cp "${startLoc}/binutils-2.41.tar.gz" .
make -j$($NPROC) fi
make install
if [[ "${existGCC}" != "1" ]]; then
# Build gcc for aarch64 wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
cd .. else
mkdir -p gcc-src cp "${startLoc}/gcc-13.2.0.tar.gz" .
tar -xvf gcc-13.2.0.tar.gz -C gcc-src/ fi
cd gcc-src/*/
./contrib/download_prerequisites # Build binutils for aarch64
cd ../../ # might need texinfo
mkdir -p gcc mkdir -p binutils-src
cd gcc tar -xvf binutils-2.41.tar.gz -C binutils-src/
../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c \ mkdir -p binutils
--enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \ cd binutils
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \ ../binutils-src/*/configure --target=$TARGET --prefix=$PREFIX --libexecdir=$PREFIX/lib \
--disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --enable-__cxa_atexit \
--enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \ --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-plugin \
--enable-default-ssp --enable-gnu-unique-object --disable-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\
make -j$($NPROC) all-gcc --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie \
make install-gcc --enable-default-ssp --enable-gnu-unique-object --with-zstd=no --with-arch=armv8-a --enable-fix-cortex-a53-835769 \
--enable-fix-cortex-a53-843419
cd
rm -rf /tmp/toolchain make -j$($NPROC)
echo "Toolchain installation is complete!" make install
echo "Please add this to your bashrc or zshrc or whatever"
echo "export \$PATH=\"$PREFIX/bin:\$PATH\"" # Build gcc for aarch64
cd ..
mkdir -p gcc-src
tar -xvf gcc-13.2.0.tar.gz -C gcc-src/
cd gcc-src/*/
./contrib/download_prerequisites
cd ../../
mkdir -p gcc
cd gcc
../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --disable-shared --disable-nls --disable-threads --disable-tls \
--enable-checking=release --enable-languages=c,c++ --with-newlib --with-gnu-as --with-gnu-ld
make -j$($NPROC) all-gcc
make install-gcc
make -j$($NPROC) all-target-libgcc
make install-target-libgcc
cd
rm -rf /tmp/toolchain
echo "Toolchain installation is complete!"
echo "Please add this to your bashrc or zshrc or whatever"
echo "export PATH=\"$PREFIX/bin:\$PATH\""