blob: 958537b051fd0c526ecb3e54957a330e392f9ed2 [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
NEWT=${MYNEWT_NEWT_PATH}
OBJCOPY=${MYNEWT_OBJCOPY_PATH}
AR=${MYNEWT_AR_PATH}
NET_CORE_A=${MYNEWT_USER_SRC_DIR}/net_core_img.a
NET_CORE_O=${MYNEWT_USER_SRC_DIR}/net_core_img.o
# Default flags for create-image
CREATE_IMAGE_FLAGS="timestamp"
if [ -z "${MYNEWT_VAL_NRF5340_NET_APPLICATION_VERSION}" ] && [ -z "${MYNEWT_VAL_NRF5340_NET_APPLICATION_SIGNING_KEYS}" ]; then
echo Using default create-image flags=$CREATE_IMAGE_FLAGS
else
CREATE_IMAGE_FLAGS="${MYNEWT_VAL_NRF5340_NET_APPLICATION_VERSION} ${MYNEWT_VAL_NRF5340_NET_APPLICATION_SIGNING_KEYS}"
echo Using user defined create-image flags=$CREATE_IMAGE_FLAGS
fi
export WORK_DIR=${MYNEWT_USER_WORK_DIR}
export NEWT_CREATE_IMAGE_OUTPUT=$WORK_DIR/create_image_output
pushd $MYNEWT_PROJECT_ROOT
${NEWT} create-image ${MYNEWT_VAL_NET_CORE_IMAGE_TARGET_NAME} $CREATE_IMAGE_FLAGS -o $NEWT_CREATE_IMAGE_OUTPUT
# Extract image name from output
export NET_CORE_IMG=`awk '/App image successfully generated:/ { print $NF }' $NEWT_CREATE_IMAGE_OUTPUT`
cd ${WORK_DIR}
if [ -n "$NET_CORE_IMG" ] ; then
# Copy image to local folder so objcopy creates symbols with short names instead of very long ones.
# Name net_core.img translates to two symbols created by objcopy:
# _binary_net_core_img_start, _binary_net_core_img_end those symbols are then used to reference content
# of net_core.img. Changing this name could lead to invalid builds.
cp $NET_CORE_IMG ${WORK_DIR}/net_core.img
# Make .o file from existing binary image
${OBJCOPY} --rename-section .data=.net_core_img,alloc,load,readonly,data,contents -O elf32-littlearm -B armv8-m.main -I binary net_core.img ${NET_CORE_O}
# Archive .o for newt to use
${AR} -rcs ${NET_CORE_A} ${NET_CORE_O}
fi
popd