[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/pack_dep_gen.pm b/mcu/tools/pack_dep_gen.pm
new file mode 100644
index 0000000..cea7109
--- /dev/null
+++ b/mcu/tools/pack_dep_gen.pm
@@ -0,0 +1,131 @@
+# 

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

+# 

+

+package tools::pack_dep_gen;

+use File::Basename;

+use File::Path;

+use strict;

+use Cwd qw(abs_path);

+use Exporter;

+use vars qw(@ISA @EXPORT @EXPORT_OK);

+@ISA = qw(Exporter);

+@EXPORT = qw(PushDependFile PrintDependModule PrintToDep);

+@EXPORT_OK = qw(PushDependFile PrintDependModule PrintToDep);

+

+return 1;

+

+my @collect_file;

+my $target;

+

+#*************************************************************************************************

+# Print source file to dependency file

+#*************************************************************************************************

+sub PrintToDep {

+  $target = shift;

+  my $printTarget = $target;

+  if ($^O eq "linux"){

+  if ($printTarget =~ /^(\.\.\/)*(\S*)/) {

+    $printTarget = $2;

+  } 

+

+  foreach my $value (values %INC) {

+    if ($value =~ /[\/\\]Perl([\/\\].*)?[\/\\]lib[\/\\]/i) {

+      # skip system module

+    }

+    else {

+      push(@collect_file,$value);

+    }

+  }

+  

+  my $file_dir = dirname($target);

+  mkpath($file_dir) or die "[Error:][pack_gen_dep.pm]Can Not create $file_dir! $!" if(!-d "$file_dir");

+  

+  my $current_abs_path = abs_path("./");

+  my $element;

+  my $abs_element;

+  my $mcu_abs_path;

+  my $uni_com_abs_path;

+  open (det_file,">>$target") or &pack_error_handler("cannot open $target!", __FILE__, __LINE__);

+  

+  if ($current_abs_path =~ /mcu(.*)/){

+    $uni_com_abs_path = $current_abs_path;

+    $uni_com_abs_path =~ s/\/mcu(.*)//;

+  } else {

+     print "[Error]: Cannot figure out the current path: $current_abs_path, please CHECK!\n";

+     exit 1;

+  }

+  

+  $mcu_abs_path = "$uni_com_abs_path/mcu";

+  foreach $element (@collect_file){

+    $abs_element = abs_path($element);

+    $abs_element =~ s/$mcu_abs_path\///;

+    $abs_element =~ s/$uni_com_abs_path/../;

+    print det_file "$printTarget: $abs_element\n";

+  }

+  close(det_file);

+  }

+}

+

+#*************************************************************************************************

+# store source file to dependency file

+#*************************************************************************************************

+sub PushDependFile {

+  my $file = shift;

+  

+  if (-e $file) {

+    push(@collect_file,$file);

+  }

+  else {

+    print "[Error]: $file does not exist in codebase, plase help to check!\n";

+    exit 1;

+  }

+}

+

+#*************************************************************************************************

+# Get source file from script

+#*************************************************************************************************

+sub PrintDependModule {

+  my $file = shift;

+  if ($^O eq "linux"){

+  if ($file eq "") {

+    PushDependFile($0);

+  }

+  else {

+    PushDependFile($file);

+  }

+  }

+}

+

+#*************************************************************************************************

+# Error Handling Message

+#*************************************************************************************************

+sub pack_error_handler {

+  my ($error_msg, $pack_file, $line_no) = @_;

+  my $final_error_msg = "Error: $error_msg at $pack_file line $line_no\n";

+  print "\n\n$final_error_msg";

+  die $final_error_msg;

+}
\ No newline at end of file