Dean Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | #------------------------------------------------------------------------------- |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 3 | # Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved. |
Dean Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 4 | # |
| 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 Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 16 | . $(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. |
| 21 | function 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 Birch | 62c4f08 | 2020-01-17 16:13:26 +0000 | [diff] [blame] | 41 | set -ex |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 42 | |
| 43 | if [ -z "$CONFIG_NAME" ] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 44 | echo "Set CONFIG_NAME to run a build." |
| 45 | exit 1 |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 46 | fi |
| 47 | |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 48 | set_compiler_cmd=$(python3 tf-m-ci-scripts/configs.py -b set_compiler $CONFIG_NAME) |
| 49 | cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b cmake_config $CONFIG_NAME) |
| 50 | cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME) |
| 51 | post_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b post_build $CONFIG_NAME) |
| 52 | |
Karl Zhang | 4a45dac | 2020-06-10 14:03:10 +0800 | [diff] [blame] | 53 | set +e |
| 54 | echo "output current build environment" |
| 55 | cat /etc/issue |
| 56 | uname -a |
| 57 | grep -c ^processor /proc/cpuinfo |
Karl Zhang | 4a45dac | 2020-06-10 14:03:10 +0800 | [diff] [blame] | 58 | cmake --version |
| 59 | python --version |
| 60 | make --version |
| 61 | |
| 62 | set -ex |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 63 | eval $set_compiler_cmd |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 64 | |
Paul Sokolovsky | 99078c1 | 2023-04-10 22:59:28 +0300 | [diff] [blame] | 65 | if [ -n "$BUILD_TARGET" ]; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 66 | cmake_build_cmd=${cmake_build_cmd/-- install/-- $BUILD_TARGET} |
Paul Sokolovsky | 173b28a | 2023-07-24 09:07:54 +0300 | [diff] [blame] | 67 | echo "Warning: BUILD_TARGET is set, will not run post_build_cmd" |
| 68 | post_build_cmd="" |
Paul Sokolovsky | 99078c1 | 2023-04-10 22:59:28 +0300 | [diff] [blame] | 69 | fi |
| 70 | |
Paul Sokolovsky | e8cbdd8 | 2023-07-20 23:50:59 +0300 | [diff] [blame] | 71 | if [ "$CODE_COVERAGE_EN" = "TRUE" ] && [[ $CONFIG_NAME =~ "GCC" ]] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 72 | cmake_config_cmd=${cmake_config_cmd/toolchain_GNUARM.cmake/toolchain_GNUARM.cmake -DTFM_CODE_COVERAGE=True} |
Karl Zhang | f6f467e | 2020-07-10 16:24:45 +0800 | [diff] [blame] | 73 | echo "Flag: Add compiler flag for build with code coverage supported." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 74 | echo $cmake_config_cmd |
Karl Zhang | f6f467e | 2020-07-10 16:24:45 +0800 | [diff] [blame] | 75 | fi |
| 76 | |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 77 | if [ -z "$cmake_config_cmd" ] ; then |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 78 | echo "No CMake config command found." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 79 | exit 1 |
| 80 | fi |
| 81 | |
| 82 | if [ -z "$cmake_build_cmd" ] ; then |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 83 | echo "No CMake build command found." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 84 | exit 1 |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 85 | fi |
| 86 | |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 87 | cnt=$(ls trusted-firmware-m/lib/ext/mbedcrypto/*.patch 2> /dev/null | wc -l) |
| 88 | if [ "$cnt" != "0" ] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 89 | cd mbedtls |
| 90 | git apply ../trusted-firmware-m/lib/ext/mbedcrypto/*.patch |
| 91 | cd - |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 92 | fi |
Xinyu Zhang | b708f57 | 2020-09-15 11:43:46 +0800 | [diff] [blame] | 93 | |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 94 | cnt=$(ls trusted-firmware-m/lib/ext/psa_arch_tests/*.patch 2> /dev/null | wc -l) |
| 95 | if [ "$cnt" != "0" ] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 96 | cd psa-arch-tests |
| 97 | git apply ../trusted-firmware-m/lib/ext/psa_arch_tests/*.patch |
| 98 | cd - |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 99 | fi |
| 100 | |
Xinyu Zhang | ab9d1ea | 2022-12-23 17:11:22 +0800 | [diff] [blame] | 101 | cd trusted-firmware-m |
| 102 | git apply ../tf-m-ci-scripts/build_helper/platform_settings/*.patch |
| 103 | cd - |
| 104 | |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 105 | rm -rf trusted-firmware-m/build |
| 106 | mkdir trusted-firmware-m/build |
| 107 | cd trusted-firmware-m/build |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 108 | |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 109 | set +e |
| 110 | eval $cmake_config_cmd |
| 111 | cmake_cfg_error=$? |
| 112 | set -e |
| 113 | |
| 114 | check_dependency_version |
| 115 | |
| 116 | if [ $cmake_cfg_error != 0 ] ; then |
| 117 | rm -rf trusted-firmware-m/build/* |
| 118 | eval $cmake_config_cmd |
| 119 | fi |
| 120 | |
| 121 | eval "$cmake_build_cmd; $post_build_cmd" |