Skip to content
Snippets Groups Projects
optee-os.bb 2.75 KiB
Newer Older
OPTEE_VERSION ??= "latest"
SRCREV ??= "${AUTOREV}"
BRANCH ??= "master"

DESCRIPTION = "OP-TEE OS"

# Define as closed license to prevent MD5 checksum verification since
# LICENSE file changed around 3.5.0 making this recipe less flexible.
# LICENSE = "BSD"
# ante-3.5.0: LIC_FILES_CHKSUM = "file://LICENSE;md5=69663ab153298557a59c67a60a743e5b"
# post-3.5.0: LIC_FILES_CHKSUM = "file://LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173"
LICENSE = "CLOSED"

PROVIDES = "virtual/optee-os"
DEPENDS += "\
            u-boot-mkimage-native \
            python3-pycryptodome-native \
            python3-pycryptodomex-native \
            python3-pyelftools-native \
            "

S = "${WORKDIR}/git"
PV = "${OPTEE_VERSION}+git${SRCPV}"

REPO ??= "git://github.com/OP-TEE/optee_os.git;protocol=https"
SRC_URI = "${REPO};branch=${BRANCH}"

inherit deploy python3native

OPTEE_BASE_NAME ?= "${PN}-${PKGE}-${PKGV}-${PKGR}-${DATETIME}"
OPTEE_BASE_NAME[vardepsexclude] = "DATETIME"

COMPATIBLE_MACHINE = "zynqmp"
PLATFORM_zynqmp = "zynqmp"
FLAVOR_zynqmp = "${@d.getVar('MACHINE').split('-')[0]}"

# requires CROSS_COMPILE set by hand as there is no configure script
export CROSS_COMPILE="${TARGET_PREFIX}"

# Let the Makefile handle setting up the CFLAGS and LDFLAGS as it is a standalone application
CFLAGS[unexport] = "1"
LDFLAGS[unexport] = "1"
AS[unexport] = "1"
LD[unexport] = "1"

DEBUG ??= "0"
TA_DEV_KIT_DIR = "${TMPDIR}/deploy/images/${MACHINE}/optee/export-ta_arm64"
OUTPUT_DIR = "${S}/out/arm-plat-zynqmp"
TEE_LOG_LEVEL = "${@bb.utils.contains('DEBUG', '1', '3', '2', d)}"
TEE_CORE_DEBUG = "${@bb.utils.contains('DEBUG', '1', 'y', 'n', d)}"

EXTRA_OEMAKE_append = " comp-cflagscore=--sysroot=${STAGING_DIR_HOST}"
EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_COMPILE}"
EXTRA_OEMAKE_append = " CROSS_COMPILE_core=${CROSS_COMPILE}"
EXTRA_OEMAKE_append = " CROSS_COMPILE_ta_arm64=${CROSS_COMPILE}"
EXTRA_OEMAKE_append = " PLATFORM=${PLATFORM}-${FLAVOR}"
EXTRA_OEMAKE_append = " CFG_ARM64_core=y"
EXTRA_OEMAKE_append = " CFG_ARM32_core=n"
EXTRA_OEMAKE_append = " CFG_USER_TA_TARGETS=ta_arm64"
EXTRA_OEMAKE_append = " CFG_TEE_CORE_LOG_LEVEL=${TEE_LOG_LEVEL}"
EXTRA_OEMAKE_append = " CFG_TEE_CORE_DEBUG=${TEE_CORE_DEBUG}"
EXTRA_OEMAKE_append = " DEBUG=${DEBUG}"

do_install() {
	install -d ${TA_DEV_KIT_DIR}
	cp -aR ${OUTPUT_DIR}/export-ta_arm64/* ${TA_DEV_KIT_DIR}
}

do_deploy() {
	install -d ${DEPLOYDIR}
	install -d ${TMPDIR}/../../images/linux/
	install -m 0644 ${OUTPUT_DIR}/core/tee.elf ${DEPLOYDIR}/${OPTEE_BASE_NAME}.elf
	install -m 0644 ${OUTPUT_DIR}/core/tee.elf ${TMPDIR}/../../images/linux/bl32.elf
	install -m 0644 ${OUTPUT_DIR}/core/tee.bin ${DEPLOYDIR}/${OPTEE_BASE_NAME}.bin
	install -m 0644 ${OUTPUT_DIR}/core/tee.bin ${TMPDIR}/../../images/linux/bl32.bin
}
addtask deploy before do_build after do_install