Tim Crawford 87b0a4903c scripts: Build crossgcc with multiple cores
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-09-01 16:23:31 -06:00

136 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eE
function msg {
echo -e "\x1B[1m$*\x1B[0m" >&2
}
trap 'msg "\x1B[31mFailed to install dependencies!"' ERR
source /etc/os-release
msg "Installing system build dependencies"
if [[ "${ID}" =~ "debian" ]] || [[ "${ID_LIKE}" =~ "debian" ]]; then
sudo apt-get --quiet update
sudo apt-get --quiet install \
--no-install-recommends \
--assume-yes \
bison \
build-essential \
ccache \
cmake \
curl \
devmem2 \
dosfstools \
flashrom \
flex \
git-lfs \
gnat \
libncurses-dev \
libudev-dev \
msr-tools \
mtools \
parted \
python-is-python3 \
python3-distutils \
uuid-dev \
zlib1g-dev
elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then
sudo dnf group install c-development
sudo dnf install \
--assumeyes \
ccache \
cmake \
curl \
dosfstools \
flashrom \
gcc-gnat \
git-lfs \
libuuid-devel \
msr-tools \
mtools \
ncurses-devel \
parted \
patch \
python-unversioned-command \
python3 \
systemd-devel \
zlib-devel
elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then
sudo pacman -S \
--no-confirm \
bison \
ccache \
cmake \
curl \
dosfstools \
flashrom \
flex \
gcc-ada \
git-lfs \
msr-tools \
mtools \
ncurses \
parted \
patch \
python \
python-distutils-extra \
systemd-libs
else
msg "Unknown system ID: ${ID}"
msg "Please add support for your distribution to: $0"
exit 1
fi
msg "Installing GIT LFS hooks"
git lfs install
msg "Downloading GIT LFS artifacts"
git lfs pull
msg "Initializing submodules"
git submodule update --init --recursive --progress
msg "Installing coreboot commit hook"
curl -sSf https://review.coreboot.org/tools/hooks/commit-msg \
-o .git/modules/coreboot/hooks/commit-msg && \
chmod +x .git/modules/coreboot/hooks/commit-msg
RUSTUP_NEW_INSTALL=0
if which rustup &> /dev/null; then
msg "Updating rustup"
rustup self update
else
RUSTUP_NEW_INSTALL=1
msg "Installing Rust"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --default-toolchain stable
msg "Loading Rust environment"
source "${HOME}/.cargo/env"
fi
msg "Installing pinned Rust toolchain and components"
rustup show
msg "Installing EC dependencies"
pushd ec
./scripts/deps.sh
popd
msg "Building coreboot toolchains"
pushd coreboot
make CPUS="$(nproc)" crossgcc-i386
make CPUS="$(nproc)" crossgcc-x64
popd
if [[ $RUSTUP_NEW_INSTALL = 1 ]]; then
msg "\x1B[33m>> rustup was just installed. Ensure cargo is on the PATH with:"
echo -e " source ~/.cargo/env\n"
fi
msg "\x1B[32mSuccessfully installed dependencies"
echo "Ready to run ./scripts/build.sh [model]" >&2