hikey: Add wrapper script to build uefi

Booloader sources are located under device/linaro/bootloader

Change-Id: I8b35f9a292f5037eac2e0a281f5345921a313b93
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
diff --git a/uefi-tools/opteed-build.sh b/uefi-tools/opteed-build.sh
new file mode 100755
index 0000000..3c759eb
--- /dev/null
+++ b/uefi-tools/opteed-build.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+#
+# Builds OP-TEE Trusted OS.
+# Not intended to be called directly, invoked from tos-build.sh.
+#
+# Board configuration is extracted from
+# parse-platforms.py and platforms.config.
+#
+
+TOOLS_DIR="`dirname $0`"
+. "$TOOLS_DIR"/common-functions
+
+export CFG_TEE_CORE_LOG_LEVEL=2  # 0=none 1=err 2=info 3=debug 4=flow
+
+function usage
+{
+	echo "usage:"
+	echo "opteed-build.sh -e <EDK2 source directory> -t <UEFI build profile/toolchain> <platform>"
+	echo
+}
+
+function build_platform
+{
+	unset CFG_ARM64_core PLATFORM PLATFORM_FLAVOR DEBUG
+	TOS_PLATFORM="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o tos_platform`"
+	if [ X"$TOS_PLATFORM" = X"" ]; then
+		TOS_PLATFORM="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o atf_platform`"
+		if [ X"$TOS_PLATFORM" = X"" ]; then
+			TOS_PLATFORM=$1
+		fi
+	fi
+	TOS_PLATFORM_FLAVOR="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o tos_platform_flavor`"
+
+	#
+	# Read platform configuration
+	#
+	PLATFORM_ARCH="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o arch`"
+	PLATFORM_IMAGE_DIR="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o uefi_image_dir`"
+	PLATFORM_BUILDFLAGS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o tos_buildflags`"
+
+	if [ $VERBOSE -eq 1 ]; then
+		echo "PLATFORM_ARCH=$PLATFORM_ARCH"
+		echo "PLATFORM_IMAGE_DIR=$PLATFORM_IMAGE_DIR"
+		echo "PLATFORM_BUILDFLAGS=$PLATFORM_BUILDFLAGS"
+	fi
+
+	#
+	# Set up cross compilation variables (if applicable)
+	#
+	# OP-TEE requires both 64- and 32-bit compilers for a 64-bit build
+	# For details, visit
+	# https://github.com/OP-TEE/optee_os/blob/master/documentation/build_system.md#cross_compile-cross-compiler-selection
+	#
+	set_cross_compile
+	if [ "$PLATFORM_ARCH" = "AARCH64" ]; then
+		export CFG_ARM64_core=y
+		export CROSS_COMPILE_core="$TEMP_CROSS_COMPILE"
+		export CROSS_COMPILE_ta_arm64="$TEMP_CROSS_COMPILE"
+		PLATFORM_ARCH="ARM"
+		set_cross_compile
+		PLATFORM_ARCH="AARCH64"
+		echo "CFG_ARM64_core=$CFG_ARM64_core"
+		echo "CROSS_COMPILE_ta_arm64=$CROSS_COMPILE_ta_arm64"
+	else
+		export CFG_ARM64_core=n
+	fi
+	export CROSS_COMPILE="$TEMP_CROSS_COMPILE"
+	echo "CROSS_COMPILE=$CROSS_COMPILE"
+	echo "CROSS_COMPILE_core=$CROSS_COMPILE_core"
+
+	#
+	# Set up build variables
+	#
+	BUILD_TOS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $1 get -o build_tos`"
+	case "$BUILD_TOS" in
+	debug*)
+		export DEBUG=1
+		echo "PROFILE=DEBUG"
+		;;
+	*)
+		export DEBUG=0
+		echo "PROFILE=RELEASE"
+		;;
+	esac
+
+	export PLATFORM=$TOS_PLATFORM
+	export PLATFORM_FLAVOR=$TOS_PLATFORM_FLAVOR
+	echo "PLATFORM=$PLATFORM"
+	echo "PLATFORM_FLAVOR=$PLATFORM_FLAVOR"
+	echo "CFG_TEE_CORE_LOG_LEVEL=$CFG_TEE_CORE_LOG_LEVEL"
+
+	#
+	# Build OP-TEE
+	#
+	if [ $VERBOSE -eq 1 ]; then
+		echo "Calling OP-TEE build:"
+	fi
+	make -j$NUM_THREADS ${PLATFORM_BUILDFLAGS}
+	if [ $? -eq 0 ]; then
+		#
+		# Copy resulting images to UEFI image dir
+		#
+		if [ $VERBOSE -eq 1 ]; then
+			echo "Copying tee.bin to "$EDK2_DIR/Build/$PLATFORM_IMAGE_DIR/$BUILD_PROFILE/FV/""
+		fi
+		cp -a out/arm-plat-"$TOS_PLATFORM"/core/tee.bin "$EDK2_DIR/Build/$PLATFORM_IMAGE_DIR/$BUILD_PROFILE/FV/"
+	else
+		return 1
+	fi
+}
+
+# Check to see if we are in a trusted OS directory
+# refuse to continue if we aren't
+if [ ! -f documentation/optee_design.md ]
+then
+	echo "ERROR: we aren't in the optee_os directory."
+	usage
+	exit 1
+fi
+
+build=
+
+if [ $# = 0 ]
+then
+	usage
+	exit 1
+else
+	while [ "$1" != "" ]; do
+		case $1 in
+			"-e" )
+				shift
+				EDK2_DIR="$1"
+				;;
+			"/h" | "/?" | "-?" | "-h" | "--help" )
+				usage
+				exit
+				;;
+			"-t" )
+				shift
+				BUILD_PROFILE="$1"
+				;;
+			* )
+				build="$1"
+				;;
+		esac
+		shift
+	done
+fi
+
+if [ X"$build" = X"" ]; then
+	echo "No platform specified!" >&2
+	echo
+	usage
+	exit 1
+fi
+
+build_platform $build
+exit $?