1#!/bin/bash 2 3export BUILD_TARGET=${BUILD_TARGET-aarch64-unknown-linux-gnu} 4 5WORKLOADS_DIR="$HOME/workloads" 6 7mkdir -p "$WORKLOADS_DIR" 8 9build_edk2() { 10 EDK2_BUILD_DIR="$WORKLOADS_DIR/edk2_build" 11 EDK2_REPO="https://github.com/tianocore/edk2.git" 12 EDK2_DIR="$EDK2_BUILD_DIR/edk2" 13 EDK2_PLAT_REPO="https://github.com/tianocore/edk2-platforms.git" 14 EDK2_PLAT_DIR="$EDK2_BUILD_DIR/edk2-platforms" 15 ACPICA_REPO="https://github.com/acpica/acpica.git" 16 ACPICA_DIR="$EDK2_BUILD_DIR/acpica" 17 export WORKSPACE="$EDK2_BUILD_DIR" 18 export PACKAGES_PATH="$EDK2_DIR:$EDK2_PLAT_DIR" 19 export IASL_PREFIX="$ACPICA_DIR/generate/unix/bin/" 20 21 if [ ! -d "$EDK2_BUILD_DIR" ]; then 22 mkdir -p "$EDK2_BUILD_DIR" 23 fi 24 25 # Prepare source code 26 checkout_repo "$EDK2_DIR" "$EDK2_REPO" master "46b4606ba23498d3d0e66b53e498eb3d5d592586" 27 pushd "$EDK2_DIR" 28 git submodule update --init 29 popd 30 checkout_repo "$EDK2_PLAT_DIR" "$EDK2_PLAT_REPO" master "8227e9e9f6a8aefbd772b40138f835121ccb2307" 31 checkout_repo "$ACPICA_DIR" "$ACPICA_REPO" master "b9c69f81a05c45611c91ea9cbce8756078d76233" 32 33 if [[ ! -f "$EDK2_DIR/.built" || \ 34 ! -f "$EDK2_PLAT_DIR/.built" || \ 35 ! -f "$ACPICA_DIR/.built" ]]; then 36 pushd "$EDK2_BUILD_DIR" 37 # Build 38 make -C acpica -j `nproc` 39 source edk2/edksetup.sh 40 make -C edk2/BaseTools -j `nproc` 41 build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtCloudHv.dsc -b RELEASE -n 0 42 cp Build/ArmVirtCloudHv-AARCH64/RELEASE_GCC5/FV/CLOUDHV_EFI.fd "$WORKLOADS_DIR" 43 touch "$EDK2_DIR"/.built 44 touch "$EDK2_PLAT_DIR"/.built 45 touch "$ACPICA_DIR"/.built 46 popd 47 fi 48} 49 50