firmware-open/scripts/build.sh

94 lines
2.2 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -e
export XGCCPATH="${XGCCPATH:-$PWD/coreboot/util/crossgcc/xgcc/bin}"
export PATH="$XGCCPATH:$PATH:/usr/sbin"
if [ -z "$1" ]
then
echo "$0 <model>" >&2
exit 1
fi
MODEL="$1"
if [ ! -d "models/${MODEL}" ]
then
echo "model '${MODEL}' not found" >&2
exit 1
fi
MODEL_DIR="$(realpath "models/${MODEL}")"
DATE="$(git show --format="%cd" --date="format:%Y-%m-%d" --no-patch --no-show-signature)"
REV="$(git describe --always --dirty --abbrev=7)"
VERSION="${DATE}_${REV}"
echo "Building '${VERSION}' for '${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}/firmware.rom"
EDK2_ARGS=(
2019-10-03 10:26:56 -06:00
-D SHELL_TYPE=NONE
-D SOURCE_DEBUG_ENABLE=FALSE
)
# Rebuild firmware-setup (used by edk2)
2019-06-10 13:16:39 -06:00
make -C apps/firmware-setup
EDK2_ARGS+=(
-D FIRMWARE_OPEN_FIRMWARE_SETUP="firmware-setup/firmware-setup.inf"
)
2019-05-03 13:55:13 -06:00
# Rebuild gop-policy (used by edk2)
if [ -e "${MODEL_DIR}/IntelGopDriver.inf" ] && [ -e "${MODEL_DIR}/vbt.rom" ]
then
FIRMWARE_OPEN_VBT="${MODEL_DIR}/vbt.rom" \
make -C apps/gop-policy
EDK2_ARGS+=(
-D FIRMWARE_OPEN_GOP_POLICY="gop-policy/gop-policy.inf"
-D FIRMWARE_OPEN_GOP="IntelGopDriver.inf"
)
fi
2019-05-03 13:55:13 -06:00
2020-12-29 10:56:01 -07:00
# Add any arguments in edk2.config
if [ -e "${MODEL_DIR}/edk2.config" ]
then
while read line
do
if [[ "$line" != "#"* ]]
then
EDK2_ARGS+=(-D "$line")
fi
done < "${MODEL_DIR}/edk2.config"
fi
# Rebuild UefiPayloadPkg using edk2
PACKAGES_PATH="${MODEL_DIR}:$(realpath apps)" \
2019-06-10 13:16:39 -06:00
./scripts/_build/edk2.sh \
2019-05-02 19:43:10 -06:00
"${UEFIPAYLOAD}" \
"${EDK2_ARGS[@]}"
# Rebuild coreboot
# NOTE: coreboot expects paths to be relative to it
FIRMWARE_OPEN_MODEL_DIR="../models/${MODEL}" \
2019-05-02 19:43:10 -06:00
FIRMWARE_OPEN_UEFIPAYLOAD="${UEFIPAYLOAD}" \
KERNELVERSION="${VERSION}" \
2019-05-02 19:43:10 -06:00
./scripts/_build/coreboot.sh \
"${MODEL_DIR}/coreboot.config" \
"${COREBOOT}"
2019-05-02 16:08:54 -06:00
# Rebuild EC firmware for System76 EC models
if [ ! -e "${MODEL_DIR}/ec.rom" ] && [ -e "${MODEL_DIR}/ec.config" ]
then
env VERSION="${VERSION}" \
./scripts/_build/ec.sh \
"${MODEL_DIR}/ec.config" \
"${BUILD}/ec.rom"
fi
echo "Built '${VERSION}' for '${MODEL}'"