# Platform build configurations for Linaro EDK2 builds
# ====================================================
# The configuration file format is extremely simplistic:
# - Each platform has a short name.
# - A platform entry starts by the short name held in square brackets, '[]'
# - Within each entry, all options are described in a NAME=VALUE scheme,
#   with the name being whatever comes before the first '=' on the line,
#   and the value being everything that comes after it.
#
# Mandatory options:
# - LONGNAME		A more descriptive name of the platform.
# - DSC			Pointer to the EDK2 build description file. (The
#			pandaboard is excused, all other ports must have this.)
# - ARCH		String describing the architecture to build for.
#			Currently supported are AARCH32 and AARCH64.
# - UEFI_BIN		Name of executable image produced.
# - UEFI_IMAGE_DIR	Build output directory name, relative to 'Build'.
#
# Options for Trusted OS
# Note that OP-TEE (https://github.com/OP-TEE/optee_os) is the only currently
# supported Trusted OS
# - BUILD_TOS		Set to "yes" if the build should automatically build
#   			Trusted OS, mainly for ARM Trusted Firmware.
#			If this is set, you must also set ATF_SPD!
#			Else we will not know which specific Trusted OS to
#			build.
#			Set to "debug" to create a debug build.
# - TOS_PLATFORM	Platform name for Trusted OS build, if
#   			different from ARM Trusted Firmware platform
#			or UEFI platform name.
# - TOS_PLATFORM_FLAVOR	If a core platform has multiple flavors, specify which
#			flavor here.
#
# Options for ARM Trusted Firmware platforms
# - BUILD_ATF		Set to "yes" if the build should automatically build
#   			ARM Trusted Firmware and a fip containing UEFI image.
#			Set to "debug" to create a debug build.
# - ATF_PLATFORM	Platform name for ARM Trusted Firmware build, if
#   			different from UEFI platform name.
# - SCP_BIN		SCP image to pass to ARM Trusted Firmware.
# - TOS_BIN		Trusted OS image to pass to ARM Trusted Firmware.
#			The path is relative to
#			$EDK2_DIR/Build/$PLATFORM_IMAGE_DIR/$BUILD_PROFILE/FV/.
#			To actually build the Trusted OS, you must also set
#			ATF_SPD.
# - ATF_SPD		Name of Secure Payload Dispatcher
#			To actually build the Trusted OS, you must also set
#			TOS_BIN.
#
# Optional options:
# - BUILDFLAGS		Any special flags you want to pass to the build command.
# - ATF_BUILDFLAGS	Any special flags you want to pass to the ARM Trusted
#			Firmware build command.
# - TOS_BUILDFLAGS	Any special flags you want to pass to the Trusted OS
#			build command.
# - EXTRA_FILES		Any additional files to be copied to output dir.
# - PREBUILD_CMDS	Any commands you want to execute before the build step.
# - POSTBUILD_CMDS	Any commands you want to execute after the build step.
# - PACKAGES_PATH	Additional directories to search for packages under.
#
# Special options:
# - BUILDCMD		Command to call instead of the normal build command.
#			Only for pandaboard, not to be used for new ports.
#

[juno]
LONGNAME=aarch64 Juno
DSC=OpenPlatformPkg/Platforms/ARM/Juno/ArmJuno.dsc
BUILDFLAGS=
ARCH=AARCH64
BUILD_ATF=yes
UEFI_BIN=BL33_AP_UEFI.fd
UEFI_IMAGE_DIR=ArmJuno
SCP_BIN=OpenPlatformPkg/Platforms/ARM/Juno/Binary/bl30.bin
EXTRA_FILES=../../../../OpenPlatformPkg/Platforms/ARM/Juno/Binary/bl0.bin ../../../../OpenPlatformPkg/Platforms/ARM/Juno/Binary/Copying.txt

# ARM FVP BASE AEMv8-A model
[fvp_full]
LONGNAME=aarch64 FVP RTSM with full perhiperhal set
DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
BUILDFLAGS=-D EDK2_OUT_DIR=Build/ArmVExpress-FVP-AArch64-Full -D EDK2_ENABLE_SMSC_91X=1 -D EDK2_ENABLE_PL111=1
ARCH=AARCH64
UEFI_BIN=FVP_AARCH64_EFI.fd
UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-Full

[fvp]
LONGNAME=aarch64 FVP RTSM
DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
BUILDFLAGS=-D EDK2_ENABLE_SMSC_91X=1
ARCH=AARCH64
BUILD_ATF=yes
UEFI_BIN=FVP_AARCH64_EFI.fd
UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64

[tc2]
LONGNAME=Versatile Express TC2
BUILDFLAGS=-D ARM_BIGLITTLE_TC2=1
DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-CTA15-A7.dsc
ARCH=ARM
UEFI_BIN=ARM_VEXPRESS_CTA15A7_EFI.fd
UEFI_IMAGE_DIR=ArmVExpress-CTA15-A7

[panda]
LONGNAME=TI Pandaboard
BUILDCMD=./PandaBoardPkg/build.sh
BUILDFLAGS=
ARCH=ARM
UEFI_BIN=MLO
UEFI_IMAGE_DIR=PandaBoard

[beagle]
LONGNAME=BeagleBoard
BUILDFLAGS=
DSC=BeagleBoardPkg/BeagleBoardPkg.dsc
ARCH=ARM

[d01]
LONGNAME=HiSilicon D01 Cortex-A15 16-cores
BUILDFLAGS=-D EDK2_ARMVE_STANDALONE=1
DSC=HisiPkg/D01BoardPkg/D01BoardPkg.dsc
ARCH=ARM
UEFI_BIN=D01.fd
UEFI_IMAGE_DIR=D01

[d01-intelbds]
LONGNAME=HiSilicon D01 Cortex-A15 16-cores Intel Bds
BUILDFLAGS=-D EDK2_ARMVE_STANDALONE=1 -D INTEL_BDS -D NO_LINUX_LOADER -D EDK2_OUT_DIR=Build/D01-IntelBds
DSC=HisiPkg/D01BoardPkg/D01BoardPkg.dsc
ARCH=ARM
UEFI_BIN=D01.fd
UEFI_IMAGE_DIR=D01

[bbb]
LONGNAME=Texas Instruments BeagleBone Black
BUILDFLAGS=
DSC=TexasInstrumentsPkg/BeagleBoneBlackPkg/BeagleBoneBlackPkg.dsc
ARCH=ARM
UEFI_BIN=BEAGLEBONEBLACK_EFI.fd
UEFI_IMAGE_DIR=BeagleBoneBlack

[qemu]
LONGNAME=QEMU ARM Emulator
BUILDFLAGS=-D INTEL_BDS
DSC=ArmVirtPkg/ArmVirtQemu.dsc
ARCH=ARM
UEFI_BIN=QEMU_EFI.fd
UEFI_IMAGE_DIR=ArmVirtQemu-ARM

[qemu64]
LONGNAME=QEMU AArch64 Emulator
BUILDFLAGS=-D INTEL_BDS
DSC=ArmVirtPkg/ArmVirtQemu.dsc
ARCH=AARCH64
UEFI_BIN=QEMU_EFI.fd
UEFI_IMAGE_DIR=ArmVirtQemu-AARCH64

[mustang]
LONGNAME=APM XGene Mustang
BUILDFLAGS=
DSC=ArmPlatformPkg/APMXGenePkg/APMXGene-Mustang.dsc
ARCH=AARCH64
UEFI_BIN=APMXGENE-MUSTANG.fd SEC_APMXGENE-MUSTANG.fd
UEFI_IMAGE_DIR=APMXGene-Mustang

[overdrive]
LONGNAME=AMD Overdrive
BUILDFLAGS=-D INTEL_BDS
DSC=OpenPlatformPkg/Platforms/AMD/Styx/OverdriveBoard/OverdriveBoard.dsc
ARCH=AARCH64
PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
UEFI_BIN=STYX_ROM.fd
UEFI_IMAGE_DIR=Overdrive

[cello]
LONGNAME=LeMaker Cello
BUILDFLAGS=-D INTEL_BDS
DSC=OpenPlatformPkg/Platforms/AMD/Styx/CelloBoard/CelloBoard.dsc
ARCH=AARCH64
PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
UEFI_BIN=STYX_ROM.fd
UEFI_IMAGE_DIR=Cello

[hikey]
LONGNAME=CircuitCo HiKey
DSC=OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKey.dsc
ARCH=AARCH64
UEFI_BIN=BL33_AP_UEFI.fd
UEFI_IMAGE_DIR=HiKey
BUILD_ATF=yes
ATF_SPD=opteed
TOS_BIN=tee.bin
BUILD_TOS=yes
SCP_BIN=OpenPlatformPkg/Platforms/Hisilicon/HiKey/Binary/mcuimage.bin
# Uncomment this to use UART0 as the EDK2 console
#BUILDFLAGS=-DSERIAL_BASE=0xF8015000
# Uncomment this to use UART0 as the ARM Trusted Firmware console
#ATF_BUILDFLAGS=CONSOLE_BASE=PL011_UART0_BASE CRASH_CONSOLE_BASE=PL011_UART0_BASE
# Uncomment this to use UART0 as the OP-TEE Trusted OS console
#TOS_BUILDFLAGS=CFG_CONSOLE_UART=0

[xen64]
LONGNAME=AArch64 Xen guest
BUILDFLAGS=
DSC=ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.dsc
ARCH=AARCH64
UEFI_BIN=XEN_EFI.fd
UEFI_IMAGE_DIR=ArmVirtualizationXen-AARCH64

[aarch64-shell]
LONGNAME=AArch64 EFI Shell
BUILDFLAGS=-D INCLUDE_TFTP_COMMAND
DSC=ShellPkg/ShellPkg.dsc
ARCH=AARCH64

[aarch64-shell-minimal]
LONGNAME=AArch64 EFI Shell (Minimal)
BUILDFLAGS=-D NO_SHELL_PROFILES
DSC=ShellPkg/ShellPkg.dsc
ARCH=AARCH64

[arm-shell]
LONGNAME=ARM EFI Shell
BUILDFLAGS=-D INCLUDE_TFTP_COMMAND
DSC=ShellPkg/ShellPkg.dsc
ARCH=ARM

[arm-shell-minimal]
LONGNAME=ARM EFI Shell (Minimal)
BUILDFLAGS=-D NO_SHELL_PROFILES
DSC=ShellPkg/ShellPkg.dsc
ARCH=ARM

[d02]
LONGNAME=Hisilicon D02
DSC=OpenPlatformPkg/Platforms/Hisilicon/D02/Pv660D02.dsc
ARCH=AARCH64
UEFI_BIN=PV660D02.fd
UEFI_IMAGE_DIR=Pv660D02

[d03]
LONGNAME=Hisilicon D03
DSC=OpenPlatformPkg/Platforms/Hisilicon/D03/D03.dsc
ARCH=AARCH64
UEFI_BIN=D03.fd
UEFI_IMAGE_DIR=D03