SpaghettiKart/docs/get_bin.sh

82 lines
2.0 KiB
Bash

#!/bin/bash
# --- Useful Variables --- #
# This is the specific binutils version that will be downloaded
binutils=binutils-2.36
# Where the built files will end up.
# If this directory doesn't already exist it will be created automatically.
destFolder=./tools/binutils
# The temporary folder name to work from.
tempFolder=build_temp
# The prefix appended to the start of the built files.
prefix=mips64-elf-
# Folder names within the binutils directory.
binFolder=binutils
ldFolder=ld
gasFolder=gas
# How many threads to use with make (All of them)
threadCount=$(nproc --all)
# --- Useful Macros --- #
PRINT_STEP () {
echo "($1) ==== $2 ==== "
}
INSTALL_FILE() {
cp ./$tempFolder/$binutils/$2/$1 $destFolder/$prefix$1
echo "Installed mips64-elf-$1"
}
RENAME_AND_INSTALL_FILE() {
cp ./$tempFolder/$binutils/$2/$1 $destFolder/$prefix$3
echo "Installed mips64-elf-$3"
}
# --- Script --- #
# Make the destintation folder if it already doesn't exist.
mkdir -p $destFolder
# Having a temp folder makes things easy to cleanup
#rm -Rf $tempFolder # This will remove the temp folder if it exists for some reason.
mkdir $tempFolder
cd $tempFolder
PRINT_STEP 1 "DOWNLOADING BINUTILS FROM GNU.ORG"
wget ftp://ftp.gnu.org/gnu/binutils/$binutils.tar.xz
PRINT_STEP 2 "EXTRACTING TAR FILE"
tar -xf $binutils.tar.xz
PRINT_STEP 3 "CONFIGURING THE MAKEFILE"
cd $binutils
# Credit goes to queueRAM for letting me know what the correct arguments are.
./configure --target=mips64-elf --prefix=/usr --with-sysroot=/usr/mips64-elf --with-gnu-as --with-gnu-ld --enable-64-bit-bfd --enable-multilib --enable-plugins --disable-gold --disable-nls --disable-shared --disable-werror
PRINT_STEP 4 "MAKING BINUTILS"
make -j$threadCount
cd ../..
PRINT_STEP 5 "INSTALLING BUILT FILES"
# Add or remove programs here.
INSTALL_FILE ar $binFolder
INSTALL_FILE objcopy $binFolder
INSTALL_FILE objdump $binFolder
RENAME_AND_INSTALL_FILE as-new $gasFolder as
RENAME_AND_INSTALL_FILE ld-new $ldFolder ld
PRINT_STEP 6 "CLEANING UP"
#rm -Rf $tempFolder
PRINT_STEP - "DONE!"