"shellcheck -o all"
This is so gonna break something niche.
This commit is contained in:
parent
cb45e83425
commit
5aa17ead73
@ -1,6 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
script_dir=$(CD="$(dirname "$0")" && cd "$CD" && pwd)
|
||||
cd $script_dir
|
||||
script_dir=$(CD="$(dirname "$0")" && cd "${CD}" && pwd)
|
||||
cd "${script_dir}" || exit
|
||||
echo "Installing hooks from ${script_dir}/hooks"
|
||||
chmod +x hooks/*
|
||||
cp hooks/* ../.git/hooks
|
||||
cp hooks/* ../.git/hooks
|
||||
echo "Successfully installed hooks."
|
||||
|
@ -1,58 +1,64 @@
|
||||
#!/bin/bash
|
||||
gccVer="13.2.0"
|
||||
binutilsVer="2.41"
|
||||
export PREFIX=""
|
||||
if [ -n "${TOOLCHAINPREFIX}" ]; then
|
||||
if [[ -n "${TOOLCHAINPREFIX}" ]]; then
|
||||
export PREFIX="${TOOLCHAINPREFIX}"
|
||||
else
|
||||
export PREFIX="$HOME/cross-aarch64"
|
||||
export PREFIX="${HOME}/cross-aarch64"
|
||||
fi
|
||||
set -euo pipefail
|
||||
echo "Installing toolchain to ${PREFIX}"
|
||||
export TARGET="aarch64-none-elf"
|
||||
export PATH="$PREFIX/bin:$PATH"
|
||||
export PATH="${PREFIX}/bin:${PATH}"
|
||||
|
||||
# Get thread count
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
export NPROC="sysctl -n hw.physicalcpu"
|
||||
osType=$(uname)
|
||||
echo "Detected OS: ${osType}"
|
||||
export NPROC=""
|
||||
if [[ "${osType}" == "Darwin" ]]; then
|
||||
NPROC=$("sysctl -n hw.physicalcpu")
|
||||
else
|
||||
export NPROC="nproc"
|
||||
NPROC=$("nproc")
|
||||
fi
|
||||
echo "Detected threads: ${NPROC}"
|
||||
|
||||
existGCC=0
|
||||
existBIN=0
|
||||
if [ -e binutils-2.41.tar.gz ]; then
|
||||
if [[ -e binutils-"${binutilsVer}".tar.gz ]]; then
|
||||
existBIN=1
|
||||
fi
|
||||
if [ -e gcc-13.2.0.tar.gz ]; then
|
||||
if [[ -e gcc-"${gccVer}".tar.gz ]]; then
|
||||
existGCC=1
|
||||
fi
|
||||
|
||||
if [[ "${existBIN}" != "1" ]]; then
|
||||
wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
|
||||
wget https://ftp.gnu.org/gnu/binutils/binutils-"${binutilsVer}".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-"${gccVer}".tar.gz
|
||||
fi
|
||||
|
||||
startLoc=$(pwd)
|
||||
|
||||
# Create prefix path
|
||||
mkdir -p $PREFIX
|
||||
# Create compilation directory
|
||||
# Prefix path
|
||||
mkdir -p "${PREFIX}"
|
||||
# Compilation directory
|
||||
cd /tmp
|
||||
rm -rf toolchain
|
||||
mkdir -p toolchain
|
||||
cd toolchain
|
||||
|
||||
cp "${startLoc}/binutils-2.41.tar.gz" .
|
||||
cp "${startLoc}/gcc-13.2.0.tar.gz" .
|
||||
cp "${startLoc}/binutils-${binutilsVer}.tar.gz" .
|
||||
cp "${startLoc}/gcc-${gccVer}.tar.gz" .
|
||||
|
||||
# Build binutils for aarch64
|
||||
# might need texinfo
|
||||
mkdir -p binutils-src
|
||||
tar -xvf binutils-2.41.tar.gz -C binutils-src/
|
||||
tar -xvf binutils-"${binutilsVer}".tar.gz -C binutils-src/
|
||||
mkdir -p binutils
|
||||
cd binutils
|
||||
../binutils-src/*/configure --target=$TARGET --prefix=$PREFIX --libexecdir=$PREFIX/lib \
|
||||
../binutils-src/binutils-"${binutilsVer}"/configure --target="${TARGET}" --prefix="${PREFIX}" --libexecdir="${PREFIX}"/lib \
|
||||
--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-linker-build-id --enable-lto --enable-install-libiberty --with-linker-hash-style=gnu --with-gnu-ld\
|
||||
@ -60,27 +66,27 @@ cd binutils
|
||||
--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
|
||||
|
||||
# Build gcc for aarch64
|
||||
cd ..
|
||||
mkdir -p gcc-src
|
||||
tar -xvf gcc-13.2.0.tar.gz -C gcc-src/
|
||||
cd gcc-src/*/
|
||||
tar -xvf gcc-"${gccVer}".tar.gz -C gcc-src/
|
||||
cd gcc-src/gcc-"${gccVer}"/
|
||||
./contrib/download_prerequisites
|
||||
cd ../../
|
||||
mkdir -p gcc
|
||||
cd gcc
|
||||
../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --disable-shared --disable-nls --disable-threads --disable-tls \
|
||||
../gcc-src/gcc-"${gccVer}"/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 -j"${NPROC}" all-gcc
|
||||
make install-gcc
|
||||
make -j$($NPROC) all-target-libgcc
|
||||
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\""
|
||||
echo "export PATH=\"${PREFIX}/bin:\$PATH\""
|
||||
|
@ -1,83 +1,89 @@
|
||||
#!/bin/bash
|
||||
gccVer="13.2.0"
|
||||
binutilsVer="2.41"
|
||||
export PREFIX=""
|
||||
if [ -n "${TOOLCHAINPREFIX}" ]; then
|
||||
if [[ -n "${TOOLCHAINPREFIX}" ]]; then
|
||||
export PREFIX="${TOOLCHAINPREFIX}"
|
||||
else
|
||||
export PREFIX="$HOME/cross-x86_64"
|
||||
export PREFIX="${HOME}/cross-x86_64"
|
||||
fi
|
||||
set -euo pipefail
|
||||
echo "Installing toolchain to ${PREFIX}"
|
||||
export TARGET="x86_64-none-elf"
|
||||
export TARGET2="x86_64-none-pe"
|
||||
export PATH="$PREFIX/bin:$PATH"
|
||||
export PATH="${PREFIX}/bin:${PATH}"
|
||||
|
||||
# Get thread count
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
export NPROC="sysctl -n hw.physicalcpu"
|
||||
osType=$(uname)
|
||||
echo "Detected OS: ${osType}"
|
||||
export NPROC=""
|
||||
if [[ "${osType}" == "Darwin" ]]; then
|
||||
NPROC=$("sysctl -n hw.physicalcpu")
|
||||
else
|
||||
export NPROC="nproc"
|
||||
NPROC=$("nproc")
|
||||
fi
|
||||
echo "Detected threads: ${NPROC}"
|
||||
|
||||
existGCC=0
|
||||
existBIN=0
|
||||
if [ -e binutils-2.41.tar.gz ]; then
|
||||
if [[ -e binutils-"${binutilsVer}".tar.gz ]]; then
|
||||
existBIN=1
|
||||
fi
|
||||
if [ -e gcc-13.2.0.tar.gz ]; then
|
||||
if [[ -e gcc-"${gccVer}".tar.gz ]]; then
|
||||
existGCC=1
|
||||
fi
|
||||
|
||||
if [[ "${existBIN}" != "1" ]]; then
|
||||
wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
|
||||
wget https://ftp.gnu.org/gnu/binutils/binutils-"${binutilsVer}".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-"${gccVer}".tar.gz
|
||||
fi
|
||||
|
||||
startLoc=$(pwd)
|
||||
|
||||
# Create prefix path
|
||||
mkdir -p $PREFIX
|
||||
# Create compilation directory
|
||||
# Prefix path
|
||||
mkdir -p "${PREFIX}"
|
||||
# Compilation directory
|
||||
cd /tmp
|
||||
rm -rf toolchain
|
||||
mkdir -p toolchain
|
||||
cd toolchain
|
||||
|
||||
cp "${startLoc}/binutils-2.41.tar.gz" .
|
||||
cp "${startLoc}/gcc-13.2.0.tar.gz" .
|
||||
cp "${startLoc}/binutils-${binutilsVer}.tar.gz" .
|
||||
cp "${startLoc}/gcc-${gccVer}.tar.gz" .
|
||||
|
||||
# Build binutils for AMD64
|
||||
# might need texinfo
|
||||
mkdir -p binutils-src
|
||||
tar -xvf binutils-2.41.tar.gz -C binutils-src/
|
||||
tar -xvf binutils-"${binutilsVer}".tar.gz -C binutils-src/
|
||||
mkdir -p binutils
|
||||
cd binutils
|
||||
../binutils-src/*/configure --target=$TARGET --enable-targets=$TARGET,$TARGET2 --prefix=$PREFIX --libexecdir=$PREFIX/lib \
|
||||
../binutils-src/binutils-"${binutilsVer}"/configure --target="${TARGET}" --enable-targets="${TARGET}","${TARGET2}" --prefix="${PREFIX}" --libexecdir="${PREFIX}"/lib \
|
||||
--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-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 --with-zstd=no
|
||||
|
||||
make -j$($NPROC)
|
||||
make -j"${NPROC}"
|
||||
make install
|
||||
|
||||
# Build gcc for AMD64
|
||||
cd ..
|
||||
mkdir -p gcc-src
|
||||
tar -xvf gcc-13.2.0.tar.gz -C gcc-src/
|
||||
cd gcc-src/*/
|
||||
tar -xvf gcc-"${gccVer}".tar.gz -C gcc-src/
|
||||
cd gcc-src/gcc-"${gccVer}"/
|
||||
./contrib/download_prerequisites
|
||||
cd ../../
|
||||
mkdir -p gcc
|
||||
cd gcc
|
||||
../gcc-src/*/configure --target=$TARGET --prefix=$PREFIX --disable-shared --disable-nls --disable-threads --disable-tls \
|
||||
../gcc-src/gcc-"${gccVer}"/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 --without-headers
|
||||
|
||||
make -j$($NPROC) all-gcc
|
||||
make -j"${NPROC}" all-gcc
|
||||
make install-gcc
|
||||
make -j$($NPROC) all-target-libgcc
|
||||
make -j"${NPROC}" all-target-libgcc
|
||||
make install-target-libgcc
|
||||
|
||||
# Build GNU-EFI
|
||||
@ -86,20 +92,20 @@ git clone git://git.code.sf.net/p/gnu-efi/code --branch=3.0.15 --depth 1 gnu-efi
|
||||
cd gnu-efi
|
||||
# TODO: remove following line
|
||||
wget https://gist.githubusercontent.com/mlafeldt/3885346/raw/b6166a889846dc0612f4227fa3d32554870bb922/elf.h -O inc/elf.h
|
||||
export CMD="$PREFIX/bin/$TARGET"
|
||||
make -j$($NPROC) ARCH="x86_64" CC="$CMD-gcc" AR="$CMD-ar" AS="$CMD-as" LD="$CMD-ld" RANLIB="$CMD-ranlib" OBJCOPY="$CMD-objcopy"
|
||||
make install PREFIX="$PREFIX" ARCH="x86_64" CC="$CMD-gcc" AR="$CMD-ar" AS="$CMD-as" LD="$CMD-ld" RANLIB="$CMD-ranlib" OBJCOPY="$CMD-objcopy"
|
||||
export CMD="${PREFIX}/bin/${TARGET}"
|
||||
make -j"${NPROC}" ARCH="x86_64" CC="${CMD}-gcc" AR="${CMD}-ar" AS="${CMD}-as" LD="${CMD}-ld" RANLIB="${CMD}-ranlib" OBJCOPY="${CMD}-objcopy"
|
||||
make install PREFIX="${PREFIX}" ARCH="x86_64" CC="${CMD}-gcc" AR="${CMD}-ar" AS="${CMD}-as" LD="${CMD}-ld" RANLIB="${CMD}-ranlib" OBJCOPY="${CMD}-objcopy"
|
||||
|
||||
# Get OVMF from Debian if on macOS
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
cd ..
|
||||
if [[ "${osType}" == "Darwin" ]]; then
|
||||
cd ..
|
||||
mkdir OVMF
|
||||
cd OVMF
|
||||
wget https://ftp.debian.org/debian/pool/main/e/edk2/ovmf_2023.08-1_all.deb
|
||||
ar x ovmf_2023.08-1_all.deb
|
||||
tar xvf data.tar.xz
|
||||
rm -rf usr/share/OVMF/*.ms.fd
|
||||
cp -rf usr/share/OVMF $PREFIX/share/.
|
||||
cp -rf usr/share/OVMF "${PREFIX}"/share/.
|
||||
fi
|
||||
|
||||
cd
|
||||
@ -107,4 +113,4 @@ 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\""
|
||||
echo "export PATH=\"${PREFIX}/bin:\$PATH\""
|
||||
|
Loading…
x
Reference in New Issue
Block a user