1#!/bin/bash 2WORK_DIR_TOP=$(cd `dirname $0` ; pwd) 3 4#./build.sh or ./build.sh 3232 to compile CA TA with 32 bits 5#./build.sh 3264 to compile CA with 32 bits and TA with 64 bits 6#./build.sh 6464 to compile CA TA with 64 bits 7#./build.sh 6432 to compile CA with 64 bits and TA with 32 bits 8#./build.sh ta to compile TA with 32 bits 9 10TOOLCHAIN_PREBUILTS=$WORK_DIR_TOP/../../../../tools/linux/toolchain 11if [ -d "$TOOLCHAIN_PREBUILTS" ]; then 12 TOOLCHAIN_PATH_ARM32=$TOOLCHAIN_PREBUILTS/arm-rockchip830-linux-uclibcgnueabihf/bin/ 13 TOOLCHAIN_PATH_AARCH64=$TOOLCHAIN_PREBUILTS/aarch64-rockchip830-linux-uclibcgnu/bin/ 14 CROSS_COMPILE32=arm-rockchip830-linux-uclibcgnueabihf- 15 CROSS_COMPILE64=aarch64-rockchip830-linux-uclibcgnu- 16 export TOOLCHAIN_UCLIBC=y 17else 18 TOOLCHAIN_PREBUILTS=$WORK_DIR_TOP/../../../../prebuilts 19 if [ ! -d "$TOOLCHAIN_PREBUILTS" ]; then 20 TOOLCHAIN_PREBUILTS=$WORK_DIR_TOP/../../../prebuilts 21 fi 22 TOOLCHAIN_PATH_ARM32=$TOOLCHAIN_PREBUILTS/gcc/linux-x86/arm/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin 23 TOOLCHAIN_PATH_AARCH64=$TOOLCHAIN_PREBUILTS/gcc/linux-x86/aarch64/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin 24 CROSS_COMPILE32=arm-none-linux-gnueabihf- 25 CROSS_COMPILE64=aarch64-none-linux-gnu- 26fi 27 28if [ -z "$AARCH64_TOOLCHAIN" ]; then 29 AARCH64_TOOLCHAIN=$TOOLCHAIN_PATH_AARCH64/$CROSS_COMPILE64 30else 31 AARCH64_TOOLCHAIN=`readlink -f $AARCH64_TOOLCHAIN` 32 TOOLCHAIN_PATH_AARCH64=`dirname $AARCH64_TOOLCHAIN` 33fi 34 35if [ -z "$ARM32_TOOLCHAIN" ]; then 36 ARM32_TOOLCHAIN=$TOOLCHAIN_PATH_ARM32/$CROSS_COMPILE32 37else 38 ARM32_TOOLCHAIN=`readlink -f $ARM32_TOOLCHAIN` 39 TOOLCHAIN_PATH_ARM32=`dirname $ARM32_TOOLCHAIN` 40fi 41 42function check_toolchain32(){ 43 if [ ! -d "${TOOLCHAIN_PATH_ARM32}" ]; then 44 echo "Toolchain error! Need toolchain: ${TOOLCHAIN_PATH_ARM32}" 45 echo "You can get it from following address:" 46 echo "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads" 47 exit 48 fi 49} 50 51function check_toolchain64(){ 52 if [ ! -d "${TOOLCHAIN_PATH_AARCH64}" ]; then 53 echo "Toolchain error! Need toolchain: ${TOOLCHAIN_PATH_AARCH64}" 54 echo "You can get it from following address:" 55 echo "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads" 56 exit 57 fi 58} 59 60make TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm32 clean 61BUILD_CATA_BITS="$1" 62 63if [ "$BUILD_CATA_BITS" == "3232" ]; then 64 check_toolchain32 65 export BUILD_CA=y 66 make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 67 CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 68 CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 69 CROSS_COMPILE=$ARM32_TOOLCHAIN \ 70 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm32 \ 71 COMPILE_NS_USER=32 \ 72 O=$WORK_DIR_TOP/out 73fi 74 75if [ "$BUILD_CATA_BITS" == "3264" ]; then 76 check_toolchain32 77 check_toolchain64 78 export BUILD_CA=y 79 make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 80 CROSS_COMPILE_TA=$AARCH64_TOOLCHAIN \ 81 CROSS_COMPILE_user_ta=$AARCH64_TOOLCHAIN \ 82 CROSS_COMPILE=$AARCH64_TOOLCHAIN \ 83 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm64 \ 84 COMPILE_NS_USER=32 \ 85 O=$WORK_DIR_TOP/out 86fi 87 88if [ "$BUILD_CATA_BITS" == "6464" ]; then 89 check_toolchain64 90 export BUILD_CA=y 91 make CROSS_COMPILE_HOST=$AARCH64_TOOLCHAIN \ 92 CROSS_COMPILE_TA=$AARCH64_TOOLCHAIN \ 93 CROSS_COMPILE_user_ta=$AARCH64_TOOLCHAIN \ 94 CROSS_COMPILE=$AARCH64_TOOLCHAIN \ 95 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm64 \ 96 COMPILE_NS_USER=64 \ 97 O=$WORK_DIR_TOP/out 98fi 99 100if [ "$BUILD_CATA_BITS" == "6432" ]; then 101 check_toolchain32 102 check_toolchain64 103 export BUILD_CA=y 104 make CROSS_COMPILE_HOST=$AARCH64_TOOLCHAIN \ 105 CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 106 CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 107 CROSS_COMPILE=$ARM32_TOOLCHAIN \ 108 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm32 \ 109 COMPILE_NS_USER=64 \ 110 O=$WORK_DIR_TOP/out 111fi 112 113if [ "$BUILD_CATA_BITS" == "" ]; then 114 check_toolchain32 115 export BUILD_CA=y 116 make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 117 CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 118 CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 119 CROSS_COMPILE=$ARM32_TOOLCHAIN \ 120 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm32 \ 121 COMPILE_NS_USER=32 \ 122 O=$WORK_DIR_TOP/out 123fi 124 125if [ "$BUILD_CATA_BITS" == "ta" ]; then 126 check_toolchain32 127 make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 128 CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 129 CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 130 CROSS_COMPILE=$ARM32_TOOLCHAIN \ 131 TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-ta_arm32 \ 132 COMPILE_NS_USER=32 \ 133 O=$WORK_DIR_TOP/out 134fi 135