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 | 431b15d | 2023-10-26 15:34:43 +0800 | [diff] [blame] | 16 | . $(dirname $0)/utils/util_cmake.sh |
| 17 | . $(dirname $0)/utils/util_git.sh |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 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" |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 23 | TFM_EXTRAS_REFSPEC="$(get_cmake_cache ${WORKSPACE}/ci_build TFM_EXTRAS_REPO_VERSION)" |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 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) |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 49 | spe_cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b spe_cmake_config $CONFIG_NAME) |
| 50 | spe_cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b spe_cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME) |
| 51 | nspe_cmake_config_cmd=$(python3 tf-m-ci-scripts/configs.py -b nspe_cmake_config $CONFIG_NAME) |
| 52 | nspe_cmake_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b nspe_cmake_build -j ${BUILD_JOBS:-2} $CONFIG_NAME) |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 53 | post_build_cmd=$(python3 tf-m-ci-scripts/configs.py -b post_build $CONFIG_NAME) |
| 54 | |
Karl Zhang | 4a45dac | 2020-06-10 14:03:10 +0800 | [diff] [blame] | 55 | set +e |
| 56 | echo "output current build environment" |
| 57 | cat /etc/issue |
| 58 | uname -a |
| 59 | grep -c ^processor /proc/cpuinfo |
Karl Zhang | 4a45dac | 2020-06-10 14:03:10 +0800 | [diff] [blame] | 60 | cmake --version |
| 61 | python --version |
| 62 | make --version |
| 63 | |
| 64 | set -ex |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 65 | eval $set_compiler_cmd |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 66 | |
Paul Sokolovsky | 99078c1 | 2023-04-10 22:59:28 +0300 | [diff] [blame] | 67 | if [ -n "$BUILD_TARGET" ]; then |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 68 | spe_cmake_config_cmd=${spe_cmake_config_cmd/-- install/-- $BUILD_TARGET} |
Paul Sokolovsky | 173b28a | 2023-07-24 09:07:54 +0300 | [diff] [blame] | 69 | echo "Warning: BUILD_TARGET is set, will not run post_build_cmd" |
| 70 | post_build_cmd="" |
Paul Sokolovsky | 99078c1 | 2023-04-10 22:59:28 +0300 | [diff] [blame] | 71 | fi |
| 72 | |
Paul Sokolovsky | e8cbdd8 | 2023-07-20 23:50:59 +0300 | [diff] [blame] | 73 | if [ "$CODE_COVERAGE_EN" = "TRUE" ] && [[ $CONFIG_NAME =~ "GCC" ]] ; then |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 74 | spe_cmake_config_cmd=${spe_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] | 75 | echo "Flag: Add compiler flag for build with code coverage supported." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 76 | echo $cmake_config_cmd |
Karl Zhang | f6f467e | 2020-07-10 16:24:45 +0800 | [diff] [blame] | 77 | fi |
| 78 | |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 79 | if [ -z "$spe_cmake_config_cmd" ] ; then |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 80 | echo "No CMake config command found." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 81 | exit 1 |
| 82 | fi |
| 83 | |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 84 | if [ -z "$spe_cmake_build_cmd" ] ; then |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 85 | echo "No CMake build command found." |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 86 | exit 1 |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 87 | fi |
| 88 | |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 89 | cnt=$(ls trusted-firmware-m/lib/ext/mbedcrypto/*.patch 2> /dev/null | wc -l) |
| 90 | if [ "$cnt" != "0" ] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 91 | cd mbedtls |
| 92 | git apply ../trusted-firmware-m/lib/ext/mbedcrypto/*.patch |
| 93 | cd - |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 94 | fi |
Xinyu Zhang | b708f57 | 2020-09-15 11:43:46 +0800 | [diff] [blame] | 95 | |
Xinyu Zhang | f05a324 | 2023-10-31 13:54:58 +0800 | [diff] [blame] | 96 | cnt=$(ls tf-m-tests/tests_psa_arch/fetch_repo/*.patch 2> /dev/null | wc -l) |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 97 | if [ "$cnt" != "0" ] ; then |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 98 | cd psa-arch-tests |
Xinyu Zhang | f05a324 | 2023-10-31 13:54:58 +0800 | [diff] [blame] | 99 | git apply ../tf-m-tests/tests_psa_arch/fetch_repo/*.patch |
Xinyu Zhang | 46b3718 | 2023-06-30 15:36:44 +0800 | [diff] [blame] | 100 | cd - |
Xinyu Zhang | e0aa69c | 2021-03-13 13:33:55 +0800 | [diff] [blame] | 101 | fi |
| 102 | |
Xinyu Zhang | ab9d1ea | 2022-12-23 17:11:22 +0800 | [diff] [blame] | 103 | cd trusted-firmware-m |
| 104 | git apply ../tf-m-ci-scripts/build_helper/platform_settings/*.patch |
| 105 | cd - |
| 106 | |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 107 | rm -rf ci_build |
| 108 | mkdir ci_build |
| 109 | cd ci_build |
Dean Birch | d0f9f8c | 2020-03-26 11:10:33 +0000 | [diff] [blame] | 110 | |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 111 | set +e |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 112 | eval $spe_cmake_config_cmd |
Xinyu Zhang | 787497c | 2023-11-13 16:14:15 +0800 | [diff] [blame] | 113 | declare -i cmake_cfg_error=$? |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 114 | set -e |
| 115 | |
| 116 | check_dependency_version |
| 117 | |
Xinyu Zhang | 787497c | 2023-11-13 16:14:15 +0800 | [diff] [blame] | 118 | if [ $cmake_cfg_error != 0 ] ; then |
| 119 | rm -rf ./* |
Xinyu Zhang | a88a2eb | 2023-08-15 17:43:51 +0800 | [diff] [blame] | 120 | eval $spe_cmake_config_cmd |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 121 | fi |
Xinyu Zhang | 8ea4cfc | 2023-10-30 18:28:43 +0800 | [diff] [blame] | 122 | eval $spe_cmake_build_cmd |
Xinyu Zhang | 1536241 | 2023-02-10 15:57:07 +0800 | [diff] [blame] | 123 | |
Xinyu Zhang | 8ea4cfc | 2023-10-30 18:28:43 +0800 | [diff] [blame] | 124 | eval $nspe_cmake_config_cmd |
| 125 | eval $nspe_cmake_build_cmd |
| 126 | |
| 127 | eval $post_build_cmd |