1*4882a593Smuzhiyun#!/bin/bash 2*4882a593SmuzhiyunWORK_DIR_TOP=$(cd `dirname $0` ; pwd) 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun#./build.sh or ./build.sh 3232 to compile CA TA with 32 bits 5*4882a593Smuzhiyun#./build.sh 6432 to compile CA with 64 bits and TA with 32 bits 6*4882a593Smuzhiyun#./build.sh ta to compile TA with 32 bits 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunTOOLCHAIN_PREBUILTS=$WORK_DIR_TOP/../../../../prebuilts 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunif [ ! -d "$TOOLCHAIN_PREBUILTS" ]; then 11*4882a593Smuzhiyun TOOLCHAIN_PREBUILTS=$WORK_DIR_TOP/../../../prebuilts 12*4882a593Smuzhiyunfi 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunTOOLCHAIN_PATH_ARM32=$TOOLCHAIN_PREBUILTS/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 15*4882a593SmuzhiyunTOOLCHAIN_PATH_AARCH64=$TOOLCHAIN_PREBUILTS/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 16*4882a593SmuzhiyunCROSS_COMPILE32=arm-linux-gnueabihf- 17*4882a593SmuzhiyunCROSS_COMPILE64=aarch64-linux-gnu- 18*4882a593Smuzhiyun 19*4882a593Smuzhiyunif [ -z "$AARCH64_TOOLCHAIN" ]; then 20*4882a593Smuzhiyun AARCH64_TOOLCHAIN=$TOOLCHAIN_PATH_AARCH64/$CROSS_COMPILE64 21*4882a593Smuzhiyunelse 22*4882a593Smuzhiyun AARCH64_TOOLCHAIN=`readlink -f $AARCH64_TOOLCHAIN` 23*4882a593Smuzhiyun TOOLCHAIN_PATH_AARCH64=`dirname $AARCH64_TOOLCHAIN` 24*4882a593Smuzhiyunfi 25*4882a593Smuzhiyun 26*4882a593Smuzhiyunif [ -z "$ARM32_TOOLCHAIN" ]; then 27*4882a593Smuzhiyun ARM32_TOOLCHAIN=$TOOLCHAIN_PATH_ARM32/$CROSS_COMPILE32 28*4882a593Smuzhiyunelse 29*4882a593Smuzhiyun ARM32_TOOLCHAIN=`readlink -f $ARM32_TOOLCHAIN` 30*4882a593Smuzhiyun TOOLCHAIN_PATH_ARM32=`dirname $ARM32_TOOLCHAIN` 31*4882a593Smuzhiyunfi 32*4882a593Smuzhiyun 33*4882a593Smuzhiyunmake TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-user_ta clean 34*4882a593SmuzhiyunBUILD_CATA_BITS="$1" 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunif [ "$BUILD_CATA_BITS" == "3264" ] || [ "$BUILD_CATA_BITS" == "6464" ]; then 37*4882a593Smuzhiyun if [ ! -d "${TOOLCHAIN_PATH_AARCH64}" ]; then 38*4882a593Smuzhiyun echo "Toolchain error! Need toolchain: ${TOOLCHAIN_PATH_AARCH64}" 39*4882a593Smuzhiyun echo "You can get it from following address:" 40*4882a593Smuzhiyun echo "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads" 41*4882a593Smuzhiyun exit 42*4882a593Smuzhiyun fi 43*4882a593Smuzhiyunelse 44*4882a593Smuzhiyun if [ ! -d "${TOOLCHAIN_PATH_ARM32}" ]; then 45*4882a593Smuzhiyun echo "Toolchain error! Need toolchain: ${TOOLCHAIN_PATH_ARM32}" 46*4882a593Smuzhiyun echo "You can get it from following address:" 47*4882a593Smuzhiyun echo "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads" 48*4882a593Smuzhiyun exit 49*4882a593Smuzhiyun fi 50*4882a593Smuzhiyunfi 51*4882a593Smuzhiyun 52*4882a593Smuzhiyunif [ "$BUILD_CATA_BITS" == "3232" ]; then 53*4882a593Smuzhiyun export BUILD_CA=y 54*4882a593Smuzhiyun make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 55*4882a593Smuzhiyun CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 56*4882a593Smuzhiyun CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 57*4882a593Smuzhiyun CROSS_COMPILE=$ARM32_TOOLCHAIN \ 58*4882a593Smuzhiyun TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-user_ta \ 59*4882a593Smuzhiyun COMPILE_NS_USER=32 \ 60*4882a593Smuzhiyun O=$WORK_DIR_TOP/out 61*4882a593Smuzhiyunfi 62*4882a593Smuzhiyun 63*4882a593Smuzhiyunif [ "$BUILD_CATA_BITS" == "6432" ]; then 64*4882a593Smuzhiyun export BUILD_CA=y 65*4882a593Smuzhiyun make CROSS_COMPILE_HOST=$AARCH64_TOOLCHAIN \ 66*4882a593Smuzhiyun CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 67*4882a593Smuzhiyun CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 68*4882a593Smuzhiyun CROSS_COMPILE=$ARM32_TOOLCHAIN \ 69*4882a593Smuzhiyun TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-user_ta \ 70*4882a593Smuzhiyun COMPILE_NS_USER=64 \ 71*4882a593Smuzhiyun O=$WORK_DIR_TOP/out 72*4882a593Smuzhiyunfi 73*4882a593Smuzhiyun 74*4882a593Smuzhiyunif [ "$BUILD_CATA_BITS" == "" ]; then 75*4882a593Smuzhiyun export BUILD_CA=y 76*4882a593Smuzhiyun make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 77*4882a593Smuzhiyun CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 78*4882a593Smuzhiyun CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 79*4882a593Smuzhiyun CROSS_COMPILE=$ARM32_TOOLCHAIN \ 80*4882a593Smuzhiyun TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-user_ta \ 81*4882a593Smuzhiyun COMPILE_NS_USER=32 \ 82*4882a593Smuzhiyun O=$WORK_DIR_TOP/out 83*4882a593Smuzhiyunfi 84*4882a593Smuzhiyunif [ "$BUILD_CATA_BITS" == "ta" ]; then 85*4882a593Smuzhiyun make CROSS_COMPILE_HOST=$ARM32_TOOLCHAIN \ 86*4882a593Smuzhiyun CROSS_COMPILE_TA=$ARM32_TOOLCHAIN \ 87*4882a593Smuzhiyun CROSS_COMPILE_user_ta=$ARM32_TOOLCHAIN \ 88*4882a593Smuzhiyun CROSS_COMPILE=$ARM32_TOOLCHAIN \ 89*4882a593Smuzhiyun TA_DEV_KIT_DIR=$WORK_DIR_TOP/export-user_ta \ 90*4882a593Smuzhiyun COMPILE_NS_USER=32 \ 91*4882a593Smuzhiyun O=$WORK_DIR_TOP/out 92*4882a593Smuzhiyunfi 93