qemu/roms/edk2-build.sh
<<
>>
Prefs
   1#!/bin/bash
   2
   3# Wrapper shell script for building a  virtual platform firmware in edk2.
   4#
   5# Copyright (C) 2019 Red Hat, Inc.
   6#
   7# This program and the accompanying materials are licensed and made available
   8# under the terms and conditions of the BSD License that accompanies this
   9# distribution. The full text of the license may be found at
  10# <http://opensource.org/licenses/bsd-license.php>.
  11#
  12# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
  13# WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
  14
  15set -e -u -C
  16
  17# Save the command line arguments. We need to reset $# to 0 before sourcing
  18# "edksetup.sh", as it will inherit $@.
  19emulation_target=$1
  20shift
  21num_args=0
  22args=()
  23for arg in "$@"; do
  24  args[num_args++]="$arg"
  25done
  26shift $num_args
  27
  28cd edk2
  29
  30# Work around <https://bugzilla.tianocore.org/show_bug.cgi?id=1607>.
  31export PYTHON_COMMAND=python2
  32
  33# Source "edksetup.sh" carefully.
  34set +e +u +C
  35source ./edksetup.sh
  36ret=$?
  37set -e -u -C
  38if [ $ret -ne 0 ]; then
  39  exit $ret
  40fi
  41
  42# Fetch some option arguments, and set the cross-compilation environment (if
  43# any), for the edk2 "build" utility.
  44source ../edk2-funcs.sh
  45edk2_toolchain=$(qemu_edk2_get_toolchain "$emulation_target")
  46edk2_thread_count=$(qemu_edk2_get_thread_count "$MAKEFLAGS")
  47qemu_edk2_set_cross_env "$emulation_target"
  48
  49# Build the platform firmware.
  50build \
  51  --cmd-len=65536 \
  52  -n "$edk2_thread_count" \
  53  --buildtarget=DEBUG \
  54  --tagname="$edk2_toolchain" \
  55  "${args[@]}"
  56