imgtools/buildrom/tools/cdfparser.pm
author jjkang
Tue, 29 Jun 2010 14:52:54 +0800
changeset 606 30b30f9da0b7
parent 0 044383f39525
permissions -rw-r--r--
Add ..\dev\.. to path
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     1
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     2
# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     3
# All rights reserved.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     4
# This component and the accompanying materials are made available
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     6
# which accompanies this distribution, and is available
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     8
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
     9
# Initial Contributors:
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    10
# Nokia Corporation - initial contribution.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    11
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    12
# Contributors:
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    13
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    14
# Description: 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    15
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    16
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    17
# This package contains routines to read the information from the Component Description Files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    18
package cdfparser;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    19
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    20
# Include Module package to use APIs to parse an XML file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    21
use genericparser;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    22
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    23
require Exporter;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    24
@ISA=qw(Exporter);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    25
@EXPORT=qw(
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    26
	CreateCDFFileBinaryMapFromDir
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    27
	GetBinaries
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    28
	GetCDFFileName
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    29
	LoadCDF
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    30
	GetDynamicDependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    31
	GetBinaryInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    32
	GetIncludedFeatureList
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    33
	GetExcludedFeatureList
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    34
);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    35
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    36
use strict;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    37
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    38
# Map between the CDF File Name and the corresponding list of binaries
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    39
# This is required so that one can fetch the list of binaries for a particular CDF file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    40
my %binaryCDFFileMap=();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    41
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    42
# Include Feature List
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    43
# The list of features to be included for a given binary.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    44
my @includeFeatureList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    45
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    46
# Exclude Feature List
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    47
# The list of features to be excluded for a given binary.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    48
my @excludeFeatureList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    49
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    50
# List that contains the complete information of each binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    51
my %binaryInfo=();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    52
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    53
my $warning_level = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    54
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    55
# Absolute path that contains the CDF Files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    56
my @cdfDirectories;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    57
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    58
# To extract the cdf files from the directory specified as input. The default directory is chosen if no 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    59
# input is specified.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    60
sub CreateCDFFileBinaryMapFromDir
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    61
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    62
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    63
	my @acdfDirList = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    64
	# To store the list of cdf file names specified under the directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    65
	my @cdfFileList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    66
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    67
	if ((scalar @acdfDirList) != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    68
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    69
		foreach my $acdfDir (@acdfDirList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    70
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    71
			opendir DIR, "$acdfDir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    72
			if(not grep /$acdfDir/i, @cdfDirectories)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    73
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    74
				push @cdfDirectories, $acdfDir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    75
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    76
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    77
			push (@cdfFileList, (grep /\.cdf/i, readdir DIR));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    78
			foreach my $filename (@cdfFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    79
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    80
				&CreateCDFFileBinaryMap(lc($filename), $acdfDir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    81
				$binaryCDFFileMap{$filename}{path} = $acdfDir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    82
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    83
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    84
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    85
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    86
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    87
# To create a mapping between the CDF file name and the corresponding list of binaries
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    88
sub CreateCDFFileBinaryMap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    89
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    90
	my ($cdffilename, $aCdfDir) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    91
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    92
	if( defined $binaryCDFFileMap{$cdffilename} )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    93
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    94
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    95
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    96
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    97
	my $path;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    98
	if( defined $aCdfDir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    99
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   100
		$path = "$aCdfDir\/$cdffilename";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   101
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   102
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   103
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   104
		$path = $cdffilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   105
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   106
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   107
	my $rootNode = &genericparser::getRootElement($path);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   108
	$binaryCDFFileMap{$cdffilename}{root} = $rootNode;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   109
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   110
	my @binaryList = &genericparser::getChildElements($rootNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   111
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   112
	my $binaryInfoRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   113
	foreach my $binary (@binaryList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   114
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   115
		my $filename = &genericparser::getAttrValue($binary, "id");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   116
		push @{$binaryCDFFileMap{$cdffilename}{binaries}}, $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   117
# This is required so that one can fetch the CDF file name in which the binary is present
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   118
		$binaryInfoRef = \%{$binaryInfo{$filename}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   119
		$binaryInfoRef->{"filename"} = $cdffilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   120
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   121
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   122
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   123
# To get the complete list of binaries present in a given CDF file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   124
# Input Parameter : CDF filename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   125
# Returns the complete list of binaries
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   126
sub GetBinaries
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   127
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   128
	my $cdffilename = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   129
	if (exists $binaryCDFFileMap{$cdffilename})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   130
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   131
		return @{$binaryCDFFileMap{$cdffilename}{binaries}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   132
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   133
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   134
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   135
		return undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   136
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   137
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   138
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   139
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   140
# To get the name of the CDF file that contains the input binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   141
# Input Parameter : Binary Name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   142
# Returns the CDF file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   143
sub GetCDFFileName
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   144
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   145
	my $aBinary = lc(shift);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   146
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   147
	if (exists $binaryInfo{$aBinary})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   148
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   149
		my $binInfo = \%{$binaryInfo{$aBinary}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   150
		return $binInfo->{filename};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   151
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   152
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   153
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   154
		return undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   155
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   156
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   157
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   158
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   159
#Loads all the specified CDF files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   160
sub LoadCDF
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   161
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   162
	my @cdfFileList = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   163
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   164
	foreach my $afile (@cdfFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   165
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   166
		CreateCDFFileBinaryMap($afile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   167
		my $rootNode = $binaryCDFFileMap{$afile}{root};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   168
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   169
		# Get the total list of files present in the cdf file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   170
		my @binaryList = &genericparser::getChildElements($rootNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   171
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   172
		# Hash Reference to the hash map binaryInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   173
		my $binaryInfoHashRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   174
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   175
		foreach my $binaryNode (@binaryList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   176
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   177
			my $fileId = &genericparser::getAttrValue($binaryNode, "id");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   178
			$binaryInfoHashRef = \%{$binaryInfo{$fileId}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   179
			&setBinaryInfo($binaryInfoHashRef, $binaryNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   180
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   181
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   182
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   183
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   184
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   185
#Sets the information of the CDF file to a hash map
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   186
sub setBinaryInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   187
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   188
	my ($aBinaryInfoRef, $aBinaryNode) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   189
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   190
	# Set the File attributes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   191
	$aBinaryInfoRef->{"id"}		  = &genericparser::getAttrValue($aBinaryNode, "id");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   192
	$aBinaryInfoRef->{"customisable"} = &genericparser::getAttrValue($aBinaryNode, "customisable");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   193
	$aBinaryInfoRef->{"addressable"}  = &genericparser::getAttrValue($aBinaryNode, "addressable");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   194
	$aBinaryInfoRef->{"compress"}	  = &genericparser::getAttrValue($aBinaryNode, "compress");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   195
	$aBinaryInfoRef->{"type"}	  = &genericparser::getAttrValue($aBinaryNode, "type");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   196
  	$aBinaryInfoRef->{"plugin_name"}  = &genericparser::getAttrValue($aBinaryNode, "plugin_name");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   197
  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   198
  	# Check for the plugin, setting the plugin type as ECOM_PLUGIN
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   199
   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   200
  	if (defined $aBinaryInfoRef->{"plugin_name"})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   201
  	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   202
  		$aBinaryInfoRef->{"IsFoundInCDF"} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   203
  		$aBinaryInfoRef->{"source"} = "ABI_DIR\/BUILD_DIR\/$aBinaryInfoRef->{id}";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   204
  		$aBinaryInfoRef->{"plugin_name"} =~ s/$aBinaryInfoRef->{plugin_name}/ECOM/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   205
  	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   206
  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   207
  	else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   208
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   209
		# Get all the nodes of element 'file'
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   210
		my @children = &genericparser::getChildElements($aBinaryNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   211
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   212
		foreach my $childNode (@children)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   213
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   214
			$aBinaryInfoRef->{"IsFoundInCDF"} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   215
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   216
			if (&genericparser::getElementName($childNode) eq "source")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   217
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   218
				$aBinaryInfoRef->{"source"} = &genericparser::getElementValue($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   219
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   220
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   221
			if (&genericparser::getElementName($childNode) eq "destination")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   222
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   223
				$aBinaryInfoRef->{"destination"} = &genericparser::getElementValue($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   224
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   225
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   226
			if (&genericparser::getElementName($childNode) eq "features")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   227
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   228
				# The children nodes will specify the list of features
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   229
				my @aFeatureNodes = &genericparser::getChildElements($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   230
				foreach my $aFeatureChildNode (@aFeatureNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   231
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   232
					# A list of features can be listed out either for supported case or for the prevented case.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   233
					if (&genericparser::getElementName($aFeatureChildNode) eq "supports")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   234
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   235
						my @aSupportedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   236
						foreach my $aSuppChildNode (@aSupportedFeatureNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   237
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   238
							my %feat = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   239
							my $featureName = &genericparser::getAttrValue($aSuppChildNode, "name");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   240
							my $featureUID = &genericparser::getAttrValue($aSuppChildNode, "uid");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   241
							if (defined ($featureName) and ($featureName ne ""))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   242
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   243
								$feat{name} = $featureName ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   244
								$feat{uid} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   245
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   246
							elsif(defined ($featureUID) and ($featureUID ne ""))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   247
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   248
								if(&featureparser::ValidateUIDValue($featureUID))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   249
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   250
									$featureUID = &featureparser::ConvertHexToDecimal($featureUID);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   251
									$feat{uid} = $featureUID;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   252
									$feat{name} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   253
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   254
								else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   255
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   256
									print "The uid value $featureUID specified for the Include feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   257
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   258
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   259
							else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   260
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   261
								print ("Warning: Feature $featureName has both name and Uid mentioned\n") if ($warning_level < 2);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   262
								next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   263
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   264
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   265
							$feat{include} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   266
							push @includeFeatureList, \%feat;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   267
					 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   268
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   269
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   270
					if (&genericparser::getElementName($aFeatureChildNode) eq "prevents")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   271
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   272
						my @aPreventedFeatureNodes = &genericparser::getChildElements($aFeatureChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   273
						foreach my $aPreventedChildNode (@aPreventedFeatureNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   274
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   275
							my %feat = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   276
							my $featureName = &genericparser::getAttrValue($aPreventedChildNode, "name");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   277
							my $featureUID = &genericparser::getAttrValue($aPreventedChildNode, "uid");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   278
							if (defined ($featureName) and ($featureName ne ""))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   279
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   280
								$feat{name} = $featureName ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   281
								$feat{uid} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   282
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   283
							elsif(defined ($featureUID) and ($featureUID ne ""))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   284
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   285
								if(&featureparser::ValidateUIDValue($featureUID))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   286
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   287
									$featureUID = &featureparser::ConvertHexToDecimal($featureUID);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   288
									$feat{uid} = $featureUID;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   289
									$feat{name} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   290
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   291
								else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   292
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   293
									print "The uid value $featureUID specified for the Exclude feature list for the Binary, $aBinaryInfoRef->{id}, is not a valid number\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   294
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   295
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   296
							else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   297
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   298
								print "Warning: Feature $featureName has both name and Uid mentioned\n" if ($warning_level < 2);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   299
								next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   300
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   301
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   302
							$feat{exclude} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   303
							push @excludeFeatureList, \%feat;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   304
					 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   305
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   306
						push @{$aBinaryInfoRef->{"prevents"}}, (&genericparser::getElementValue($aFeatureChildNode));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   307
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   308
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   309
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   310
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   311
			if (&genericparser::getElementName($childNode) eq "dynamicdependencies")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   312
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   313
				# The children nodes will contain the file name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   314
				my @aDynDependNodes = &genericparser::getChildElements($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   315
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   316
				foreach my $aDynDependChildNode (@aDynDependNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   317
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   318
					# There can be a list of binaries for dynamic dependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   319
					if (&genericparser::getElementName($aDynDependChildNode) eq "depend")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   320
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   321
						push @{$aBinaryInfoRef->{"depend"}}, (&genericparser::getElementValue($aDynDependChildNode));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   322
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   323
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   324
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   325
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   326
			if (&genericparser::getElementName($childNode) eq "localisation")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   327
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   328
				# The children nodes will contain the language code
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   329
				my @aLocalisationNodes = &genericparser::getChildElements($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   330
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   331
				foreach my $aLocalisationChildNode (@aLocalisationNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   332
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   333
					# There can be a list of binaries for dynamic dependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   334
					if (&genericparser::getElementName($aLocalisationChildNode) eq "default")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   335
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   336
						$aBinaryInfoRef->{"default"} = &genericparser::getElementValue($aLocalisationChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   337
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   338
					if (&genericparser::getElementName($aLocalisationChildNode) eq "language")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   339
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   340
						push @{$aBinaryInfoRef->{"language"}}, (&genericparser::getElementValue($aLocalisationChildNode));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   341
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   342
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   343
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   344
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   345
			if (&genericparser::getElementName($childNode) eq "options")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   346
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   347
				# The children nodes will contain the option details
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   348
				my @aOptionNodes = &genericparser::getChildElements($childNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   349
				foreach my $aOptionChildNode (@aOptionNodes)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   350
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   351
					if (&genericparser::getElementName($aOptionChildNode) eq "multilinguify")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   352
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   353
						$aBinaryInfoRef->{"multilinguify"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   354
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   355
					if (&genericparser::getElementName($aOptionChildNode) eq "stack")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   356
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   357
						$aBinaryInfoRef->{"stack"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   358
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   359
					if (&genericparser::getElementName($aOptionChildNode) eq "heapmin")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   360
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   361
						$aBinaryInfoRef->{"heapmin"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   362
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   363
					if (&genericparser::getElementName($aOptionChildNode) eq "heapmax")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   364
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   365
						$aBinaryInfoRef->{"heapmax"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   366
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   367
					if (&genericparser::getElementName($aOptionChildNode) eq "fixed")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   368
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   369
						$aBinaryInfoRef->{"fixed"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   370
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   371
					if (&genericparser::getElementName($aOptionChildNode) eq "priority")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   372
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   373
						$aBinaryInfoRef->{"priority"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   374
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   375
					if (&genericparser::getElementName($aOptionChildNode) eq "uid1")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   376
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   377
						$aBinaryInfoRef->{"uid1"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   378
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   379
					if (&genericparser::getElementName($aOptionChildNode) eq "uid2")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   380
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   381
						$aBinaryInfoRef->{"uid2"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   382
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   383
					if (&genericparser::getElementName($aOptionChildNode) eq "uid3")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   384
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   385
						$aBinaryInfoRef->{"uid3"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   386
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   387
					if (&genericparser::getElementName($aOptionChildNode) eq "dll")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   388
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   389
						$aBinaryInfoRef->{"dll"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   390
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   391
					if (&genericparser::getElementName($aOptionChildNode) eq "dlldatatop")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   392
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   393
						$aBinaryInfoRef->{"dlldatatop"} = &genericparser::getElementValue($aOptionChildNode);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   394
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   395
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   396
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   397
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   398
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   399
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   400
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   401
# To get the complete list of information for a given binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   402
# Input Parameter : Binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   403
# Returns the detailed information for each binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   404
sub GetBinaryInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   405
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   406
	my $aBinary = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   407
	my $aBinaryInfoHash = \%{$binaryInfo{$aBinary}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   408
	if ($aBinaryInfoHash->{IsFoundInCDF})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   409
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   410
		return $aBinaryInfoHash;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   411
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   412
	return undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   413
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   414
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   415
# To get the complete list of dynamic dependencies for a given binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   416
# Input Parameter : Binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   417
# Returns the complete list of dynamic dependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   418
sub GetDynamicDependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   419
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   420
	my $aBinary = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   421
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   422
	my $bin = \%{$binaryInfo{$aBinary}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   423
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   424
	return \@{$bin->{"depend"}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   425
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   426
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   427
#Returns the included feature list
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   428
sub GetIncludedFeatureList
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   429
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   430
	return \@includeFeatureList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   431
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   432
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   433
#Returns the excluded feature list
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   434
sub GetExcludedFeatureList
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   435
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   436
	return \@excludeFeatureList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   437
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   438
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   439
1;