| # project-detection.sh |
| # |
| # Copyright The Mbed TLS Contributors |
| # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| # |
| # Purpose |
| # |
| # This script contains functions for shell scripts to |
| # help detect which project (Mbed TLS, TF-PSA-Crypto) |
| # or which Mbed TLS branch they are in. |
| |
| # Project detection. |
| # |
| # Both Mbed TLS and TF-PSA-Cryto repos have a "scripts/project_name.txt" file |
| # which contains the name of the project. They are used in scripts to know in |
| # which project/folder we're in. |
| # This function accepts 2 parameters: |
| # - $1: boolean value which defines the behavior in case |
| # "scripts/project_name.txt" is not found: |
| # - 1: exit with error message |
| # - 0: simply return an error |
| # - $2: mandatory value which defined the root folder where to look for |
| # "scripts/project_name.txt". |
| read_project_name_file () { |
| EXIT_IF_NOT_FOUND=$1 |
| ROOT_PATH=$2 |
| |
| PROJECT_NAME_FILE="scripts/project_name.txt" |
| |
| # Check if file exists. |
| if [ ! -f "$ROOT_PATH/$PROJECT_NAME_FILE" ]; then |
| if $EXIT_IF_NOT_FOUND ; then |
| echo "$ROOT_PATH/$PROJECT_NAME_FILE does not exist... Exiting..." >&2 |
| exit 1 |
| fi |
| # Simply return a failure in case we were asked not to fail in case of |
| # missing file. |
| return 1 |
| fi |
| |
| if read -r PROJECT_NAME < "$ROOT_PATH/$PROJECT_NAME_FILE"; then :; else |
| return 1 |
| fi |
| } |
| |
| # Check if the current folder is the Mbed TLS root one. |
| # |
| # Warning: if this is not run from Mbed TLS/TF-PSA-Crypto root folder, the |
| # script is terminated with a failure. |
| in_mbedtls_repo () { |
| read_project_name_file true . |
| test "$PROJECT_NAME" = "Mbed TLS" |
| } |
| |
| # Check if the current folder is the TF-PSA-Crypto root one. |
| # |
| # Warning: if this is not run from Mbed TLS/TF-PSA-Crypto root folder, the |
| # script is terminated with a failure. |
| in_tf_psa_crypto_repo () { |
| read_project_name_file true . |
| test "$PROJECT_NAME" = "TF-PSA-Crypto" |
| } |
| |
| # Check if $1 is an Mbed TLS root folder. |
| # |
| # Differently from in_mbedtls_repo() above, this can be run on any folder |
| # without causing the script to exit. |
| is_mbedtls_root() { |
| if ! read_project_name_file false $1 ; then |
| return 1 |
| fi |
| |
| test "$PROJECT_NAME" = "Mbed TLS" |
| } |
| |
| # Check if $1 is a TF-PSA-Crypto root folder. |
| # |
| # Differently from in_tf_psa_crypto_repo() above, this can be run on any folder |
| # without causing the script to exit. |
| is_tf_psa_crypto_root() { |
| if ! read_project_name_file false $1 ; then |
| return 1 |
| fi |
| |
| test "$PROJECT_NAME" = "TF-PSA-Crypto" |
| } |
| |
| #Branch detection |
| read_build_info () { |
| SCRIPT_DIR=$(pwd) |
| |
| BUILD_INFO_FILE="include/mbedtls/build_info.h" |
| |
| if [ ! -f "$BUILD_INFO_FILE" ]; then |
| echo "File $BUILD_INFO_FILE not found." |
| exit 1 |
| fi |
| |
| MBEDTLS_VERSION_MAJOR=$(grep "^#define MBEDTLS_VERSION_MAJOR" "$BUILD_INFO_FILE" | awk '{print $3}') |
| MBEDTLS_VERSION_MINOR=$(grep "^#define MBEDTLS_VERSION_MINOR" "$BUILD_INFO_FILE" | awk '{print $3}') |
| |
| if [ -z "$MBEDTLS_VERSION_MAJOR" ]; then |
| echo "MBEDTLS_VERSION_MAJOR not found in $BUILD_INFO_FILE." |
| exit 1 |
| fi |
| |
| if [ -z "$MBEDTLS_VERSION_MINOR" ]; then |
| echo "MBEDTLS_VERSION_MINOR not found in $BUILD_INFO_FILE." |
| exit 1 |
| fi |
| } |
| |
| in_3_6_branch () { |
| read_build_info |
| test $MBEDTLS_VERSION_MAJOR = "3" && test $MBEDTLS_VERSION_MINOR = "6" |
| } |
| |
| in_4_x_branch () { |
| read_build_info |
| test $MBEDTLS_VERSION_MAJOR = "4" |
| } |