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