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