From 0dd98382208f12e36f22ad50791180afe8232ce6 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Thu, 5 Aug 2021 19:13:46 +0000 Subject: add a script which builds i686-elf-binutils --- .gitignore | 1 + Makefile | 2 ++ tools/dep_builders/binutils | 43 +++++++++++++++++++++++++++++++++++++++++++ tools/dep_builders/dl | 9 +++++++++ 4 files changed, 55 insertions(+) create mode 100755 tools/dep_builders/binutils create mode 100755 tools/dep_builders/dl diff --git a/.gitignore b/.gitignore index 89f9ac0..b2cb32e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ out/ +toolchain/ diff --git a/Makefile b/Makefile index 6fcd2c5..7bfc4b0 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +PATH := $(shell pwd)/toolchain/binutils-2.37/bin/:$(PATH) + AS = i686-elf-as CC = i686-elf-gcc CFLAGS = -std=gnu99 -ffreestanding -O2 -Wall -Wextra diff --git a/tools/dep_builders/binutils b/tools/dep_builders/binutils new file mode 100755 index 0000000..a7fc17f --- /dev/null +++ b/tools/dep_builders/binutils @@ -0,0 +1,43 @@ +#!/bin/sh + +TOOL="binutils" +VER="2.37" +# this is ugly +{ HASHES=$(cat) ; } <<'HASHES' +c44968b97cd86499efbc4b4ab7d98471f673e5414c554ef54afa930062dbbfcb toolchain/cache/binutils-2.37.tar.gz +HASHES + +export PREFIX="$(pwd)/toolchain/$TOOL-$VER/" +export TARGET=i686-elf + + +# ensure that we're in the repo root +if [ ! -d .git ]; then + echo please cd to the repo\'s main directory + exit +fi + +mkdir -p $PREFIX/build + + +echo "downloading missing files..." +tools/dep_builders/dl "https://ftp.gnu.org/gnu/$TOOL/$TOOL-$VER.tar.gz" +tools/dep_builders/dl "https://ftp.gnu.org/gnu/$TOOL/$TOOL-$VER.tar.gz.sig" +tools/dep_builders/dl "https://ftp.gnu.org/gnu/gnu-keyring.gpg" + +echo "verifying signatures..." +if ! gpg --verify --keyring toolchain/cache/gnu-keyring.gpg toolchain/cache/$TOOL-$VER.tar.gz.sig +then + echo "THE SIGNATURE COULDN'T BE VERIFIED. something's fishy." + exit +fi +echo "$HASHES" | sha256sum --check || exit + +echo "unpacking the tarball..." +tar xf toolchain/cache/$TOOL-$VER.tar.gz -C toolchain/cache + +echo "building..." +cd $PREFIX/build +../../cache/$TOOL-$VER/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror +make +make install diff --git a/tools/dep_builders/dl b/tools/dep_builders/dl new file mode 100755 index 0000000..8cfeebc --- /dev/null +++ b/tools/dep_builders/dl @@ -0,0 +1,9 @@ +#!/bin/sh +# downloads a file to toolchain/cache unless it's already present there + +mkdir -p toolchain/cache +OUT="toolchain/cache/$(basename $1)" + +[ -e "$OUT" ] && exit +echo "downloading $1..." +curl "$1" > $OUT -- cgit v1.2.3