[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/sys_auto_gen.pl b/mcu/tools/sys_auto_gen.pl
new file mode 100644
index 0000000..d661158
--- /dev/null
+++ b/mcu/tools/sys_auto_gen.pl
@@ -0,0 +1,184 @@
+#!/usr/bin/perl
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2006
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+#*****************************************************************************
+#*
+#* Filename:
+#* ---------
+#*   sys_auto_gen.pl
+#*
+#* Project:
+#* --------
+#*
+#*
+#* Description:
+#* ------------
+#*   This script is used to generate image layout
+#*
+#* Author:
+#* -------
+#*   Qmei Yang (mtk03726)
+#*
+#****************************************************************************/
+use strict;
+#****************************************************************************
+# Included Modules
+#****************************************************************************
+BEGIN { push @INC , './tools/' }  # add additional library path
+use sysGenUtility;                 #pm file name without case sensitivity
+use FileInfoParser;
+use File::Copy;
+use tools::pack_dep_gen;
+PrintDependModule();
+
+#****************************************************************************
+# Constants
+#****************************************************************************
+my $SYSAUTOGEN_VERNO = " m0.08";
+                       # m0.08 , 20130625 by mei, Add copro_info.log input
+                       # m0.07 , 20130528 by mei, Replace factory rom with infomake.log
+                       # m0.06 , 20121019 by mei, Remove FOTA input
+                       # m0.05 , 20120807 by mei, Move sysgen2 to scatGen.pl
+                       # m0.04 , 20120712 by mei, Not to precompile linker script due to changing lib name
+                       # m0.03 , 20120702 by mei, Support EWS
+                       # m0.02 , 20120614 by mei, Support input with ()'s problem for linux
+                       # m0.01 , 20120528 by mei, Support path and filename case sensitive on Linux
+                       # m0.03 , 20120507 by mei, Remove precompile BL and ext_BL
+                       # v0.02 , 20120614 by mei, Fix if system call fails, it'll return errro code:256
+                       #                       and make build flow will pass if without shifting.
+                       # v0.01 by mei, initial version
+
+#****************************************************************************
+# Global Variables
+#****************************************************************************
+my $g_exit = 0;
+my %g_MAKEFILE_OPTIONS;
+my $g_strCOMPILER;
+
+#****************************************************************************
+# Input Parameters
+#****************************************************************************
+my $IMAGELAYOUT           = $ARGV[0];
+my $BL_IMAGELAYOUT        = $ARGV[1];
+my $themf                 = $ARGV[2];
+my $BB_PATH               = $ARGV[3];
+my $NEED_BUILD_BOOTLOADER = $ARGV[4];
+my $DUMMY_IMAGELAYOUT_ALLOW   = $ARGV[5];  # INSIDE_MTK (need to check dummy_scatter_enable)
+my $DUMMY_IMAGELAYOUT_FORCE   = $ARGV[6];  # DUMMY_LIS (from gendummylis)
+my $INFOMAKELOG               = $ARGV[7];
+my $COPRO_INFO_FILE           = $ARGV[8];
+my $LIB_PATH                  = $ARGV[9];
+my $CC_CMD                    = $ARGV[10];
+my $EXT_BL_IMAGELAYOUT = $BL_IMAGELAYOUT;
+$EXT_BL_IMAGELAYOUT =~ s/\.txt/_ext\.txt/;
+
+print "NEED BL=$NEED_BUILD_BOOTLOADER\n";
+
+#****************************************************************************
+# 1 >>> Run Process
+#****************************************************************************
+if(1!=&FileInfo::Parse_MAKEFILE($themf, \%g_MAKEFILE_OPTIONS))
+{
+   &sysUtil::sysgen_die("Parse MakeFile failed");
+}
+$g_strCOMPILER = &FileInfo::GetCompiler();
+
+#****************************************************************************
+# 2 >>> Run Process
+#****************************************************************************
+$g_exit = &RunProcess("perl tools/sysGen1.pl $BB_PATH", 0);
+$g_exit = &RunProcess("perl tools/scatGen.pl $ARGV[0] $ARGV[1] \"$ARGV[2]\" $ARGV[3] $ARGV[4] $ARGV[5] $ARGV[6] $ARGV[7] $ARGV[8] $ARGV[10]", $g_exit);
+
+#****************************************************************************
+# 0 >>> exit - no error: 0, error code: > 0
+#****************************************************************************
+exit $g_exit>>8;
+
+#****************************************************************************
+# subroutines
+#****************************************************************************
+sub RunProcess
+{#exit - no error: 0, error code: > 0
+    my ($CMD, $n_exit) = @_;
+    if($n_exit == 0)
+    {
+        print "========COMMAND==========\n$CMD\n==\n";
+        $n_exit = system($CMD);
+        print "===========$n_exit=============\n"
+    }
+    return $n_exit;
+}
+
+sub RunPreprocess
+{
+    my ($SrcPath, $nExit) = @_;
+    my ($DestPath, $bBackup) = &BackupFile($SrcPath, "txt", "h");
+    if($bBackup && $CC_CMD ne "")
+    {
+        $nExit = &RunProcess("$CC_CMD -C -E -P -D  LIB_PATH=$LIB_PATH $DestPath > $SrcPath", $nExit);        
+        &ChompEmptyLine($SrcPath) if($nExit == 0);
+    }
+    my $pch = $DestPath;
+    $pch =~ s/\.h/\.pch/;
+    move($DestPath, $pch);
+    return $nExit;
+}
+
+sub BackupFile
+{
+    my ($SrcPath, $strNameToBeReplaced, $strNameToReplace)=@_;
+    my $nRes = undef;
+    my $DestPath = $SrcPath;
+    $DestPath =~ s/$strNameToBeReplaced/$strNameToReplace/;
+    print "[BackupFile] $SrcPath => $DestPath\n";
+    copy($SrcPath, $DestPath);    
+    $nRes = 1 if(-e $DestPath);
+    return ($DestPath, $nRes);
+}
+
+sub ChompEmptyLine
+{
+    my ($strFilePath) = @_;
+    my $content;
+    open FILE, "<$strFilePath" or &sysUtil::sysgen_die("$strFilePath: open file error!", __FILE__, __LINE__);
+    while(<FILE>)
+    {
+        chomp;
+        $content .= $_. "\n" if ($_ ne "");
+    }
+    close FILE;
+    open FILE, ">$strFilePath" or &sysUtil::sysgen_die("$strFilePath: open file error!", __FILE__, __LINE__);
+    print FILE $content;
+    close FILE;
+}