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