SoC common: scripts: Add prepare_toolchain.sh [1/1]
PD#SWPL-67525
Problem:
Add prepare_toolchain.sh.
Solution:
move toolchain preparation from Makefile to scripts/prepare_toolchain.sh.
Verify:
ad401_a113l
Change-Id: Ib341f6d809d0ce165065710c43d0b9d9696c6457
Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
diff --git a/prepare_toolchain.sh b/prepare_toolchain.sh
new file mode 100755
index 0000000..e0e7129
--- /dev/null
+++ b/prepare_toolchain.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# Copyright (c) 2021-2024 Amlogic, Inc. All rights reserved.
+#
+# SPDX-License-Identifier: MIT
+#
+
+[ -z "$OUTPUT_DIR" ] && OUTPUT_DIR=$PWD/output
+[ -z "$OUTPUT_DIR" ] && TOOLCHAIN_DIR=$OUTPUT_DIR/toolchains/$COMPILER-$TOOLCHAIN_KEYWORD
+CROSSTOOL=$PWD/arch/$ARCH/toolchain/$COMPILER*$TOOLCHAIN_KEYWORD
+
+if [ -n "$COMPILER" ]; then
+ if [[ "$ARCH" == "arm" || "$ARCH" == "arm64" ]]; then
+ if [ ! -d $TOOLCHAIN_DIR ]; then
+ echo "Extracting cross toolchain ..."
+ mkdir -p $TOOLCHAIN_DIR
+ tar -xf $CROSSTOOL.tar.xz -C $TOOLCHAIN_DIR --strip-components=1
+ touch $TOOLCHAIN_DIR
+ fi
+ if ( find $CROSSTOOL.tar.xz -newer $TOOLCHAIN_DIR | grep -q $CROSSTOOL.tar.xz ); then
+ echo "Updating cross toolchain ..."
+ rm -rf $TOOLCHAIN_DIR/*
+ tar -xf $CROSSTOOL.tar.xz -C $TOOLCHAIN_DIR --strip-components=1
+ touch $TOOLCHAIN_DIR
+ fi
+ if [ -f $CROSSTOOL.patch ]; then
+ cd $OUTPUT_DIR/toolchains
+ if patch -N -f -s --dry-run -p0 < $CROSSTOOL.patch >/dev/null; then
+ echo "Preparing cross toolchain ..."
+ patch -s -p0 < $CROSSTOOL.patch
+ fi
+ fi
+ fi
+else
+ echo "COMPILER is not set, Please execute source scripts/env.sh"
+ exit 1
+fi