blob: 47b9acd47da518e1d1c49170783c9c231e42ea82 [file] [log] [blame]
Dean Birch62c4f082020-01-17 16:13:26 +00001#!/bin/bash
2#-------------------------------------------------------------------------------
David Vinczefaa61ff2025-01-09 16:02:06 +00003# Copyright (c) 2020-2025, Arm Limited and Contributors. All rights reserved.
Dean Birch62c4f082020-01-17 16:13:26 +00004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7#-------------------------------------------------------------------------------
8
9#
10# Builds a single configuration on Trusted Firmware M.
11# Relies on environment variables pre-populated.
12# These variables can be obtained using configs.py.
13# Expected to have trusted-firmware-m cloned to same level as this git tree
14#
15
Xinyu Zhang431b15d2023-10-26 15:34:43 +080016. $(dirname $0)/utils/util_cmake.sh
17. $(dirname $0)/utils/util_git.sh
Xinyu Zhang15362412023-02-10 15:57:07 +080018
19# For dependency that differs from platforms, the versions need to be checkded
20# in each single build job.
21function check_dependency_version() {
22 TFM_EXTRAS_PATH="${WORKSPACE}/tf-m-extras"
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080023 TFM_EXTRAS_REFSPEC="$(get_cmake_cache ${WORKSPACE}/ci_build TFM_EXTRAS_REPO_VERSION)"
Xinyu Zhang15362412023-02-10 15:57:07 +080024
25 # Array containing "<repo path>;<refspec>" elements
26 dependency_repos=(
27 "${TFM_EXTRAS_PATH};${TFM_EXTRAS_REFSPEC}"
28 )
29
30 for repo in ${dependency_repos[@]}; do
31 # Parse the repo elements
32 REPO_PATH="$(echo "${repo}" | awk -F ';' '{print $1}')"
33 REPO_REFSPEC="$(echo "${repo}" | awk -F ';' '{print $2}')"
34
35 if [ ! -z "$REPO_REFSPEC" ] ; then
Matthew Dalzell601e7aa2025-08-13 17:22:43 +010036 echo "Refspec was not pulled correctly"
37 exit 1
Xinyu Zhang15362412023-02-10 15:57:07 +080038 fi
39 done
40}
41
Dean Birch62c4f082020-01-17 16:13:26 +000042set -ex
Dean Birchd0f9f8c2020-03-26 11:10:33 +000043
44if [ -z "$CONFIG_NAME" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080045 echo "Set CONFIG_NAME to run a build."
46 exit 1
Dean Birchd0f9f8c2020-03-26 11:10:33 +000047fi
48
Xinyu Zhang46b37182023-06-30 15:36:44 +080049set_compiler_cmd=$(python3 tf-m-ci-scripts/configs.py -b set_compiler $CONFIG_NAME)
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080050spe_cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b spe_cmake_config $CONFIG_NAME)
51spe_cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b spe_cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME)
52nspe_cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b nspe_cmake_config $CONFIG_NAME)
53nspe_cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b nspe_cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME)
Xinyu Zhang46b37182023-06-30 15:36:44 +080054post_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b post_build $CONFIG_NAME)
55
Karl Zhang4a45dac2020-06-10 14:03:10 +080056set +e
57echo "output current build environment"
58cat /etc/issue
59uname -a
60grep -c ^processor /proc/cpuinfo
Karl Zhang4a45dac2020-06-10 14:03:10 +080061cmake --version
62python --version
63make --version
64
65set -ex
Xinyu Zhang46b37182023-06-30 15:36:44 +080066eval $set_compiler_cmd
Dean Birchd0f9f8c2020-03-26 11:10:33 +000067
Paul Sokolovsky99078c12023-04-10 22:59:28 +030068if [ -n "$BUILD_TARGET" ]; then
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080069 spe_cmake_config_cmd=${spe_cmake_config_cmd/-- install/-- $BUILD_TARGET}
Paul Sokolovsky173b28a2023-07-24 09:07:54 +030070 echo "Warning: BUILD_TARGET is set, will not run post_build_cmd"
71 post_build_cmd=""
Paul Sokolovsky99078c12023-04-10 22:59:28 +030072fi
73
Paul Sokolovskye8cbdd82023-07-20 23:50:59 +030074if [ "$CODE_COVERAGE_EN" = "TRUE" ] && [[ $CONFIG_NAME =~ "GCC" ]] ; then
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080075 spe_cmake_config_cmd=${spe_cmake_config_cmd/toolchain_GNUARM.cmake/toolchain_GNUARM.cmake -DTFM_CODE_COVERAGE=True}
Karl Zhangf6f467e2020-07-10 16:24:45 +080076 echo "Flag: Add compiler flag for build with code coverage supported."
Xinyu Zhang46b37182023-06-30 15:36:44 +080077 echo $cmake_config_cmd
Karl Zhangf6f467e2020-07-10 16:24:45 +080078fi
79
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080080if [ -z "$spe_cmake_config_cmd" ] ; then
Xinyu Zhang15362412023-02-10 15:57:07 +080081 echo "No CMake config command found."
Xinyu Zhang46b37182023-06-30 15:36:44 +080082 exit 1
83fi
84
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +080085if [ -z "$spe_cmake_build_cmd" ] ; then
Xinyu Zhang15362412023-02-10 15:57:07 +080086 echo "No CMake build command found."
Xinyu Zhang46b37182023-06-30 15:36:44 +080087 exit 1
Dean Birchd0f9f8c2020-03-26 11:10:33 +000088fi
89
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080090cnt=$(ls trusted-firmware-m/lib/ext/mbedcrypto/*.patch 2> /dev/null | wc -l)
91if [ "$cnt" != "0" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080092 cd mbedtls
93 git apply ../trusted-firmware-m/lib/ext/mbedcrypto/*.patch
94 cd -
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080095fi
Xinyu Zhangb708f572020-09-15 11:43:46 +080096
Matthew Dalzell7677d7f2025-06-18 14:11:47 +010097cnt=$(ls trusted-firmware-m/lib/ext/mcuboot/*.patch 2> /dev/null | wc -l)
98if [ "$cnt" != "0" ] ; then
99 cd mcuboot
100 git apply ../trusted-firmware-m/lib/ext/mcuboot/*.patch
101 cd -
102fi
103
David Vinczefaa61ff2025-01-09 16:02:06 +0000104cnt=$(ls trusted-firmware-m/lib/ext/t_cose/*.patch 2> /dev/null | wc -l)
105if [ "$cnt" != "0" ] ; then
106 cd t_cose
107 git apply ../trusted-firmware-m/lib/ext/t_cose/*.patch
108 cd -
109fi
110
Xinyu Zhangf05a3242023-10-31 13:54:58 +0800111cnt=$(ls tf-m-tests/tests_psa_arch/fetch_repo/*.patch 2> /dev/null | wc -l)
Xinyu Zhange0aa69c2021-03-13 13:33:55 +0800112if [ "$cnt" != "0" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +0800113 cd psa-arch-tests
Xinyu Zhangf05a3242023-10-31 13:54:58 +0800114 git apply ../tf-m-tests/tests_psa_arch/fetch_repo/*.patch
Xinyu Zhang46b37182023-06-30 15:36:44 +0800115 cd -
Xinyu Zhange0aa69c2021-03-13 13:33:55 +0800116fi
117
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +0800118rm -rf ci_build
119mkdir ci_build
120cd ci_build
Dean Birchd0f9f8c2020-03-26 11:10:33 +0000121
Xinyu Zhang15362412023-02-10 15:57:07 +0800122set +e
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +0800123eval $spe_cmake_config_cmd
Xinyu Zhang787497c2023-11-13 16:14:15 +0800124declare -i cmake_cfg_error=$?
Xinyu Zhang15362412023-02-10 15:57:07 +0800125set -e
126
127check_dependency_version
128
Xinyu Zhang787497c2023-11-13 16:14:15 +0800129if [ $cmake_cfg_error != 0 ] ; then
130 rm -rf ./*
Xinyu Zhanga88a2eb2023-08-15 17:43:51 +0800131 eval $spe_cmake_config_cmd
Xinyu Zhang15362412023-02-10 15:57:07 +0800132fi
Xinyu Zhang8ea4cfc2023-10-30 18:28:43 +0800133eval $spe_cmake_build_cmd
Xinyu Zhang15362412023-02-10 15:57:07 +0800134
Xinyu Zhang8ea4cfc2023-10-30 18:28:43 +0800135eval $nspe_cmake_config_cmd
136eval $nspe_cmake_build_cmd
137
138eval $post_build_cmd