xref: /OK3568_Linux_fs/external/security/rk_tee_user/v2/build.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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