[Feature] add GA346 baseline version

Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/src/kernel/linux/v4.19/scripts/abi/genOriABIxml.sh b/src/kernel/linux/v4.19/scripts/abi/genOriABIxml.sh
new file mode 100644
index 0000000..9e0f7e1
--- /dev/null
+++ b/src/kernel/linux/v4.19/scripts/abi/genOriABIxml.sh
@@ -0,0 +1,177 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+green='\e[0;32m'
+red='\e[0;31m'
+eol='\e[0m'
+
+BASE_DIR=$PWD
+ABI_DIR=$BASE_DIR/scripts/abi
+ABIGAIL_DIR=$BASE_DIR/../kernel/build/abi
+ABIGAIL_BUILD_SCRIPT=$ABIGAIL_DIR/bootstrap_src_build
+ABI_XML_DIR=$BASE_DIR/scripts/abi/abi_xml
+#target_kernel must create outside current kernel's repo
+TARGET_KERNEL_DIR=$BASE_DIR/../../target_kernel
+TARGET_DEFCONFIG=mtk_gki_defconfig
+TARGET_DEFCONFIG_PATCH=$ABI_DIR/mtk_gki_defconfig_patch
+TARGET_ABI_XML=abi_$src_defconfig.xml
+TARGET_VMLINUX_DIR=$TARGET_KERNEL_DIR/common/out_vmlinux
+
+echo "Get ABIGAIL_VERSION from $ABIGAIL_BUILD_SCRIPT"
+ABIGAIL_VERSION=`grep "ABIGAIL_VERSION=" $ABIGAIL_BUILD_SCRIPT | cut -f2- -d=`
+ABIGAIL_DIR_RELEASE=$ABIGAIL_DIR/abigail-inst/$ABIGAIL_VERSION
+echo "ABIGAIL_DIR_RELEASE=$ABIGAIL_DIR_RELEASE"
+
+
+cd $TARGET_KERNEL_DIR
+TARGET_KERNEL_DIR_RELATED_PATH=`pwd`
+TARGET_KERNEL_OUT_DIR_RELATED_PATH=$TARGET_KERNEL_DIR_RELATED_PATH/common/out/..
+echo "TARGET_KERNEL_DIR_RELATED_PATH=$TARGET_KERNEL_DIR_RELATED_PATH"
+echo "TARGET_KERNEL_OUT_DIR_RELATED_PATH=$TARGET_KERNEL_OUT_DIR_RELATED_PATH"
+cd $BASE_DIR
+
+function print_usage(){
+	echo -e "${green}Script for auto generate target_branch's ABI xml \
+based on src_defconfig ${eol}"
+	echo ""
+	echo -e "${red}Command for local test:${eol}"
+	echo "[src_commit] [src_defconfig] [target_branch] [target_commit] \
+mode=m ./scripts/abi/genOriABIxml.sh"
+	echo ""
+	echo -e "${green}Description:${eol}"
+	echo "[src_commit]: source kernel commit id"
+	echo "[src_defconfig]: source project defconfig"
+	echo "[target_branch]: target branch"
+	echo "[target_commit]: target kernel commit id"
+	echo ""
+	echo -e "${green}Example:${eol} ${red}src_commit=491f0e3 \
+src_defconfig=k79v1_64_gki_debug_defconfig \
+target_branch=common-android-4.19 target_commit=f232ce6 mode=m \
+./scripts/abi/genOriABIxml.sh 2>&1 | tee buildOriABI.log${eol}"
+	echo ""
+	echo -e "${green}Script for auto generate target_branch's ABI xml \
+for preflight based on src_defconfig ${eol}"
+	echo ""
+	echo -e "${red}Command for local test:${eol}"
+	echo "[src_defconfig] [target_branch] mode=p \
+./scripts/abi/genOriABIxml.sh"
+	echo ""
+	echo -e "${green}Description:${eol}"
+	echo "[src_defconfig]: source project defconfig"
+	echo "[target_branch]: target branch"
+	echo ""
+	echo -e "${green}Example:${eol} ${red}src_defconfig=\
+k79v1_64_gki_debug_defconfig \
+target_branch=common-android-4.19 mode=p \
+./scripts/abi/genOriABIxml.sh 2>&1 | tee buildOriABI.log${eol}"
+	echo ""
+	echo -e "${red}Command for delete temp files:${eol}"
+	echo "mode=d ./scripts/abi/genOriABIxml.sh"
+	echo ""
+	echo -e "${green}Example:${eol} ${red}mode=d \
+./scripts/abi/genOriABIxml.sh${eol}"
+}
+
+function del_temp_files(){
+	echo "Start delete temp files..."
+	echo "Delete temp files $BASE_DIR/out"
+	rm -rf $BASE_DIR/out
+	echo "Delete temp files $TARGET_KERNEL_DIR"
+	rm -rf $TARGET_KERNEL_DIR
+	#rm -rf $ABI_XML_DIR/$TARGET_ABI_XML
+}
+
+if [[ "$1" == "h" ]] || [[ "$1" == "help" ]] || [ -z "mode" ]
+then
+	print_usage
+fi
+
+if [ "$mode" == "d" ]
+then
+	del_temp_files
+fi
+
+if [ "$mode" == "p" ]
+then
+target_commit=d8a623c #ACK4.19.80
+echo src_commit=$src_commit
+echo target_commit=$target_commit
+fi
+
+if [ "$mode" == "m" ] || [ "$mode" == "p" ]
+then
+	#Build libabigail first
+	$ABIGAIL_BUILD_SCRIPT
+	#remove temp files first
+	del_temp_files
+	echo "Generate .config from src_defconfig:$src_defconfig with kernel \
+commit id:$src_commit"
+	cd ..
+	export PATH=\
+$PWD/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/:\
+$PWD/prebuilts/clang/host/linux-x86/clang-r353983c/bin/:$PATH
+	cd $BASE_DIR
+	git checkout $src_commit
+	make ARCH=arm64 CLANG_TRIPLE=aarch64-linux-gnu- \
+		CROSS_COMPILE=aarch64-linux-android- \
+		CC=clang $src_defconfig O=out
+
+	echo "Generate ABI xml:$TARGET_ABI_XML of target_branch:$target_branch \
+with commit id:$target_commit"
+	mkdir $TARGET_KERNEL_DIR
+	cd $TARGET_KERNEL_DIR
+	repo init -u http://gerrit.mediatek.inc:8080/kernel/manifest -b $target_branch
+	mosesq mtk_repo sync -f -j8 --no-clone-bundle -c --no-tags
+
+	export PATH=\
+$PWD/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/:\
+$PWD/prebuilts-master/clang/host/linux-x86/clang-r353983c/bin/:$PATH
+	cd common
+	git checkout $target_commit
+	echo "Move .config from $BASE_DIR/out to \
+$PWD/arch/arm64/configs/$TARGET_DEFCONFIG"
+	cp $BASE_DIR/out/.config arch/arm64/configs/$TARGET_DEFCONFIG
+	#Modify $TARGET_DEFCONFIG configs according to $TARGET_DEFCONFIG_PATCH
+	exec < $TARGET_DEFCONFIG_PATCH
+	while read line
+	do
+		#get string before "="
+		config_=${line%%=*}
+		#replace matched string
+		sed -i "/$config_/c\\$line" \
+			$PWD/arch/arm64/configs/$TARGET_DEFCONFIG
+	done
+
+	make ARCH=arm64 CLANG_TRIPLE=aarch64-linux-gnu- \
+	CROSS_COMPILE=aarch64-linux-android- CC=clang $TARGET_DEFCONFIG O=out
+	mosesq make ARCH=arm64 CLANG_TRIPLE=aarch64-linux-gnu- \
+	CROSS_COMPILE=aarch64-linux-android- CC=clang O=out -j24 -k
+
+	#Only use vmlinux to generate ABI xml
+	echo "Copy vmlinux from $PWD/out to $PWD/out_vmlinux"
+	mkdir out_vmlinux
+	cp out/vmlinux out_vmlinux
+
+	#Use abi_dump to generate $TARGET_ABI_XML
+	#export $ABIGAIL_DIR bin and lib
+	echo "Generate $ABI_XML_DIR/$TARGET_ABI_XML from vmlinux \
+in $TARGET_VMLINUX_DIR"
+	export PATH=${ABIGAIL_DIR_RELEASE}/bin:${PATH}
+	export LD_LIBRARY_PATH=${ABIGAIL_DIR_RELEASE}/lib:\
+${ABIGAIL_DIR_RELEASE}/lib/elfutils:${LD_LIBRARY_PATH}
+	cd $ABIGAIL_DIR
+	python dump_abi --linux-tree $TARGET_VMLINUX_DIR \
+		--out-file $ABI_XML_DIR/$TARGET_ABI_XML
+
+	# sanitize the abi.xml by removing any occurences of the kernel path
+	cd $TARGET_KERNEL_DIR
+        sed -i "s#$TARGET_KERNEL_OUT_DIR_RELATED_PATH/##g" \
+	$ABI_XML_DIR/$TARGET_ABI_XML
+	# now also do that with any left over paths sneaking in
+	# (e.g. from the prebuilts)
+        sed -i "s#$TARGET_KERNEL_DIR_RELATED_PATH/##g" \
+	$ABI_XML_DIR/$TARGET_ABI_XML
+
+	#remove temp files
+	del_temp_files
+fi