[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/tools/extract_obj_from_lib.pl b/mcu/tools/extract_obj_from_lib.pl
new file mode 100644
index 0000000..1a0e7fc
--- /dev/null
+++ b/mcu/tools/extract_obj_from_lib.pl
@@ -0,0 +1,231 @@
+#!/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) 2005

+#

+#  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).

+#

+#

+############################################################

+

+use File::stat;

+use Cwd;

+

+my $lib_file = "init.lib";

+my $short_lib_file = "init.lib";

+my $obj_path = "init";

+my $ar_file = "c:\progra~1\arm\adsv1_2\bin\armar.exe";

+my $lis_file = ".\make\init\init.lis";

+my $current_lib = "";

+my $lis_path = ""; 

+my $flag_modis = "";

+my $flag_print = 1;

+

+

+while ($#ARGV != -1) {

+  if ($ARGV[0] =~ /-h/) {

+    Usage();

+  } elsif ($#ARGV > 2) {

+    $lib_file = shift(@ARGV);

+    $obj_path = shift(@ARGV);

+    $ar_file = shift(@ARGV);

+    $lis_file = shift(@ARGV);

+    last;

+

+  } else {

+    Usage();

+  }

+  #shift(@ARGV);

+}

+

+

+$short_lib_file   =   $lib_file . "_bak";

+if ($lib_file =~ /[\\\/](MoDIS|UESim)[\\\/](\w+)[\\\/](Debug|Release)[\\\/](\w+\.lib)\s*$/i)

+{

+	$current_lib = lc($2);

+	$flag_modis = $3;

+	$short_lib_file = $4;

+}

+elsif ($lib_file =~ /\w+[\\|\/]{1}(\w+)(\.lib)\s*/)

+{

+	$short_lib_file   = "$1$2"."_bak";

+	$current_lib = lc($1);

+}

+

+  if ( ! -e  $lib_file )

+  {

+    print " no $lib_file file \n";

+    exit 0;

+  }

+

+  if ( ! ( -e $lis_file))

+  {

+    if($lis_file =~ /(.+module)/i)

+    {

+      $lis_path = $1;

+    }

+    if(defined $current_lib)

+    {

+      if($$current_lib =~ /PLUTOMMI/i )

+      {

+        $lis_file = $lis_path."/PLUTOMMI/$current_lib/$current_lib.lis";

+      }

+      elsif($$current_lib =~ /VENUS/i )

+      {

+        $lis_file = $lis_path."/VENUS/$current_lib/$current_lib.lis";

+      }

+    }

+  }

+

+  if ( ! ( -e $lis_file))

+  {

+    print " $lis_file not exist ! \n";

+    exit 0;

+  } else

+  {

+    print " lis_file = $lis_file \n";

+  }

+

+

+my $inode = stat($lib_file);

+my $mtime = $inode->mtime;

+my $ctime = $inode->ctime;

+my $atime = $inode->atime;

+

+if ($flag_print)

+{

+print " mtime = $mtime \n";

+print " ctime = $ctime \n";

+print " atime = $atime \n";

+

+#system "pause";

+

+

+print "====================================\n";

+print " lib_file = $lib_file \n";

+print " obj_path = $obj_path \n";

+print " ar_file  = $ar_file \n";

+print " lis_file = $lis_file  \n";

+print " short_lib_file = $short_lib_file \n";

+print "====================================\n";

+}

+

+#system "pause";

+

+#@a=<$obj_path\\*.obj>;

+# foreach $xx (@a) 

+#{

+#	print " find obj, exit 0 \n";

+#   exit 0;	

+#}

+

+  

+  

+  open(F, "<$lis_file");

+  my @objs=();

+

+  while (<F>)

+  {

+     if (/\w+[\\|\/]{1}(\w+\.)(c|cpp|s|arm)\s*$/)

+     {

+       chomp;

+       next if (($flag_modis ne "") && (! -e $_));

+       my $obj = $1 . "obj";

+       push(@objs, $obj); 

+     }

+  }

+  close F;

+

+  print " ====================== \n";

+  

+  print " objs  = @objs  \n";

+

+  my @real_objs = ();

+

+      foreach my $obj (@objs) {

+        if (! (-e "$obj_path/$obj" ))

+        {

+          print " not exist $obj_path\\$obj  \n";

+          push(@real_objs, $obj);

+        }

+        else

+        {

+           print " exist $obj_path\\$obj  \n";

+        }

+      } # foreach

+

+

+      my $cwd = getcwd();

+      chdir($obj_path);

+

+

+     if ( ! @real_objs == ())

+     {

+       if ($flag_modis eq "")

+       {

+          print " $ar_file -x $short_lib_file @real_objs \n";

+          system " $ar_file -x $short_lib_file @real_objs ";

+        }

+        else

+        {

+          foreach my $obj (@real_objs)

+          {

+            #lib /nologo /extract:.\debug\verno.obj verno.lib

+            system "$ar_file /nologo /extract:.\\$flag_modis\\$obj $short_lib_file";

+          }

+        }

+     }

+

+

+     foreach my $obj (@real_objs)

+     {

+          if ( -e $obj )

+          {

+            utime( $atime, $mtime, $obj);

+          }

+          else

+          {

+            print " no file $obj error ! \n";  

+            exit 1;

+          }

+     }

+

+      chdir($cwd);

+

+

+exit 0;

+

+sub Usage {

+  print <<"__EOFUSAGE";

+Usage: $0 [-h | lib_file obj_path obj_name ]

+        -h       Help.

+__EOFUSAGE

+  exit 0;

+}