imgtools/buildrom/tools/buildrom.pm
author Richard Taylor <richard.i.taylor@nokia.com>
Thu, 12 Aug 2010 09:00:16 +0100
changeset 625 a1925fb7753a
parent 609 f76e0f94b7ab
child 626 ac03b93ca9c4
permissions -rw-r--r--
sbs version 2.15.0
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) 2006-2010 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
# This package is to build rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    16
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    17
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    18
package buildrom;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    19
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    20
require Exporter;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    21
@ISA=qw(Exporter);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    22
@EXPORT=qw(
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    23
	image_content_processing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    24
	process_cmdline_arguments
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    25
	preprocessing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    26
	substitution_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    27
	reorganize_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    28
	plugin_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    29
	multlinguify_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    30
	spi_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    31
	suppress_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    32
	bitmap_aif_converison_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    33
	cleaning_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    34
	create_dumpfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    35
	create_dirlisting
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    36
	suppress_image_generation
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    37
	invoke_rombuild
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    38
	getOBYDataRef
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    39
	isobystatement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    40
	isdatastatement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    41
	isspidatastatement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    42
	isexecutablefile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    43
	isdirectorymetadata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    44
	isbitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    45
	isaif
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    46
	isresource
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    47
	hardwarevariant
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    48
	executableextension
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    49
	executabletype
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    50
	getSourceFile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    51
	getDestFile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    52
	getOBYAttributes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    53
	getHardwareVariant
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    54
	getObyCommand
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    55
	process_dlldata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    56
	featurefile_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    57
	processData
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    58
	create_smrimage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    59
);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    60
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    61
my $useinterpretsis = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    62
if ($^O !~ /^MSWin32$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    63
	$useinterpretsis = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    64
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    65
my $enforceFeatureManager = 0; # Flag to make Feature Manager mandatory if SYMBIAN_FEATURE_MANAGER macro is defined. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    66
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    67
my $BuildromMajorVersion = 3 ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    68
my $BuildromMinorVersion = 26;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    69
my $BuildromPatchVersion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    70
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    71
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    72
sub print_usage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    73
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    74
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    75
	# Option "-fm" will be supported instead of option "-f|fr" if SYMBIAN_FEATURE_MANAGER macro is defined.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    76
	my $featuresOptionUsage = "-ffeatureuids or -fr=featureuids -- feature registry database XML file name";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    77
	if ($enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    78
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    79
		$featuresOptionUsage = "-fm=featuredatabasefile          -- feature manager/feature registry database XML file name.\n".
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    80
							   "\t\t\t\t    Multiple XML files can be passed seperated by commas.\n".
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    81
							   "   -nofm=featuresdatafile           -- don't generate features data file.".
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    82
							   " Instead use pre-built features data file.";
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
#........1.........2.........3.........4.........5.........6.........7.....
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    86
	print <<USAGE_EOF;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    87
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    88
BUILDROM - ROM configuration tool V$BuildromMajorVersion.$BuildromMinorVersion.$BuildromPatchVersion
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    89
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    90
Usage:
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    91
  buildrom [options] obyfile [obyfile2 ...]   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    92
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    93
Build a ROM according to the specification defined by concatenating the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    94
specified obyfiles.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    95
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    96
The initial specification is modified by C++ preprocessor directives,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    97
and subsequently adjusted by statements in the ROM specification language.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    98
The final specification is in the subset of the specification language
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
    99
which is understood directly by ROMBUILD.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   100
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   101
Each obyfile parameter specifies a file via a search path: if the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   102
filename is not matched then buildrom will look in \/epoc32\/rom\/include.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   103
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   104
Buildrom invokes ROMBUILD to generate the ROM image, and produces a
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   105
number of related files such as the ROM symbol file. The name of the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   106
image file is specified directly by the -o option, or determined by 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   107
scanning the final specification for the "romname" keyword. If there is 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   108
more than one "romname" statement, the last one takes precedence.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   109
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   110
The available options are
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   111
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   112
   -Dxxx                            -- C++ preprocessor arguments
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   113
   -oimagename                      -- ROM image name, overriding any ROMNAME statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   114
   -s                               -- strict option, any missing files will stop buildrom 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   115
   -p                               -- preserves the intermediate files pertaining to data drive, Z drive and BMCONV
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   116
   -spi                             -- enable producing SPI files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   117
   -spiplacement                    -- enable positioning of spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   118
   -w                               -- warn if file has been selected from a different directory 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   119
   $featuresOptionUsage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   120
   -etool                           -- external tool specification (xx is tool's perl module)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   121
   -compress                        -- compression type of ROM image:
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   122
                                       -compress compress whole ROM image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   123
                                       -compress=paged compress paged section in the ROM image only.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   124
                                       -compress=unpaged compress unpaged section in the ROM image only. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   125
   -ccomprmethod                    -- compression method: none|inflate|bytepair
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   126
   -geninc                          -- generate INC file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   127
   -gendep                          -- generate dependence graph for rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   128
   -nosymbols                       -- disable creation of symbol file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   129
   -noimage                         -- disable creation of ROM/ROFS/DataDrive Image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   130
   -j<digit>                        -- do the main job with <digit> threads
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   131
   -cache                           -- allow the ROFSBUILD to reuse/generate cached executable files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   132
   -nocache                         -- force the ROFSBUILD not to reuse/generate cached executable files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   133
   -cleancache                      -- permanently remove all cached executable files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   134
   -loglevel<level>                 -- Level of information logging where loglevel is 0,1,2
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   135
                                       0 default level of information
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   136
                                       1 host/ROM filenames, file size and the hidden attribute along with level0 log
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   137
                                       2 E32 file header attributes along with level1 log
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   138
   -z=xxx or -zdrivepath=xxx        -- specify a location to create Z drive directory. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   139
   -d=xxx or -datadrivepath=xxx     -- specify a location to create data drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   140
   -k or -keepgoing                 -- enable keepgoing,continue to create the data drive image even
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   141
                                    if the non-sis, sis or zdrive image file(s) are missing or corrupt; create rom/rofs
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   142
									image even some oby files missing and/or duplicated definitions in oby files .
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   143
   -r or -retainfolder              -- enable retainfolder,would retain pre-existence of z & data drive folder. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   144
   -zdriveimage=xxx                 -- specify Z drive image (ROM, CORE, ROFS or Ext-ROFS image).
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   145
   -pfile=xxx                       -- specify a parameter file for interpretsis to take additional parameters.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   146
   -argforinterpretsis=xxx          -- specify command line argument(s) for interpretsis which will override the 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   147
                                    parameter file contents.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   148
   -l=xxx or -logimagecontents=xxx  -- extract all stub-sis and SWI certificate store file(s) only 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   149
                                    and log all the file(s) that are part of the Z drive image on to a log file.  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   150
   -I<directory>                    -- Use <directory> for the referenced IBY/OBY files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   151
   -argfile=xxx                     -- specify argument-file name containing list of command-line arguments to buildrom   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   152
   -lowmem                          -- use memory-mapped file for image build to reduce physical memory consumption   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   153
   -checkcase                       -- check character case of path/name in oby/iby files, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   154
                                    the result will be checkcase.log, this option is only valid on windows.
609
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
   155
   -workdir=xxx                     -- specify a directory to contain generated files. 
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
   156
   -prependepocroot                 -- if there is no EPOCROOT## before /epoc32/, prepend EPOCROOT## to epoc32.
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   157
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   158
Popular -D defines to use include
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   159
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   160
   -D_DEBUG         -- select debug versions of some files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   161
   -D_FULL_DEBUG    -- select debug versions of all files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   162
   -D_ARM4          -- specify the target platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   163
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   164
   -D_EABI=xxxx     -- specify target for all files (e.g. armv5)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   165
   -D_KABI=xxxx     -- specify the target platform for the Kernel (e.g. armv5)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   166
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   167
Other defines may be useful for particular OBY files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   168
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   169
USAGE_EOF
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   170
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   171
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   172
use strict;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   173
use romutl;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   174
use romosvariant;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   175
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   176
my $PerlEPOCPath = &get_epocroot()."epoc32\/tools\/";   # fully qualified pathname of the directory containing EPOC Perl modules
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   177
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   178
sub ExportDirs ($);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   179
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   180
my $xmlrequired = 0; # assume xml required is false. Used to determine if xml
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   181
                     # modules should be loaded.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   182
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   183
use flexmodload;	     # To load modules dynamically
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   184
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   185
# Work out the relative path to the epoc32 directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   186
use spitool qw(&createSpi);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   187
use Cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   188
use externaltools; 	#To invoke External Tools
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   189
use File::Basename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   190
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   191
my @tempfiles;  	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   192
my $preserve = 0; 	#flag to indicate if temporary files should be preserved
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   193
my $uppath="x";	    	# will be initialised when first needed
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   194
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   195
my $epocroot = &get_epocroot;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   196
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   197
my @obyfiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   198
my $cppargs = "-nostdinc -undef";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   199
my $opt_v = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   200
my $opt_o = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   201
my $strict = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   202
my $warnSelection = 0; # default is not warn about selecting files from 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   203
		       # different directories when the file is missing from
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   204
		       # the specified directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   205
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   206
my $createspi = 0; # don't create SPI files by default
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   207
my $spiset=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   208
my $spiplacement = 0; # enable the placement of spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   209
my %spipositionflag = (); # map of Image index at which the keyword SPI_POSITION is used.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   210
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   211
use constant NONE => 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   212
use constant INFLATE => 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   213
use constant BYTEPAIR => 2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   214
my $opt_compression;  # Default compression method parameter undefined
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   215
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   216
use constant UNCOMPRESSED   => 0;        # Indicates the ROM image will not be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   217
use constant ALLSECTIONS    => 1;        # Indicates both paged section and unpaged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   218
use constant PAGEDSECTION   => 2;        # Indicates only paged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   219
use constant UNPAGEDSECTION => 3;        # Indicates only unpaged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   220
my $opt_compression_type = UNCOMPRESSED; # Leave the ROM image uncompressed by default.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   221
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   222
#Variables to store cache command line options
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   223
my $opt_cache      = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   224
my $opt_nocache    = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   225
my $opt_cleancache = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   226
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   227
my $thisdir=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   228
$thisdir=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   229
$thisdir.= "\/" unless $thisdir =~ /\/$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   230
$thisdir =~ s-\/-\\-g if (&is_windows);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   231
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   232
my $rominclude = $epocroot."epoc32\/rom\/include\/";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   233
$rominclude = &get_epocdrive().$rominclude unless $rominclude =~ /^.:/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   234
$rominclude =~s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   235
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   236
my %plugintypes; #hash of plugin types and their SPI files' destinations in ROM
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   237
$plugintypes{"ECOM"} = "\/private\/10009d8f\/"; #ECOM SPI files' destination in ROM image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   238
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   239
my @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   240
my @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   241
my %substitutionData;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   242
my @substitutionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   243
my %languageCodes;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   244
my $defaultLanguageCode;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   245
my %multiLinguifyAlias;  # to by-pass the 'mustbesysbin' option for multilinguify 'alias'es. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   246
my $abiDowngrade = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   247
my @binarySelectionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   248
my $fromDIR;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   249
my %rombuildOptions = ("-type-safe-link" => 1 );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   250
my $enforceSysBin = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   251
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   252
my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   253
my $errors = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   254
my @romimage;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   255
my $rombasename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   256
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   257
my $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   258
my $sourceline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   259
#my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   260
my %romfiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   261
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   262
# To handle BINARY_SELECTION_ORDER macro.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   263
my $firstDIR;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   264
my $binarySelectionOrderFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   265
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   266
my %DllDataMap = ();	#Map to keep track of DLL Data patch statements.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   267
my $patchDataStmtFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   268
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   269
my $featuremanager = 0; #Flag to enable support for feature manager database XML file and to generate  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   270
			# features data file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   271
my $noFeatureManager = 0; # Flag to stop the generation of features.dat file and use pre-built features.dat if provided.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   272
my $preBuiltFeaturesDataFile  = ''; # To store the name of pre-built features.dat file provided with "-nofm" option.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   273
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   274
#Image Content XML file that supports specific feature to be added
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   275
my $image_content = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   276
#Feature list XML file that acts as database containing all features details
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   277
my $featureXml = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   278
my $geninc = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   279
my $gendep = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   280
my $nosymbols = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   281
my $noimage = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   282
my $customizedPlat = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   283
my $opt_jobs= "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   284
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   285
#Summary of files(both executables and data files) currently includes 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   286
#	host and ROM file names, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   287
#	size of the file in ROM
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   288
#	whether the file is hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   289
# This option is added so that the above additional information is emitted by rombuild/rofsbuild tools
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   290
# only when supplied with this option so that the existing tools don't get affected.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   291
my $logLevel="";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   292
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   293
# This option is used to pass -lowmem argument to rombuild/rofsbuild tools
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   294
my $lowMem="";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   295
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   296
# Feature Variation modules and data
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   297
my %featureVariant;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   298
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   299
# global variables specific to data drive image generation. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   300
use File::Path;					# Module to provide functions to remove or create directories in a convenient way.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   301
use File::Copy;					# Module to provide functions to copy file(s) from source to destination.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   302
use File::Find;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   303
use datadriveimage;				# module which provides all necessary functions to create data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   304
my $ZDirloc = "";				# location of Z drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   305
my $DataDriveDirloc = "";		# location of data drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   306
my @sisfilelist;				# an array to hold sis file(s).
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   307
my @zDriveImageList;			# an array to hold z drive image name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   308
my @datadiveobydata;			# an array to hold data drive oby data.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   309
my @datadriveimage;				# array which holds data drive image attribute.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   310
my $rootdir = "";				# which holds root directory information.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   311
my @datadrivedata;				# array to maintain list of lines taken from processed data drive oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   312
my @nonsisFilelist;				# array to maintain list of nonsis file(s). 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   313
my @sisobydata;					# array to maintain all list of files(s) got by installing sis files. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   314
my @renameList;					# array to maintain list of file(s) that has to be renamed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   315
my @aliaslist;					# array to maintain list of file(s) that has to be made alias.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   316
my @hideList;					# array to maintain list of file(s) that has to be made hidden.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   317
my $sisfilepresent = 0;			# enable if sis file(s) are present.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   318
my $stubsisfilepresent = 0;		# enable if stub-sis file(s) are present.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   319
my $opt_k = 0;					# enable if keepgoing option is specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   320
my $opt_r = 0;					# enable if retain pre-existence of folder is specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   321
my $dataImageCount = 0;			# no of data drive image that has to generated.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   322
my @zdriveImageName;			# list of Z drive image name(s) specified using zdriveimagename in oby/iby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   323
my $opt_zimage = 0;				# enable if z drive image is found.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   324
my $zDrivePresent = 0;			# flag to check whether Z drive needs to be created.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   325
my @dataDriveFileList;			# list of processed data drive related files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   326
my $paraFile = undef;			# parameter file for interpretsis.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   327
my @romImages;					# list of generated z drive image(s)(rom/rofs). 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   328
my $imageEntryLogFile = undef;	# a log file to log all the z drive image contents.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   329
my $opt_logFile = 0;			# enable if z drive entries has to be logged on to a log file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   330
my %dataIndexHash = ();			# a hash which holds key-value pair between datadrive index and datadrive image count.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   331
my $interpretsisOpt = undef;	# enable if command line arguments are specified by the user to INTERPRETSIS.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   332
my @interpretsisOptList;		# an array which holds all the list of option(s) that needs to passed to INTERPRETSIS. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   333
my @Global_BPABIPlats;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   334
my @Global_PlatList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   335
my @smrImageFileList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   336
my $needSmrImage = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   337
my %smrPartitions;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   338
my %smrNameInfo;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   339
my @obeyFileList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   340
my $smrNoImageName = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   341
my $onlysmrimage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   342
my $checkcase = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   343
my $checkcase_platform = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   344
my $checkcase_test = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   345
my $opt_workdir = 0;
609
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
   346
my $prependepocroot = 0;
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   347
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   348
sub match_obyfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   349
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   350
	my ($obyfile) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   351
	if (-f $obyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   352
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   353
		push @obyfiles, $obyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   354
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   355
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   356
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   357
	# search for the oby file in the list of include directories
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   358
	my @otherDirs = ($rominclude);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   359
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   360
	if ($featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   361
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   362
		my $dirRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   363
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   364
		@otherDirs = @$dirRef if ($dirRef);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   365
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   366
	foreach my $dir (@otherDirs)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   367
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   368
		print "$dir/$obyfile\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   369
		if (-f "$dir/$obyfile")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   370
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   371
		    push @obyfiles, "$dir/$obyfile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   372
		    return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   373
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   374
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   375
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   376
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   377
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   378
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   379
# This function invokes ROFSBUILD tool with appropriate parameters to generate data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   380
# It also deletes zdrive and datadrive folder after all the image has been processed and generated
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   381
# if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   382
sub create_datadriveImage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   383
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   384
	for (my $dataidx=0; $dataidx < $dataImageCount; $dataidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   385
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   386
		my $driveIndex = $dataIndexHash{$dataidx};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   387
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   388
		if(defined($driveIndex))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   389
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   390
			my $obeyfile=$datadriveimage[$driveIndex]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   391
			my $compress=$datadriveimage[$driveIndex]{compress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   392
			my $uncompress=$datadriveimage[$driveIndex]{uncompress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   393
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   394
			if ($obeyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   395
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   396
				if(!defined $opt_compression)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   397
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   398
					if ($compress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   399
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   400
						$compress=" -compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   401
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   402
					elsif($uncompress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   403
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   404
						$compress=" -uncompress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   405
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   406
					elsif($compress eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   407
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   408
						$compress=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   409
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   410
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   411
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   412
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   413
					$compress = $opt_compression;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   414
					$compress =~m/\s-(compression)(method)\s(none|inflate|bytepair)/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   415
					print "* ".$1." ".$2.": ".$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   416
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   417
				my $command = "rofsbuild -slog".$compress." -datadrive=$obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   418
				print "* Executing $command\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   419
				system($command);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   420
				if ($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   421
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   422
					&datadriveimage::reportError("* ROFSBUILD failed to generate data drive image",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   423
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   424
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   425
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   426
					push(@dataDriveFileList,$obeyfile.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   427
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   428
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   429
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   430
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   431
	# after processing all the data drive image(s) delete zdrive and datadrive directory 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   432
	# if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   433
	if($dataImageCount)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   434
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   435
		# delete Z drive directory if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   436
		my $retVal = &deleteDirectory($ZDirloc,$opt_v)if(!($preserve));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   437
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   438
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   439
			&datadriveimage::reportError("* Warning could not delete $ZDirloc",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   440
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   441
		# delete data drive directory if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   442
		$retVal = &deleteDirectory($DataDriveDirloc,$opt_v)if(!($preserve));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   443
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   444
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   445
			&datadriveimage::reportError("* Warning could not delete $DataDriveDirloc",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   446
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   447
		# reset image count to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   448
		$dataImageCount = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   449
		# reset z drive present to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   450
		$zDrivePresent = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   451
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   452
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   453
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   454
sub tidy_exit
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   455
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   456
	#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   457
	# Tidy and exit
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   458
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   459
	if (!$preserve)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   460
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   461
	    foreach my $tempfiles (@tempfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   462
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   463
	    print "remove $tempfiles\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   464
			unlink "$tempfiles";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   465
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   466
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   467
	if($rombasename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   468
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   469
		system("dir $rombasename.*");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   470
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   471
	if(@dataDriveFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   472
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   473
		print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   474
		print " ----------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   475
		print "| List of file(s) generated pertaining to data drive image |\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   476
		print " ----------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   477
		my $arraySize = scalar(@dataDriveFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   478
		for( my $i=0; $i < $arraySize; $i++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   479
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   480
			# remove the first element from an array and return it 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   481
			my $element = shift(@dataDriveFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   482
			# get the size of the file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   483
			my $size = -s $element;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   484
			print "Size = ".$size." bytes"."\t"."File = ".$element."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   485
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   486
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   487
	exit(0);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   488
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   489
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   490
# This is the main function which is responsible for processing data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   491
# This function internally calls other functions to create datadrive folder,zdrive folder
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   492
# and external tools such as INTERPRETSIS, READIMAGE and finally ROFSBUILD to generate 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   493
# appropriate data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   494
sub processData		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   495
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   496
	if($dataImageCount)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   497
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   498
		# set the default path for Z drive and Data drive directory,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   499
		# if and only if, path is not specified by the user. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   500
		$ZDirloc = &datadriveimage::setPath("zdrive") unless ($ZDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   501
		$DataDriveDirloc = &datadriveimage::setPath("datadrive") unless ($DataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   502
		#delete any existing Z drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   503
		my $retVal = &datadriveimage::deleteDirectory($ZDirloc,$opt_v)if(!$opt_r);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   504
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   505
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   506
			exit(1) if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   507
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   508
		# delete pre-existence of data drive folder, if and only if -r option is not enabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   509
		$retVal = &datadriveimage::deleteDirectory($DataDriveDirloc,$opt_v) if(!$opt_r);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   510
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   511
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   512
			exit(1) if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   513
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   514
		if($opt_logFile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   515
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   516
			# clean any pre-existance of log file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   517
			unlink($ZDirloc."\/".$imageEntryLogFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   518
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   519
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   520
		for (my $datadriveidx=0; $datadriveidx < $dataImageCount; $datadriveidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   521
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   522
			my $driveIndex = $dataIndexHash{$datadriveidx};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   523
			# get the data drive name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   524
			if( defined( $driveIndex ) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   525
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   526
				my $datadrivename=$datadriveimage[$driveIndex]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   527
				# get the size of the data drive.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   528
				my $size = $datadriveimage[$driveIndex]{size};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   529
				if( $datadrivename )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   530
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   531
					# set data drive oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   532
					my $datadriveobyfile = $datadrivename.".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   533
					# final location of prototype data drive.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   534
					my $proDataDriveDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   535
					# Location of stub-sis file(s) inside Z Drive folder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   536
					my $zDriveSisFileLoc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   537
					# check if more than one data drive image needs to be generated. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   538
					if( $dataImageCount > 1 )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   539
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   540
						# if yes, then set the location of prototype data drive folder as 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   541
						# DataDriveDirloc + datadrivename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   542
						$proDataDriveDirloc = $DataDriveDirloc."\/".$datadrivename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   543
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   544
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   545
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   546
						# else, then set the location of prototype data drive folder as DataDriveDirloc 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   547
						$proDataDriveDirloc = $DataDriveDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   548
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   549
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   550
					# create prototype data drive folder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   551
					print "creating data drive folder\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   552
					&datadriveimage::createDirectory($proDataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   553
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   554
					# check for sis file keyword in ROM description file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   555
					# if found,then locate for stub-sisfile.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   556
					# create Z drive( if and only if stub-sis files are present in ROM description file )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   557
					# and dump all the non-sis files on to the Z drive folder. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   558
					if(&datadriveimage::checkForSisFile($datadriveobyfile,\@sisfilelist,\$sisfilepresent))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   559
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   560
						my $zDriveImagePresent = 0; # flag to check whether z drive image is Present;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   561
						if(&datadriveimage::checkForZDriveImageKeyword($datadriveobyfile,\@zDriveImageList,\$zDriveImagePresent) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   562
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   563
							# find out size of the array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   564
							my $arraysize = scalar(@zDriveImageList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   565
							for( my $i=0; $i < $arraysize; $i++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   566
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   567
								$zDriveSisFileLoc =  $ZDirloc."\/".$datadrivename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   568
								&datadriveimage::invokeReadImage(pop(@zDriveImageList),$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   569
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   570
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   571
						else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   572
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   573
							$zDriveSisFileLoc = $ZDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   574
							# locate and copy stub-sis file(s),for the first time.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   575
							if( !$zDrivePresent )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   576
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   577
								# check for image file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   578
								if( $opt_zimage )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   579
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   580
									# image(s)supplied to BUILDROM(like rom,rofs,extrofs or core) using "-zdriveimage" option, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   581
									# are maintained in a seperate array and the element from the array is fetched one by one and is 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   582
									# fed to READIMAGE as an input.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   583
									foreach my $element (@zdriveImageName)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   584
									{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   585
										# invoke READIMAGE to extract all /swi stub sis file(s) from the given image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   586
										$zDrivePresent = &datadriveimage::invokeReadImage($element,$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   587
									}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   588
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   589
								else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   590
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   591
									# if zdrive image(s) such as (rom,core,rofs or extrofs) are generated ealier to the data drive image processing
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   592
									# then these images are maintained in an array and the element from the array is fetched one by one and is 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   593
									# fed to READIMAGE as an input.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   594
									foreach my $element (@romImages)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   595
									{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   596
										# invoke READIMAGE to extract all /swi stub sis file(s) from the given image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   597
										$zDrivePresent = &datadriveimage::invokeReadImage($element,$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   598
									}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   599
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   600
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   601
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   602
						# invoke INTERPRETSIS tool with z drive folder location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   603
						if ($useinterpretsis)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   604
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   605
							&datadriveimage::invokeInterpretsis( \@sisfilelist,$proDataDriveDirloc,$opt_v,$zDriveSisFileLoc,$paraFile,$opt_k,\@interpretsisOptList)if($sisfilepresent);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   606
						}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   607
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   608
							print "Warning: interpretsis is not ready on linux.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   609
						}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   610
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   611
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   612
					# create an oby file by traversing through upated prototype data drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   613
					&datadriveimage::dumpDatadriveObydata( $proDataDriveDirloc,$datadriveobyfile,$size,\@nonsisFilelist,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   614
										\@renameList,\@aliaslist,\@hideList,\@sisobydata,\@datadrivedata,$opt_k,$opt_v );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   615
					#reset sisfilepresent flag to zero;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   616
					$sisfilepresent =0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   617
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   618
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   619
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   620
		create_datadriveImage();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   621
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   622
	tidy_exit;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   623
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   624
#Parse and process image content xml file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   625
#Gets the oby files listed in the xml file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   626
# Pushes all the oby files found to an array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   627
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   628
sub image_content_processing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   629
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   630
	if(!defined ($image_content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   631
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   632
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   633
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   634
	&ImageContentHandler::ParseImageContentXML($image_content);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   635
	&ImageContentHandler::ProcessImageContent;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   636
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   637
	if(defined ($image_content) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   638
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   639
#		Collect the oby files if any in the Image content file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   640
		my $files = &ImageContentHandler::GetObyFiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   641
		foreach my $obeyfile (@$files)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   642
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   643
			next if match_obyfile($obeyfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   644
			next if (match_obyfile("$obeyfile.oby"));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   645
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   646
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   647
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   648
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   649
# Subroutine to process parameter-file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   650
sub parameterFileProcessor
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   651
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   652
	my $paramFile = shift(@_);	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   653
	my @paramFileParamaters = ();	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   654
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   655
	my $fileOpenFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   656
	open FILE,"<", $paramFile or $fileOpenFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   657
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   658
	if(!$fileOpenFlag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   659
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   660
		print "Error: Could not open parameter-file \"$paramFile\" for reading.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   661
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   662
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   663
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   664
	# Parse parameter-file and collect all the parameters in an array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   665
	while(my $line = <FILE>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   666
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   667
		# Read the line till character ';'(used for providing comments in the file) or EOL
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   668
		$line = $1 if ($line =~ /(.*);/); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   669
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   670
		# Split the parameters specified in a line based on white-spaces		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   671
		my @paramaters = split(/(\s)/,$line);	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   672
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   673
		my $flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   674
		my $argWithQuotes='';
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   675
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   676
		foreach my $value (@paramaters) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   677
		{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   678
			# If the parameter doesn't conatian double quotes then push it 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   679
			# to the list of parameters.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   680
			if(($value !~ /\"/) && (!$argWithQuotes)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   681
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   682
				if ($value !~ /^\s*$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   683
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   684
					push @paramFileParamaters,$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   685
				}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   686
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   687
			# If the parameter is in the form  -fm="faturedb.xml" then remove
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   688
			# double quotes and push it to the list of parameters.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   689
			elsif(($value =~ /\".*\"/))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   690
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   691
				$value =~ s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   692
				push @paramFileParamaters,$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   693
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   694
			# If the parameter is in the form  -fm="fature  db.xml" then read
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   695
			# the parameter starting from opening quote till the closing quote.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   696
			elsif( ($value =~ /\"/) && $argWithQuotes) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   697
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   698
				$argWithQuotes .= $value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   699
				$argWithQuotes =~ s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   700
				push @paramFileParamaters,$argWithQuotes;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   701
				$argWithQuotes='';		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   702
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   703
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   704
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   705
				$argWithQuotes .= $value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   706
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   707
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   708
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   709
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   710
	close FILE;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   711
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   712
	if (!@paramFileParamaters)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   713
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   714
		print "Warning: No parameters specified in paramer-file \"$paramFile\".\n";		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   715
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   716
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   717
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   718
	my $paramFileFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   719
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   720
	# Invoke subroutine "process_cmdline_arguments" to process the parameters read from
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   721
	# the parameter file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   722
	&process_cmdline_arguments($paramFileFlag, @paramFileParamaters);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   723
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   724
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   725
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   726
# Processes the command line arguments passed to buildrom tool
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   727
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   728
sub process_cmdline_arguments
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   729
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   730
   	my %tmpBldRomOpts;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   731
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   732
	my ($paramFileFlag, @argList); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   733
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   734
	if (defined @_)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   735
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   736
		($paramFileFlag, @argList) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   737
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   738
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   739
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   740
		@argList = @ARGV;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   741
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   742
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   743
	if (!defined $paramFileFlag) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   744
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   745
		# Enforce Feature Manager if macro SYMBIAN_FEATURE_MANAGER is defined in the HRH file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   746
		my @hrhMacros = &get_variantmacrolist;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   747
		if (grep /^SYMBIAN_FEATURE_MANAGER\s*$/, @hrhMacros)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   748
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   749
			$enforceFeatureManager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   750
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   751
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   752
		# Process the parameters of parameter-file if passed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   753
		foreach my $arg (@argList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   754
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   755
			if ($arg =~ /^-argfile=(.*)/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   756
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   757
				&parameterFileProcessor($1);				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   758
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   759
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   760
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   761
	# first searching argList for keepgoing option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   762
	foreach my $arg (@argList) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   763
		if ( $arg =~ /^-k$/i || $arg =~ /^-keepgoing$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   764
	  {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   765
			$opt_k = 1;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   766
  		last;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   767
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   768
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   769
	foreach my $arg (@argList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   770
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   771
	    if ($arg =~ /^-argfile=(.*)/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   772
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   773
			&parameterFileProcessor($1) if (defined $paramFileFlag);						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   774
			next;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   775
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   776
		if ($arg =~ /^-[DI]/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   777
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   778
		$cppargs .= " $arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   779
		#Set 'udeb' for debug option 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   780
		if($arg =~ /^-D_FULL_DEBUG/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   781
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   782
		    $tmpBldRomOpts{"BUILD_DIR"} = "udeb";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   783
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   784
		#Set specific platform supplied from the command option 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   785
		elsif($arg =~ /^-D_PLAT=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   786
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   787
		    $tmpBldRomOpts{"ABI_DIR"} = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   788
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   789
		# Check for a Feature Variant
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   790
		elsif ($arg =~ /^-DFEATUREVARIANT=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   791
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   792
			my $varname = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   793
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   794
			if ($varname =~ /^\.(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   795
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   796
				# for testing, locate the VAR file in the current directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   797
				%featureVariant = get_variant($1, ".");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   798
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   799
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   800
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   801
				%featureVariant = get_variant($varname);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   802
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   803
			if (!$featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   804
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   805
			    print "FEATUREVARIANT $varname is not VALID\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   806
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   807
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   808
			if ($featureVariant{'VIRTUAL'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   809
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   810
			    print "FEATUREVARIANT $varname is VIRTUAL\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   811
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   812
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   813
			addDrivesToFeatureVariantPaths();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   814
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   815
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   816
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   817
	    if ($arg =~ /^-o(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   818
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   819
		$opt_o = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   820
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   821
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   822
	    if ($arg =~ /^-j(\d+)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   823
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   824
		    $opt_jobs = "-j".$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   825
		    next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   826
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   827
	    if ($arg =~ /^-v$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   828
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   829
		$opt_v =1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   830
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   831
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   832
	    if ($arg =~ /^-s$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   833
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   834
		$strict = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   835
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   836
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   837
	    if ($arg =~ /^-w$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   838
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   839
		$warnSelection = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   840
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   841
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   842
	    if ($arg =~ /^-p$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   843
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   844
		$preserve = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   845
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   846
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   847
	    if ($arg =~ /^-nospi$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   848
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   849
		$createspi=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   850
		$spiset=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   851
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   852
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   853
	    if ($arg =~ /^-spi$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   854
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   855
		$createspi=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   856
		$spiset=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   857
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   858
	    }	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   859
	    #Process External Tool
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   860
	    if ($arg =~/^-e(.*)/)#Match to get the tool perl module files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   861
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   862
		&externaltools::loadTools($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   863
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   864
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   865
   		#Process imagecontent file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   866
	    if( $arg =~ /^-i(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   867
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   868
# Disabling -i option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   869
		print "Warning: Ignoring invalid Option $arg \n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   870
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   871
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   872
		#Process feature manager database xml file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   873
	    if($arg =~ /^-fm=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   874
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   875
			if (!$enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   876
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   877
				print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   878
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   879
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   880
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   881
			$featureXml = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   882
			$xmlrequired = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   883
			$featuremanager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   884
			if ($featureXml =~ /^$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   885
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   886
				print "Error: No filename specified with \"-fm=\" option.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   887
			}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   888
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   889
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   890
		#Process Cache command line options.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   891
		if($arg =~ /^-cache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   892
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   893
			$opt_cache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   894
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   895
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   896
		if($arg =~ /^-nocache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   897
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   898
			$opt_nocache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   899
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   900
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   901
		if($arg =~ /^-cleancache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   902
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   903
			$opt_cleancache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   904
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   905
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   906
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   907
	    #Process ROM image compression type if it's specified through command line option.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   908
	    if($arg =~ /^-compress(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   909
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   910
	    	if($1 eq '')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   911
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   912
	    		$opt_compression_type = ALLSECTIONS;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   913
	    		print "Whole ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   914
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   915
	    	elsif($1 eq '=paged')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   916
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   917
	    		$opt_compression_type = PAGEDSECTION;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   918
	    		print "Paged section of the ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   919
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   920
	    	elsif($1 eq '=unpaged')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   921
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   922
	    		$opt_compression_type = UNPAGEDSECTION;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   923
	    		print "Unpaged section of the ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   924
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   925
	    	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   926
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   927
	    		print "Unknown compression type: $1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   928
	    		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   929
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   930
	    	next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   931
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   932
		if ($arg =~ /^-nofm(=(.*))?$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   933
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   934
			if (!$enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   935
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   936
				print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   937
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   938
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   939
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   940
   			$noFeatureManager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   941
            #DEF125375 If caller is simply giving -nofm without any parameter, a warning message will be given.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   942
            if(!$2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   943
            {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   944
                print "Warning: No filename specified with \"-nofm=\" option, feature data file might not be included.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   945
            }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   946
            else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   947
            {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   948
                $preBuiltFeaturesDataFile = $2;						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   949
            }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   950
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   951
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   952
		#Process feature registry database xml file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   953
	    if($arg =~ /^-fr=(.*)/ || $arg =~ /^-f(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   954
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   955
			if ($enforceFeatureManager)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   956
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   957
				print "Error: Option \"-f|-fr\" is no longer supported.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   958
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   959
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   960
			}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   961
			$featureXml = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   962
			$xmlrequired = 1;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   963
			if ($featureXml =~ /^$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   964
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   965
				print "Error: No filename specified with \"-f|-fr\" option.\n";				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   966
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   967
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   968
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   969
	    if ($arg =~ /^-spiplacement$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   970
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   971
			$spiplacement = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   972
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   973
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   974
		if ($arg =~ /^-noimage$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   975
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   976
			$noimage=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   977
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   978
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   979
		if ($arg =~ /^-nosymbols$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   980
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   981
			$nosymbols=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   982
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   983
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   984
		if ($arg =~ /^-geninc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   985
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   986
			$geninc=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   987
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   988
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   989
		if($arg =~ /^-gendep$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   990
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   991
			$gendep=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   992
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   993
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   994
		if ($arg =~ /^-checkcase$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   995
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   996
			$checkcase=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   997
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   998
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   999
		if ($arg =~ /^-checkcase_test$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1000
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1001
			$checkcase_test=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1002
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1003
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1004
		if ($arg =~ /^-workdir=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1005
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1006
			my $workdir = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1007
			if (!-d $workdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1008
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1009
				die "directory $workdir does not exist\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1010
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1011
			my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1012
			chdir "$workdir" or die "cannot change to directory $workdir\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1013
			$thisdir=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1014
			$thisdir=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1015
			$thisdir.= "\/" unless $thisdir =~ /\/$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1016
			if(&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1017
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1018
				$thisdir =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1019
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1020
			$opt_workdir = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1021
			chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1022
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1023
		}
609
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1024
		if ($arg =~ /^-prependepocroot$/)
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1025
		{
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1026
			$prependepocroot = 1;
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1027
			next;
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1028
		}
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1029
		    if($arg =~/^-c(.*)/)
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1030
        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1031
          if($1 eq 'none' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1032
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1033
              $opt_compression = " -compressionmethod none";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1034
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1035
          elsif($1 eq 'inflate' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1036
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1037
              $opt_compression = " -compressionmethod inflate";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1038
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1039
          elsif($1 eq 'bytepair' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1040
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1041
              $opt_compression = " -compressionmethod bytepair";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1042
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1043
          else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1044
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1045
              print "Unknown compression method: $1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1046
              $errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1047
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1048
          next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1049
        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1050
		if( $arg =~ /^-loglevel\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1051
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1052
			$logLevel= $arg;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1053
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1054
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1055
		# get Z directory location if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1056
		# if yes, then extract directory location from the given array element. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1057
		if( $arg =~ /^-z=(.*)/  || $arg =~ /^-zdrivepath=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1058
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1059
			# check for white space in the specified folder path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1060
			# if "yes" then warn the user saying folder will be created under default location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1061
			# else set the path specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1062
			if(&datadriveimage::checkForWhiteSpace($1,"zdrive"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1063
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1064
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1065
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1066
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1067
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1068
				$ZDirloc  = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1069
				$ZDirloc =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1070
				if( $ZDirloc !~ m/\/(\Z)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1071
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1072
					$ZDirloc .= "\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1073
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1074
				if( $ZDirloc !~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1075
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1076
					print "drive letter not specified\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1077
					$ZDirloc = &datadriveimage::setPath($ZDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1078
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1079
				print "Z Drive directory location = $ZDirloc\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1080
				#set the location of Z Drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1081
				$ZDirloc .= "zdrive";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1082
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1083
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1084
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1085
		# get data directory location if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1086
		# if yes, then extract directory location from the given array element. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1087
		if( $arg =~ /^-d=(.*)/ || $arg =~ /^-datadrivepath=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1088
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1089
			# check for white space in the specified folder path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1090
			# if "yes" then warn the user saying folder will be created under default location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1091
			# else set the path specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1092
			if(&datadriveimage::checkForWhiteSpace($1,"datadrive"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1093
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1094
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1095
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1096
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1097
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1098
				$DataDriveDirloc = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1099
				$DataDriveDirloc =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1100
				if( $DataDriveDirloc !~ m/\/(\Z)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1101
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1102
					$DataDriveDirloc .= "\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1103
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1104
				if( $DataDriveDirloc !~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1105
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1106
					print "drive not specified\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1107
					$DataDriveDirloc = &datadriveimage::setPath($DataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1108
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1109
				print "Data Drive directory location = $DataDriveDirloc\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1110
				#set the location of Data Drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1111
				$DataDriveDirloc .= "datadrive";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1112
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1113
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1114
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1115
		# get Z dive image if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1116
		if( $arg =~ /^-zdriveimage=(.*)/i )	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1117
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1118
			my $imageName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1119
			if( $imageName =~ m/\,/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1120
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1121
				@zdriveImageName = split(/\,/,$imageName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1122
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1123
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1124
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1125
				push(@zdriveImageName,$imageName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1126
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1127
			$opt_zimage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1128
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1129
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1130
		# get command line arguments which needs to be passed to INTERPRETSIS, if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1131
		if( $arg =~ /^-argforinterpretsis=(.*)/i )	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1132
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1133
			my $interpretsisOpt = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1134
			if( $interpretsisOpt =~ m/\,/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1135
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1136
				@interpretsisOptList = split(/\,/,$interpretsisOpt);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1137
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1138
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1139
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1140
				push(@interpretsisOptList,$interpretsisOpt);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1141
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1142
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1143
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1144
		if ( $arg =~ /^-k$/i || $arg =~ /^-keepgoing$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1145
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1146
			$opt_k = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1147
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1148
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1149
		if ( $arg =~ /^-r$/i || $arg =~ /^-retainfolder$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1150
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1151
			$opt_r = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1152
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1153
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1154
		if ( $arg =~ /^-pfile=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1155
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1156
			$paraFile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1157
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1158
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1159
		if ( $arg =~ /^-l=(.*)/i || $arg =~ /^-logimageentry=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1160
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1161
			if( $1 =~/[\/\\]/ || $1 =~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1162
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1163
				print "* Warning: Invalid log file extension try filename.txt\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1164
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1165
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1166
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1167
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1168
				$opt_logFile = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1169
				$imageEntryLogFile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1170
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1171
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1172
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1173
		if ( $arg =~ /^-lowmem/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1174
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1175
			$lowMem = $arg;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1176
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1177
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1178
	    if ($arg =~ /^-/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1179
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1180
		print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1181
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1182
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1183
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1184
	    # It's an OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1185
	    next if (match_obyfile($arg));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1186
	    next if (match_obyfile("$arg.oby"));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1187
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1188
	    print "Cannot find oby file: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1189
	    $errors++ if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1190
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1191
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1192
	if (defined $paramFileFlag) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1193
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1194
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1195
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1196
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1197
	if (@obyfiles<1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1198
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1199
	    print "Missing obyfile argument\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1200
	    $errors++ if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1201
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1202
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1203
	if ($errors)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1204
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1205
	    print_usage();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1206
	    exit 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1207
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1208
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1209
	if ($noFeatureManager && $featuremanager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1210
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1211
		print "Warning: Ignoring \"-nofm\" option, as both \"-nofm\" and \"-fm\" options are provided.\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1212
		$noFeatureManager = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1213
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1214
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1215
	# Adding variant specific macros by including a HRH file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1216
	# (only required if no Feature Variant is used)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1217
	if (!$featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1218
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1219
	    my $variantMacroHRHFile = get_variantmacroHRHfile();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1220
	    if($variantMacroHRHFile){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1221
	        my $variantFilePath = split_path('Path',$variantMacroHRHFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1222
	        $cppargs .= " -I " . &append_driveandquote($variantFilePath) . " -include " . &append_driveandquote($variantMacroHRHFile); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1223
	        print "in cmd process $cppargs\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1224
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1225
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1226
	# load the required modules if xml is required
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1227
	if ($xmlrequired == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1228
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1229
	    if (defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1230
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1231
			load_featuresutil();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1232
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1233
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1234
	    if ($image_content)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1235
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1236
	    	&FlexLoad_ModuleL("ImageContentHandler");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1237
	    	# some variables for ImageContentHandler may have been setup
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1238
	    	my ($key, $value);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1239
	    	&ImageContentHandler::SetBldRomOpts; # Defaults to armv5 platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1240
	    	while (($key,$value) = each %tmpBldRomOpts)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1241
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1242
			&ImageContentHandler::SetBldRomOpts($key, $value);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1243
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1244
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1245
	    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1246
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1247
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1248
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1249
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1250
# Preprocessing phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1251
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1252
# Concatentate the specified .oby files and pass them through cpp
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1253
# to get the raw ROM specification in tmp1.oby
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1254
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1255
sub preprocessing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1256
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1257
	my $temp1OBYFile = $thisdir."tmp1.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1258
	unlink "$temp1OBYFile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1259
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1260
#	Macro "ROM_FEATURE_MANAGEMENT" is defined when "-f|fr" or "-fm" is used
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1261
	if (defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1262
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1263
		$cppargs .= " -DROM_FEATURE_MANAGEMENT ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1264
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1265
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1266
	# add pre-include file and include directories for feature variants
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1267
	if ($featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1268
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1269
		$cppargs .= " -I.";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1270
		my $incRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1271
		if ($incRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1272
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1273
			foreach (@$incRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1274
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1275
		    	$cppargs .= " -I \"$_\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1276
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1277
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1278
		my $HRH = $featureVariant{'VARIANT_HRH'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1279
		if ($HRH)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1280
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1281
		    $cppargs .= " -include \"$HRH\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1282
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1283
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1284
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1285
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1286
		# no feature variant so use the standard includes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1287
		$cppargs .= " -I. -I \"$rominclude\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1288
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1289
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1290
	print "* cpp -Wno-endif-labels -o $temp1OBYFile $cppargs\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1291
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1292
	is_existinpath("cpp", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1293
	$errors = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1294
	open CPP, "| cpp -Wno-endif-labels -o $temp1OBYFile $cppargs" or die "* Can't execute cpp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1295
	foreach my $arg (@obyfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1296
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1297
		print CPP "\n#line 1 \"$arg\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1298
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1299
		if(open(OBY, $arg)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1300
			print "* reading $arg\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1301
			while ($line=<OBY>) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1302
				print CPP $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1303
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1304
			close OBY;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1305
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1306
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1307
			print STDERR "* Can't open $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1308
			if(!$opt_k){			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1309
				close CPP;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1310
				exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1311
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1312
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1313
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1314
	close CPP;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1315
	my $cpp_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1316
	die "* cpp failed\n" if ($cpp_status != 0 || !-f "$temp1OBYFile");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1317
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1318
	if( defined ($image_content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1319
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1320
		#Read the OBY file that was generated by the pre-processor
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1321
		&ReadPreprocessedFile($temp1OBYFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1322
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1323
#		Check if the static dependencies of the OBY binaries are resolved.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1324
		&ImageContentHandler::UpdateObyBinaryStaticDep();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1325
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1326
		#Now append the files collected from cdfs.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1327
		&ImageContentHandler::GenObyFile($temp1OBYFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1328
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1329
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1330
	# Setup default rom configuration
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1331
	$romimage[0] = {xip=>1, compress=>0, extension=>0, composite=>"none",uncompress=>0 };
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1332
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1333
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1334
sub ReadPreprocessedFile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1335
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1336
#	Read the OBY file that was generated by the pre-processor. This OBY is a conglomeration of all the OBYs
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1337
#	passed directly to buildrom and/or the ones passed through Image Content XML.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1338
#	It marks the binaries coming from OBY. This is required to be able to point out the binaries that are 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1339
#	mentioned neither in the OBY nor in the CDF. Such binaries are arrived at through static dependencies
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1340
#	and need to be included in ROM.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1341
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1342
	my $temp1OBYFile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1343
	my $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1344
	my $srcFileName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1345
	my $srcFilePath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1346
	my $dstFileName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1347
	my $dstFilePath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1348
	open (OBYFH, "$temp1OBYFile") or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1349
	while($tmpline =<OBYFH>) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1350
		if ($tmpline=~/(\S+)\s*=\s*(\S+)\s+(\S+)/) {#Get the first parameter (source File path) from oby line
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1351
			$srcFilePath = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1352
			$dstFilePath = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1353
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1354
			if ($srcFilePath=~/.*[\/\\](\S+)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1355
				$srcFileName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1356
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1357
			if ($dstFilePath=~/.*[\/\\](\S+)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1358
				$dstFileName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1359
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1360
			my $binaryInfoRef = &cdfparser::GetBinaryInfo($dstFileName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1361
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1362
			if(defined($binaryInfoRef)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1363
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1364
				#Found in CDF file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1365
				if($binaryInfoRef->{IsFoundInCDF})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1366
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1367
					print "Warning: File $srcFileName mentioned in OBY as well as CDF file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1368
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1369
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1370
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1371
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1372
				#Found in OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1373
				&ImageContentHandler::AddBinaryFromOby($dstFileName, $srcFilePath);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1374
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1375
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1376
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1377
	close OBYFH;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1378
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1379
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1380
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1381
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1382
# Substitution phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1383
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1384
# Handle the "define XXX YYY" lines, perform the substitutions.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1385
# Print out any ECHO lines or ERROR lines. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1386
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1387
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1388
# Predefined substitutions: 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1389
#   TODAY means todays' date
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1390
#   RIGHT_NOW means the exact time
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1391
#   EPOCROOT taken from the environment
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1392
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1393
sub substitution_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1394
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1395
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1396
		my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1397
		$substitutionData{"TODAY"} = sprintf("%02d/%02d/%04d", $mday, $mon+1, $year+1900);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1398
		$substitutionData{"RIGHT_NOW"} = sprintf("%02d/%02d/%04d %02d:%02d:%02d", $mday, $mon+1, $year+1900, $hour, $min, $sec);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1399
		$substitutionData{"EPOCROOT"} = $epocroot;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1400
		@substitutionOrder = ("TODAY", "RIGHT_NOW", "EPOCROOT");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1401
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1402
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1403
	my $temp1OBYFile = $thisdir."tmp1.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1404
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1405
	open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1406
	while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1407
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1408
		if(($line =~ /^\s*romsize\s*=/i) || ( $line=~ /^\s*rom_image/i) || ($line =~ /^\s*data_image/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1409
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1410
			$onlysmrimage = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1411
			last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1412
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1413
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1414
	close TMP1;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1415
	if ($enforceFeatureManager && (!$featuremanager) && (!$noFeatureManager) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1416
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1417
		my $defaultFeatureDbFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1418
		open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1419
		while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1420
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1421
			if ($line=~/^\s*defaultfeaturedb\s*=?\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1422
			{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1423
				# Get the default value for featuredatabasefile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1424
                
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1425
				$featureXml = "$epocroot$1";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1426
				$featureXml =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1427
				$featuremanager = 1;				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1428
				$defaultFeatureDbFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1429
				load_featuresutil();				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1430
				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1431
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1432
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1433
		close TMP1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1434
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1435
		if(!$defaultFeatureDbFlag && !$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1436
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1437
			print "Error: Neither option \"-fm|-nofm\" nor default value for featuredatabase file is provided.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1438
			exit(1);			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1439
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1440
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1441
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1442
	open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1443
	while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1444
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1445
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1446
		$line =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1447
609
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1448
		if ($prependepocroot)
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1449
		{
609
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1450
			my $tempstring = $epocroot."epoc32\/";
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1451
			if(($line !~ /^\s*\#/) && ($line =~ /\/epoc32\//i) 
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1452
			 && ($line !~ /EPOCROOT##\/?epoc32\//i) && ($line !~ /$tempstring/i))
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1453
			{
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1454
				print "add EPOCROOT for line: $line\n" if ($opt_v);
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1455
		  	$line =~ s-\/epoc32-EPOCROOT##epoc32-ig;
f76e0f94b7ab Minor change: update package_definition.xml
jjkang
parents: 607
diff changeset
  1456
			}
606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1457
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1458
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1459
		# Recognise keywords in lines that we process before substitution
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1460
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1461
		# # lineno "file" flagno
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1462
		# DEFINE name replacement-with-0-spaces
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1463
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1464
		if($line=~/^\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1465
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1466
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1467
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1468
		if ($line=~/^# (\d+) "(.*)" (\d+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1469
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1470
			push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1471
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1472
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1473
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1474
		if ($line=~/^\s*defaultfeaturedb\s*=?\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1475
		{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1476
			push @obydata, "REM $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1477
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1478
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1479
		#process the External tool invocation using IBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1480
		if ($line=~/externaltool=(.*),?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1481
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1482
			&externaltools::loadTools($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1483
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1484
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1485
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1486
		#Process the patch statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1487
		if($line =~ /^\s*patchdata\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1488
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1489
			$patchDataStmtFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1490
			my $new_line = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1491
 			# syntax "<DLLnamewithpath> addr <variableaddress> <variablesize> <newvalue>"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1492
 			# If the line matches with above syntax, just add the line into oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1493
 			if($new_line !~ /^\s*(\S+)\s+addr\s+(\S+)\s+(\S+)\s+(\S+)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1494
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1495
 				if(AddDllDataInfo($new_line))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1496
 				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1497
 					$line = "REM $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1498
 				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1499
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1500
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1501
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1502
		if($line =~ /^\s*FEATURE\s*(.*)/i || $line =~ /^\s*EXCLUDE_FEATURE\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1503
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1504
			# Process the feature keywords only when "-f|fr" or "-fm" is passed to buildrom
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1505
			if(defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1506
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1507
				push @obydata, "$line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1508
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1509
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1510
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1511
				push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1512
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1513
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1514
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1515
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1516
		if ($line=~/^\s*DEFINE\s+(\w+)\s+(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1517
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1518
			my $key=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1519
			my $value=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1520
			foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1521
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1522
				my $whatToSubstituteItWith=$substitutionData{$wordToSubstitute};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1523
				$value=~s/$wordToSubstitute/$whatToSubstituteItWith/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1524
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1525
			$value=~s/##//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1526
			if (defined $substitutionData{$key})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1527
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1528
				# If the key is redefined, apply it at the new position rather
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1529
				# than the old one.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1530
				push @obydata, "REM redefined $key as $value\n";# Leave a record of the definition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1531
				@substitutionOrder = grep !/^$key$/, @substitutionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1532
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1533
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1534
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1535
				push @obydata, "REM defined $key as $value\n";	# Leave a record of the definition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1536
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1537
			$substitutionData{$key}=$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1538
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1539
			foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1540
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1541
	   	        if ($key =~ /$wordToSubstitute/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1542
	   	        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1543
				   print_source_error("Warning: $key is masked by earlier definition of $wordToSubstitute");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1544
			 	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1545
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1546
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1547
			push @substitutionOrder, $key;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1548
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1549
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1550
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1551
		# Do the substitutions in strict order of definition, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1552
		# then eliminate any old-fashioned ## things which may be left
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1553
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1554
		foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1555
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1556
			my $whatToSubstituteItWith=$substitutionData{$wordToSubstitute};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1557
			$line=~s/$wordToSubstitute/$whatToSubstituteItWith/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1558
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1559
		$line=~s/##//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1560
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1561
		# Recognise keywords in lines that we process after substitution
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1562
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1563
		# ECHO  anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1564
		# WARNING anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1565
		# ERROR anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1566
		# LANGUAGE_CODE nnn
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1567
		# DEFAULT_LANGUAGE nnn
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1568
		# ABI_DOWNGRADE from to
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1569
		# ROMBUILD_OPTION command-line-option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1570
		# ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1571
		# PlatSecEnforceSysBin on|off
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1572
		# ENABLE_SPI/DISABLE_SPI
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1573
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1574
		if ($line=~/^\s*ECHO\s+(.*?)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1575
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1576
			print "$1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1577
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1578
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1579
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1580
		if ($line=~/^\s*(ERROR|WARNING)\s+(.*?)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1581
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1582
			print_source_error("$1 $2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1583
			$errors++ if ($1 =~ /ERROR/i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1584
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1585
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1586
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1587
		if ($line=~/^\s*(PlatSecEnforceSysBin)\s+(\S+)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1588
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1589
			$enforceSysBin = ($2 =~ /ON/i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1590
			push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1591
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1592
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1593
		if ($line=~/^\s*LANGUAGE_CODE\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1594
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1595
			my $code = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1596
			if ($code !~ /^\d\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1597
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1598
				print_source_error("bad language code $code");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1599
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1600
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1601
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1602
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1603
				$languageCodes{$code} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1604
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1605
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1606
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1607
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1608
		if ($line=~/^\s*DEFAULT_LANGUAGE\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1609
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1610
			my $code = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1611
			if ($code !~ /^\d\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1612
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1613
				print_source_error("bad default language code $code");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1614
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1615
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1616
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1617
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1618
				$defaultLanguageCode = $code;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1619
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1620
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1621
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1622
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1623
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1624
		if ($line=~/^\s*ABI_DOWNGRADE\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1625
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1626
			if ($line =~ /\s(.+)\s*->\s*(.+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1627
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1628
				$abiDowngrade = "$1 $2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1629
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1630
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1631
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1632
				print_source_error("bad ABI downgrade : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1633
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1634
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1635
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1636
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1637
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1638
		if ($line=~/^\s*BINARY_SELECTION_ORDER\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1639
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1640
	 		if ($line =~ /\s([^,]+)\s*,\s*(.+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1641
   			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1642
  				$binarySelectionOrderFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1643
 				$firstDIR = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1644
   				# remove whitespaces
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1645
 				$firstDIR = trim($firstDIR); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1646
   				@binarySelectionOrder = split(',', $2);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1647
   				@binarySelectionOrder = trim(@binarySelectionOrder);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1648
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1649
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1650
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1651
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1652
				print_source_error("bad order specified: $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1653
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1654
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1655
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1656
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1657
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1658
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1659
		if ($line=~/^\s*ROMBUILD_OPTION\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1660
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1661
			$rombuildOptions{$1} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1662
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1663
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1664
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1665
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1666
		if ($line=~/^\s*enable_spi\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1667
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1668
			if(!($spiset)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1669
				$createspi=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1670
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1671
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1672
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1673
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1674
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1675
		if ($line=~/^\s*disable_spi\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1676
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1677
			if(!($spiset)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1678
				$createspi=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1679
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1680
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1681
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1682
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1683
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1684
		if ($line=~/^\s*DATA_IMAGE\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1685
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1686
			if ($line =~ /\s+(\d+)\s+(\S+)\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1687
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1688
				my $datadriveidx = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1689
				my $datadriveimagename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1690
				# have a count on number of data drive images that needs to be created
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1691
				print "data drive partion name = $datadriveimagename\n " if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1692
				my $dataimagesize = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1693
				if ($line =~ /\s+size=(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1694
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1695
					$dataimagesize=$1; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1696
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1697
				my $fstype = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1698
				my $compress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1699
				my $uncompress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1700
				if ($line =~ /\s+compress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1701
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1702
					$compress=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1703
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1704
				elsif($line =~ /\s+uncompress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1705
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1706
					$uncompress=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1707
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1708
				if ($line =~ /\s+fat16\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1709
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1710
					$fstype = "fat16"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1711
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1712
				if ($line =~ /\s+fat32\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1713
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1714
					$fstype = "fat32"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1715
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1716
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1717
				$datadriveimage[$datadriveidx] = {name=>$datadriveimagename, size=>$dataimagesize, compress=>$compress, uncompress=>$uncompress, fstype=>$fstype};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1718
				print "DATA_IMAGE[$datadriveidx] $datadriveimage[$datadriveidx]{name} size=$datadriveimage[$datadriveidx]{size} compress=$compress uncompress=$uncompress fstype=$fstype\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1719
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1720
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1721
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1722
				print_source_error("bad DATA_IMAGE specification : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1723
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1724
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1725
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1726
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1727
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1728
		if ($line=~/^\s*ROM_IMAGE\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1729
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1730
			if ($line =~ /\s+(\d+)\s+(\S+)\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1731
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1732
				my $romidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1733
				my $rompartitionname=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1734
				my $rompartitionsize=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1735
				if ($line =~ /\s+size=(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1736
					{ $rompartitionsize=$1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1737
				my $xip=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1738
				my $compress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1739
				my $uncompress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1740
				my $extend=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1741
				my $composite="none";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1742
				if ($line =~ /\s+non-xip\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1743
					{ $xip=0; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1744
				if ($line =~ /\s+compress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1745
					{ $compress=1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1746
				elsif($line =~ /\s+uncompress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1747
					{ $uncompress=1;} # This option is passed to rofsbuild. For rombuild, not saying --compress means to uncompress
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1748
				if ($line =~ /\s+extension\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1749
					{ $extend=1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1750
				if ($line =~ /\s+composite_primary\s*/i) # added to support new composite_primary keyword in obey files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1751
				{	if (!($extend))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1752
						{ $composite="composite_primary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1753
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1754
						{ print "Error: composite_primary keyword must be used with a core image\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1755
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1756
				if ($line =~ /\s+composite_secondary\s*/i) # added to support new composite_secondary keyword in obey files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1757
				{ if (!($extend))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1758
						{ $composite="composite_secondary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1759
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1760
						{ print "Error: composite_secondary keyword must be used with core image\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1761
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1762
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1763
				#	Compress and Uncompress are 2 different options and
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1764
				#	not mentioning one of them doesn't necessarily mean the other.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1765
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1766
				$romimage[$romidx] = {name=>$rompartitionname, size=>$rompartitionsize, xip=>$xip, compress=>$compress, extension=>$extend, composite=>$composite, uncompress=>$uncompress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1767
				print "ROM_IMAGE[$romidx] $romimage[$romidx]{name} size=$romimage[$romidx]{size} xip=$xip compress=$compress extension=$extend composite=$composite uncompress=$uncompress \n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1768
				check_romimage($romidx, $line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1769
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1770
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1771
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1772
				print_source_error("bad ROM_IMAGE specification : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1773
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1774
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1775
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1776
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1777
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1778
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1779
		push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1780
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1781
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1782
	close TMP1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1783
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1784
	dump_obydata("tmp2.oby", "result of substitution phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1785
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1786
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1787
sub check_romimage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1788
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1789
	my ($idx, $line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1790
	if ($idx gt 7)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1791
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1792
		print_source_error("too many roms : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1793
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1794
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1795
	if ($romimage[$idx]{xip} eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1796
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1797
		if ($romimage[$idx]{size} eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1798
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1799
			print_source_error("must specify a size for non-xip ROM : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1800
			$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1801
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1802
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1803
	if ($romimage[$idx]{extension} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1804
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1805
		if ($romimage[$idx-1]{extension} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1806
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1807
			print_source_error("cannot extend ROM image multiple times : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1808
			$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1809
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1810
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1811
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1812
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1813
sub dump_obydata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1814
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1815
	my ($dumpfile, $comment) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1816
	$dumpfile = $thisdir.$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1817
	unlink($dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1818
	open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1819
	print "* Writing $dumpfile - $comment\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1820
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1821
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1822
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1823
		print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1824
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1825
	close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1826
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1827
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1828
sub track_source
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1829
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1830
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1831
	if ($line=~/^# (\d+) "(.*)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1832
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1833
		$sourceline=$1-1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1834
		$sourcefile=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1835
		$sourcefile=~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1836
		$sourcefile=~ s/\\/\//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1837
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1838
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1839
	$sourceline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1840
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1841
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1842
sub print_source_error
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1843
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1844
	my ($message) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1845
	print "$sourcefile($sourceline): $message\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1846
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1847
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1848
sub reassert_sourceline
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1849
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1850
	my ($offset) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1851
	return sprintf "# %d \"$sourcefile\" \n", $sourceline+1+$offset;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1852
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1853
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1854
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1855
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1856
# Reorganisation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1857
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1858
# Group lines beginning with "rom_image[<id>]" and deposit them in the appropriate
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1859
# order.  Truncate the description at the "stop" line, if there is one.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1860
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1861
sub reorganize_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1862
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1863
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1864
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1865
	my @section2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1866
	my @part3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1867
	my @part4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1868
	my @part5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1869
	my @part6;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1870
	my @part7;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1871
	my @part8;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1872
	my @partitions = ( \@newobydata, \@section2, \@part3, \@part4, \@part5, \@part6, \@part7, \@part8 );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1873
	my @currentpartition;	# partition stack
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1874
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1875
	my @processedImageIdx;		# list of proccesed data drive image index. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1876
	my $dataDriveStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1877
	my $dataDriveEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1878
	my $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1879
	my @datapartition;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1880
	my @linesArray;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1881
	my $curlyBraceShouldFollow;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1882
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1883
	my $collect_section2=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1884
	my $smrImageStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1885
	my $smrImageEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1886
	my $smrImageIndex = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1887
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1888
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1889
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1890
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1891
		if ($line=~/^\s*stop/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1892
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1893
			last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1894
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1895
		if ($line =~ /^\s*ROM_IMAGE\[(\S+)\]\s+\{(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1896
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1897
			# ROM_IMAGE[n] {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1898
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1899
			my $partition=$partitions[$idx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1900
			push @currentpartition, $partition;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1901
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1902
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1903
		elsif( ($line =~ /^\s*DATA_IMAGE\[(\S+)\]\s*$/i) || ($line =~ /^\s*DATA_IMAGE\[(\S+)\]\s*\{\s*$/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1904
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1905
			# DATA_IMAGE[n] or DATA_IMAGE[n] {  is specified.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1906
			# get the index.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1907
			$dataDriveIdx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1908
 			if($line !~ /\s*\{\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1909
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1910
 				$curlyBraceShouldFollow = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1911
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1912
			# make a check if dataDriveIdx exists in the processedImageIdx array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1913
			# if no, then push the dataDriveIdx on the processedImageIdx array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1914
			# if yes,then dont execute the loop.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1915
			if(&datadriveimage::checkInArray(\@processedImageIdx,$dataDriveIdx))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1916
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1917
				# push the index on to the array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1918
				push(@processedImageIdx,$dataDriveIdx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1919
				# increment the image count. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1920
				++$dataImageCount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1921
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1922
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1923
			$dataIndexHash{($dataImageCount-1)} = $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1924
			# set start of the image section.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1925
			$dataDriveStartRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1926
			# set end of image section to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1927
			$dataDriveEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1928
			push (@linesArray,"\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1929
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1930
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1931
		elsif( $line =~ /^\s*SMR_IMAGE\s*\{\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1932
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1933
			$smrImageStartRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1934
			$smrImageEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1935
			$needSmrImage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1936
			push (@linesArray, "\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1937
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1938
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1939
 		elsif((defined $curlyBraceShouldFollow) && ($line !~ /^\s*$/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1940
 		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1941
			undef $curlyBraceShouldFollow;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1942
 			if($line !~ /^\s*\{\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1943
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1944
 				print "Error: Symbol '{' not followed after the keyword DATA_IMAGE\[".$dataDriveIdx."\]\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1945
 				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1946
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1947
 			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1948
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1949
		# data drive specific keywords.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1950
		elsif( $line =~/^\s*dataimagename\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1951
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1952
			# set the name for the image, if image name is specified using driveimagename keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1953
			$datadriveimage[$dataDriveIdx]{name} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1954
			print"datadriveimagename = $datadriveimage[$dataDriveIdx]{name}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1955
			# skip the line.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1956
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1957
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1958
		elsif( $line =~/^\s*dataimagesize\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1959
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1960
			# set the size for the image, if image size is specified using driveimagesize keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1961
			$datadriveimage[$dataDriveIdx]{size} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1962
			print"datadriveimagesize = $datadriveimage[$dataDriveIdx]{size}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1963
			# skip the line.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1964
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1965
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1966
		elsif( $line =~/^\s*dataimagefilesystem\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1967
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1968
			# set the file system type for the image, if image file system is specified using dataimagefilesystem keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1969
			$datadriveimage[$dataDriveIdx]{fstype} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1970
			print"datadriveimagefstype = $datadriveimage[$dataDriveIdx]{fstype}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1971
			# skip the line.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1972
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1973
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1974
		elsif( $line =~/^\s*compress/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1975
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1976
			# Compresses the resulting data drive image using the Deflate, Huffman+LZ77 algorithm.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1977
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1978
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1979
				$datadriveimage[$dataDriveIdx]{compress} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1980
				$datadriveimage[$dataDriveIdx]{uncompress} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1981
				print"datadriveimage[$dataDriveIdx] compress = $datadriveimage[$dataDriveIdx]{compress}\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1982
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1983
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1984
		elsif( $line =~/^\s*uncompress/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1985
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1986
			# Uncompresses the resulting data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1987
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1988
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1989
				$datadriveimage[$dataDriveIdx]{uncompress} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1990
				$datadriveimage[$dataDriveIdx]{compress} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1991
				print"datadriveimage[$dataDriveIdx] uncompress = $datadriveimage[$dataDriveIdx]{uncompress}\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1992
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1993
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1994
		elsif ($line =~ /^\s*ROM_IMAGE\[(\S+)\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1995
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1996
			# ROM_IMAGE[n] file=...
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1997
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1998
			$line="$2\n";	# remove the ROM_IMAGE[.] keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1999
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2000
			my $partition=$partitions[$idx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2001
			push @$partition, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2002
			push @$partition, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2003
			$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2004
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2005
		elsif ($line =~ /^\s*DATA_IMAGE\[(\S+)\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2006
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2007
			# DATA_IMAGE[n] file=...
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2008
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2009
			# remove the DATA_IMAGE[.] keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2010
			$line="$2\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2011
			# get the index value
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2012
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2013
			# iterate through the hash to get corresponding 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2014
			# key from the value(i.e idx) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2015
			while (my($key, $value) = each(%dataIndexHash))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2016
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2017
				if ($value eq $idx ) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2018
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2019
					$idx = $key;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2020
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2021
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2022
			push @{$datapartition[$idx]}, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2023
			push @{$datapartition[$idx]}, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2024
			$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2025
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2026
		elsif ($line =~ /^\s*\}.*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2027
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2028
			if($dataDriveStartRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2029
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2030
				# since "}" brace is encountered
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2031
				# reset the start of DATA_IMAGE to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2032
				$dataDriveStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2033
				# mark the the end of the DATA_IMAGE.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2034
				$dataDriveEndRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2035
				if(!$datadriveimage[$dataDriveIdx]{name})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2036
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2037
					# image name is not defined, define a default name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2038
					$datadriveimage[$dataDriveIdx]{name} = "dataImage".$dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2039
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2040
				if(!$datadriveimage[$dataDriveIdx]{fstype})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2041
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2042
					# image name is not defined, define a default name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2043
					$datadriveimage[$dataDriveIdx]{fstype} = "fat16";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2044
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2045
				foreach my $file (@linesArray)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2046
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2047
					push @{$datapartition[($dataImageCount-1)]},$file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2048
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2049
				## if end of the DATA_IMAGE is true,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2050
				## make room for next DATA_IMAGE if any.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2051
				undef(@linesArray); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2052
				#un define $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2053
				undef($dataDriveIdx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2054
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2055
			elsif($smrImageStartRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2056
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2057
				$smrImageStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2058
				$smrImageEndRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2059
				foreach my $file (@linesArray)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2060
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2061
					push @{$smrPartitions{$smrImageIndex}}, $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2062
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2063
				undef(@linesArray);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2064
				$smrImageIndex++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2065
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2066
			elsif (scalar @currentpartition > 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2067
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2068
				pop @currentpartition; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2069
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2070
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2071
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2072
				print "WARNING: closing '}' found with no matching 'ROM_IMAGE[<n>]/DATA_IMAGE[<n>] {'\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2073
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2074
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2075
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2076
		elsif ($line=~/^\s*section2(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2077
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2078
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2079
			$line="$1\n";	# remove the section2 keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2080
			if ($collect_section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2081
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2082
				push @section2, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2083
				push @section2, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2084
				$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2085
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2086
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2087
		elsif ($line=~/^\s*section/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2088
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2089
			push @newobydata, $line;		# insert the section statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2090
			if (@section2 != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2091
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2092
				push @newobydata, "REM accumulated section2 lines\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2093
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2094
			foreach $line (@section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2095
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2096
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2097
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2098
			$collect_section2=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2099
			$line = reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2100
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2101
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2102
		elsif ($line=~/^\s*extensionrom/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2103
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2104
			# end of ROM description, so deposit accumulated lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2105
			if (@section2 != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2106
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2107
				push @newobydata, "REM accumulated section2 lines\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2108
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2109
			foreach $line (@section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2110
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2111
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2112
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2113
			$collect_section2=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2114
			push @newobydata, reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2115
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2116
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2117
		elsif ( scalar(@linesArray) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2118
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2119
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2120
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2121
				my $modifiedLine = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2122
				push @linesArray, $modifiedLine;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2123
				$line = "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2124
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2125
			elsif($smrImageStartRegion && !$smrImageEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2126
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2127
				if($line =~ /^\s*IMAGENAME\s*=\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2128
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2129
					my $smrimagename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2130
					$smrimagename =~s/(\.img)//i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2131
					if(exists($smrNameInfo{$smrimagename}))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2132
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2133
						$smrNameInfo{$smrimagename}++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2134
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2135
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2136
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2137
						$smrNameInfo{$smrimagename} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2138
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2139
					$line =~s/(\.img)//i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2140
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2141
				push @linesArray, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2142
				$line = "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2143
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2144
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2145
		elsif (scalar @currentpartition)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2146
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2147
			my $modifiedLine = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2148
			if ($line =~ /^\s*SPI_POSITION/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2149
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2150
				if(!($createspi && $spiplacement))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2151
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2152
					# comment the line if the spi placement flag is not enabled or if the spi creation is not enabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2153
					$modifiedLine = "REM SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2154
					print ("Warning: SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n" ) if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2155
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2156
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2157
			# a partition is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2158
			# push this line into the currently selected partition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2159
			my $partition=$currentpartition[-1];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2160
			push @$partition, $modifiedLine;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2161
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2162
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2163
		elsif ($line =~ /^\s*SPI_POSITION/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2164
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2165
			if(!($createspi && $spiplacement))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2166
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2167
                # comment the line if the spi placement flag is not enabled or if the spi creation is not enabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2168
                $line = "REM SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2169
                print ("Warning: SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n" ) if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2170
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2171
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2172
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2173
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2174
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2175
	# output the grouped data
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2176
	my $partitionidx=2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2177
	if ($collect_section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2178
		{ $partitionidx=1; } # output old "section2" if not done already
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2179
	for (; $partitionidx<8; $partitionidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2180
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2181
		my $partition=$partitions[$partitionidx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2182
		if (@$partition != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2183
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2184
			push @newobydata, "REM ROM_IMAGE[$partitionidx]\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2185
			foreach $line (@$partition)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2186
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2187
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2188
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2189
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2190
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2191
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2192
	for ( my $datapartitionidx=0; $datapartitionidx < $dataImageCount; $datapartitionidx++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2193
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2194
		if( defined( @{ $datapartition[$datapartitionidx] } ) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2195
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2196
			push @newobydata, "REM DATA_IMAGE[$dataIndexHash{$datapartitionidx}]\n" ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2197
			foreach my $file (@{$datapartition[$datapartitionidx]})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2198
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2199
				push @newobydata, $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2200
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2201
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2202
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2203
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2204
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2205
	foreach my $imageIndex (keys(%smrPartitions))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2206
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2207
		my $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2208
		my @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2209
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2210
		foreach (@{$smrPartitions{$imageIndex}})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2211
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2212
			if(/^\s*imagename\s*=\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2213
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2214
				$imagename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2215
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2216
			push @obeyfile, $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2217
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2218
		if($smrNameInfo{$imagename} == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2219
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2220
			push @obeyFileList, $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2221
			push @newobydata, "REM SMR_IMAGE \n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2222
			push @newobydata, @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2223
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2224
		if(! defined($imagename))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2225
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2226
			$smrNoImageName = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2227
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2228
		undef $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2229
		undef @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2230
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2231
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2232
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2233
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2234
	dump_obydata("tmp3.oby", "result of reorganisation phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2235
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2236
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2237
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2238
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2239
# Plugin phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2240
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2241
# Process any plugin annotation lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2242
# Note: This expands resource lines to include MULTI_LINGUIFY so must be done before
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2243
# the Multilinguify phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2244
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2245
# hash of SPI file target directories is located near the start of this file, before sub match_obyfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2246
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2247
sub plugin_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2248
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2249
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2250
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2251
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2252
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2253
	 	if ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2254
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2255
		# ignore REM statements, to avoid processing "REM ECOM_PLUGIN(xxx,yyy)"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2256
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2257
		elsif(plugin_match($line)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2258
			$line = reassert_sourceline();		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2259
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2260
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2261
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2262
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2263
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2264
	dump_obydata("tmp4.oby", "result of Plugin stage") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2265
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2266
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2267
sub plugin_match ()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2268
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2269
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2270
	foreach my $plugintype (keys(%plugintypes)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2271
	  if ($line =~ m/^.*__$plugintype\_PLUGIN\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2272
	  	# __<plugin-type>_PLUGIN(emulator directory, file rom dir, dataz_, resource rom dir, filename, resource filename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2273
	  {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2274
		    my $emulatorDir=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2275
		    my $fileRomDir=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2276
		    my $dataz_= $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2277
		    my $resourceDir=$4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2278
		    my $pluginFileName=$5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2279
		    my $pluginResourceName=$6;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2280
		    my $spidatahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2281
			my $paged_data = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2282
  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2283
			if ($line =~ m/paged\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2284
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2285
				$line =~ m/\s+(\S+)\s*$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2286
				$paged_data = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2287
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2288
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2289
		    if ($line =~ m/^\s*(_hide)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2290
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2291
		    	$spidatahide = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2292
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2293
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2294
		    # for resource files strip the .rsc or .dll from the end   (will be .dll where we use
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2295
		    # SYMBIAN_SECURE_ECOM and are building resources to  the same name as ecom plugin dlls)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2296
		    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2297
		    if ($pluginResourceName =~ m/^(.+)\./)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2298
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2299
		      $pluginResourceName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2300
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2301
		    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2302
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2303
		      print_source_error("Invalid Resource name: $pluginResourceName in " . $plugintype . "_PLUGIN :$line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2304
		      #treat as error if strict option selected;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2305
		      $errors++ if ($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2306
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2307
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2308
		    if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2309
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2310
			push @newobydata, "hide=$fileRomDir\/$pluginFileName\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2311
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2312
		    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2313
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2314
		    	push @newobydata, "file=$emulatorDir\/$pluginFileName $fileRomDir\/$pluginFileName $paged_data\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2315
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2316
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2317
		    if($createspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2318
		    	    if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2319
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2320
			    	push @newobydata, "spidatahide=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName) " . lc($plugintype) . "\.spi " . $plugintypes{$plugintype} . "\n";      
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2321
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2322
			    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2323
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2324
			    	push @newobydata, "spidata=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName) " . lc($plugintype) . "\.spi " . $plugintypes{$plugintype} . "\n";      
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2325
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2326
		  	} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2327
		    	    if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2328
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2329
			    	push @newobydata, "hide=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName)\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2330
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2331
			    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2332
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2333
			    	push @newobydata, "data=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName)\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2334
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2335
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2336
				return 1; #successful match
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2337
	   }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2338
     }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2339
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2340
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2341
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2342
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2343
# Multilinguify phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2344
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2345
# Process the MULTILINGUIFY() lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2346
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2347
sub multlinguify_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2348
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2349
	if ((scalar keys %languageCodes) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2350
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2351
		print "* No language codes specified, defaulting to 01\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2352
		$defaultLanguageCode = "01";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2353
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2354
	$languageCodes{$defaultLanguageCode} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2355
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2356
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2357
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2358
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2359
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2360
		if ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2361
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2362
			# ignore REM statements, to avoid processing "REM data=xxx yyy"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2363
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2364
		elsif ($line=~/^(.*?)\bMULTI_LINGUIFY\s*\(\s*(\S+)\s+(\S+)\s+(\S+)\s*\)(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2365
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2366
			my $initialStuff=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2367
			$initialStuff = lc ($initialStuff);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2368
			my $defaultFileNameExtension=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2369
			$defaultFileNameExtension = lc ($defaultFileNameExtension);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2370
			my $sourceFileNameWithoutExtension=$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2371
			$sourceFileNameWithoutExtension = ($sourceFileNameWithoutExtension);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2372
			my $targetFileNameWithoutExtension=$4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2373
			my $finalStuff=$5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2374
			my $spidataflag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2375
			my $spidatahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2376
			my $datahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2377
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2378
			if ($initialStuff=~/\w$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2379
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2380
				$initialStuff.=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2381
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2382
			if ($finalStuff=~/^\w/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2383
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2384
				$finalStuff=" ".$finalStuff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2385
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2386
			if ($initialStuff =~ /^\s*spidata/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2387
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2388
				$spidataflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2389
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2390
			if ($initialStuff =~ /^\s*spidatahide/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2391
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2392
				$spidataflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2393
				$spidatahide = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2394
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2395
			if ($initialStuff =~ /^\s*hide/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2396
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2397
				$datahide = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2398
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2399
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2400
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2401
# ecom.spi should contain the .RSC files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2402
			if ($spidataflag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2403
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2404
				my $sourceFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2405
				my $targetFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2406
				if (-e ("$sourceFileNameWithoutExtension.$sourceFileNameExtension"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2407
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2408
					if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2409
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2410
						push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension$finalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2411
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2412
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2413
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2414
						push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$targetFileNameExtension$finalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2415
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2416
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2417
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2418
			my $useDefaultFileNameExtension=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2419
			foreach my $languageCode (keys %languageCodes) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2420
				my $sourceFileNameExtension=$defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2421
				$sourceFileNameExtension=~s/^(.*).{2}$/$1$languageCode/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2422
				if (! -e ("$sourceFileNameWithoutExtension.$sourceFileNameExtension"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2423
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2424
					if (!$spidataflag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2425
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2426
						next if (!$useDefaultFileNameExtension);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2427
						next if (defined $defaultLanguageCode and !($languageCode eq $defaultLanguageCode));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2428
						$useDefaultFileNameExtension=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2429
						if (!$datahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2430
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2431
							print "Converting >$sourceFileNameWithoutExtension.$sourceFileNameExtension< to $defaultFileNameExtension\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2432
							$sourceFileNameExtension=$defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2433
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2434
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2435
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2436
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2437
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2438
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2439
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2440
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2441
				my $targetFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2442
# ecom.sNN should contain the corresponding language code .RNN files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2443
				if(!$spidataflag and (defined $defaultLanguageCode and ($languageCode eq $defaultLanguageCode)))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2444
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2445
					$targetFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2446
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2447
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2448
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2449
					$targetFileNameExtension = $sourceFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2450
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2451
				my $modifiedfinalStuff = $finalStuff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2452
				$modifiedfinalStuff =~ s/\.spi/\.s$languageCode/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2453
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2454
				if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2455
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2456
					push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2457
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2458
				elsif ($datahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2459
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2460
					push @newobydata, "$initialStuff$targetFileNameWithoutExtension.$targetFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2461
					if(!($sourceFileNameExtension eq $targetFileNameExtension))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2462
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2463
						push @newobydata, "$initialStuff$targetFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2464
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2465
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2466
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2467
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2468
					push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2469
					if(!($sourceFileNameExtension eq $targetFileNameExtension))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2470
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2471
						push @newobydata, "alias $targetFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$targetFileNameExtension $modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2472
						$targetFileNameWithoutExtension =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2473
						$multiLinguifyAlias{"$targetFileNameWithoutExtension.$sourceFileNameExtension"} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2474
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2475
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2476
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2477
			$line = reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2478
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2479
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2480
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2481
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2482
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2483
	dump_obydata("tmp5.oby", "result of choosing language-specific files") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2484
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2485
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2486
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2487
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2488
my @featurefilearray; #2d array storing names and locations of feature files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2489
my @featureslist; #array of hashes, stores all the features which are to go into the feature files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2490
my $featurefilecount=0; #counts number of feature files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2491
my $featurescount=0; #counts number of features
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2492
my $dir; # Stores the ROM image location of features.dat/featreg.cfg files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2493
my $featurefilename; # Stores the name of feature file to be generated(i.e. "features.dat" or "featreg.cfg")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2494
my @spiarray; #2d array storing names and locations of spi files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2495
my @datafiles; #array of hashes, stores all the data files which are to go into the spi files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2496
my @hidedatafiles; #array of hashes, stores all the data files which are to be hidden in the spi files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2497
my $spicount=0; #counts number of spi files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2498
my $filescount=0; #counts number of data files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2499
my $hidefilescount=0; #counts number of data files to be hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2500
my $romimage=0; #number of rom image currently working with
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2501
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2502
sub locateexisting 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2503
{ # if an SPI file of this type exists in a base image then returns name of SPI file from the array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2504
	my ($romimage, $spifile, $base) =@_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2505
	my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2506
	while(defined $spiarray[$base][$i]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2507
		if($spiarray[$base][$i]{spi} eq $spiarray[$romimage][$spifile]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2508
			my $spiname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2509
			my $spiextension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2510
			if($spiarray[$base][$i]{spifile} =~ /(.*)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2511
				$spiname=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2512
				$spiextension=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2513
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2514
			if(-e "$spiname-$base-$i\.$spiextension") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2515
					return "$spiname-$base-$i\.$spiextension";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2516
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2517
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2518
		$i++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2519
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2520
	return "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2521
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2522
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2523
sub create 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2524
{ #called to create SPI file and store in specified directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2525
	my ($romimage, $spifile, $base) =@_; #$romimage = current rom image number, $spifile = current spifile number, $base=number of rom image basing on
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2526
	my $existingspi = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2527
	if(defined($base)) { # checks core image for an existing SPI file of this type, if an existing file exists then $existingspi is set to -i<name of existing spi file> which will later be passed to spitool.pm
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2528
		$existingspi = locateexisting($romimage, $spifile, $base);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2529
		if($existingspi ne "") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2530
			$existingspi = "-i$existingspi";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2531
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2532
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2533
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2534
	if($spiarray[$romimage][$spifile]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2535
		my $targetspi="$1-$romimage-$spifile\.$2"; #add romimage number and identifier for spi file to spi file name to distinguish from other spi files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2536
		my @dataforspi; # array to store names of data files to include in spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2537
		my @hidedatainspi; # array to store names of data files that are to be hidden in spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2538
		for(my $k=0;$k<scalar @datafiles;$k++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2539
			if($datafiles[$k]{rom}==$romimage && $datafiles[$k]{spifile} == $spifile) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2540
				push @dataforspi, $datafiles[$k]{data}; #push name of data file onto array if correct romimage and spi type
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2541
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2542
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2543
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2544
		for(my $j=0;$j<scalar @hidedatafiles;$j++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2545
			if($hidedatafiles[$j]{rom}==$romimage && $hidedatafiles[$j]{spifile} == $spifile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2546
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2547
				push @hidedatainspi, $hidedatafiles[$j]{data}; #push name of data file to be hidden onto array if correct romimage and spi type
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2548
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2549
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2550
		my @spiargs; #arguments passed to createSpi
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2551
		push @spiargs, ("-t$targetspi", "-d$thisdir", "-hide@hidedatainspi");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2552
		if($existingspi ne "") { push @spiargs, $existingspi; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2553
		&spitool::createSpi(@spiargs, @dataforspi); # external call to 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2554
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2555
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2556
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2557
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2558
# SPI file creation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2559
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2560
# If SPI files for resource (.rsc) are required then creates SPI files for each ROM image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2561
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2562
sub spi_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2563
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2564
	my $composite_secondary=-1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2565
	if($createspi) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2566
		my $secondary=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2567
		for (my $i=1; $i<8; $i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2568
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2569
			if($romimage[$i]{composite} eq "composite_secondary") 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2570
				{ $secondary++; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2571
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2572
		if(!$secondary) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2573
			{ $romimage[0]{composite} = "composite_secondary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2574
		if($secondary>1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2575
			{ print "Warning, more than one composite_primary specified, using image with lowest ROM_IMAGE number\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2576
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2577
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2578
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2579
			if ($line=~/^\s*REM \s*ROM_IMAGE\[(\d)\]/) # specify which romimage following lines are part of
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2580
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2581
				$romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2582
				$spicount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2583
			}	elsif ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2584
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2585
				# ignore any other REM statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2586
			} elsif ($line=~/^\s*spidata\s*=\s*(\S+)\s+(\S+)\s+(\S+)\s(\S+)\s*$/)	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2587
				#spidata=\epoc32\data\Z\Resource\Plugins\Obexclasscontroller.RSC Resource\Plugins\Obexclasscontroller.RSC ecom.spi \private\10003a3f\
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2588
				my $targetspi=$4.$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2589
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2590
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2591
				for($i=0;$i<$spicount && $flag;$i++) { #loop to see if name of spi file already added to this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2592
					if($spiarray[$romimage][$i]{spi} eq $targetspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2593
						$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2594
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2595
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2596
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2597
				if($flag) { # adds spi file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2598
					$spiarray[$romimage][$spicount++]={spifile=>$3, spidir=>$4, spi=>$4.$3};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2599
					$i=$spicount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2600
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2601
					$datafiles[$filescount++]= {data=>$1, rom=>$romimage, spifile=>$i-1}; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2602
                        } elsif ($spiplacement && $line =~/^\s*SPI_POSITION/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2603
        			# mark the image index at which the SPI_POSITION keyword has occured in order to avoid writing duplicate
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2604
        			# entries of the spi file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2605
        			$spipositionflag{$romimage} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2606
        		} elsif ($line=~/^\s*spidatahide\s*=\s*(\S+)\s+(\S+)\s(\S+)\s*$/)	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2607
				#spidatahide=\epoc32\data\Z\Resource\Plugins\Obexclasscontroller.RSC ecom.spi \private\10003a3f\
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2608
				my $targetspi=$3.$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2609
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2610
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2611
				for($i=0;$i<$spicount && $flag;$i++) { #loop to see if name of spi file already added to this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2612
					if($spiarray[$romimage][$i]{spi} eq $targetspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2613
						$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2614
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2615
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2616
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2617
				if($flag) { # adds spi file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2618
					$spiarray[$romimage][$spicount++]={spifile=>$2, spidir=>$3, spi=>$3.$2};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2619
					$i=$spicount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2620
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2621
					$hidedatafiles[$hidefilescount++]= {data=>$1, rom=>$romimage, spifile=>$i-1}; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2622
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2623
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2624
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2625
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2626
		for(my $i=0;$i<8 && $composite_secondary<0;$i++) { # loop to set $composite_secondary value
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2627
			if($romimage[$i]{composite} eq "composite_secondary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2628
				$composite_secondary=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2629
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2630
		}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2631
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2632
		for(my $i=0;$i<8;$i++) { #loop to add any spi files to composite_primary roms which are present in composite_secondary rom. spi files in secondary ROMs must be present in primary ROMS, this check rules out the possibility of the spi file in the primary rom not being created because it has no data files to add
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2633
			if($romimage[$i]{composite} eq "composite_primary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2634
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2635
				while(defined $spiarray[$composite_secondary][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2636
					my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2637
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2638
					while(defined $spiarray[$i][$k] && $flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2639
						if($spiarray[$composite_secondary][$j]{spi} eq $spiarray[$i][$k]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2640
							$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2641
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2642
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2643
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2644
					if($flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2645
						$spiarray[$i][$k]{spifile}=$spiarray[$composite_secondary][$j]{spifile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2646
						$spiarray[$i][$k]{spidir}=$spiarray[$composite_secondary][$j]{spidir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2647
						$spiarray[$i][$k]{spi}=$spiarray[$composite_secondary][$j]{spi};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2648
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2649
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2650
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2651
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2652
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2653
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2654
		for(my $i=0;$i<8;$i++) { #loop to add any spi files to extension roms which are present in core rom, same situation as in previous loop could potentially occur here
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2655
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2656
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2657
				while(defined $spiarray[$i-1][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2658
					my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2659
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2660
					while(defined $spiarray[$i][$k] && $flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2661
						if($spiarray[$i-1][$j]{spi} eq $spiarray[$i][$k]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2662
							$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2663
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2664
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2665
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2666
					if($flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2667
						$spiarray[$i][$k]{spifile}=$spiarray[$i-1][$j]{spifile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2668
						$spiarray[$i][$k]{spidir}=$spiarray[$i-1][$j]{spidir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2669
						$spiarray[$i][$k]{spi}=$spiarray[$i-1][$j]{spi};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2670
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2671
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2672
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2673
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2674
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2675
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2676
		for(my $i=0;$i<scalar @spiarray;$i++) { #create SPI files for ROMs which are neither composite_primary nor extensions
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2677
			if(!($romimage[$i]{extension}) && $romimage[$i]{composite} ne "composite_primary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2678
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2679
				while(defined $spiarray[$i][$j]) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2680
					create($i,$j++);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2681
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2682
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2683
		}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2684
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2685
		for(my $i=0;$i<8;$i++) { #create SPI files for ROMs marked as composite_primary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2686
			if($romimage[$i]{composite} eq "composite_primary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2687
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2688
				while(defined $spiarray[$i][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2689
					create($i,$j++,$composite_secondary);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2690
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2691
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2692
		}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2693
		for(my $i=0;$i<8;$i++) { #create SPI files for ROMs marked as extension
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2694
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2695
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2696
				while(defined $spiarray[$i][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2697
					create($i,$j++,$i-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2698
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2699
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2700
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2701
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2702
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2703
		my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2704
        	my $imageIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2705
		foreach $line (@obydata) { #add SPI files to ROM image, adds lines to obey file to specify existing locations of SPI files and target locations.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2706
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2707
                        if($spiplacement){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2708
                                $flag = 0;	# Reset the flag since the spi file must be added to the final OBY only on finding SPI_POSITION 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2709
                                                        # keyword when the spiplacement flag is set. If the spiplacement flag is set but SPI_POSITION
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2710
                                                        # is not found in the oby files, then no spi entry is emitted.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2711
                                if($line =~ /^\s*SPI_POSITION/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2712
                                        next if (!$spipositionflag{$imageIdx});#This spi has already been entered into OBY.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2713
                                        my $spiIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2714
                                        while(defined $spiarray[$imageIdx][$spiIdx]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2715
                                                if($spiarray[$imageIdx][$spiIdx]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2716
                                                        my $targetspi="$1-$imageIdx-$spiIdx\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2717
                                                        push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[$imageIdx][$spiIdx]{spi} . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2718
                                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2719
                                                $spiIdx++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2720
                                        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2721
                                        if($spiIdx == 0){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2722
                                                # If there is no plugin in this image, the SPI_POSITION statement is ignore.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2723
                                                print ("Warning: statement SPI_POSTION ignored as no plugin was found at ROM_IMAGE[${imageIdx}]\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2724
                                        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2725
                                        $spipositionflag{$imageIdx} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2726
                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2727
                                elsif( $line =~ /REM ROM_IMAGE\[(\d)\]/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2728
                                        $imageIdx = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2729
                                        push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2730
                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2731
                                elsif($line =~ /^\s*spidata/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2732
                                } else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2733
                                        push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2734
                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2735
                        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2736
			elsif($line =~/REM ROM_IMAGE\[(\d)\]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2737
				my $romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2738
				if($flag) { #put in SPI files for ROM_IMAGE[0]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2739
					$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2740
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2741
					while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2742
						if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2743
							my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2744
							push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi .  "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2745
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2746
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2747
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2748
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2749
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2750
				push @newobydata, "\n" . $line . "\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2751
				while(defined $spiarray[$romimage][$j]) { #put in SPI files for current ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2752
					if($spiarray[$romimage][$j]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2753
						my $targetspi="$1-$romimage-$j\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2754
						push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[$romimage][$j]{spidir} . $targetspi .  "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2755
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2756
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2757
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2758
			} elsif($line =~ /^\s*extensionrom/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2759
				if($flag) { #put in SPI files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2760
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2761
					while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2762
						if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2763
							my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2764
							push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2765
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2766
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2767
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2768
					$flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2769
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2770
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2771
			} elsif($line =~ /^\s*spidata/i) {;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2772
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2773
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2774
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2775
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2776
		if($flag) { #put in SPI files for ROM_IMAGE[0] if it is the only ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2777
			my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2778
			while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2779
				if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2780
					my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2781
					push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2782
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2783
				$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2784
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2785
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2786
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2787
	}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2788
	dump_obydata("tmp6.oby", "result of SPI stage") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2789
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2790
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2791
sub load_featuresutil
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2792
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2793
	&FlexLoad_ModuleL("featuresutil");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2794
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2795
	# Parse the feature database XML file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2796
	if(!&featuresutil::parseXMLDatabase($featureXml, $featuremanager, $strict))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2797
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2798
		$featureXml = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2799
		exit(1) if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2800
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2801
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2802
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2803
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2804
# Feature registry configuration file/Features data file generation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2805
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2806
# If feature registry configuration files/features data files are required then creates these files for
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2807
# each ROM/ROFS image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2808
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2809
sub featurefile_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2810
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2811
	if($onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2812
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2813
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2814
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2815
	# Set the name and Rom Image location of feature file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2816
	if ($enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2817
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2818
		# features data file location
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2819
		$dir = "private\/10205054\/";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2820
		$featurefilename = "features.dat";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2821
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2822
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2823
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2824
		# feature registry configuration file location
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2825
		$dir = "private\/102744CA\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2826
		$featurefilename = "featreg.cfg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2827
	}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2828
	if (defined ($featureXml)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2829
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2830
		my $featurefilecount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2831
		my $romimage=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2832
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2833
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2834
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2835
			# specify which romimage following lines are part of
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2836
			if ($line=~/^\s*REM \s*ROM_IMAGE\[(\d)\]/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2837
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2838
				$romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2839
				$featurefilecount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2840
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2841
			elsif ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2842
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2843
				# ignore any other REM statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2844
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2845
			elsif($line =~ /^\s*(FEATURE)\s*(\S*)\s*(.*)/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2846
					|| $line =~ /^\s*(EXCLUDE_FEATURE)\s*(\S*)\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2847
			{				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2848
				# FEATURE  <feature_name>  [ SF  <status falgs> ] [ UD  <user data> ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2849
				my $feature = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2850
				my $featurevalue = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2851
				my $featureargs = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2852
				my $reservedbit = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2853
				my %featureflags=();				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2854
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2855
				# Options 'SF' and 'UD' will be supported only for "-fm" option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2856
				if ($featuremanager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2857
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2858
					# [ SF  <status falgs> ] [ UD  <user data> ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2859
					$featureargs =~	/(\S*)\s*(\S*)\s*(\S*)\s*(\S*)\s*/ ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2860
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2861
					# Store the values of 'SF' and 'UD', or any invalid option, if provided					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2862
					if ($1) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2863
					{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2864
						$featureflags{uc($1)} = $2;						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2865
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2866
					if ($3) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2867
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2868
						$featureflags{uc($3)} = $4;									
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2869
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2870
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2871
					# Generate a warning if the option provided with Feature/Exclude_Feature keyword is  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2872
					# not 'SF' or 'UD'.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2873
					foreach my $Key (keys %featureflags)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2874
					{						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2875
						if ($Key !~ /^(SF|UD)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2876
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2877
							print "Warning: Invalid argument \"$Key\" specified for feature $featurevalue\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2878
							delete $featureflags{$Key};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2879
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2880
						}						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2881
					}							
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2882
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2883
				# In verbose mode, generate warning if "SF|UD" arguments or invalid arguments are specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2884
				# for "-f|fr" option.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2885
				elsif ($featureargs && $opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2886
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2887
					print "Invalid argument(s) \"$featureargs\" provided for feature \"$featurevalue\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2888
					foreach my $Key (keys %featureflags)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2889
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2890
						delete $featureflags{$Key};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2891
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2892
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2893
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2894
				# The feature file name is of the format featreg.cfg[x-y] or features.dat[x-y] 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2895
				# where x is the romimage id, y is always 0, reserved for future use.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2896
				my $targetfeaturefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2897
				if (($romimage == 0) && ($reservedbit == 0))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2898
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2899
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2900
					# Core image will not have the mangled name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2901
				 	$targetfeaturefile = $featurefilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2902
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2903
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2904
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2905
				 	$targetfeaturefile = $featurefilename . "\[". $romimage . "\-$reservedbit\]";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2906
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2907
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2908
				my $featureflag;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2909
				if ($feature =~ /^FEATURE$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2910
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2911
					$featureflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2912
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2913
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2914
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2915
					$featureflag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2916
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2917
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2918
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2919
 				# loop to see if name of feature file already added to this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2920
				for($i=0;$i<$featurefilecount && $flag;$i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2921
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2922
					if($featurefilearray[$romimage][$i]{cfgfile} eq $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2923
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2924
						$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2925
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2926
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2927
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2928
				if($flag) { # adds feature file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2929
					$featurefilearray[$romimage][$featurefilecount++]={cfgfile=>$targetfeaturefile, cfgdir=>$dir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2930
					$i=$featurefilecount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2931
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2932
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2933
				$featureslist[$featurescount]= {feature=>$featurevalue, include=>$featureflag, rom=>$romimage, cfgfile=>$i-1};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2934
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2935
				# Store the value of 'SF' in 'featureslist' array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2936
				if (defined $featureflags{SF}) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2937
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2938
					$featureslist[$featurescount]->{SF} = $featureflags{SF};						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2939
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2940
				# Store the value of 'UD' in 'featureslist' array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2941
				if (defined $featureflags{UD}) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2942
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2943
					$featureslist[$featurescount]->{UD} = $featureflags{UD};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2944
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2945
				$featurescount++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2946
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2947
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2948
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2949
		# Create Feature File
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2950
		for(my $i=0;$i<scalar @featurefilearray;$i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2951
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2952
			my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2953
			while(defined $featurefilearray[$i][$j])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2954
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2955
				my $targetfeaturefile = $thisdir.$featurefilearray[$i][$j]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2956
				if (!(&featuresutil::createFeatureFile($i,$j,$targetfeaturefile,\@featureslist,$featuremanager))) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2957
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2958
					$featurefilearray[$i][$j]{cfgfile}= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2959
					exit(1) if($strict);					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2960
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2961
				$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2962
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2963
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2964
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2965
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2966
		my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2967
        	my $imageIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2968
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2969
		# Add feature files to ROM image, adds lines to obey file to specify existing locations
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2970
		# of feature files and target locations.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2971
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2972
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2973
			if($line =~/REM ROM_IMAGE\[(\d)\]/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2974
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2975
				my $romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2976
				if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2977
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2978
					# Put in feature files for ROM_IMAGE[0]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2979
					$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2980
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2981
					while(defined $featurefilearray[0][$k])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2982
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2983
						my $targetfeaturefile=$featurefilearray[0][$k]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2984
						if (defined $targetfeaturefile) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2985
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2986
							push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[0][$k]{cfgdir} . $targetfeaturefile .  "\"\n";							
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2987
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2988
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2989
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2990
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2991
				push @newobydata, "\n" . $line . "\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2992
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2993
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2994
				while(defined $featurefilearray[$romimage][$j])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2995
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2996
					# Put in feature files for current ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2997
					my $targetfeaturefile=$featurefilearray[$romimage][$j]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2998
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2999
					# Rom images will not have mangled name for feature files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3000
				 	my $destinationfeaturefile = $featurefilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3001
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3002
					# Rofsbuild will set attribute 'exattrib=U' in the entry record when this field is used.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3003
					# File Server when asked for a directory listing would notice the attribute and will return the 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3004
					# list with mangled names. Hence, mangled name for feature files should not be put in ROM_IMAGE.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3005
					my $exattribute = "exattrib=U";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3006
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3007
					if (defined $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3008
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3009
						push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[$romimage][$j]{cfgdir} . $destinationfeaturefile .  "\"\t\t" . $exattribute . "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3010
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3011
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3012
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3013
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3014
			elsif($line !~ /^\s*(FEATURE)\s*/i && $line !~ /^\s*(EXCLUDE_FEATURE)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3015
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3016
				# Put in all other lines except the FEATURE and EXCLUDE_FEATURE keywords
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3017
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3018
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3019
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3020
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3021
		if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3022
		{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3023
			# Put in feature files for ROM_IMAGE[0] if it is the only ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3024
			my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3025
			while(defined $featurefilearray[0][$k])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3026
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3027
				my $targetfeaturefile = $featurefilearray[0][$k]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3028
				if (defined $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3029
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3030
					push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[0][$k]{cfgdir} . $targetfeaturefile . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3031
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3032
				$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3033
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3034
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3035
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3036
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3037
	elsif ($enforceFeatureManager && $noFeatureManager && $preBuiltFeaturesDataFile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3038
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3039
        print "Valid: $preBuiltFeaturesDataFile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3040
		if (-e $preBuiltFeaturesDataFile) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3041
		{			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3042
			my @newobydata = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3043
			my $flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3044
			foreach my $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3045
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3046
				# Put in the pre-built features data file in ROM_IMAGE[0] 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3047
				if($line =~/REM ROM_IMAGE\[1\]/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3048
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3049
					push @newobydata, "data=$preBuiltFeaturesDataFile" . " \"" . $dir . $featurefilename . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3050
					$flag =0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3051
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3052
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3053
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3054
			if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3055
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3056
				# Put in the pre-built features data file in ROM_IMAGE[0] if it is the only ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3057
				push @newobydata, "data=$preBuiltFeaturesDataFile" . " \"" . $dir . $featurefilename . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3058
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3059
			@obydata =  @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3060
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3061
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3062
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3063
			print "Error: File \"$preBuiltFeaturesDataFile\" doesn't exist.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3064
			exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3065
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3066
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3067
	elsif ($enforceFeatureManager)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3068
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3069
	    print "Error: no feature data file or pre-built feature data file is provided!";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3070
	    exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3071
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3072
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3073
	checkcase() if ($checkcase);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3074
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3075
my ($fromABI,$toABI) = split / /,$abiDowngrade;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3076
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3077
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3078
# Problem suppression phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3079
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3080
# Downgrade files which don't exist for the ABI (if a downgrade path is specified)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3081
# Comment out missing files or report errors if strict option enabled
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3082
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3083
# Detect any references to Feature Variant binaries and substitute in the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3084
# correct source binary name using the VMAP file mechanism.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3085
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3086
sub suppress_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3087
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3088
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3089
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3090
	init_plat($PerlEPOCPath);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3091
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3092
	# use the "default" feature variant by default.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3093
	my $varname = $featureVariant{'VALID'} ? $featureVariant{'NAME'} : "default";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3094
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3095
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3096
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3097
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3098
		if ($line =~ /^\s*REM/i || $line =~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3099
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3100
			# ignore REM statements, to avoid processing "REM data=xxx yyy"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3101
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3102
		# 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3103
		# thing=some\file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3104
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3105
		elsif ($line =~ /(\S+)\s*=\s*"?(\S+[\/\\]\S+)"?/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3106
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3107
			my $what = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3108
			my $filename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3109
			if ($line =~ /(\S+)\s*=\s*"([^"]+)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3110
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3111
				$filename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3112
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3113
			my $normedFilename = &get_versionedname($filename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3114
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3115
			# find all the alternative file locations
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3116
			my @alternatives = fallback($normedFilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3117
			# test the original location first
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3118
			unshift(@alternatives, $normedFilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3119
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3120
			# choose the first file location that actually exists
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3121
			my $fileExists = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3122
			foreach my $altFile (@alternatives)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3123
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3124
			    my $tmpPath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3125
			    my $tmpFile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3126
				if($altFile =~ /"?(.*[\/\\]arm\w+_?\w+)[\/\\]([^"]+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3127
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3128
					$tmpPath = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3129
					$tmpFile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3130
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3131
				$tmpPath .= "\.$varname";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3132
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3133
				if (-e $tmpPath ."\/$tmpFile"){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3134
                  # SBSv2 variant binary exists
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3135
				  $fileExists = $tmpPath . "\/$tmpFile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3136
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3137
				else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3138
                  # SBSv1 variant binary or invariant binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3139
				  $fileExists = get_BVbinname($altFile, $varname);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3140
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3141
				last if $fileExists;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3142
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3143
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3144
			# edit the OBY line to use the actual file name which we found.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3145
			# (maybe) warn if an alternative to the original was selected.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3146
			if ($fileExists)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3147
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3148
				my $from = $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3149
				$from =~ s/\\/\\\\/g;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3150
				$from =~ s/\//\\\//g;		# need to escape backslashes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3151
				$from =~ s/(\[|\])/\\$1/g;	# need to escape square brackets for file names like "featreg.cfg[x-y]",etc.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3152
				my $into = $fileExists;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3153
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3154
 				$line =~ s/$from/$into/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3155
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3156
 				if ($warnSelection && ($fileExists ne $normedFilename))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3157
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3158
			    	print "replaced $filename with $fileExists\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3159
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3160
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3161
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3162
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3163
   				# No suitable alternative was found, so comment out the line unless
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3164
				# it is a manatory ROMBUILD keyword, in which case it is better
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3165
				# to let ROMBUILD report the missing file rather than report the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3166
				# missing keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3167
   				if ($what !~ /^bootbinary|variant|primary|secondary|hide|dir/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3168
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3169
   					$line = "REM MISSING " . $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3170
   					print_source_error("Missing file: '$filename' in statement '$what='");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3171
					print "\ttried @alternatives\n"  if ($opt_v && @alternatives > 1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3172
   					# treat as an error if the strict option is selected.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3173
   					$errors++ if ($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3174
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3175
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3176
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3177
			# Once the binary is located in the appropriate ABI directory (e.g.,following the binary 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3178
			# selection order), check if the binary has been used in a patch dll statement. This is
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3179
			# required to find out the source file. In ABIv1, the source file is required to find the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3180
			# .map file, while, in ABIv2, the destination file gives the dso file name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3181
			if($line =~ /(\S+)\s*=\s*(\S+)\s+(\S+)\s*(.*)?/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3182
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3183
				my $aSrcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3184
				my $dstFile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3185
				my $dstPath = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3186
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3187
				if($aSrcfile =~ /"?([^"]+)/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3188
				$aSrcfile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3189
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3190
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3191
				$aSrcfile = &get_versionedname($aSrcfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3192
				if($dstFile =~ /"?(.*)[\/\\]([^"]+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3193
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3194
					$dstPath = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3195
					$dstFile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3196
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3197
				my $dllMapKey = lc ($dstFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3198
				if(exists $DllDataMap{$dllMapKey}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3199
					my $dllSymInfo = \%{$DllDataMap{$dllMapKey}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3200
					$dllSymInfo->{srcfile} = $aSrcfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3201
					$dllSymInfo->{dstpath} = $dstPath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3202
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3203
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3204
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3205
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3206
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3207
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3208
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3209
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3210
	dump_obydata("tmp7.oby", "result of problem-suppression phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3211
	die "ERROR: $errors missing file(s) detected\n" if ($strict && $errors );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3212
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3213
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3214
# Remove leading and trailing whitespaces from a list of strings or a single string
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3215
sub trim 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3216
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3217
	my @out = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3218
	for (@out) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3219
		s/^\s+//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3220
		s/\s+$//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3221
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3222
	return wantarray ? @out : $out[0];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3223
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3224
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3225
# Generate a list of alternative locations for the given filename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3226
sub fallback
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3227
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3228
   	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3229
   	my @alternatives = CheckCustomization($file);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3230
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3231
 	# If BINARY_SELECTION_ORDER macro is specified in the oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3232
 	if ($binarySelectionOrderFlag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3233
   	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3234
 		# Search in the specified binary order 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3235
 		if(scalar(@Global_PlatList) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3236
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3237
			@Global_PlatList = get_platlist();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3238
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3239
 		my $b;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3240
 		my $e;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3241
 		foreach my $plat (@Global_PlatList) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3242
  		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3243
  			if ($file =~ /^(.*)[\/\\]$plat[\/\\](.*)$/i) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3244
  			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3245
  				$b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3246
  				$e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3247
 				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3248
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3249
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3250
 		push(@alternatives, "$b\/$firstDIR\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3251
 			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3252
 		foreach my $toDIR (@binarySelectionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3253
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3254
 			push(@alternatives, "$b\/$toDIR\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3255
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3256
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3257
  	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3258
 	# If the file is not found in the specified ABIV2 platform, then select from armv5 directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3259
 	# This is necessary as some of the runtime DLLs will be present only in armv5 directory. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3260
	# Add the BPABI Platforms to be added
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3261
	if(scalar(@Global_BPABIPlats) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3262
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3263
		@Global_BPABIPlats = &get_bpabiplatlist;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3264
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3265
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3266
 	foreach my $BpabiPlat (@Global_BPABIPlats)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3267
 	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3268
 		if ($fromABI eq "" && $file =~ /^(.*)[\/\\]$BpabiPlat[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3269
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3270
 			push(@alternatives, "$1\/armv5\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3271
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3272
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3273
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3274
	if ($customizedPlat && $fromABI eq "" && $file =~ /^(.*)[\/\\]$customizedPlat[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3275
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3276
		my $b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3277
		my $e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3278
		# if platform customization 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3279
		my $rootPlat = get_platroot($customizedPlat);		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3280
        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3281
   		#Check in ARMV7 folder for binaries in case GCCEV7 is used [DEF128457 ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3282
   		if($customizedPlat == "GCCEV7")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3283
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3284
   			push(@alternatives,"$b\/armv7\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3285
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3286
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3287
		if( grep /$rootPlat/, @Global_BPABIPlats)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3288
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3289
 			push(@alternatives, "$b\/armv5\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3290
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3291
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3292
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3293
	if ($fromABI eq "" && $file =~ /^(.*)[\/\\]armv5_abiv1[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3294
   	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3295
 		push(@alternatives, "$1\/armv5\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3296
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3297
  		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3298
   	if ($fromABI ne "" && $file =~ /^(.*)[\/\\]$fromABI[\/\\](.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3299
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3300
 		push(@alternatives, "$1\/$toABI\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3301
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3302
   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3303
   	return @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3304
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3305
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3306
# Generate a list of alternative locations for the given filename which
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3307
# result from the possible platform customizations.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3308
sub CheckCustomization
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3309
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3310
 	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3311
 	my @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3312
	$customizedPlat = undef;	# global (used in feedback)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3313
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3314
 	if(scalar(@Global_PlatList) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3315
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3316
		@Global_PlatList = get_platlist();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3317
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3318
 	foreach my $plat (@Global_PlatList) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3319
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3320
 		if ($file =~ /^(.*)[\/\\]$plat[\/\\](.*)$/i) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3321
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3322
 			my $b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3323
 			my $e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3324
 			my $root = get_platcustomizes($plat);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3325
 			if ($root) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3326
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3327
				# Preserve the plat that is customized
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3328
				$customizedPlat = $plat;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3329
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3330
				# If a BSF platform customizes another BSF platform (i.e. a
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3331
				# BSF hierarchy exists), look for the file starting from the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3332
				# child BSF platform and working back to the root BSF platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3333
				while ($root)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3334
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3335
					push(@alternatives, "$b\/$root\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3336
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3337
					# Temporary special case for armv5_abiv1 and armv5_abiv2
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3338
					if ($root =~ /^armv5_abiv[12]$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3339
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3340
						push(@alternatives, "$b\/armv5\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3341
 					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3342
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3343
					$root = get_platcustomizes($root);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3344
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3345
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3346
			return @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3347
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3348
 	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3349
	return @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3350
}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3351
   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3352
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3353
# Bitmap and aif conversion phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3354
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3355
# Convert any "bitmap=" or "compressed-bitmap=" files into ROM format bitmaps
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3356
# Convert any "auto-bitmap=" to handle bitmap appropriately for xip and non-xip images
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3357
# Convert "aif=" files appropriately for xip and non-xip images
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3358
sub bitmap_aif_converison_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3359
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3360
	my $is_xip=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3361
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3362
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3363
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3364
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3365
		# keep track of the XIP-ness of this rom partition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3366
		if ($line =~ /^\s*REM ROM_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3367
		{ $is_xip=$romimage[$1]{xip}; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3368
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3369
		# aif=source dest 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3370
		# include aif file - use XIP version for XIP roms if it exists, otherwise use the file specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3371
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3372
		if ($line =~ /^\s*aif=/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3373
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3374
			my $xip="_xip";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3375
			my @aif= split(/\s+/,$line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3376
			my $path=Path_Split('Path',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3377
			my $base=Path_Split('Base',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3378
			$path =~ s/^....//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3379
			my $ext=Path_Split('Ext',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3380
			if ($is_xip && (-e "$path$base$xip$ext"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3381
			{ $line="data=$path$base$xip$ext\t\t$aif[1]\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3382
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3383
			{ $line="data=$path$base$ext\t\t$aif[1]\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3384
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3385
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3386
		# auto-bitmap=
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3387
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3388
		# if currently in XIP image, then use a compressed-bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3389
		# otherwise use a RAM format bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3390
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3391
		if ($line =~ /^\s*auto-bitmap=/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3392
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3393
			if ($is_xip)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3394
			{ $line =~ s/auto-bitmap=/compressed-bitmap=/i }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3395
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3396
			{ $line =~ s/auto-bitmap=/data=/i }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3397
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3398
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3399
		# uncompressed-bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3400
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3401
		# this is currently just a synonym for 'bitmap'
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3402
		$line =~ s/uncompressed-bitmap=/bitmap=/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3403
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3404
		# 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3405
		# bitmap=source dest 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3406
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3407
		if ($line =~ /^\s*bitmap=\s*"?(\S+)"?\s+"?(\S+)"?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3408
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3409
			my $mbm = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3410
			my $dest = $2;            
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3411
			my $rom_mbm = "$1_rom";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3412
			if ($is_xip eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3413
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3414
				# non-XIP rom - just include the mbm file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3415
				$line = "data=\"$mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3416
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3417
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3418
			{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3419
		        if (! -e $rom_mbm || -M $rom_mbm >= -M $mbm)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3420
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3421
					is_existinpath("bmconv", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3422
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3423
                    my $rom_mbm_tmp = $rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3424
                    my $mbm_tmp = $mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3425
                    if ($^O =~ /^MSWIN32$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3426
                        $mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3427
                        $rom_mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3428
                    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3429
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3430
				    system "bmconv -q -r $rom_mbm_tmp -m$mbm_tmp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3431
	  		    my $bmconv_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3432
				    die "* bmconv failed\n" if ($bmconv_status != 0 || !-f $rom_mbm);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3433
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3434
				$line = "data=\"$rom_mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3435
				push @tempfiles, $rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3436
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3437
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3438
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3439
		# compressed-bitmap=
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3440
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3441
		# if file is a compressed ROM image file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3442
		elsif ($line =~ /^\s*compressed-bitmap=\s*"?(\S+)"?\s+"?(\S+)"?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3443
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3444
			my $mbm = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3445
			my $dest = $2;            
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3446
			my $cmprssd_rom_mbm = "$1_rom";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3447
			if ($is_xip eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3448
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3449
				# non-XIP rom - just include the mbm file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3450
				$line = "data=\"$mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3451
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3452
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3453
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3454
				if (! -e $cmprssd_rom_mbm || -M $cmprssd_rom_mbm >= -M $mbm)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3455
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3456
					is_existinpath("bmconv", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3457
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3458
                    my $cmprssd_rom_mbm_tmp = $cmprssd_rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3459
                    my $mbm_tmp = $mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3460
                    if ($^O =~ /^MSWIN32$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3461
                        $mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3462
                        $cmprssd_rom_mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3463
                    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3464
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3465
				    system "bmconv -q -s $cmprssd_rom_mbm_tmp -m$mbm_tmp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3466
				    my $bmconv_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3467
				    die "* bmconv failed\n" if ($bmconv_status != 0 || !-f $cmprssd_rom_mbm);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3468
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3469
				$line = "data=\"$cmprssd_rom_mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3470
				push @tempfiles, $cmprssd_rom_mbm;			    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3471
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3472
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3473
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3474
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3475
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3476
	dump_obydata("tmp8.oby", "result of bitmap conversion phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3477
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3478
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3479
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3480
sub reformat_line($)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3481
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3482
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3483
	my $type = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3484
	my $variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3485
	my $pcfile = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3486
	my $romfile = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3487
	my $tail = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3488
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3489
	# time=21/07/1999 12:00:00
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3490
	# primary[0x09080004]   =\epoc32\release\misa\udeb\ekern.exe
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3491
	# data=\epoc32\wins\C\System\Alarms\churchbell.snd    "System\Alarms\Church bell"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3492
	# file[0x07060001]=\epoc32\release\MAWD\urel\cAkyb1.dll          System\Libs\EKeyb.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3493
	# file=\epoc32\release\marm\urel\eikcore.dll 			System\Libs\Eikcore.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3494
	# alias \System\Bin\DRTRVCT2_2.dll 			\System\Bin\DRTRVCT2_1.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3495
	#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3496
	$line =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3497
	if ($line =~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3498
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3499
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3500
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3501
  	elsif($line =~ /^\s*volume\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3502
  	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3503
  		return $line;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3504
  	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3505
	elsif($line =~ /^\s*kerneltrace\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3506
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3507
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3508
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3509
	elsif($line =~ /^\s*dir\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3510
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3511
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3512
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3513
	elsif($line =~ /^\s*bootbinary\s*=(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3514
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3515
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3516
	if ($line =~ /^\s*(\S+)\s*=\s*(\S+)\s+"\/?(.*)"(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3517
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3518
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3519
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3520
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3521
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3522
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3523
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3524
	elsif ($line =~ /^\s*(\S+)(\[\S+\])\s*=\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3525
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3526
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3527
		$variant = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3528
		$pcfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3529
		$romfile = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3530
		$tail = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3531
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3532
	elsif ($line =~ /(\S+)\s*=\s*"([^"]+)"\s+"\/?(.*)"(.*)$/ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3533
			|| $line =~ /(\S+)\s*=\s*"([^"]+)"\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3534
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3535
		if ($line !~ /^REM MISSING/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3536
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3537
			$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3538
			$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3539
			$pcfile = "\"$2\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3540
			$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3541
			$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3542
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3543
		else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3544
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3545
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3546
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3547
	elsif ($line =~ /^\s*(\S+)\s*=\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3548
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3549
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3550
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3551
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3552
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3553
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3554
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3555
	elsif($line =~ /^\s*(patchdata)\s*(\S+)\s*\@\s*(\S+)\s+(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3556
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3557
		# Reformat the patchdata statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3558
		my $romfilename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3559
		my $patchdlldatamap_key = lc ($romfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3560
		my $symbolname = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3561
		my $value = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3562
		my ($index, $elementSize);		# For when the symbol is an array, and we're patching one element
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3563
		my $scalarSize;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3564
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3565
		if(!defined $DllDataMap{$patchdlldatamap_key}->{dstpath}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3566
			print_source_error(" File $romfilename has not been included into ROM image");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3567
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3568
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3569
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3570
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3571
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3572
		if ($enforceSysBin)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3573
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3574
			if ($DllDataMap{$patchdlldatamap_key}->{dstpath} !~ /^sys\\bin/i 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3575
			 && $DllDataMap{$patchdlldatamap_key}->{dstpath} !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3576
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3577
				$DllDataMap{$patchdlldatamap_key}->{dstpath} = "sys\/bin";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3578
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3579
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3580
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3581
		my $dllfile = $DllDataMap{$patchdlldatamap_key}->{dstpath} . "\/". $romfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3582
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3583
		$line = "$1  ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3584
		$line .= "$dllfile ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3585
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3586
		# Convert value into decimal (used to be done in AddDllDataInfo, but that limited us to
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3587
		# one value per symbol, and we now support patching arrays, e.g. the Hal's InitialValue[],
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3588
		# so we can't do it that way any more.)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3589
		if ($value =~ /^0x([0-9a-f]+)$/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3590
			$value = hex($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3591
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3592
		elsif ($value =~ /^(-?\d+)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3593
			$value = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3594
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3595
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3596
			print_source_error("Attempt to set $symbolname to illegal value $value");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3597
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3598
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3599
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3600
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3601
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3602
		if ($symbolname =~ s/:(\d+)\[((0x)?[0-9a-f]+)\]$//i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3603
			($index, $elementSize) = ($2, $1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3604
			$index = hex($index) if $index =~ /^0x/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3605
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3606
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3607
		my $DllSymInfoRef = $DllDataMap{$patchdlldatamap_key}->{$symbolname};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3608
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3609
		if (!defined($DllSymInfoRef->{size})) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3610
			print_source_error("Size for symbol $symbolname not found");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3611
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3612
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3613
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3614
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3615
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3616
		if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3617
			$scalarSize = $elementSize / 8;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3618
			if ($scalarSize != 1 && $scalarSize != 2 && $scalarSize != 4) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3619
				print_source_error("Invalid bit size $elementSize for array $symbolname in $romfilename");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3620
				$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3621
				$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3622
				return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3623
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3624
			if (($index + 1) * $scalarSize > $DllSymInfoRef->{size}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3625
				print_source_error("Invalid index $index into array $symbolname in $romfilename");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3626
				$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3627
				$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3628
				return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3629
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3630
		} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3631
			$scalarSize = $DllSymInfoRef->{size};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3632
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3633
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3634
		my $max_value = 0xffffffff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3635
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3636
		if ($scalarSize == 1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3637
			$max_value = 0xff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3638
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3639
		elsif ($scalarSize == 2) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3640
			$max_value = 0xffff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3641
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3642
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3643
		if ($value > $max_value) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3644
			$value &= $max_value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3645
			print "$DllSymInfoRef->{obyfilename}($DllSymInfoRef->{lineno}): Warning:Value overflow of $symbolname\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3646
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3647
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3648
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3649
		if(defined $DllSymInfoRef->{ordinal}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3650
			if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3651
				my $ord = $DllSymInfoRef->{ordinal};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3652
				my $offset = $index * $scalarSize;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3653
				$line .= "ordinal $ord+$offset ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3654
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3655
				$line .= "ordinal ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3656
				$line .= $DllSymInfoRef->{ordinal} . " ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3657
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3658
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3659
		elsif(defined $DllSymInfoRef->{dataAddr}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3660
			if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3661
				my $addr = $DllSymInfoRef->{dataAddr};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3662
				$addr = hex($addr) if $addr =~ /^0x/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3663
				$addr = sprintf("0x%08x", $addr + $index * $scalarSize);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3664
				$line .= "addr $addr ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3665
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3666
				$line .= "addr ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3667
				$line .= $DllSymInfoRef->{dataAddr} . " ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3668
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3669
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3670
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3671
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3672
			print_source_error("Ordinal or Address for exported symbol $symbolname in $romfilename couldn't be located");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3673
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3674
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3675
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3676
		};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3677
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3678
		$line .= "$scalarSize $value\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3679
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3680
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3681
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3682
	elsif ($line =~ /^\s*(\S+)\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3683
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3684
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3685
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3686
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3687
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3688
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3689
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3690
		if ($type !~ /^(alias)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3691
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3692
			# Return now, if it is not an 'alias'.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3693
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3694
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3695
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3696
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3697
			# There is no substitution needed for SysBin 'alias'es.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3698
			if ($romfile =~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3699
			  ||$romfile =~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3700
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3701
				return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3702
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3703
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3704
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3705
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3706
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3707
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3708
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3709
 	# Buildrom should generate warning when destination path provided for a file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3710
 	# is not a standard path(as per platsec) and "PlatSecEnforceSysBin" is turned off. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3711
 	my $warnFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3712
	my $mustBeSysBin = $enforceSysBin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3713
	if ($type =~ /^(data|compress|nocompress)$/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3714
		&& $romfile !~ /^system\/(bin|libs|programs)\//i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3715
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3716
		$mustBeSysBin = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3717
 		$warnFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3718
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3719
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3720
	if ($mustBeSysBin)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3721
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3722
		if ($type =~ /^(alias)$/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3723
			&& $romfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3724
			&& $romfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3725
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3726
			# for multilinguify 'alias'es (generally resource files) 'MustBeSysBin' should not be enforced.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3727
			if(defined($multiLinguifyAlias{$pcfile})) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3728
				return $line;  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3729
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3730
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3731
			my $filename = "\/$romfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3732
			$filename = substr $filename, rindex($filename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3733
			$romfile = "sys\/bin".$filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3734
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3735
			if ($pcfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3736
			    && $pcfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3737
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3738
				my $pcfilename = "\/$pcfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3739
				$pcfilename = substr $pcfilename, rindex($pcfilename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3740
				$pcfile = "sys\/bin".$pcfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3741
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3742
			return "$type$variant $pcfile \t$romfile$tail\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3743
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3744
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3745
		if ($romfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3746
		    && $romfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3747
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3748
			my $filename = "\/$romfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3749
			$filename = substr $filename, rindex($filename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3750
			$romfile = "sys\/bin".$filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3751
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3752
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3753
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3754
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3755
 		if ($warnFlag && $romfile !~ /^sys\\bin\\/i && $romfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3756
 		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3757
 			print "Warning: Outside standard path at \"$line\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3758
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3759
		if ($type =~ /^(alias)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3760
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3761
			# Return the line as it is for non-MustBeSysBin 'alias'es.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3762
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3763
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3764
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3765
	$romfiles{$romfile} = $variant.$pcfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3766
	return "$type$variant=$pcfile \t\"$romfile\"$tail\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3767
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3768
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3769
my @hidearray;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3770
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3771
sub mark
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3772
{ # function to mark files in ROMs as hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3773
	my ($base,$ext) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3774
	my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3775
	my @coreimagerange = (-1,-1); #coreimagerange stores the places within @hidearray where the $base files start and end
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3776
	my @extensionimagerange = (-1,-1); #extensionimagerange stores the places within @hidearray where the $ext files start and end
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3777
	for(my $i=0;$i<scalar @hidearray;$i++) { #loop sets values in @coreimagerange and in @extensionimagerange
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3778
		if($hidearray[$i]{rom}==$base) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3779
			if($coreimagerange[0]<0) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3780
				$coreimagerange[0]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3781
				$coreimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3782
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3783
				$coreimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3784
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3785
		} elsif($hidearray[$i]{rom}==$ext) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3786
			if($extensionimagerange[0]<0) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3787
				$extensionimagerange[0]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3788
				$extensionimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3789
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3790
				$extensionimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3791
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3792
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3793
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3794
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3795
	for(my $i=$extensionimagerange[0];$i<=$extensionimagerange[1];$i++) { #loop marks files which need to be hidden based on the values in @coreimagerange and in @extensionimagerange
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3796
		for(my $j=$coreimagerange[0];$j<=$coreimagerange[1];$j++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3797
			if($hidearray[$i]{dest} eq $hidearray[$j]{dest}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3798
				$hidearray[$i]{hide}=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3799
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3800
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3801
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3802
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3803
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3804
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3805
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3806
# Cleaning phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3807
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3808
# Remove "REM defined", "REM handled"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3809
# Remove the "# lineno" information
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3810
# Collapse multiple blank lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3811
# Apply the PlatSecEnforceSysBin setting
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3812
# Produce ROM directory listing
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3813
# Identify the ROM image name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3814
sub cleaning_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3815
{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3816
	my $romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3817
	my $skippingBlanks=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3818
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3819
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3820
    if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3821
    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3822
	  my $logWin = $thisdir."logwin.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3823
	  my $logLinux = $thisdir."loglinux.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3824
	  unlink($logWin);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3825
	  unlink($logLinux);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3826
	  open LOGWIN, ">$logWin" or die("* Can't create $logWin\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3827
	  open LOGLINUX, ">$logLinux" or die("* Can't create $logLinux\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3828
    }	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3829
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3830
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3831
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3832
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3833
		if ($line=~/^REM (defined|handled)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3834
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3835
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3836
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3837
		if ($line=~/^# (\d+) "(.*)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3838
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3839
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3840
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3841
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3842
		# Blank line compression
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3843
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3844
		if ($line=~/^\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3845
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3846
			if ($skippingBlanks==1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3847
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3848
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3849
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3850
			$skippingBlanks=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3851
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3852
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3853
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3854
			$skippingBlanks=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3855
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3856
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3857
		# Track ROMNAME, allowing overrides
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3858
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3859
		if ($line=~/romname\s*[=\s]\s*"?(\S+)\.(\S+)"?\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3860
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3861
			if ($romname ne "" && $opt_o eq "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3862
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3863
				print_source_error("Overrides previous ROM name $romname");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3864
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3865
			$rombasename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3866
			$romname = "$1.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3867
			if ($opt_workdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3868
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3869
				$rombasename = $thisdir.$rombasename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3870
				$romname = $thisdir.$romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3871
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3872
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3873
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3874
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3875
		# ROM directory listing
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3876
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3877
		    my $newline = reformat_line($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3878
	    if( ($newline !~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3879
  	      &&($newline !~ /^\s*volume\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3880
	      &&($newline !~ /^\s*kerneltrace\s*=.*/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3881
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3882
	        my $tmpline = $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3883
	        if(&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3884
	        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3885
	          $newline =~ s-\/-\\-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3886
	          if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3887
	          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3888
                print LOGWIN $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3889
	            $tmpline =~ s-\\-\/-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3890
	            print LOGLINUX $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3891
	          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3892
	        }else #unix os
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3893
	        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3894
	          $newline =~ s-\\-\/-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3895
	          if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3896
	          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3897
	            print LOGLINUX $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3898
	            $tmpline =~ s-\/-\\-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3899
	            print LOGWIN $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3900
	          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3901
	        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3902
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3903
	    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3904
		push @newobydata, $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3905
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3906
	if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3907
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3908
	  close LOGWIN;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3909
	  close LOGLINUX;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3910
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3911
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3912
	exit(1) if($errors && $strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3913
	# Handle ROMNAME and possible -o override
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3914
	if ($opt_o ne "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3915
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3916
		if ($opt_workdir && $opt_o !~ /^[\\\/]/ && $opt_o !~ /^.:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3917
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3918
			$opt_o = $thisdir.$opt_o;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3919
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3920
		if (&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3921
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3922
			$opt_o =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3923
		}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3924
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3925
			$opt_o =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3926
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3927
		$romname=$opt_o;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3928
		if ($opt_o=~/(\S+)\.(\S+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3929
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3930
			$rombasename=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3931
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3932
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3933
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3934
			$rombasename=$romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3935
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3936
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3937
	if(!$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3938
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3939
		unshift @newobydata, "romname=$romname\n";	# first line of final OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3940
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3941
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3942
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3943
	print "* Removing previous image and logs...\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3944
	unlink glob("$rombasename.*");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3945
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3946
	my $obyrecordline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3947
	if($createspi) {# section added to mark SPI files in core images as hidden (if appropriate) if extension ROMs are being produced
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3948
		my $imagenum=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3949
		my $count=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3950
		foreach my $line (@obydata) { # fill @hidearray with all file= or data= entries from @obydata, recording which image they are in and their target destination
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3951
			if($line =~/^\s*(file|data)\s*=\s*(\S+)\s+(\S+)\s*$/gi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3952
				$hidearray[$count] = {rom=>$imagenum, type=>$1, dest=>$3};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3953
				$hidearray[$count]{dest} =~s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3954
				$count++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3955
			} elsif($line =~/^\s*REM\s+ROM_IMAGE\[(\d)\]\s*$/i ) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3956
				$imagenum=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3957
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3958
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3959
		for(my $i=0;$i<8;$i++) { #loop to mark files in @hidearray as hidden, does not add the hide= lines to the obey files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3960
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3961
				mark($i-1,$i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3962
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3963
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3964
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3965
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3966
		my $hideflag=0; # is set to 1 if there are files which need to be hidden, determines whether to run next section of code 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3967
		for(my $i=0;$i<scalar @hidearray;$i++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3968
			if($hidearray[$i]{hide}==1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3969
				$hideflag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3970
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3971
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3972
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3973
		my $obeyrom=0;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3974
		if($hideflag) { #if there exist files which need hiding
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3975
			my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3976
			my $exitflag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3977
			$obyrecordline=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3978
			for(;$obyrecordline<scalar @obydata && !$exitflag;) { # nested for loops produce new obey file in @newobydata, including hide= lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3979
				print "Line = $obyrecordline $i " . scalar @hidearray . "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3980
				if($i==scalar @hidearray) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3981
					$exitflag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3982
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3983
				for(;$i<scalar @hidearray;$i++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3984
					if($hidearray[$i]{hide}==1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3985
						my $rom=$hidearray[$i]{rom};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3986
						my $destination=$hidearray[$i]{dest};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3987
						while($obeyrom<$rom && $obyrecordline<scalar @obydata) { #pushes lines to @newobydata until specified rom is reached
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3988
							push @newobydata, $obydata[$obyrecordline];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3989
							if($obydata[$obyrecordline] =~/^\s*REM\s+ROM_IMAGE\[(\d)\]\s*$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3990
								$obeyrom=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3991
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3992
							$obyrecordline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3993
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3994
						my $flag=1; #get to here when $obeyrom==$rom
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3995
						while($flag && $obyrecordline<scalar @obydata) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3996
							$destination=~s|\\|/|g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3997
							my $obyline=$obydata[$obyrecordline];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3998
							$obyline=~s|\\|/|g;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3999
							if($obyline=~m/$destination/) { # if the line in the obeyfile matches the destination of the specified spi file then a hide= line is added before the spi file's data= line
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4000
								push @newobydata, "hide=$hidearray[$i]{dest}\n$obydata[$obyrecordline]";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4001
								$obyrecordline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4002
								$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4003
							} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4004
								push @newobydata, $obydata[$obyrecordline++];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4005
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4006
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4007
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4008
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4009
			}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4010
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4011
		while($obyrecordline< scalar @obydata) { # add the rest of the lines from @obydata to @newobydata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4012
			push @newobydata, $obydata[$obyrecordline++];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4013
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4014
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4015
		undef @newobydata;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4016
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4017
	dump_obydata("tmp9.oby", "result of cleaning phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4018
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4019
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4020
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4021
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4022
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4023
# Divide the oby file into multiple sections - one for each rom image - ready
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4024
# for the appropriate rom builder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4025
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4026
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4027
sub generate_romheader
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4028
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4029
	my ($idx) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4030
	if ($romimage[$idx]{xip} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4031
	{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4032
		my $header = "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4033
		if ($romimage[$idx]{extension})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4034
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4035
			$header = "extensionrom=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4036
			$header .= "romsize=$romimage[$idx]{size}\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4037
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4038
		return $header; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4039
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4040
	# non-xip
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4041
	my $header;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4042
	if ($romimage[$idx]{extension})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4043
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4044
		$header =  "extensionrofs=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4045
		$header .= "rofssize=$romimage[$idx]{size}\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4046
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4047
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4048
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4049
		$header="rofsname=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4050
		$header .= "rofssize=$romimage[$idx]{size}\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4051
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4052
	return $header;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4053
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4054
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4055
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4056
# Dump OBY file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4057
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4058
# Creates final OBY file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4059
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4060
sub create_dumpfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4061
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4062
	my $romimageidx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4063
	my $smrimageidx = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4064
	my $dumpfile="$rombasename";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4065
	$romimage[0]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4066
	$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4067
	unlink($dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4068
	if($rombasename && !$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4069
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4070
		open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4071
		print "* Writing $dumpfile - final OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4072
		$romimageidx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4073
		print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4074
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4075
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4076
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4077
		if ($line =~ /^\s*REM ROM_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4078
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4079
			$romimageidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4080
			if ($romimage[$romimageidx]{extension} eq '0')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4081
			{ # next rom oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4082
				close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4083
				$dumpfile="$rombasename.$romimage[$romimageidx]{name}";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4084
				$romimage[$romimageidx]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4085
				$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4086
				open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4087
				print "* Writing $dumpfile - final OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4088
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4089
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4090
				print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4091
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4092
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4093
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4094
			{ # extension
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4095
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4096
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4097
				print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4098
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4099
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4100
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4101
		# write data drive oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4102
		elsif ($line =~ /^\s*REM DATA_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4103
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4104
				my $dataimageidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4105
				close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4106
				$dumpfile="$datadriveimage[$dataimageidx]{name}";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4107
				$datadriveimage[$dataimageidx]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4108
				$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4109
				open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4110
				print "* Writing $dumpfile - intermediate OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4111
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4112
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4113
				print DUMPFILE generate_datadriveheader($dataimageidx,\@datadriveimage);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4114
				push(@dataDriveFileList,$dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4115
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4116
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4117
		elsif ($line =~ /^\s*REM SMR_IMAGE\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4118
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4119
			close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4120
			$dumpfile = $obeyFileList[$smrimageidx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4121
			$smrimageidx++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4122
			$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4123
			open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4124
			print "*Writing $dumpfile - intermediate OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4125
			print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4126
			push(@smrImageFileList, $dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4127
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4128
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4129
		print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4130
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4131
	close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4132
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4133
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4134
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4135
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4136
# Full ROM directory listing - use case-insensitive sort
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4137
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4138
sub create_dirlisting
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4139
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4140
	if($rombasename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4141
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4142
		print "* Writing $rombasename.dir - ROM directory listing\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4143
		open DIRFILE, ">$rombasename.dir" or die("* Can't create ROM directory listing\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4144
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4145
		my $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4146
		my $prevdir = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4147
		foreach $file (sort {uc($a) cmp uc($b)} keys %romfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4148
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4149
			my $dir = substr $file,0,rindex($file, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4150
			if (uc $dir ne uc $prevdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4151
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4152
				$prevdir = $dir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4153
				print DIRFILE "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4154
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4155
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4156
			my @sources = split /\n/,$romfiles{$file};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4157
			printf DIRFILE "%-40s\t%s\n", $file, shift @sources;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4158
			while (@sources)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4159
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4160
				printf DIRFILE "%39s+\t%s\n", "", shift @sources;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4161
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4162
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4163
		close DIRFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4164
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4165
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4166
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4167
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4168
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4169
# Suppress Rom/Rofs/DataDrive Image creation if "-noimage" option is provided.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4170
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4171
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4172
sub suppress_image_generation
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4173
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4174
	if($noimage) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4175
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4176
		&tidy_exit;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4177
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4178
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4179
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4180
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4181
# Execute rombuild & maksym for each final XIP OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4182
# Execute rofsbuild for each non-XIP oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4183
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4184
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4185
sub run_rombuilder
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4186
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4187
	my ($command, $obeyfile, $logfile) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4188
	$command .= " $obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4189
	#CR1258 test cases are depending on the following output.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4190
	print "* Executing $command\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4191
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4192
	open DATA, "$command 2>&1 |"   or die "Couldn't execute command: $command";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4193
	while ( defined( my $line = <DATA> ) ) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4194
	chomp($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4195
	print "$line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4196
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4197
	close DATA;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4198
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4199
	if ($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4200
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4201
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4202
		$command =~ /^\s*(\S+)\s+-slog/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4203
		print "* $1 failed\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4204
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4205
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4206
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4207
		push(@romImages,$obeyfile.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4208
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4209
	print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4210
	rename "$logfile","$obeyfile.log" or die("* Can't rename $logfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4211
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4212
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4213
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4214
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4215
# ROMBUILD AND ROFSBUILD
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4216
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4217
# Invokes rombuild and rofsbuild.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4218
# Creates .log, .symbol files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4219
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4220
sub invoke_rombuild
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4221
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4222
	#For CR1258, -compress command line option is introduced, and it's being handled as following
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4223
	my $rom_compression_type;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4224
	if($opt_compression_type eq ALLSECTIONS)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4225
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4226
		$rom_compression_type = "-compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4227
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4228
	elsif($opt_compression_type eq PAGEDSECTION)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4229
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4230
		$rom_compression_type = "-compress=paged";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4231
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4232
	elsif($opt_compression_type eq UNPAGEDSECTION)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4233
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4234
		$rom_compression_type = "-compress=unpaged";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4235
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4236
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4237
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4238
		$rom_compression_type = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4239
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4240
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4241
	#Compose command line options for Cache.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4242
	my $cache_options;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4243
	if($opt_cache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4244
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4245
		$cache_options = "-cache ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4246
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4247
	if($opt_nocache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4248
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4249
		$cache_options .= "-nocache ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4250
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4251
	if($opt_cleancache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4252
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4253
		$cache_options .= "-cleancache";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4254
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4255
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4256
	my $rombuild;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4257
	if(!$geninc)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4258
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4259
		$rombuild = "rombuild -slog $rom_compression_type $logLevel $lowMem $opt_jobs";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4260
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4261
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4262
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4263
		$rombuild = "rombuild -slog $rom_compression_type -geninc $logLevel $lowMem $opt_jobs";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4264
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4265
	if($gendep)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4266
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4267
		$rombuild .= " -gendep";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4268
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4269
	$rombuild .= " -k" if($opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4270
	my $rofsbuild = "rofsbuild -slog $logLevel $lowMem $opt_jobs $cache_options";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4271
	foreach my $arg (keys %rombuildOptions)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4272
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4273
		$rombuild .= " $arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4274
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4275
	$rofsbuild .= " -k" if($opt_k);        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4276
	for (my $romidx=0; $romidx<8; $romidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4277
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4278
		my $obeyfile=$romimage[$romidx]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4279
		my $xip=$romimage[$romidx]{xip};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4280
		my $compress=$romimage[$romidx]{compress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4281
		my $uncompress=$romimage[$romidx]{uncompress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4282
		if ($obeyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4283
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4284
			if(!defined $opt_compression)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4285
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4286
				if ($compress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4287
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4288
					$compress=" -compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4289
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4290
				elsif($uncompress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4291
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4292
					$compress=" -uncompress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4293
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4294
 				elsif($compress eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4295
 				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4296
 					$compress=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4297
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4298
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4299
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4300
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4301
				$compress = $opt_compression;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4302
				$compress =~m/\s-(compression)(method)\s(none|inflate|bytepair)/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4303
				print "* ".$1." ".$2.": ".$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4304
			}                        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4305
			if ($xip)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4306
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4307
				is_existinpath("rombuild", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4308
				$rombuild .= " -symbols" unless($nosymbols) ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4309
				run_rombuilder($rombuild.$compress, $obeyfile, "ROMBUILD.LOG");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4310
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4311
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4312
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4313
				# efficient_rom_paging.pm can move everything to core rom.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4314
				# If that is the case, don't run rofsbuild at all to avoid errors.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4315
			#	use constant TRUE => 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4316
			#	use constant FALSE => 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4317
				my $run_rofs_build = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4318
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4319
				open OBYFILE, "$obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4320
				for (<OBYFILE>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4321
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4322
					if (is_oby_statement($_))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4323
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4324
						$run_rofs_build = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4325
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4326
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4327
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4328
				close OBYFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4329
				if ($run_rofs_build)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4330
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4331
					is_existinpath("rofsbuild", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4332
					if(!$nosymbols)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4333
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4334
						$rofsbuild .= " -symbols";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4335
					}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4336
					run_rombuilder($rofsbuild.$compress, $obeyfile, "ROFSBUILD.LOG");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4337
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4338
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4339
			unlink "rombuild.log";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4340
			unlink "maksym.out";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4341
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4342
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4343
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4344
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4345
#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4346
# Subroutine: check if current statement is a valid oby statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4347
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4348
sub is_oby_statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4349
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4350
	my ($li) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4351
	if ($li =~ /\s*data\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4352
	if ($li =~ /\s*file\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4353
	if ($li =~ /\s*dll\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4354
	if ($li =~ /\s*secondary\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4355
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4356
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4357
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4358
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4359
#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4360
# Subroutine: convert possibly absolute path into relative path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4361
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4362
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4363
sub relative_path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4364
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4365
    my ($arg) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4366
    return $arg if ($arg !~ /^\//);	# not an absolute path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4367
    if ($uppath eq "x")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4368
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4369
		$uppath=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4370
		$uppath=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4371
		$uppath=~s-^(.*[^\/])$-$1\/-o;	    # ensure path ends with a backslash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4372
		$uppath=~s-\/([^\/]+)-\/..-og;	    # convert directories into ..
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4373
		$uppath=~s-^.:\/--o;		    # remove drive letter and leading backslash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4374
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4375
    $arg=~s-^\/--o;	# remove leading backslash from original path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4376
    return "$uppath$arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4377
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4378
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4379
# Returns the global @obydata reference to support external tool invocation.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4380
sub getOBYDataRef{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4381
	return \@obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4382
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4383
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4384
#Match the blank or the comment
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4385
sub isobystatement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4386
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4387
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4388
	if ($l !~ /=/) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4389
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4390
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4391
	return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4392
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4393
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4394
#Match the data statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4395
sub isdatastatement {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4396
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4397
	if ($l !~ /data=/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4398
	{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4399
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4400
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4401
	return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4402
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4403
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4404
#Match the spidata statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4405
sub isspidatastatement {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4406
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4407
	if ($l !~ /spidata=/) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4408
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4409
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4410
	return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4411
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4412
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4413
#Match the executable statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4414
sub isexecutablefile {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4415
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4416
	if (($l=~/file=/)||($l=~/dll=/)||($l=~/primary=/)||($l=~/secondary=/)||($l=~/variant=/)||($l=~/device=/)||($l=~/extension=/)){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4417
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4418
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4419
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4420
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4421
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4422
#Match the directory metadata statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4423
sub isdirectorymetadata {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4424
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4425
	if (($l=~/hide=/) || ($l=~/rename=/) || ($l=~/alias=/)){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4426
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4427
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4428
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4429
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4430
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4431
#Match the bitmap statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4432
sub isbitmap {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4433
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4434
	if ($l=~/bitmap=/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4435
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4436
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4437
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4438
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4439
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4440
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4441
#Match the aif file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4442
sub isaif {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4443
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4444
	if ($l=~/(.*)\.aif/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4445
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4446
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4447
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4448
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4449
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4450
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4451
#Match the resource file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4452
sub isresource {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4453
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4454
	if ($l=~/(.*)\.rsc/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4455
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4456
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4457
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4458
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4459
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4460
#Returns the executable extensions
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4461
sub executableextension {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4462
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4463
	if ($l=~/file=(.*)\.exe$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4464
		return "exe";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4465
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4466
	elsif ($l=~/file=(.*)\.dll$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4467
		return "dll";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4468
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4469
	elsif ($l=~/file=(.*)\.ldd$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4470
		return "ldd";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4471
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4472
	elsif ($l=~/file=(.*)\.fsy$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4473
		return "fsy";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4474
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4475
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4476
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4477
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4478
#Returns all 3 UIDS
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4479
sub executabletype {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4480
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4481
	my $uid1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4482
	my $uid2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4483
	my $uid3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4484
	if ($l=~/uid1\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4485
		$uid1=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4486
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4487
	if ($l=~/uid2\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4488
		$uid2=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4489
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4490
	if ($l=~/uid3\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4491
		$uid3=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4492
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4493
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4494
	return $uid1." ".$uid2." ".$uid3."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4495
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4496
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4497
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4498
#Return source file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4499
sub getSourceFile {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4500
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4501
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4502
		return $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4503
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4504
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4505
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4506
#Return destination file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4507
sub getDestFile{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4508
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4509
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4510
		return $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4511
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4512
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4513
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4514
#Return the obycommand attributes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4515
sub getOBYAttributes{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4516
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4517
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4518
		return $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4519
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4520
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4521
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4522
#Return the hardware variant delimiter
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4523
sub getHardwareVariant{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4524
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4525
	if ($line=~/(\w*[0x[\d]*]=)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4526
		return $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4527
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4528
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4529
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4530
#Return the hardware variant delimiter
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4531
sub getObyCommand{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4532
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4533
	if ($line=~/^[data=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4534
		return "data";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4535
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4536
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4537
	if ($line=~/^[file=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4538
		return "file";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4539
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4540
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4541
	if ($line=~/^[dll=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4542
		return "dll";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4543
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4544
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4545
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4546
# Initialize the symbol info within the given DLL.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4547
sub AddDllDataInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4548
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4549
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4550
	# syntax "<DLLname>@<symbolname> <newvalue>"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4551
	if($line =~ /^\s*(\S+)\s*\@\s*(\S+)\s+(\S+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4552
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4553
		my $dllName = lc ($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4554
		my $symbolname = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4555
		my $intVal = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4556
		my $newVal = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4557
		if($intVal =~ /^0x([0-9a-fA-F]+)$/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4558
		$newVal = hex($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4559
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4560
		elsif($intVal =~ /^(-\d+)$/ or $intVal =~ /^(\d+)$/){		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4561
			$newVal = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4562
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4563
		else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4564
 			print "ERROR: Invalid patchable value at \"$line\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4565
 			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4566
 			return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4567
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4568
		$symbolname =~ s/:(\d+)\[(0x)?[0-9a-f]+\]$//i;	# Remove array element specification (:ELEMENT_BIT_SIZE[INDEX]) to get symbol name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4569
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4570
		my $DllMapRef = \%{$DllDataMap{$dllName}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4571
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4572
		my %DllSymInfo = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4573
		$DllSymInfo{ordinal}	= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4574
		$DllSymInfo{dataAddr}	= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4575
		$DllSymInfo{size}		= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4576
		# We don't store the value here, since patchdata can be used on an array,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4577
		# in which case we'll create another one of these, and lose the value.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4578
		# Instead, the value is retrieved by re-parsing the command line later.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4579
		$DllSymInfo{lineno}		= $sourceline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4580
		$DllSymInfo{obyfilename}= $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4581
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4582
		$DllMapRef->{$symbolname} = \%DllSymInfo;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4583
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4584
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4585
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4586
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4587
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4588
sub process_dlldata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4589
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4590
	if(!$patchDataStmtFlag){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4591
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4592
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4593
	my $symbolTblEntry;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4594
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4595
	foreach my $dll (keys %DllDataMap){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4596
		my $DllMapRef = $DllDataMap{$dll};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4597
		if(!$DllMapRef->{srcfile}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4598
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4599
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4600
		my $aDllFile = $DllMapRef->{srcfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4601
		my $SymbolCount = scalar ( keys %{$DllMapRef}) - 2; #The map has 'srcfile' and 'dstpath' special keys besides the symbols.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4602
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4603
		my $DllSymMapRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4604
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4605
		my @BPABIPlats = &get_bpabiplatlist;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4606
		my $matchedSymbols = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4607
		my $globalSyms = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4608
		my @platlist = &get_platlist;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4609
		my $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4610
		my $rootPlatName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4611
		my $plat = "armv5";				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4612
		$plat = &get_abiv2mode() ? $plat."_abiv1" : $plat."_abiv2";		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4613
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4614
		foreach my $plat(@platlist) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4615
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4616
			if(($aDllFile =~ /[\/\\]($plat)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plat\.\w+)[\/\\]/i ))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4617
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4618
				$platName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4619
				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4620
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4621
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4622
		$rootPlatName =	&get_platcustomizes($platName) ? &get_platroot($platName) : $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4623
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4624
		# Map files will be referred for all ARM platforms, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4625
		# and for BSF platforms which cutomizes ARM platforms.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4626
		if($rootPlatName =~ /^armv5|$plat$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4627
			my $mapfile = "${aDllFile}.map";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4628
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4629
			open MAPFILE, "$mapfile" or die "Can't open $mapfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4630
			while(<MAPFILE>){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4631
			my $line = $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4632
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4633
				#Ignore Local symbols.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4634
				if(!$globalSyms){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4635
					if($line =~ /Global Symbols/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4636
						$globalSyms = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4637
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4638
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4639
					else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4640
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4641
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4642
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4643
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4644
				$symbolTblEntry = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4645
				if($symbolTblEntry =~ /\s*(\S+)(?:\s+\(EXPORTED\))?\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4646
					my $symbol		= $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4647
					my $symbolValue = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4648
					my $data		= $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4649
					my $symbolSz	= $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4650
					if(!exists $DllMapRef->{$symbol}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4651
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4652
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4653
					$DllSymMapRef = $DllMapRef->{$symbol};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4654
					if($data =~ /Data/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4655
					# Valid
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4656
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4657
					else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4658
					#	Invalid to patch a code symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4659
						print( "$DllSymMapRef->{obyfilename}($DllSymMapRef->{lineno}): Warning: $symbol is not a data Symbol.Ignoring patch statement.\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4660
						$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4661
						$DllMapRef->{$symbol} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4662
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4663
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4664
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4665
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4666
					# Record the address and the size of the symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4667
					$DllSymMapRef->{dataAddr} = $symbolValue;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4668
					$DllSymMapRef->{size} = $symbolSz;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4669
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4670
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4671
					$matchedSymbols++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4672
					if( $matchedSymbols >= $SymbolCount){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4673
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4674
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4675
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4676
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4677
			close MAPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4678
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4679
		# DSO files will be referred for BPABI platforms(excluding ARM platforms),
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4680
		# and for BSF platforms which cutomizes BPABI platforms.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4681
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4682
			my $abiDir = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4683
			foreach my $bpabi (@BPABIPlats){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4684
				if($rootPlatName =~ /^$bpabi$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4685
					$abiDir = $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4686
					last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4687
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4688
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4689
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4690
			if(!defined $abiDir){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4691
				print("Can't locate the map or proxy dso file for $aDllFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4692
				$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4693
				next; #go to the next patch dll data statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4694
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4695
			if( $aDllFile =~ /(.*)\.[^.]+$/ ){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4696
				my $proxydsofile = "$1.dso";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4697
				$proxydsofile =~ s-$abiDir\/(.*)\/-armv5\/lib\/-ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4698
				open PIPE, "getexports -d $proxydsofile|" or die "Can't open file $proxydsofile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4699
				while (<PIPE>){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4700
					my $line = $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4701
					if($line =~ /\s*(\S+)\s+(\d+)\s+((\S+)\s+(\d+))?/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4702
						my $symbol = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4703
						my $ordinal = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4704
						my $data = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4705
						my $symbolSz = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4706
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4707
						if(!$data){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4708
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4709
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4710
						if(!exists $DllMapRef->{$symbol}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4711
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4712
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4713
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4714
						$DllSymMapRef = $DllMapRef->{$symbol};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4715
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4716
						# Record the ordinal and the size of the symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4717
						$DllSymMapRef->{ordinal} = $ordinal;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4718
						$DllSymMapRef->{size} = $symbolSz;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4719
						$matchedSymbols++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4720
						if( $matchedSymbols >= $SymbolCount){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4721
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4722
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4723
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4724
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4725
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4726
				close PIPE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4727
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4728
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4729
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4730
	exit(1) if ($errors && $strict ) ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4731
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4732
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4733
# make sure that all the absolute feature variant paths include a
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4734
# drive letter. This is required because cpp will not work with
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4735
# absolute paths starting with slashes.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4736
sub addDrivesToFeatureVariantPaths
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4737
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4738
	return unless $featureVariant{'VALID'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4739
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4740
	my $current = &get_epocdrive;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4741
	my $drive = $1 if ($current =~ /^(.:)/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4742
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4743
	# pre-include file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4744
	my $HRH = $featureVariant{'VARIANT_HRH'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4745
	$featureVariant{'VARIANT_HRH'} = $drive . $HRH if ($HRH =~ /^[\\\/]/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4746
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4747
	# ROM include path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4748
	my $dirRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4749
	return unless $dirRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4750
	my $i = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4751
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4752
	foreach my $dir (@$dirRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4753
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4754
		$$dirRef[$i] = $drive . $dir if ($dir =~ /^[\\\/]/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4755
		$i++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4756
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4757
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4758
sub create_smrimage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4759
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4760
	if($needSmrImage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4761
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4762
		foreach my $oby (@obeyFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4763
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4764
			is_existinpath("rofsbuild", romutl::ERROR_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4765
			my $command = "rofsbuild -slog -smr=$oby.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4766
			print "* Executing $command\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4767
			system($command);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4768
			if($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4769
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4770
				print("* ROFSBUILD failed to generate SMR IMAGE\n") if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4771
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4772
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4773
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4774
				push(@smrImageFileList, $oby.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4775
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4776
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4777
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4778
	if(@smrImageFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4779
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4780
		print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4781
		print "-------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4782
		print "| List of file(s) generated pertaining to SMR image |\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4783
		print "-------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4784
		my $arraySize = scalar(@smrImageFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4785
		for(my $i=0; $i < $arraySize; $i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4786
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4787
			my $element = shift(@smrImageFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4788
			my $size = -s $element;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4789
			print "Size = ".$size." bytes"."\t"."File = ".$element."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4790
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4791
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4792
	foreach my $errSmr (keys(%smrNameInfo))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4793
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4794
		if($smrNameInfo{$errSmr} > 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4795
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4796
			print "\n SMR image: $errSmr.img creating error for duplicated names!\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4797
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4798
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4799
	if($smrNoImageName)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4800
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4801
		print "\n SMR image creating error for empty image name!\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4802
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4803
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4804
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4805
sub checkcase()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4806
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4807
	if (&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4808
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4809
		my @checkcase_obydatatemp = @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4810
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4811
		# call the phase without external tools.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4812
		plugin_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4813
		multlinguify_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4814
		#spi_creation_phase(); #spi creation phase will delete some lines, so do not call this phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4815
		suppress_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4816
		process_dlldata();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4817
		bitmap_aif_converison_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4818
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4819
		my $checkcase_log = "checkcase.log";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4820
		unlink $checkcase_log;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4821
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4822
		open CHECKCASELOG, ">$checkcase_log" or die("* Can't create $checkcase_log\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4823
		my @checkcase_lines = @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4824
		my %checkcase_macro;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4825
		my @checkcase_macrodir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4826
		my $checkcase_line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4827
		print CHECKCASELOG "======================Macro check part:======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4828
		foreach $checkcase_line (@checkcase_lines)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4829
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4830
			track_source($checkcase_line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4831
			$checkcase_line =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4832
			$checkcase_line =~ s-\\\\-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4833
			if ($checkcase_line =~ /^\s*REM\s*(re)?defined\s*(\w*)\s*as\s*(\S+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4834
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4835
				my $checkcase_macrocontent = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4836
				my $checkcase_macroname = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4837
				if ($checkcase_macrocontent =~ /[a-zA-Z]/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4838
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4839
					$checkcase_macro{$checkcase_macroname} = $checkcase_macrocontent;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4840
					checkcase_macro(\@checkcase_macrodir, $checkcase_macroname, $checkcase_macrocontent);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4841
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4842
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4843
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4844
		print CHECKCASELOG "======================Macro check part end======================\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4845
		print CHECKCASELOG "======================File check part:======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4846
		foreach $checkcase_line (@checkcase_lines)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4847
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4848
			if ($checkcase_line =~ /^\s*REM\s*.*/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4849
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4850
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4851
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4852
			if ($checkcase_line =~ /^\s*#\s*\d+\s*\"(\S+)\"\s*\d*\s*$/) #oby filename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4853
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4854
				my $checkcase_whichfile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4855
				checkcase_obyfilename($checkcase_whichfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4856
				track_source($checkcase_line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4857
			}elsif ($checkcase_line =~ /^\s*\S+\s*=\s*"([^"]+)"\s+\S*\s*/ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4858
					 || $checkcase_line =~ /^\s*\S+\s*=\s*(\S+)\s+\S*\s*/) #oby content file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4859
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4860
				my $checkcase_pcsidefile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4861
				checkcase_pcsidefilename(\@checkcase_macrodir, $checkcase_pcsidefile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4862
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4863
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4864
		print CHECKCASELOG "======================File check part end======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4865
		close CHECKCASELOG;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4866
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4867
		@obydata = @checkcase_obydatatemp;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4868
	}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4869
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4870
		print "WARNING: checkcase option is only valid on windows.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4871
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4872
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4873
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4874
sub checkcase_macro()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4875
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4876
	my $macrodir = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4877
	my $name = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4878
	my $content = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4879
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4880
	if ($content =~ /epoc32/i && (-d $content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4881
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4882
		my $realdir = `directory.bat $content`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4883
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4884
		$realdir =~ s/^\s*\w://g if ($content !~ /^\w:/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4885
		$realdir =~ s/\\$//g if ($content !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4886
		$realdir .= "\\" if ($content =~ /\\$/ && $realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4887
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4888
		$sourcefile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4889
		if ($realdir ne $content)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4890
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4891
			print CHECKCASELOG "check case: macro name is $name\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4892
			print CHECKCASELOG "WARNING: macro case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4893
			print CHECKCASELOG "file name is $sourcefile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4894
			print CHECKCASELOG "current is $content\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4895
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4896
			checkcase_convert($sourcefile, $content, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4897
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4898
		$content =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4899
		push @$macrodir, $content;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4900
	}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4901
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4902
		if($name eq "PLATFORM_NAME")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4903
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4904
			$content =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4905
			$content =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4906
			$checkcase_platform = $content;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4907
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4908
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4909
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4910
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4911
sub checkcase_obyfilename()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4912
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4913
	my $checkfile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4914
	if (-e $checkfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4915
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4916
		while ($checkfile=~s-[\\](?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go){};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4917
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4918
		if ($checkfile eq $sourcefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4919
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4920
			return;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4921
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4922
		my($filename, $dir, $suffix) = fileparse($checkfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4923
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4924
		my $realdir = `directory.bat $dir`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4925
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4926
		$realdir .= "\\" if ($realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4927
		if ($realdir ne $dir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4928
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4929
			print CHECKCASELOG "check case: oby file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4930
			print CHECKCASELOG "WARNING: dir case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4931
			my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4932
			$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4933
			print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4934
			print CHECKCASELOG "current is $dir\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4935
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4936
			checkcase_convert($sourcefile, $dir, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4937
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4938
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4939
		my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4940
		chdir "$dir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4941
		my @realfile = `dir "$filename" 2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4942
		my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4943
		foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4944
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4945
			if ($line =~ /^\s*(\S+)\s+(\d{2}:\d{2})\s+(PM|AM)?\s+([\d\,])+\s+([\S]+)\s*/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4946
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4947
				my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4948
				my $filetemp = lc $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4949
				my $realtemp = lc $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4950
				if ($filetemp eq $realtemp && $realfilename ne $filename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4951
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4952
					print CHECKCASELOG "check case: oby file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4953
					print CHECKCASELOG "WARNING: filename case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4954
					my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4955
					$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4956
					print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4957
					print CHECKCASELOG "current is $filename\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4958
					print CHECKCASELOG "expect  is $realfilename\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4959
					checkcase_convert($sourcefile, $filename, $realfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4960
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4961
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4962
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4963
		chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4964
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4965
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4966
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4967
sub checkcase_pcsidefilename()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4968
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4969
	my $macrodirs = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4970
	my $checkfile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4971
	$checkfile =~ s/^\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4972
	$checkfile =~ s/\"$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4973
	if (-e $checkfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4974
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4975
		while ($checkfile=~s-[\\](?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go){};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4976
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4977
		my($filename, $dir, $suffix) = fileparse($checkfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4978
		if ($dir eq "\.\\")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4979
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4980
			$dir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4981
			$dir =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4982
			$dir .= "\\" if ($dir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4983
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4984
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4985
		my $realdir = `directory.bat $dir`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4986
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4987
		$realdir =~ s/^\s*\w://g if ($dir !~ /^\w:/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4988
		$realdir .= "\\" if ($realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4989
		my $dirtemp = $dir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4990
		if ($checkcase_test)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4991
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4992
			my $macrodirtemp = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4993
			foreach my $macrodir (@$macrodirs)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4994
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4995
				if ($dirtemp =~ /^$macrodir(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4996
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4997
					$macrodirtemp = $macrodir if (length($macrodirtemp) < length($macrodir));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4998
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4999
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5000
			if ($macrodirtemp ne "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5001
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5002
				$dirtemp =~ s/^$macrodirtemp//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5003
				$realdir =~ s/^$macrodirtemp//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5004
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5005
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5006
		if ($realdir ne $dirtemp)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5007
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5008
			print CHECKCASELOG "check case: pc side file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5009
			print CHECKCASELOG "WARNING: dir case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5010
			my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5011
			$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5012
			print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5013
			print CHECKCASELOG "current is $dirtemp\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5014
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5015
			checkcase_convert($sourcefile, $dirtemp, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5016
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5017
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5018
		my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5019
		chdir "$dir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5020
		my @realfile = `dir "$filename" 2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5021
		my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5022
		foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5023
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5024
			if ($line =~ /^\s*(\S+)\s+(\d{2}:\d{2})\s+(PM|AM)?\s+([\d\,])+\s+(.+)\s*/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5025
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5026
				my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5027
				my $filetemp = lc $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5028
				my $realtemp = lc $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5029
				if ($filetemp eq $realtemp && $realfilename ne $filename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5030
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5031
					print CHECKCASELOG "check case: pc side file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5032
					print CHECKCASELOG "WARNING: filename case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5033
					my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5034
					$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5035
					print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5036
					print CHECKCASELOG "current is $filename\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5037
					print CHECKCASELOG "expect  is $realfilename\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5038
					checkcase_convert($sourcefile, $filename, $realfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5039
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5040
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5041
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5042
		chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5043
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5044
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5045
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5046
sub checkcase_convert()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5047
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5048
	return if (!$checkcase_test);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5049
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5050
	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5051
	my $origin = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5052
	my $real = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5053
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5054
	my @realfile = `dir "$file"  2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5055
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5056
	foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5057
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5058
		if ($line =~ /^\s*(\S+)\s+(\d{2}:\d{2})\s+(PM|AM)?\s+([\d\,])+\s+([\S]+)\s*/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5059
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5060
			my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5061
			$realfilename =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5062
			$file =~ s-$realfilename$--ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5063
			$realfilename =~ s-\\\.-\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5064
			$file .= $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5065
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5066
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5067
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5068
	my $tempfile = $file.".temp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5069
	my $usemultimacro = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5070
	my $uses60macro_aifrsc = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5071
	my $uses60macro_exe = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5072
	my $uses60macro_aificon = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5073
	my $uses60macro_resource = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5074
	my $originwithoutext = $origin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5075
	my $realwithoutext = $real;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5076
	if ($origin =~ /epoc32/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5077
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5078
		my $tempepocroot = $ENV{EPOCROOT};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5079
		$tempepocroot =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5080
		$origin =~ s/^$tempepocroot//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5081
		$real =~ s/^$tempepocroot//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5082
	}elsif ($checkcase_platform ne "" && $origin =~ /^_$checkcase_platform\_(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5083
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5084
		$origin =~ s/^_$checkcase_platform\_/_PLATFORM_NAME_/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5085
		$real =~ s/^_$checkcase_platform\_/_PLATFORM_NAME_/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5086
	}elsif ($origin =~ /\S+\_reg\.rsc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5087
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5088
		$originwithoutext =~ s/\_reg\.rsc$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5089
		$realwithoutext =~ s/\_reg\.rsc$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5090
		$uses60macro_aifrsc = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5091
	}elsif ($origin =~ /\S+\.rsc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5092
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5093
		$originwithoutext =~ s/\.rsc$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5094
		$realwithoutext =~ s/\.rsc$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5095
		$usemultimacro = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5096
		$uses60macro_resource = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5097
	}elsif ($origin =~ /\S+\.r01$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5098
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5099
		$originwithoutext =~ s/\.r01$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5100
		$realwithoutext =~ s/\.r01$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5101
		$usemultimacro = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5102
	}elsif ($origin =~ /\S+\.exe$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5103
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5104
		$originwithoutext =~ s/\.exe$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5105
		$realwithoutext =~ s/\.exe$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5106
		$uses60macro_exe = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5107
	}elsif ($origin =~ /\S+\_aif\.mif$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5108
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5109
		$originwithoutext =~ s/\_aif\.mif$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5110
		$realwithoutext =~ s/\_aif\.mif$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5111
		$uses60macro_aificon = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5112
	}elsif ($origin =~ /\S+\.mif$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5113
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5114
		$originwithoutext =~ s/\.mif$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5115
		$realwithoutext =~ s/\.mif$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5116
		$uses60macro_aificon = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5117
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5118
	$origin =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5119
	$origin =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5120
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5121
	open (SRC, "<$file");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5122
	open (DST, ">$tempfile");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5123
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5124
	while($line = <SRC>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5125
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5126
		my $flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5127
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5128
		if ($line =~ /$origin/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5129
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5130
			$originwithoutext = $origin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5131
			$realwithoutext = $real;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5132
			$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5133
		}elsif ($usemultimacro)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5134
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5135
			if ($line =~ /^.*=\s*MULTI_LINGUIFY\s*\(.*$originwithoutext/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5136
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5137
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5138
			}elsif ($line =~ /^\s*S60_APP_RESOURCE\s*\(\s*$originwithoutext\s*\)/ && $uses60macro_resource)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5139
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5140
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5141
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5142
		}elsif ($uses60macro_exe)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5143
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5144
			if ($line =~ /^\s*S60_APP_EXE\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5145
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5146
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5147
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5148
		}elsif ($uses60macro_aificon)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5149
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5150
			if ($line =~ /^\s*S60_APP_AIF_ICONS\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5151
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5152
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5153
			}elsif ($line =~ /^\s*SCALABLE_IMAGE\s*\(.*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5154
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5155
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5156
			}elsif ($line =~ /^\s*S60_APP_BITMAP\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5157
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5158
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5159
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5160
		}elsif ($uses60macro_aifrsc)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5161
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5162
			if ($line =~ /^\s*S60_APP_AIF_RSC\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5163
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5164
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5165
			}elsif ($line =~ /^\s*S60_UPGRADABLE_APP_REG_RSC\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5166
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5167
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5168
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5169
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5170
		if ($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5171
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5172
			print CHECKCASELOG "it has been converted automatically\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5173
			print CHECKCASELOG "original  line is $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5174
			$line =~ s-$originwithoutext-$realwithoutext-;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5175
			print CHECKCASELOG "converted line is $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5176
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5177
		print DST $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5178
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5179
	close SRC;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5180
	close DST;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5181
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5182
  unlink "$file";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5183
  rename ("$file.temp", "$file");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5184
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5185
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5186
1;