author | marvin shi <marvin.shi@nokia.com> |
Fri, 19 Nov 2010 13:37:08 +0800 | |
changeset 698 | e3ee96a3961c |
parent 596 | 9f25be3da657 |
permissions | -rw-r--r-- |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
1 |
# |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
2 |
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
3 |
# All rights reserved. |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
4 |
# This component and the accompanying materials are made available |
584 | 5 |
# under the terms of the License "Eclipse Public License v1.0" |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
6 |
# which accompanies this distribution, and is available |
584 | 7 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html". |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
8 |
# |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
9 |
# Initial Contributors: |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
10 |
# Nokia Corporation - initial contribution. |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
11 |
# |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
12 |
# Contributors: |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
13 |
# |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
14 |
# Description: |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
15 |
# Split core image components to ROM/ROFS1. |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
16 |
# Make UREL <-> UDEB conversions. |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
17 |
# |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
18 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
19 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
20 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
21 |
package obyparse; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
22 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
23 |
use strict; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
24 |
use warnings; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
25 |
use plugincommon; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
26 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
27 |
BEGIN |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
28 |
{ |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
29 |
use Exporter(); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
30 |
our($VERSION, @ISA, @EXPORT); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
31 |
$VERSION = 1.00; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
32 |
@ISA = qw(Exporter); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
33 |
@EXPORT = qw(&obyparse_info &obyparse_init &obyparse_process); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
34 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
35 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
36 |
my $conf; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
37 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
38 |
sub obyparse_info() |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
39 |
{ |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
40 |
return({ |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
41 |
name => "obyparse", |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
42 |
invocation => "InvocationPoint2", # tmp6.oby |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
43 |
initialize => "obyparse::obyparse_init", |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
44 |
single => "obyparse::obyparse_process"}); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
45 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
46 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
47 |
sub obyparse_init($) |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
48 |
{ |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
49 |
plugin_init(&obyparse_info, $conf = shift(), 0); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
50 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
51 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
52 |
sub obyparse_readconffile($$$$$); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
53 |
sub obyparse_findincfiles(); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
54 |
sub obyparse_findspifiles(); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
55 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
56 |
sub obyparse_process($) |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
57 |
{ |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
58 |
plugin_start(&obyparse_info, $conf); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
59 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
60 |
my ($obydata, $romfiles, $rofs1files, $udebfiles, $urelfiles, $fname) = (shift(), undef, undef, "", "", ""); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
61 |
my %targets = my %patchdata = (); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
62 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
63 |
obyparse_findincfiles(); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
64 |
obyparse_findspifiles(); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
65 |
plugin_reset(); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
66 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
67 |
foreach (@$obydata) |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
68 |
{ |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
69 |
next if !(my $parse = parse_obyline($_)); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
70 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
71 |
if (($parse == 2) && ($gKeyword =~ FILEBITMAPSPECKEYWORD)) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
72 |
$targets{$gTgtCmp} = $targets{File::Basename::basename($gTgtCmp)} = [$gLnum - 1, |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
73 |
!$gRomid && ($gKeyword =~ ROFSBITMAPFILESPECKEYWORD) && ($gAttrib !~ /paging_unmovable/i)] |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
74 |
if ($gImgid == $gRomidCmp); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
75 |
dprint(2, "Removed attribute paging_unmovable: `$_'") |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
76 |
if ($gAttrib =~ /paging_unmovable/i) && (s/\s+paging_unmovable\s*(?=\s|^)//i); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
77 |
next; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
78 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
79 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
80 |
next if !/^\s*OBYPARSE_(ROM|ROFS1|UDEB|UREL)\s+(.+?)\s*$/i; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
81 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
82 |
(my $rule, $fname) = (uc($1), $2); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
83 |
$_ = "$gHandlestr $_"; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
84 |
next if $gRomid && ($gImgid != $gRomidCmp); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
85 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
86 |
dprint(2, "#$gLnum: `$gLine'"); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
87 |
my $files = ($rule eq "ROM" ? \$romfiles : ($rule eq "ROFS1" ? \$rofs1files : |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
88 |
($rule eq "UDEB" ? \$udebfiles : \$urelfiles))); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
89 |
$$files = "" if !defined($$files); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
90 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
91 |
if ($fname ne "*") { |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
92 |
my $basedir = ""; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
93 |
($basedir, $fname) = ($1, $2) if $fname =~ /^(.*[\/\\])(.+?)$/; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
94 |
dprint(3, "Found " . obyparse_readconffile($basedir, $fname, $rule, $files, 0) . " entries"); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
95 |
} else { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
96 |
dprint(3, "Move/change all possible components to $rule"); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
97 |
$$files = ".*"; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
98 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
99 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
100 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
101 |
$romfiles = qr/^($romfiles)$/i if defined($romfiles); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
102 |
$rofs1files = qr/^($rofs1files)$/i if defined($rofs1files); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
103 |
($udebfiles, $urelfiles) = (qr/^($udebfiles)$/i, qr/^($urelfiles)$/i); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
104 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
105 |
my ($rofs1ofs, $udebcnt, $urelcnt, @torofs1) = (0, 0, 0, ()); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
106 |
plugin_reset(); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
107 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
108 |
foreach (@$obydata) |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
109 |
{ |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
110 |
my $parse = parse_obyline($_); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
111 |
$rofs1ofs++ if ($gRomid < 2); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
112 |
next if ($parse != 2) || ($gImgid != $gRomidCmp); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
113 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
114 |
if ($gKeyword =~ /^patchdata$/i) { |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
115 |
$gSrcCmp =~ /^(.+?)(?:@.+)?$/; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
116 |
next if !exists($targets{$fname = $1}); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
117 |
$patchdata{$fname} = $targets{$fname}[0] if !exists($patchdata{$fname}); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
118 |
next if !$targets{$fname}[1]; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
119 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
120 |
elsif ($gKeyword =~ FILEBITMAPSPECKEYWORD) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
121 |
$fname = File::Basename::basename($gTgtCmp); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
122 |
if ($fname =~ $urelfiles && s/(?<=[\/\\])udeb(?=[\/\\])/urel/i) { |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
123 |
$urelcnt++; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
124 |
dprint(2, "Changed to UREL: `$_'"); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
125 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
126 |
elsif ($fname =~ $udebfiles && s/(?<=[\/\\])urel(?=[\/\\])/udeb/i) { |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
127 |
$udebcnt++; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
128 |
dprint(2, "Changed to UDEB: `$_'"); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
129 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
130 |
next if !$targets{$gTgtCmp}[1]; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
131 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
132 |
elsif ($gKeyword =~ DIRECTORYKEYWORD) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
133 |
$fname = File::Basename::basename($gTgtCmp); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
134 |
next if !(exists($targets{$gTgtCmp}) && $targets{$gTgtCmp}[1]) && |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
135 |
!(exists($targets{$fname}) && $targets{$fname}[1]); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
136 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
137 |
else { next } |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
138 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
139 |
if (!$gRomid && (defined($rofs1files) && ($fname =~ $rofs1files) || defined($romfiles) && ($fname !~ $romfiles))) { |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
140 |
push(@torofs1, $_); |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
141 |
$_ = "$gHandlestr $_"; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
142 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
143 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
144 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
145 |
dprint(3, "Moved " . scalar(@torofs1) . " entries to ROFS1") if @torofs1; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
146 |
dprint(3, "Changed $udebcnt components to UDEB") if $udebcnt; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
147 |
dprint(3, "Changed $urelcnt components to UREL") if $urelcnt; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
148 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
149 |
dprint(3, "Finding ROM-patched components"); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
150 |
foreach (sort({$a <=> $b} values(%patchdata))) { |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
151 |
${$obydata}[$_] =~ /^(?:$gHandlestr )?(.+)$/; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
152 |
parse_keyline($1); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
153 |
dprint(2, "`$gSource'"); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
154 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
155 |
dprint(3, "Found " . keys(%patchdata) . " ROM-patched components"); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
156 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
157 |
splice(@$obydata, $rofs1ofs, 0, @torofs1) if @torofs1; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
158 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
159 |
plugin_end(); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
160 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
161 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
162 |
sub obyparse_findincfiles() |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
163 |
{ |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
164 |
my ($drive, $indent, $prev, $tmpoby, %files) = |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
165 |
(Cwd::cwd() =~ /^([a-z]:)/i ? $1 : "", -2, "", "$gWorkdir/tmp1.oby", ()); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
166 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
167 |
dprint(3, "Finding include hierarchy from `$tmpoby'"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
168 |
open(FILE, $tmpoby) or dprint(-3, "$gPluginname can't open `$tmpoby'"), return; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
169 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
170 |
while (my $line = <FILE>) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
171 |
next if ($line !~ /^#\s+\d+\s+"(.+?)"(?:\s+(\d))?$/); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
172 |
my ($file, $flag) = ($1, defined($2) ? $2 : 0); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
173 |
next if ($file =~ /^<.*>$/); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
174 |
$indent -= 2, $prev = $file, next if ($flag == 2); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
175 |
next if (!$flag && $file eq $prev || $flag > 1); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
176 |
$indent += 2 if $flag; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
177 |
($prev = $file) =~ /^(.*[\/\\])?(.+?)$/; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
178 |
(my $dir, $file) = ("", $2); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
179 |
$dir = abspath(defined($1) ? $1 : "."); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
180 |
dprint(2, ("." x $indent) . "`$prev' !!!"), next if ($dir eq ""); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
181 |
$dir =~ s/^$drive|\/$//gi; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
182 |
$files{lc($file = "$dir/$file")} = 1; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
183 |
dprint(2, ("." x $indent) . "`$file'"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
184 |
} |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
185 |
close(FILE); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
186 |
dprint(3, "Found " . keys(%files) . " different include files"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
187 |
} |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
188 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
189 |
sub obyparse_findspifiles() |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
190 |
{ |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
191 |
my ($spicnt, $tmpoby) = (0, "$gWorkdir/tmp5.oby"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
192 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
193 |
dprint(3, "Finding SPI input files from `$tmpoby'"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
194 |
open(FILE, $tmpoby) or dprint(-3, "$gPluginname can't open `$tmpoby'"), return; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
195 |
|
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
196 |
while (my $line = <FILE>) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
197 |
next if (parse_obyline($line) != 2) || ($gKeyword !~ /^spidata/i); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
198 |
$spicnt++; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
199 |
dprint(2, "`$gSource'" . ($gKeyword =~ /^spidata$/i ? "" : " ($gKeyword)")); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
200 |
} |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
201 |
close(FILE); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
202 |
dprint(3, "Found $spicnt SPI input files"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
203 |
} |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
204 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
205 |
sub obyparse_readconffile($$$$$) |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
206 |
{ |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
207 |
my ($basedir, $file, $type, $files, $indent) = @_; |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
208 |
$file = "$basedir$file"; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
209 |
my $filecnt = 0; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
210 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
211 |
dprint(3, "Reading $type files from $file") if $type; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
212 |
dprint(2, ("." x $indent) . "`$file'"); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
213 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
214 |
open(FILE, $file) or dprint(3, "Error: $gPluginname can't open $file", 1), die("\n"); |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
215 |
my @files = <FILE>; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
216 |
close(FILE); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
217 |
|
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
218 |
foreach (@files) { |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
219 |
if (/^\s*#include\s+(.+?)\s*$/i) { |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
220 |
$filecnt += obyparse_readconffile($basedir, $1, "", $files, $indent + 2); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
221 |
next; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
222 |
} |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
223 |
next if (/^\s*$/) || (/^\s*(?:#|\/\/|REM\s)/i); |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
224 |
$filecnt++; |
596
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
225 |
(my $fname = $_) =~ s/^\s+|\s+$//g; |
9f25be3da657
Updated to iMaker version 10.24.01, 14-Jun-2010.
m2lahtel <>
parents:
584
diff
changeset
|
226 |
$fname =~ s/(.)/{"*" => ".*", "?" => "."}->{$1} || "\Q$1\E"/eg; |
1
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
227 |
$$files .= ($$files eq "" ? "" : "|") . $fname; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
228 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
229 |
return($filecnt); |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
230 |
} |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
231 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
232 |
1; |
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
233 |
|
be27ed110b50
Bringing in Helium, imaker and cmaker
Alex Gilkes <alex.gilkes@nokia.com>
parents:
diff
changeset
|
234 |
__END__ # OF OBYPARSE.PM |