1#!/usr/bin/env bash 2# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD 3# SPDX-License-Identifier: Apache-2.0 4 5SCRIPT_ROOTDIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")") 6MCUBOOT_ROOTDIR=$(realpath "${SCRIPT_ROOTDIR}/..") 7ESPRESSIF_ROOT="${MCUBOOT_ROOTDIR}/boot/espressif" 8IDF_PATH="${ESPRESSIF_ROOT}/hal/esp-idf" 9 10set -eo pipefail 11 12prepare_environment() { 13 # Prepare the environment for ESP-IDF 14 15 . "${IDF_PATH}"/export.sh 16} 17 18build_mcuboot() { 19 local target=${1} 20 local feature=${2} 21 local img_num=${3} 22 local build_dir=".build-${target}" 23 local toolchain_file="${ESPRESSIF_ROOT}/tools/toolchain-${target}.cmake" 24 25 if [ -n "$img_num" ]; then 26 img_num="-${img_num}" 27 fi 28 local mcuboot_config="${ESPRESSIF_ROOT}/port/${target}/bootloader${img_num}.conf" 29 30 if [ -n "${feature}" ]; then 31 mcuboot_config="${mcuboot_config};${ESPRESSIF_ROOT}/ci_configs/${feature}.conf" 32 build_dir=".build-${target}-${feature}" 33 fi 34 35 # Build MCUboot for selected target 36 37 cd "${MCUBOOT_ROOTDIR}" &>/dev/null 38 cmake -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}" \ 39 -DMCUBOOT_TARGET="${target}" \ 40 -DMCUBOOT_CONFIG_FILE="${mcuboot_config}" \ 41 -DIDF_PATH="${IDF_PATH}" \ 42 -B "${build_dir}" \ 43 "${ESPRESSIF_ROOT}" 44 cmake --build "${build_dir}"/ 45} 46 47prepare_environment 48 49if [ -n "${MCUBOOT_FEATURES}" ]; then 50 IFS=',' 51 read -ra target_list <<< "${MCUBOOT_TARGETS}" 52 read img_num <<< "${MCUBOOT_IMG_NUM}" 53 for target in "${target_list[@]}"; do 54 read -ra feature_list <<< "${MCUBOOT_FEATURES}" 55 for feature in "${feature_list[@]}"; do 56 echo "Building MCUboot for \"${target}\" with support for \"${feature}\"" 57 build_mcuboot "${target}" "${feature}" "${img_num}" 58 done 59 done 60fi 61