xref: /cloud-hypervisor/scripts/common-aarch64.sh (revision 4d7a4c598ac247aaf770b00dfb057cdac891f67d)
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