61 lines
1.8 KiB
Bash
Executable File
61 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
SCRIPT_ROOTDIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
|
|
MCUBOOT_ROOTDIR=$(realpath "${SCRIPT_ROOTDIR}/..")
|
|
ESPRESSIF_ROOT="${MCUBOOT_ROOTDIR}/boot/espressif"
|
|
IDF_PATH="${ESPRESSIF_ROOT}/hal/esp-idf"
|
|
|
|
set -eo pipefail
|
|
|
|
prepare_environment() {
|
|
# Prepare the environment for ESP-IDF
|
|
|
|
. "${IDF_PATH}"/export.sh
|
|
}
|
|
|
|
build_mcuboot() {
|
|
local target=${1}
|
|
local feature=${2}
|
|
local img_num=${3}
|
|
local build_dir=".build-${target}"
|
|
local toolchain_file="${ESPRESSIF_ROOT}/tools/toolchain-${target}.cmake"
|
|
|
|
if [ -n "$img_num" ]; then
|
|
img_num="-${img_num}"
|
|
fi
|
|
local mcuboot_config="${ESPRESSIF_ROOT}/port/${target}/bootloader${img_num}.conf"
|
|
|
|
if [ -n "${feature}" ]; then
|
|
mcuboot_config="${mcuboot_config};${ESPRESSIF_ROOT}/ci_configs/${feature}.conf"
|
|
build_dir=".build-${target}-${feature}"
|
|
fi
|
|
|
|
# Build MCUboot for selected target
|
|
|
|
cd "${MCUBOOT_ROOTDIR}" &>/dev/null
|
|
cmake -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}" \
|
|
-DMCUBOOT_TARGET="${target}" \
|
|
-DMCUBOOT_CONFIG_FILE="${mcuboot_config}" \
|
|
-DIDF_PATH="${IDF_PATH}" \
|
|
-B "${build_dir}" \
|
|
"${ESPRESSIF_ROOT}"
|
|
cmake --build "${build_dir}"/
|
|
}
|
|
|
|
prepare_environment
|
|
|
|
if [ -n "${MCUBOOT_FEATURES}" ]; then
|
|
IFS=','
|
|
read -ra target_list <<< "${MCUBOOT_TARGETS}"
|
|
read img_num <<< "${MCUBOOT_IMG_NUM}"
|
|
for target in "${target_list[@]}"; do
|
|
read -ra feature_list <<< "${MCUBOOT_FEATURES}"
|
|
for feature in "${feature_list[@]}"; do
|
|
echo "Building MCUboot for \"${target}\" with support for \"${feature}\""
|
|
build_mcuboot "${target}" "${feature}" "${img_num}"
|
|
done
|
|
done
|
|
fi
|