blob: 2e14b904e2877f91f9a12b978051594734d07b7b [file] [log] [blame]
#!/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) 2007
#
# 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:
# ---------
# sortLib.pl
#
# Description:
# ------------
# To sort libraries in ~libs.tmp file before linking(armlink.exe).
#
# Auther:
# -------
# Frank Wu
#
# Note:
# -----
# none.
#
# Log:
# -----
# 2007/04/25 Create.
#
# Usage:
# -----
# sortib.pl make\~libs.tmp $(strip $(COMPOBJS))
open(lib,"$ARGV[0]") || die "Cannot open $ARGV[0]: $!";
open(sortlib,">$ARGV[1]/~sortedLibs.tmp") || die "Cannot open $ARGV[1]/~sortedLibs.tmp: $!";
my $i = 0;
my $j = 0;
my %path = "";
my @file = "";
my @specialFile = "";
while(<lib>){
if($i > 0){
if($_ =~ /(.+)\/(.+lib)[\s]/){
if(index($_, $ARGV[2]) >= 0){
$specialFile[$i] = $_;
} else {
$path{$2} = $1;
$file[$i] = $2;
}
} else {
$specialFile[$i] = $_;
}
} else {
print sortlib $_;
}
$i++;
}
close(lib);
my @sortedLibs = sort @file;
foreach $item(@sortedLibs){
if(length($specialFile[$j]) > 0){
chomp($specialFile[$j]);
print sortlib "$specialFile[$j]\n";
}
if(length($item) > 0){
print sortlib "$path{$item}/$item\n";
}
$j++;
}
while($j <= $#specialFile){
if(length($specialFile[$j]) > 0){
chomp($specialFile[$j]);
print sortlib "$specialFile[$j]\n";
}
$j++;
}
close(sortlib);
#To confirm ~libs.tmp and ~sortedLibs.tmp have the same line numbers.
open(lib,"$ARGV[0]") || die "Cannot open $ARGV[0]: $!";
my $originalLine = 0;
while(<lib>){
$originalLine++;
}
close(lib);
open(sortlib,"$ARGV[1]/~sortedLibs.tmp") || die "Cannot open $ARGV[1]/~sortedLibs.tmp: $!";
my $sortedLine = 0;
while(<sortlib>){
$sortedLine++;
}
close(sortlib);
if($originalLine!=$sortedLine){
print "The library may be lost after sorting libraries. Please compare $ARGV[0] and make/pcore/~sortedLibs.tmp.";
exit(1);
}