blob: 2e14b904e2877f91f9a12b978051594734d07b7b [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#!/usr/bin/perl
2#
3# Copyright Statement:
4# --------------------
5# This software is protected by Copyright and the information contained
6# herein is confidential. The software may not be copied and the information
7# contained herein may not be used or disclosed except with the written
8# permission of MediaTek Inc. (C) 2007
9#
10# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
11# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
12# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
13# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
14# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
15# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
16# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
17# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
18# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
19# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
20# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
21# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
22#
23# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
24# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
25# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
26# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
27# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
28#
29# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
30# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
31# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
32# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
33# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
34#
35#*****************************************************************************
36#
37# Filename:
38# ---------
39# sortLib.pl
40#
41# Description:
42# ------------
43# To sort libraries in ~libs.tmp file before linking(armlink.exe).
44#
45# Auther:
46# -------
47# Frank Wu
48#
49# Note:
50# -----
51# none.
52#
53# Log:
54# -----
55# 2007/04/25 Create.
56#
57# Usage:
58# -----
59# sortib.pl make\~libs.tmp $(strip $(COMPOBJS))
60open(lib,"$ARGV[0]") || die "Cannot open $ARGV[0]: $!";
61open(sortlib,">$ARGV[1]/~sortedLibs.tmp") || die "Cannot open $ARGV[1]/~sortedLibs.tmp: $!";
62my $i = 0;
63my $j = 0;
64my %path = "";
65my @file = "";
66my @specialFile = "";
67while(<lib>){
68 if($i > 0){
69 if($_ =~ /(.+)\/(.+lib)[\s]/){
70 if(index($_, $ARGV[2]) >= 0){
71 $specialFile[$i] = $_;
72 } else {
73 $path{$2} = $1;
74 $file[$i] = $2;
75 }
76 } else {
77 $specialFile[$i] = $_;
78 }
79 } else {
80 print sortlib $_;
81 }
82 $i++;
83}
84close(lib);
85
86my @sortedLibs = sort @file;
87foreach $item(@sortedLibs){
88 if(length($specialFile[$j]) > 0){
89 chomp($specialFile[$j]);
90 print sortlib "$specialFile[$j]\n";
91 }
92 if(length($item) > 0){
93 print sortlib "$path{$item}/$item\n";
94 }
95 $j++;
96}
97while($j <= $#specialFile){
98 if(length($specialFile[$j]) > 0){
99 chomp($specialFile[$j]);
100 print sortlib "$specialFile[$j]\n";
101 }
102 $j++;
103}
104close(sortlib);
105
106#To confirm ~libs.tmp and ~sortedLibs.tmp have the same line numbers.
107open(lib,"$ARGV[0]") || die "Cannot open $ARGV[0]: $!";
108my $originalLine = 0;
109while(<lib>){
110 $originalLine++;
111}
112close(lib);
113
114open(sortlib,"$ARGV[1]/~sortedLibs.tmp") || die "Cannot open $ARGV[1]/~sortedLibs.tmp: $!";
115my $sortedLine = 0;
116while(<sortlib>){
117 $sortedLine++;
118}
119close(sortlib);
120
121if($originalLine!=$sortedLine){
122 print "The library may be lost after sorting libraries. Please compare $ARGV[0] and make/pcore/~sortedLibs.tmp.";
123 exit(1);
124}