# 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
