w1u: w1u compilation environment configuration. [2/3]
PD#SWPL-152501
Problem:
for adapting the compilation framework to wcn.
Solution:
rtos-sdk support compile wcn.
Verify:
N/A
Change-Id: I2910de0351391f06744002e036415060744247d1
Signed-off-by: shijie.xiong <shijie.xiong@amlogic.com>
diff --git a/env.sh b/env.sh
index f1ec468..7fc1f80 100755
--- a/env.sh
+++ b/env.sh
@@ -114,6 +114,14 @@
*) echo "Failed to identify ARCH $ARCH";return 1;;
esac
+unset SPLIT_ARCH_DIR
+for split in ${SPLITARCH[*]}; do
+ result=$(find $PWD/boards/$ARCH/$split -type d -name "$BOARD" 2>/dev/null)
+ if [ -n "$result" ]; then
+ SPLIT_ARCH_DIR=$(basename "$(dirname "$result")")
+ fi
+done
+
CONF_FILE="$PWD/products/$PRODUCT/prj.conf"
BACKTRACE_ENABLE=0
if [ $(grep -c "CONFIG_BACKTRACE=y" $CONF_FILE) -ne '0' ]; then
@@ -122,4 +130,4 @@
KERNEL=freertos
-export ARCH BOARD COMPILER KERNEL PRODUCT SOC TOOLCHAIN_KEYWORD TOOLCHAIN_PATH BACKTRACE_ENABLE
+export ARCH BOARD COMPILER KERNEL PRODUCT SOC TOOLCHAIN_KEYWORD TOOLCHAIN_PATH BACKTRACE_ENABLE SPLIT_ARCH_DIR
diff --git a/gen_build_combination.sh b/gen_build_combination.sh
index 8e33448..a5fc374 100755
--- a/gen_build_combination.sh
+++ b/gen_build_combination.sh
@@ -65,10 +65,19 @@
unset ARCHS SOCS BOARDS PRODUCTS
ARCHS=($(find $PWD/arch -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
-SOCS=($(find $PWD/soc -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
-BOARDS=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
PRODUCTS=($(find $PWD/products -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
+if [ -e "$PWD/boards/riscv/CMakeLists.txt" ]; then
+ SOCS=($(find $PWD/soc -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
+ BOARDS=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
+else
+ SPLITARCH=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | grep "$PWD/boards/riscv" | xargs basename -a | sort -n))
+ BOARDS=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | grep -v "$PWD/boards/riscv" | xargs basename -a | sort -n))
+ BOARDS+=($(find $PWD/boards -mindepth 3 -maxdepth 3 -type d ! -name ".*" | grep "$PWD/boards/riscv" | xargs basename -a | sort -n))
+ SOCS=($(find $PWD/soc -mindepth 2 -maxdepth 2 -type d ! -name ".*" | grep -v "$PWD/soc/riscv" | xargs basename -a | sort -n))
+ SOCS+=($(find $PWD/soc -mindepth 3 -maxdepth 3 -type d ! -name ".*" | grep "$PWD/soc/riscv" | xargs basename -a | sort -n))
+fi
+
export BUILD_COMBINATION="$PWD/output/build_combination.txt"
if [ ! -d "$PWD/output" ]; then
@@ -77,21 +86,44 @@
for arch in ${ARCHS[*]}; do
BUILD_COMBINATION_INPUT="$PWD/boards/$arch/build_combination.in"
- if [ $BUILD_COMBINATION -ot $BUILD_COMBINATION_INPUT ]; then
- :> $BUILD_COMBINATION
+ if [ -e $BUILD_COMBINATION_INPUT ]; then
+ if [ $BUILD_COMBINATION -ot $BUILD_COMBINATION_INPUT ]; then
+ :> $BUILD_COMBINATION
+ fi
+ else
+ for split in ${SPLITARCH[*]}; do
+ BUILD_COMBINATION_INPUT="$PWD/boards/$arch/$split/build_combination.in"
+ if [ $BUILD_COMBINATION -ot $BUILD_COMBINATION_INPUT ]; then
+ :> $BUILD_COMBINATION
+ fi
+ done
fi
done
if [ ! -s "$BUILD_COMBINATION" ]; then
for arch in ${ARCHS[*]}; do
BUILD_COMBINATION_INPUT="$PWD/boards/$arch/build_combination.in"
- while IFS= read -r LINE; do
- a=`echo "$LINE"|awk '{print $1}'`
- s=`echo "$LINE"|awk '{print $2}'`
- b=`echo "$LINE"|awk '{print $3}'`
- p=`echo "$LINE"|awk '{print $4}'`
- check_build_combination $a $s $b $p
- [ "$?" -eq 0 ] && echo $LINE >> $BUILD_COMBINATION
- done < $BUILD_COMBINATION_INPUT
+ if [ -e $BUILD_COMBINATION_INPUT ]; then
+ while IFS= read -r LINE; do
+ a=`echo "$LINE"|awk '{print $1}'`
+ s=`echo "$LINE"|awk '{print $2}'`
+ b=`echo "$LINE"|awk '{print $3}'`
+ p=`echo "$LINE"|awk '{print $4}'`
+ check_build_combination $a $s $b $p
+ [ "$?" -eq 0 ] && echo $LINE >> $BUILD_COMBINATION
+ done < $BUILD_COMBINATION_INPUT
+ else
+ for split in ${SPLITARCH[*]}; do
+ BUILD_COMBINATION_INPUT="$PWD/boards/$arch/$split/build_combination.in"
+ while IFS= read -r LINE; do
+ a=`echo "$LINE"|awk '{print $1}'`
+ s=`echo "$LINE"|awk '{print $2}'`
+ b=`echo "$LINE"|awk '{print $3}'`
+ p=`echo "$LINE"|awk '{print $4}'`
+ check_build_combination $a $s $b $p
+ [ "$?" -eq 0 ] && echo $LINE >> $BUILD_COMBINATION
+ done < $BUILD_COMBINATION_INPUT
+ done
+ fi
done
fi
diff --git a/setup.sh b/setup.sh
index ffe9604..9cc2ca4 100755
--- a/setup.sh
+++ b/setup.sh
@@ -70,8 +70,13 @@
if [[ "$PRODUCT" == aocpu ]]; then
sed -i '/path="drivers"/d' $RTOS_SDK_MANIFEST_FILE
+ sed -i '/path="drivers_wcncpu"/d' $RTOS_SDK_MANIFEST_FILE
+elif [[ "$PRODUCT" == wcn ]]; then
+ sed -i '/path="drivers"/d' $RTOS_SDK_MANIFEST_FILE
+ sed -i '/path="drivers_aocpu"/d' $RTOS_SDK_MANIFEST_FILE
else
sed -i '/path="drivers_aocpu"/d' $RTOS_SDK_MANIFEST_FILE
+ sed -i '/path="drivers_wcncpu"/d' $RTOS_SDK_MANIFEST_FILE
fi
# Write the fixed content to CMakeLists.txt
@@ -149,6 +154,13 @@
kconfig_path=$repo_path;;
esac
+ # multiple types of SoC states
+ if [ ! -n "$SPLIT_ARCH_DIR" ] && [[ $cmake_path == *"/riscv/"* ]]; then
+ continue
+ elif [[ $cmake_path == *"/riscv/"* ]] && [[ ! $cmake_path == *"/riscv/$SPLIT_ARCH_DIR"* ]]; then
+ continue
+ fi
+
# Generate root CMakeLists.txt
if [ -f $repo_path/CMakeLists.txt ]; then
echo "add_subdirectory($cmake_path)" >> $cmake_file