script: support ext module [1/1]

PD#SWPL-64232

Problem:
support ext module

Solution:
support ext module

Verify:
s4d c2 local build

Signed-off-by: wanwei.jiang <wanwei.jiang@amlogic.com>
Change-Id: Ie4630b795fe0364e96cd07ed9c2a28f4630a31a8
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index 7197960..540ce78 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -19,8 +19,8 @@
 			ALL_LINE="$ALL_LINE"" ""$LINE"
 		fi
 	done < $1
-	export GKI_EXT_MODULE_CONFIG=$ALL_LINE
-	echo "GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}"
+
+	echo "${ALL_LINE}"
 }
 
 function read_ext_module_predefine() {
@@ -34,18 +34,80 @@
 		PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
 	done
 
-	export GKI_EXT_MODULE_PREDEFINE=$PRE_DEFINE
-	echo "GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}"
+	echo "${PRE_DEFINE}"
 }
 
 function prepare_module_build() {
+	local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
 	if [[ -z ${IN_KERNEL_MODULES} ]]; then
-		read_ext_module_config $FRAGMENT_CONFIG && read_ext_module_predefine $FRAGMENT_CONFIG
+		sed 's:#.*$::g' ${ROOT_DIR}/${FRAGMENT_CONFIG} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
+		GKI_EXT_KERNEL_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
+		GKI_EXT_KERNEL_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
+		export GKI_EXT_KERNEL_MODULE_CONFIG GKI_EXT_KERNEL_MODULE_PREDEFINE
 	fi
+
+	for ext_module_config in ${EXT_MODULES_CONFIG}; do
+		sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_config} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
+		GKI_EXT_MODULE_CONFIG=$(read_ext_module_config ${temp_file})
+		GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine ${temp_file})
+	done
+	export GKI_EXT_MODULE_CONFIG GKI_EXT_MODULE_PREDEFINE
+	echo GKI_EXT_MODULE_CONFIG=${GKI_EXT_MODULE_CONFIG}
+	echo GKI_EXT_MODULE_PREDEFINE=${GKI_EXT_MODULE_PREDEFINE}
+
+	local flag=0
+	for ext_module_path in ${EXT_MODULES_PATH}; do
+		sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
+		local ext_drivers=`cat ${temp_file}`
+		EXT_MODULES="
+			${EXT_MODULES}
+			${ext_drivers}
+		"
+
+		extra_symbols="KBUILD_EXTRA_SYMBOLS +="
+		while read LINE
+		do
+			ext_mod_rel=$(rel_path ${ROOT_DIR}/${LINE} ${KERNEL_DIR})
+			if [[ ${flag} -eq "1" ]]; then
+				sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/, /# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ROOT_DIR}/${LINE}/Makefile
+				sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS end" ${ROOT_DIR}/${LINE}/Makefile
+				sed -i "2 i ${extra_symbols}" ${ROOT_DIR}/${LINE}/Makefile
+				sed -i "2 i # auto add KBUILD_EXTRA_SYMBOLS start" ${ROOT_DIR}/${LINE}/Makefile
+				echo "${ROOT_DIR}/${LINE}/Makefile add: ${extra_symbols}"
+			fi
+			flag=1
+			extra_symbols="${extra_symbols} ${ext_mod_rel}/Module.symvers"
+		done < ${temp_file}
+
+	done
+	export EXT_MODULES
+	echo EXT_MODULES=${EXT_MODULES}
+
+	rm ${temp_file}
 }
 
 export -f prepare_module_build
 
+function extra_cmds() {
+	local temp_file=`mktemp /tmp/kernel.XXXXXXXXXXXX`
+	local flag=0
+
+	for ext_module_path in ${EXT_MODULES_PATH}; do
+		sed 's:#.*$::g' ${ROOT_DIR}/${ext_module_path} | sed '/^$/d' | sed 's/^[ ]*//' | sed 's/[ ]*$//' > ${temp_file}
+		while read LINE
+		do
+			if [[ ${flag} -eq "1" ]]; then
+				sed -i "/# auto add KBUILD_EXTRA_SYMBOLS start/, /# auto add KBUILD_EXTRA_SYMBOLS end/d" ${ROOT_DIR}/${LINE}/Makefile
+			fi
+			flag=1
+		done < ${temp_file}
+	done
+
+	rm ${temp_file}
+}
+
+export -f extra_cmds
+
 function mod_probe() {
 	local ko=$1
 	local loop