| #!/bin/bash |
| |
| # Build script that determines the edk2 toolchain to use, invokes the edk2 |
| # "build" utility, and copies the built UEFI binary to the requested location. |
| # |
| # Copyright (C) 2019, Red Hat, Inc. |
| # |
| # This program and the accompanying materials are licensed and made available |
| # under the terms and conditions of the BSD License that accompanies this |
| # distribution. The full text of the license may be found at |
| # <http://opensource.org/licenses/bsd-license.php>. |
| # |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| set -e -u -C |
| |
| # Save the command line arguments. We need to reset $# to 0 before sourcing |
| # "edksetup.sh", as it will inherit $@. |
| program_name=$(basename -- "$0") |
| edk2_dir=$1 |
| dsc_component=$2 |
| emulation_target=$3 |
| uefi_binary=$4 |
| shift 4 |
| |
| # Set up the environment for edk2 building. |
| export PACKAGES_PATH=$(realpath -- "$edk2_dir") |
| export WORKSPACE=$PWD |
| mkdir -p Conf |
| |
| export PYTHON_COMMAND=${EDK2_PYTHON_COMMAND:-python3} |
| |
| # Source "edksetup.sh" carefully. |
| set +e +u +C |
| source "$PACKAGES_PATH/edksetup.sh" |
| ret=$? |
| set -e -u -C |
| if [ $ret -ne 0 ]; then |
| exit $ret |
| fi |
| |
| # Fetch some option arguments, and set the cross-compilation environment (if |
| # any), for the edk2 "build" utility. |
| source "$edk2_dir/../edk2-funcs.sh" |
| edk2_arch=$(qemu_edk2_get_arch "$emulation_target") |
| edk2_toolchain=$(qemu_edk2_get_toolchain "$emulation_target") |
| MAKEFLAGS=$(qemu_edk2_quirk_tianocore_1607 "$MAKEFLAGS") |
| edk2_thread_count=$(qemu_edk2_get_thread_count "$MAKEFLAGS") |
| qemu_edk2_set_cross_env "$emulation_target" |
| |
| # Build the UEFI binary |
| mkdir -p log |
| build \ |
| --arch="$edk2_arch" \ |
| -n "$edk2_thread_count" \ |
| --buildtarget=DEBUG \ |
| --platform=UefiTestToolsPkg/UefiTestToolsPkg.dsc \ |
| --tagname="$edk2_toolchain" \ |
| --module="UefiTestToolsPkg/$dsc_component/$dsc_component.inf" \ |
| --log="log/$dsc_component.$edk2_arch.log" \ |
| --report-file="log/$dsc_component.$edk2_arch.report" |
| cp -a -- \ |
| "Build/UefiTestTools/DEBUG_${edk2_toolchain}/$edk2_arch/$dsc_component.efi" \ |
| "$uefi_binary" |