# | |
# 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; | |
} |