| #!/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="${HOME}/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}" \ |
| -DESP_HAL_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 |