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