firmware-open/scripts/build.sh

67 lines
1.8 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -e
if [ -z "$1" ]
then
echo "$0 [model]" >&2
exit 1
fi
MODEL="$1"
2019-05-02 19:43:10 -06:00
if [ ! -d "models/$1" ]
then
2019-05-02 19:43:10 -06:00
echo "model '$1' not found" >&2
exit 1
fi
MODEL_DIR="$(realpath "models/${MODEL}")"
2019-05-02 19:43:10 -06:00
# Clean build directory
mkdir -p build
BUILD="$(realpath "build/${MODEL}")"
2019-06-18 12:48:56 -06:00
rm -rf "${BUILD}"
2019-05-02 19:43:10 -06:00
mkdir -p "${BUILD}"
UEFIPAYLOAD="${BUILD}/UEFIPAYLOAD.fd"
COREBOOT="${BUILD}/coreboot.rom"
USB="${BUILD}/usb.img"
# Rebuild firmware-setup (used by edk2)
touch apps/firmware-setup/Cargo.toml
2019-06-10 13:16:39 -06:00
make -C apps/firmware-setup
2019-05-03 13:55:13 -06:00
# Rebuild gop-policy (used by edk2)
touch apps/gop-policy/Cargo.toml
FIRMWARE_OPEN_VBT="${MODEL_DIR}/vbt.rom" \
2019-06-10 13:16:39 -06:00
make -C apps/gop-policy
2019-05-03 13:55:13 -06:00
# Rebuild CorebootPayloadPkg using edk2
2019-05-02 19:43:10 -06:00
PACKAGES_PATH="${MODEL_DIR}:$(realpath edk2-platforms):$(realpath apps)" \
2019-06-10 13:16:39 -06:00
./scripts/_build/edk2.sh \
2019-05-02 19:43:10 -06:00
"${UEFIPAYLOAD}" \
2019-06-06 14:47:24 -06:00
-D USE_HPET_TIMER=TRUE \
2019-06-18 12:48:56 -06:00
-D SOURCE_DEBUG_ENABLE=FALSE \
2019-05-03 13:55:13 -06:00
-D FIRMWARE_OPEN_FIRMWARE_SETUP="firmware-setup/firmware-setup.inf" \
-D FIRMWARE_OPEN_GOP_POLICY="gop-policy/gop-policy.inf" \
-D FIRMWARE_OPEN_GOP="IntelGopDriver.inf"
# Rebuild coreboot
2019-05-02 19:43:10 -06:00
FIRMWARE_OPEN_MODEL_DIR="${MODEL_DIR}" \
FIRMWARE_OPEN_UEFIPAYLOAD="${UEFIPAYLOAD}" \
./scripts/_build/coreboot.sh \
"${MODEL_DIR}/coreboot.config" \
"${COREBOOT}"
2019-05-02 16:08:54 -06:00
# Rebuild firmware-update
SHASUM="$(sha384sum "${COREBOOT}" | cut -d " " -f 1)"
export BASEDIR="system76-${SHASUM}"
pushd apps/firmware-update >/dev/null
rm -rf "build/x86_64-efi-pe"
make "build/x86_64-efi-pe/boot.img"
cp -v "build/x86_64-efi-pe/boot.img" "${USB}.partial"
popd >/dev/null
mmd -i "${USB}.partial@@1M" "::${BASEDIR}/firmware"
2019-08-28 14:46:42 -06:00
mcopy -i "${USB}.partial@@1M" "${MODEL_DIR}/ec.rom" "::${BASEDIR}/firmware/ec.rom"
2019-05-02 16:08:54 -06:00
mcopy -i "${USB}.partial@@1M" "${COREBOOT}" "::${BASEDIR}/firmware/firmware.rom"
mv -v "${USB}.partial" "${USB}"