[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/build/romfs-inst.sh b/ap/build/romfs-inst.sh
new file mode 100755
index 0000000..9834103
--- /dev/null
+++ b/ap/build/romfs-inst.sh
@@ -0,0 +1,271 @@
+PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$PATH"
+
+usage()
+{
+cat << !EOF >&2
+$0: [options] [src] dst
+    -v          : output actions performed.
+    -e env-var  : only take action if env-var is set to "y".
+    -E env-var  : only take action if env-var is not set to "y".
+    -o option   : only take action if option is set to "y".
+    -O option   : only take action if option is not set to "y".
+    -c          : process with cpp+cflags
+    -p perms    : chmod style permissions for dst.
+    -S          : don't strip after installing
+    -a text     : append text to dst.
+    -A pattern  : only append text if pattern doesn't exist in file
+    -d          : make dst directory if it doesn't exist
+    -l link     : dst is a hard link to 'link'.
+    -s sym-link : dst is a sym-link to 'sym-link'.
+    -M          : install kernel module into dst subdir of module dir
+    -r          : root directory of install (default ROMFSDIR)
+    -f          : do not follow symlinks
+
+    if "src" is not provided,  basename is run on dst to determine the
+    source in the current directory.
+
+    multiple -e and -o options are ANDed together.  To achieve an OR affect
+    use a single -e/-o with 1 or more y/n/"" chars in the condition.
+
+    if src is a directory,  everything in it is copied recursively to dst
+    with special files removed (currently CVS and Subversion dirs).
+!EOF
+	exit 1
+}
+
+#############################################################################
+
+setperm()
+{
+	rc=0
+	chmod u+w ${ROMFSDIR}${dst}
+	if [ "$perm" ]
+	then
+		[ "$v" ] && echo "chmod ${perm} ${ROMFSDIR}${dst}"
+		chmod ${perm} ${ROMFSDIR}${dst}
+		rc=$?
+	fi
+	return $rc
+}
+
+#############################################################################
+
+file_append()
+{
+	touch ${ROMFSDIR}${dst} || return 1
+	if [ -z "${pattern}" ] && grep -F "${src}" ${ROMFSDIR}${dst} > /dev/null
+	then
+		[ "$v" ] && echo "File entry already installed."
+	elif [ "${pattern}" ] && egrep "${pattern}" ${ROMFSDIR}${dst} > /dev/null
+	then
+		[ "$v" ] && echo "File pattern already installed."
+	else
+		[ "$v" ] && echo "Installing entry into ${ROMFSDIR}${dst}."
+		if [ -s ${ROMFSDIR}${dst} ] ; then
+			if [ $(tail -n1 ${ROMFSDIR}${dst} | tr -d '\n' | wc -c) = $(tail -n1 ${ROMFSDIR}${dst} | wc -c) ] ; then
+				echo "" >> ${ROMFSDIR}${dst} || return 1
+			fi
+		fi
+		echo "${src}" >> ${ROMFSDIR}${dst} || return 1
+	fi
+	setperm ${ROMFSDIR}${dst}
+	return $?
+}
+
+#############################################################################
+
+file_copy()
+{
+	rc=0
+	if [ -d "${src}" ]
+	then
+		[ "$v" ] && echo "CopyDir ${src} ${ROMFSDIR}${dst}"
+		(
+			cd ${src} || return 1
+			V=
+			[ "$v" ] && V=v
+			find . -print | grep -E -v '/CVS|/\.svn' | cpio -p${V}dum${follow} ${ROMFSDIR}${dst}
+			rc=$?
+			find . -print | grep -E -v '/CVS|/\.svn' | ( cd ${ROMFSDIR}${dst}; xargs chmod u+w )
+			setperm ${ROMFSDIR}${dst}
+			find . -type f | grep -E -v '/CVS|/\.svn|\.ko$' | while read t; do
+				if [ -n "$strip" ]; then
+					${STRIPTOOL} ${ROMFSDIR}${dst}/$t 2>/dev/null
+					${STRIPTOOL} -R .comment -R .note ${ROMFSDIR}${dst}/$t 2>/dev/null
+				fi
+			done
+		)
+	else
+		if [ -d ${ROMFSDIR}${dst} ]; then
+			dstfile=${ROMFSDIR}${dst}/`basename ${src}`
+		else
+			dstfile=${ROMFSDIR}${dst}
+		fi
+		rm -f ${dstfile}
+		[ "$v" ] && echo "cp ${src} ${dstfile}"
+		cp ${src} ${dstfile} && setperm ${dstfile}
+		rc=$?
+		if [ $rc -eq 0 -a -n "$strip" ]; then
+			${STRIPTOOL} ${dstfile} 2>/dev/null
+			${STRIPTOOL} -R .comment -R .note ${dstfile} 2>/dev/null
+		fi
+	fi
+	return $rc
+}
+
+#############################################################################
+
+sym_link()
+{
+	rm -f ${ROMFSDIR}${dst}
+	[ "$v" ] && echo "ln -s ${src} ${ROMFSDIR}${dst}"
+	ln -sf ${src} ${ROMFSDIR}${dst}
+	return $?
+}
+
+#############################################################################
+
+hard_link()
+{
+	rm -f ${ROMFSDIR}${dst}
+	[ "$v" ] && echo "ln ${src} ${ROMFSDIR}${dst}"
+	ln ${ROMFSDIR}${src} ${ROMFSDIR}${dst}
+	return $?
+}
+
+#############################################################################
+
+cpp_file()
+{
+	set -x
+	if [ -d ${ROMFSDIR}${dst} ]; then
+		dstfile=${ROMFSDIR}${dst}/`basename ${src}`
+	else
+		dstfile=${ROMFSDIR}${dst}
+	fi
+	rm -f ${dstfile}
+	[ "$v" ] && echo "${CROSS_COMPILE}cpp ${CFLAGS} -P < ${src} > ${dstfile}"
+	${CROSS_COMPILE}cpp ${CFLAGS} -P < ${src} > ${dstfile}
+	return $?
+}
+
+#############################################################################
+#
+# main program entry point
+#
+
+v=
+option=y
+noption=
+pattern=
+perm=
+func=file_copy
+mdir=
+src=
+dst=
+strip=1
+kernmod=
+r=
+follow=L
+
+while getopts 'dfSMvce:E:o:O:A:p:a:l:s:r:' opt "$@"
+do
+	case "$opt" in
+	v) v="1";                           ;;
+	d) mdir="1";                        ;;
+	f) follow=;                         ;;
+	S) strip=;							;;
+	M) kernmod="1";                     ;;
+	o) option="$OPTARG";                ;;
+	O) noption="$OPTARG";               ;;
+	e) eval option=\"\$$OPTARG\";       ;;
+	E) eval noption=\"\$$OPTARG\";      ;;
+	p) perm="$OPTARG";                  ;;
+	a) src="$OPTARG"; func=file_append; ;;
+	A) pattern="$OPTARG";               ;;
+	l) src="$OPTARG"; func=hard_link;   ;;
+	s) src="$OPTARG"; func=sym_link;    ;;
+	r) ROMFSDIR="$OPTARG"; r=1;         ;;
+	c) func=cpp_file;                   ;;
+
+	*)  break ;;
+	esac
+#
+#	process option here to get an ANDing effect
+#
+	case "$option" in
+	*[mMyY]*) # this gives OR effect, ie., nYn
+		;;
+	*)
+		[ "$v" ] && echo "Condition not satisfied."
+		exit 0
+		;;
+	esac
+
+#
+#	process negative options here to get an ANDing effect
+#
+	case "${noption:-n}" in
+	*[nN]*) # this gives OR effect, ie., yNy
+		;;
+	*)
+		[ "$v" ] && echo "Condition not satisfied."
+		exit 0
+		;;
+	esac
+done
+
+if [ -z "$ROMFSDIR" -a -z "$r" ]
+then
+	echo "ROMFSDIR is not set" >&2
+	usage
+	exit 1
+fi
+
+if [ -z "$STRIPTOOL" ]
+then
+	STRIPTOOL=strip
+fi	
+
+shift `expr $OPTIND - 1`
+
+case $# in
+1)
+	dst="$1"
+	if [ -z "$src" ]
+	then
+		src="`basename $dst`"
+	fi
+	;;
+2)
+	if [ ! -z "$src" ]
+	then
+		echo "Source file already provided" >&2
+		exit 1
+	fi
+	src="$1"
+	dst="$2"
+	;;
+*)
+	usage
+	;;
+esac
+
+if [ -n "$kernmod" ]; then
+	strip=
+	kerndir=${ROOTDIR}/${LINUXDIR}
+	# could prob take from UTS headers as well ...
+	kernver=$(cat ${kerndir}/include/config/kernel.release)
+	dst="/lib/modules/${kernver}/${dst}"
+fi
+
+if [ "$mdir" -a ! -d "`dirname ${ROMFSDIR}${dst}`/." ]
+then
+	mkdir -p "`dirname ${ROMFSDIR}${dst}`/." || exit 1
+fi
+
+$func || exit 1
+
+exit 0
+
+#############################################################################