blob: d1426fb2947cc4bd154fd27bec8ee86f88f5a2ef [file] [log] [blame]
# Copyright 2021 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE.makefile file.
EAPI=7
CROS_WORKON_COMMIT=("bfe7876f327742fb50af78f95ef76f1b64f7590a" "4aa3ff8e4f8a21e31cd9831b943acb7a7cd56ac8" "472c210e601d6bce24436fc65abdb0621437fcdd" "12b923775846d0bc4b3d77b8cefe9c244e49d8a9" "a46e9d233b0d094256459f613101070f84133a6a")
CROS_WORKON_TREE=("c883355edd0098d66834486392135dd7995ec17f" "138873733c30ba5508dd4baf0ced9828ec3a2398" "e599aebe987678e95d3be1accd30d7d117502d38" "312779b87ee6f40d9ef20ea0bfdf205042228022" "e591eadf63f5562675875b0f8569e61b895efb6d")
CROS_WORKON_USE_VCSID=1
CROS_WORKON_PROJECT=(
"chromiumos/third_party/zephyr"
"chromiumos/third_party/zephyr/cmsis"
"chromiumos/third_party/zephyr/hal_stm32"
"chromiumos/third_party/zephyr/nanopb"
"chromiumos/platform/ec"
)
CROS_WORKON_LOCALNAME=(
"third_party/zephyr/main"
"third_party/zephyr/cmsis"
"third_party/zephyr/hal_stm32"
"third_party/zephyr/nanopb"
"platform/ec"
)
CROS_WORKON_DESTDIR=(
"${S}/zephyr-base"
"${S}/modules/cmsis"
"${S}/modules/hal_stm32"
"${S}/modules/nanopb"
"${S}/modules/ec"
)
PYTHON_COMPAT=( python3_{8..9} )
unset PYTHON_COMPAT_OVERRIDE
inherit cros-workon cros-unibuild coreboot-sdk toolchain-funcs python-any-r1
DESCRIPTION="Zephyr based Embedded Controller firmware"
KEYWORDS="*"
LICENSE="Apache-2.0 BSD-Google"
IUSE="unibuild"
REQUIRED_USE="unibuild"
BDEPEND="
chromeos-base/zephyr-build-tools
dev-python/docopt
dev-python/pykwalify
dev-util/ninja
"
DEPEND="
chromeos-base/chromeos-config
"
RDEPEND="${DEPEND}"
echoit() {
echo "$@"
"$@"
}
# Run zmake from the EC source directory, with default arguments for
# modules and Zephyr base location for this ebuild.
run_zmake() {
echoit env PYTHONPATH="${S}/modules/ec/zephyr/zmake" "${EPYTHON}" -m zmake -D \
--modules-dir="${S}/modules" \
--zephyr-base="${S}/zephyr-base" \
"$@"
}
src_compile() {
tc-export CC
local project
local root_build_dir="build"
local projects=()
while read -r _ && read -r project; do
if [[ -z "${project}" ]]; then
continue
fi
projects+=("${project}")
done < <(cros_config_host "get-firmware-build-combinations" zephyr-ec || die)
if [[ ${#projects[@]} -eq 0 ]]; then
einfo "No projects found."
return
fi
run_zmake build -B "${root_build_dir}" "${projects[@]}" \
|| die "Failed to build ${projects[*]} in ${root_build_dir}."
}
src_install() {
local firmware_name project
local root_build_dir="build"
while read -r firmware_name && read -r project; do
if [[ -z "${project}" ]]; then
continue
fi
insinto "/firmware/${firmware_name}"
doins "${root_build_dir}/${project}"/output/*
done < <(cros_config_host "get-firmware-build-combinations" zephyr-ec || die)
}