blob: c01c6b3b2964f99aceb5a776654d012fcf03f42d [file] [log] [blame]
Dean Birch62c4f082020-01-17 16:13:26 +00001#!/bin/bash
2#-------------------------------------------------------------------------------
Xinyu Zhang15362412023-02-10 15:57:07 +08003# Copyright (c) 2020-2023, 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 Zhang15362412023-02-10 15:57:07 +080016. $(dirname $0)/util_cmake.sh
17. $(dirname $0)/util_git.sh
18
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"
23 TFM_EXTRAS_REFSPEC="$(get_cmake_cache ${WORKSPACE}/trusted-firmware-m/build TFM_EXTRAS_REPO_VERSION)"
24
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
36 git_checkout $REPO_PATH $REPO_REFSPEC
37 fi
38 done
39}
40
Dean Birch62c4f082020-01-17 16:13:26 +000041set -ex
Dean Birchd0f9f8c2020-03-26 11:10:33 +000042
43if [ -z "$CONFIG_NAME" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080044 echo "Set CONFIG_NAME to run a build."
45 exit 1
Dean Birchd0f9f8c2020-03-26 11:10:33 +000046fi
47
Xinyu Zhang46b37182023-06-30 15:36:44 +080048set_compiler_cmd=$(python3 tf-m-ci-scripts/configs.py -b set_compiler $CONFIG_NAME)
49cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b cmake_config $CONFIG_NAME)
50cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME)
51post_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b post_build $CONFIG_NAME)
52
Karl Zhang4a45dac2020-06-10 14:03:10 +080053set +e
54echo "output current build environment"
55cat /etc/issue
56uname -a
57grep -c ^processor /proc/cpuinfo
Karl Zhang4a45dac2020-06-10 14:03:10 +080058cmake --version
59python --version
60make --version
61
62set -ex
Xinyu Zhang46b37182023-06-30 15:36:44 +080063eval $set_compiler_cmd
Dean Birchd0f9f8c2020-03-26 11:10:33 +000064
Paul Sokolovsky99078c12023-04-10 22:59:28 +030065if [ -n "$BUILD_TARGET" ]; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080066 cmake_build_cmd=$(echo "$cmake_build_cmd" | head -4)
67 cmake_build_cmd=${cmake_build_cmd/-- install/-- $BUILD_TARGET}
Paul Sokolovsky99078c12023-04-10 22:59:28 +030068fi
69
Xinyu Zhang433771e2022-04-01 16:49:17 +080070if [ $CODE_COVERAGE_EN = "TRUE" ] && [[ $CONFIG_NAME =~ "GCC" ]] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080071 cmake_config_cmd=${cmake_config_cmd/toolchain_GNUARM.cmake/toolchain_GNUARM.cmake -DTFM_CODE_COVERAGE=True}
Karl Zhangf6f467e2020-07-10 16:24:45 +080072 echo "Flag: Add compiler flag for build with code coverage supported."
Xinyu Zhang46b37182023-06-30 15:36:44 +080073 echo $cmake_config_cmd
Karl Zhangf6f467e2020-07-10 16:24:45 +080074fi
75
Xinyu Zhang46b37182023-06-30 15:36:44 +080076if [ -z "$cmake_config_cmd" ] ; then
Xinyu Zhang15362412023-02-10 15:57:07 +080077 echo "No CMake config command found."
Xinyu Zhang46b37182023-06-30 15:36:44 +080078 exit 1
79fi
80
81if [ -z "$cmake_build_cmd" ] ; then
Xinyu Zhang15362412023-02-10 15:57:07 +080082 echo "No CMake build command found."
Xinyu Zhang46b37182023-06-30 15:36:44 +080083 exit 1
Dean Birchd0f9f8c2020-03-26 11:10:33 +000084fi
85
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080086cnt=$(ls trusted-firmware-m/lib/ext/mbedcrypto/*.patch 2> /dev/null | wc -l)
87if [ "$cnt" != "0" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080088 cd mbedtls
89 git apply ../trusted-firmware-m/lib/ext/mbedcrypto/*.patch
90 cd -
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080091fi
Xinyu Zhangb708f572020-09-15 11:43:46 +080092
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080093cnt=$(ls trusted-firmware-m/lib/ext/psa_arch_tests/*.patch 2> /dev/null | wc -l)
94if [ "$cnt" != "0" ] ; then
Xinyu Zhang46b37182023-06-30 15:36:44 +080095 cd psa-arch-tests
96 git apply ../trusted-firmware-m/lib/ext/psa_arch_tests/*.patch
97 cd -
Xinyu Zhange0aa69c2021-03-13 13:33:55 +080098fi
99
Xinyu Zhangab9d1ea2022-12-23 17:11:22 +0800100cd trusted-firmware-m
101git apply ../tf-m-ci-scripts/build_helper/platform_settings/*.patch
102cd -
103
Xinyu Zhange0aa69c2021-03-13 13:33:55 +0800104rm -rf trusted-firmware-m/build
105mkdir trusted-firmware-m/build
106cd trusted-firmware-m/build
Dean Birchd0f9f8c2020-03-26 11:10:33 +0000107
Xinyu Zhang15362412023-02-10 15:57:07 +0800108set +e
109eval $cmake_config_cmd
110cmake_cfg_error=$?
111set -e
112
113check_dependency_version
114
115if [ $cmake_cfg_error != 0 ] ; then
116 rm -rf trusted-firmware-m/build/*
117 eval $cmake_config_cmd
118fi
119
120eval "$cmake_build_cmd; $post_build_cmd"