# 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.
# - SPM_BIN		Prebuilt Secure Partition image to pass to ARM Trusted Firmware.
#			The path is relative to
#			$EDK2_DIR/Build/StandaloneSmmPkg/$BUILD_PROFILE/FV/.
#
# 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.
# - INF                 Point to a .inf (in addition to a .dsc) in order to
#                       build a single component (standalone driver/app).
#

[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

# ARM FVP BASE AEMv8-A model
[fvp_mm_standalone]
LONGNAME=FVP Base for MM Standalone image in secure world
DSC=StandaloneSmmPkg/StandaloneSmmPkg.dsc
ARCH=AARCH64
UEFI_BIN=FVP_AARCH64_EFI_MM_STANDALONE.fd
UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-MM-Standalone

[fvp_mm_normal]
LONGNAME=FVP Base for UEFI image with MM support in normal world
DSC=OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
BUILDFLAGS=-D EDK2_OUT_DIR=Build/ArmVExpress-FVP-AArch64-MM-Normal -D ARM_STANDALONE_MM_ENABLE=TRUE
ARCH=AARCH64
BUILD_ATF=debug
UEFI_BIN=FVP_AARCH64_EFI.fd
UEFI_IMAGE_DIR=ArmVExpress-FVP-AArch64-MM-Normal
ATF_PLATFORM=fvp
SPM_BIN=STANDALONESMM.fd
ATF_BUILDFLAGS=ARM_BL31_IN_DRAM=1

[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

[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

[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

[overdrive1000]
LONGNAME=SoftIron Overdrive 1000
BUILDFLAGS=-D INTEL_BDS
DSC=OpenPlatformPkg/Platforms/AMD/Styx/Overdrive1000Board/Overdrive1000Board.dsc
ARCH=AARCH64
PACKAGES_PATH=OpenPlatformPkg/Platforms/AMD/Styx/Binary
UEFI_BIN=OVERDRIVE1000_ROM.fd
UEFI_IMAGE_DIR=Overdrive1000Board

[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

# NOTE: If using upstream ATF, i.e.
# https://github.com/ARM-software/arm-trusted-firmware
# please set TOS_BIN=tee-pager.bin
[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
TOS_PLATFORM_FLAVOR=hikey
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

[hikey960]
LONGNAME=Hikey960
DSC=OpenPlatformPkg/Platforms/Hisilicon/HiKey960/HiKey960.dsc
ARCH=AARCH64
UEFI_BIN=BL33_AP_UEFI.fd
UEFI_IMAGE_DIR=HiKey960
BUILD_ATF=yes
ATF_SPD=opteed
TOS_BIN=tee-pager.bin
TOS_PLATFORM=hikey
TOS_PLATFORM_FLAVOR=hikey960
BUILD_TOS=yes
SCP_BIN=OpenPlatformPkg/Platforms/Hisilicon/HiKey960/Binary/lpm3.img
# Uncomment this to use UART5 as the EDK2 console for v1 hardware
#BUILDFLAGS=-DSERIAL_BASE=0xFDF05000

[xen64]
LONGNAME=AArch64 Xen guest
BUILDFLAGS=
DSC=ArmVirtPkg/ArmVirtXen.dsc
ARCH=AARCH64
UEFI_BIN=XEN_EFI.fd
UEFI_IMAGE_DIR=ArmVirtXen-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

[d05]
LONGNAME=HiSilicon D05
DSC=OpenPlatformPkg/Platforms/Hisilicon/D05/D05.dsc
ARCH=AARCH64
UEFI_BIN=D05.fd
UEFI_IMAGE_DIR=D05

[armada70x0]
LONGNAME=Marvell Armada 70x0
DSC=OpenPlatformPkg/Platforms/Marvell/Armada/Armada70x0.dsc
ARCH=AARCH64

[ovmfx64]
LONGNAME=OVMF Qemu X64
DSC=OvmfPkg/OvmfPkgX64.dsc
ARCH=X64

[hello]
LONGNAME=EDK2 Hello World Example
DSC=MdeModulePkg/MdeModulePkg.dsc
INF=MdeModulePkg/Application/HelloWorld/HelloWorld.inf

[chaoskey]
LONGNAME=Altus Metrum ChaosKey Driver
DSC=OptionRomPkg/OptionRomPkg.dsc
INF=OpenPlatformPkg/Drivers/Usb/Misc/ChaosKeyDxe/ChaosKeyDxe.inf