summaryrefslogtreecommitdiffstats
path: root/scripts/build-bootloader.sh
blob: f0f0ce7d02c5a997048a91ebe6c9e8446cb28b92 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env bash
#
# scripts/build-bootloader.sh — build rsboot (UEFI bootloader)
#
# rsboot is a git submodule at rsboot/.  This builds it and places
# BOOTX64.EFI into build/bootloader/.
#
# Usage:
#   ./scripts/build-bootloader.sh
#
# Output:
#   build/bootloader/BOOTX64.EFI
#
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
BUILD_DIR="$PROJECT_DIR/build"
BOOTLOADER_DIR="$BUILD_DIR/bootloader"

echo "=== Building rsboot (UEFI bootloader) ==="

# Ensure submodule is checked out, tracking the latest upstream HEAD
# (--remote fetches and checks out the newest main instead of reverting
# to the commit recorded in the superproject's gitlink).
cd "$PROJECT_DIR"
git submodule update --init --remote rsboot

cd "$PROJECT_DIR/rsboot"
make clean 2>/dev/null || true
make -j"$(nproc)" 2>&1 | sed 's/^/  /'

echo ""
echo "=== rsboot build complete ==="
ls -lh "$BOOTLOADER_DIR/BOOTX64.EFI"