[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