imgtools/buildrom/tools/buildrom.pm
author jjkang
Wed, 30 Jun 2010 11:35:58 +0800
changeset 607 378360dbbdba
parent 590 360bd6b35136
parent 606 30b30f9da0b7
child 609 f76e0f94b7ab
permissions -rw-r--r--
Merge missed changeset 11 (raptor v2.14 and helium 10.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.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   155
   -workdir=xxx                     -- specify a directory to contain generated files.   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   156
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   157
Popular -D defines to use include
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   158
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   159
   -D_DEBUG         -- select debug versions of some files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   160
   -D_FULL_DEBUG    -- select debug versions of all files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   161
   -D_ARM4          -- specify the target platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   162
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   163
   -D_EABI=xxxx     -- specify target for all files (e.g. armv5)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   164
   -D_KABI=xxxx     -- specify the target platform for the Kernel (e.g. armv5)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   165
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   166
Other defines may be useful for particular OBY files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   167
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   168
USAGE_EOF
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   169
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   170
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   171
use strict;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   172
use romutl;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   173
use romosvariant;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   174
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   175
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
   176
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   177
sub ExportDirs ($);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   178
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   179
my $xmlrequired = 0; # assume xml required is false. Used to determine if xml
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   180
                     # modules should be loaded.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   181
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   182
use flexmodload;	     # To load modules dynamically
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   183
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   184
# Work out the relative path to the epoc32 directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   185
use spitool qw(&createSpi);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   186
use Cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   187
use externaltools; 	#To invoke External Tools
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   188
use File::Basename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   189
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   190
my @tempfiles;  	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   191
my $preserve = 0; 	#flag to indicate if temporary files should be preserved
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   192
my $uppath="x";	    	# will be initialised when first needed
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   193
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   194
my $epocroot = &get_epocroot;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   195
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   196
my @obyfiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   197
my $cppargs = "-nostdinc -undef";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   198
my $opt_v = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   199
my $opt_o = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   200
my $strict = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   201
my $warnSelection = 0; # default is not warn about selecting files from 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   202
		       # different directories when the file is missing from
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   203
		       # the specified directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   204
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   205
my $createspi = 0; # don't create SPI files by default
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   206
my $spiset=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   207
my $spiplacement = 0; # enable the placement of spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   208
my %spipositionflag = (); # map of Image index at which the keyword SPI_POSITION is used.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   209
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   210
use constant NONE => 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   211
use constant INFLATE => 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   212
use constant BYTEPAIR => 2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   213
my $opt_compression;  # Default compression method parameter undefined
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   214
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   215
use constant UNCOMPRESSED   => 0;        # Indicates the ROM image will not be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   216
use constant ALLSECTIONS    => 1;        # Indicates both paged section and unpaged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   217
use constant PAGEDSECTION   => 2;        # Indicates only paged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   218
use constant UNPAGEDSECTION => 3;        # Indicates only unpaged section will be compressed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   219
my $opt_compression_type = UNCOMPRESSED; # Leave the ROM image uncompressed by default.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   220
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   221
#Variables to store cache command line options
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   222
my $opt_cache      = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   223
my $opt_nocache    = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   224
my $opt_cleancache = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   225
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   226
my $thisdir=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   227
$thisdir=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   228
$thisdir.= "\/" unless $thisdir =~ /\/$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   229
$thisdir =~ s-\/-\\-g if (&is_windows);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   230
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   231
my $rominclude = $epocroot."epoc32\/rom\/include\/";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   232
$rominclude = &get_epocdrive().$rominclude unless $rominclude =~ /^.:/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   233
$rominclude =~s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   234
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   235
my %plugintypes; #hash of plugin types and their SPI files' destinations in ROM
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   236
$plugintypes{"ECOM"} = "\/private\/10009d8f\/"; #ECOM SPI files' destination in ROM image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   237
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   238
my @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   239
my @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   240
my %substitutionData;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   241
my @substitutionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   242
my %languageCodes;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   243
my $defaultLanguageCode;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   244
my %multiLinguifyAlias;  # to by-pass the 'mustbesysbin' option for multilinguify 'alias'es. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   245
my $abiDowngrade = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   246
my @binarySelectionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   247
my $fromDIR;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   248
my %rombuildOptions = ("-type-safe-link" => 1 );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   249
my $enforceSysBin = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   250
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   251
my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   252
my $errors = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   253
my @romimage;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   254
my $rombasename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   255
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   256
my $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   257
my $sourceline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   258
#my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   259
my %romfiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   260
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   261
# To handle BINARY_SELECTION_ORDER macro.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   262
my $firstDIR;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   263
my $binarySelectionOrderFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   264
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   265
my %DllDataMap = ();	#Map to keep track of DLL Data patch statements.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   266
my $patchDataStmtFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   267
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   268
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
   269
			# features data file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   270
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
   271
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
   272
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   273
#Image Content XML file that supports specific feature to be added
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   274
my $image_content = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   275
#Feature list XML file that acts as database containing all features details
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   276
my $featureXml = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   277
my $geninc = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   278
my $gendep = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   279
my $nosymbols = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   280
my $noimage = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   281
my $customizedPlat = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   282
my $opt_jobs= "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   283
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   284
#Summary of files(both executables and data files) currently includes 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   285
#	host and ROM file names, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   286
#	size of the file in ROM
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   287
#	whether the file is hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   288
# 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
   289
# 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
   290
my $logLevel="";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   291
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   292
# This option is used to pass -lowmem argument to rombuild/rofsbuild tools
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   293
my $lowMem="";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   294
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   295
# Feature Variation modules and data
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   296
my %featureVariant;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   297
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   298
# global variables specific to data drive image generation. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   299
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
   300
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
   301
use File::Find;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   302
use datadriveimage;				# module which provides all necessary functions to create data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   303
my $ZDirloc = "";				# location of Z drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   304
my $DataDriveDirloc = "";		# location of data drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   305
my @sisfilelist;				# an array to hold sis file(s).
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   306
my @zDriveImageList;			# an array to hold z drive image name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   307
my @datadiveobydata;			# an array to hold data drive oby data.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   308
my @datadriveimage;				# array which holds data drive image attribute.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   309
my $rootdir = "";				# which holds root directory information.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   310
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
   311
my @nonsisFilelist;				# array to maintain list of nonsis file(s). 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   312
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
   313
my @renameList;					# array to maintain list of file(s) that has to be renamed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   314
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
   315
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
   316
my $sisfilepresent = 0;			# enable if sis file(s) are present.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   317
my $stubsisfilepresent = 0;		# enable if stub-sis file(s) are present.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   318
my $opt_k = 0;					# enable if keepgoing option is specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   319
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
   320
my $dataImageCount = 0;			# no of data drive image that has to generated.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   321
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
   322
my $opt_zimage = 0;				# enable if z drive image is found.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   323
my $zDrivePresent = 0;			# flag to check whether Z drive needs to be created.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   324
my @dataDriveFileList;			# list of processed data drive related files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   325
my $paraFile = undef;			# parameter file for interpretsis.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   326
my @romImages;					# list of generated z drive image(s)(rom/rofs). 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   327
my $imageEntryLogFile = undef;	# a log file to log all the z drive image contents.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   328
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
   329
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
   330
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
   331
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
   332
my @Global_BPABIPlats;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   333
my @Global_PlatList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   334
my @smrImageFileList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   335
my $needSmrImage = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   336
my %smrPartitions;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   337
my %smrNameInfo;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   338
my @obeyFileList;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   339
my $smrNoImageName = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   340
my $onlysmrimage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   341
my $checkcase = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   342
my $checkcase_platform = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   343
my $checkcase_test = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   344
my $opt_workdir = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   345
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   346
sub match_obyfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   347
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   348
	my ($obyfile) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   349
	if (-f $obyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   350
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   351
		push @obyfiles, $obyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   352
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   353
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   354
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   355
	# search for the oby file in the list of include directories
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   356
	my @otherDirs = ($rominclude);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   357
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   358
	if ($featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   359
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   360
		my $dirRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   361
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   362
		@otherDirs = @$dirRef if ($dirRef);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   363
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   364
	foreach my $dir (@otherDirs)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   365
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   366
		print "$dir/$obyfile\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   367
		if (-f "$dir/$obyfile")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   368
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   369
		    push @obyfiles, "$dir/$obyfile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   370
		    return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   371
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   372
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   373
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   374
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   375
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   376
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   377
# This function invokes ROFSBUILD tool with appropriate parameters to generate data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   378
# 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
   379
# if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   380
sub create_datadriveImage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   381
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   382
	for (my $dataidx=0; $dataidx < $dataImageCount; $dataidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   383
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   384
		my $driveIndex = $dataIndexHash{$dataidx};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   385
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   386
		if(defined($driveIndex))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   387
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   388
			my $obeyfile=$datadriveimage[$driveIndex]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   389
			my $compress=$datadriveimage[$driveIndex]{compress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   390
			my $uncompress=$datadriveimage[$driveIndex]{uncompress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   391
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   392
			if ($obeyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   393
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   394
				if(!defined $opt_compression)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   395
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   396
					if ($compress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   397
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   398
						$compress=" -compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   399
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   400
					elsif($uncompress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   401
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   402
						$compress=" -uncompress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   403
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   404
					elsif($compress eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   405
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   406
						$compress=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   407
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   408
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   409
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   410
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   411
					$compress = $opt_compression;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   412
					$compress =~m/\s-(compression)(method)\s(none|inflate|bytepair)/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   413
					print "* ".$1." ".$2.": ".$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   414
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   415
				my $command = "rofsbuild -slog".$compress." -datadrive=$obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   416
				print "* Executing $command\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   417
				system($command);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   418
				if ($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   419
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   420
					&datadriveimage::reportError("* ROFSBUILD failed to generate data drive image",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   421
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   422
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   423
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   424
					push(@dataDriveFileList,$obeyfile.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   425
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   426
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   427
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   428
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   429
	# after processing all the data drive image(s) delete zdrive and datadrive directory 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   430
	# if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   431
	if($dataImageCount)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   432
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   433
		# delete Z drive directory if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   434
		my $retVal = &deleteDirectory($ZDirloc,$opt_v)if(!($preserve));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   435
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   436
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   437
			&datadriveimage::reportError("* Warning could not delete $ZDirloc",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   438
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   439
		# delete data drive directory if and only if preserve(-p) option is disabled.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   440
		$retVal = &deleteDirectory($DataDriveDirloc,$opt_v)if(!($preserve));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   441
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   442
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   443
			&datadriveimage::reportError("* Warning could not delete $DataDriveDirloc",$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   444
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   445
		# reset image count to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   446
		$dataImageCount = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   447
		# reset z drive present to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   448
		$zDrivePresent = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   449
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   450
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   451
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   452
sub tidy_exit
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   453
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   454
	#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   455
	# Tidy and exit
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   456
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   457
	if (!$preserve)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   458
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   459
	    foreach my $tempfiles (@tempfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   460
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   461
	    print "remove $tempfiles\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   462
			unlink "$tempfiles";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   463
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   464
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   465
	if($rombasename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   466
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   467
		system("dir $rombasename.*");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   468
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   469
	if(@dataDriveFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   470
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   471
		print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   472
		print " ----------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   473
		print "| List of file(s) generated pertaining to data drive image |\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
		my $arraySize = scalar(@dataDriveFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   476
		for( my $i=0; $i < $arraySize; $i++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   477
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   478
			# remove the first element from an array and return it 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   479
			my $element = shift(@dataDriveFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   480
			# get the size of the file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   481
			my $size = -s $element;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   482
			print "Size = ".$size." bytes"."\t"."File = ".$element."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   483
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   484
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   485
	exit(0);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   486
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   487
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   488
# This is the main function which is responsible for processing data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   489
# This function internally calls other functions to create datadrive folder,zdrive folder
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   490
# and external tools such as INTERPRETSIS, READIMAGE and finally ROFSBUILD to generate 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   491
# appropriate data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   492
sub processData		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   493
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   494
	if($dataImageCount)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   495
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   496
		# set the default path for Z drive and Data drive directory,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   497
		# if and only if, path is not specified by the user. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   498
		$ZDirloc = &datadriveimage::setPath("zdrive") unless ($ZDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   499
		$DataDriveDirloc = &datadriveimage::setPath("datadrive") unless ($DataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   500
		#delete any existing Z drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   501
		my $retVal = &datadriveimage::deleteDirectory($ZDirloc,$opt_v)if(!$opt_r);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   502
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   503
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   504
			exit(1) if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   505
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   506
		# 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
   507
		$retVal = &datadriveimage::deleteDirectory($DataDriveDirloc,$opt_v) if(!$opt_r);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   508
		if($retVal)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   509
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   510
			exit(1) if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   511
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   512
		if($opt_logFile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   513
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   514
			# clean any pre-existance of log file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   515
			unlink($ZDirloc."\/".$imageEntryLogFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   516
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   517
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   518
		for (my $datadriveidx=0; $datadriveidx < $dataImageCount; $datadriveidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   519
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   520
			my $driveIndex = $dataIndexHash{$datadriveidx};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   521
			# get the data drive name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   522
			if( defined( $driveIndex ) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   523
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   524
				my $datadrivename=$datadriveimage[$driveIndex]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   525
				# get the size of the data drive.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   526
				my $size = $datadriveimage[$driveIndex]{size};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   527
				if( $datadrivename )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   528
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   529
					# set data drive oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   530
					my $datadriveobyfile = $datadrivename.".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   531
					# final location of prototype data drive.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   532
					my $proDataDriveDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   533
					# Location of stub-sis file(s) inside Z Drive folder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   534
					my $zDriveSisFileLoc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   535
					# check if more than one data drive image needs to be generated. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   536
					if( $dataImageCount > 1 )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   537
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   538
						# if yes, then set the location of prototype data drive folder as 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   539
						# DataDriveDirloc + datadrivename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   540
						$proDataDriveDirloc = $DataDriveDirloc."\/".$datadrivename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   541
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   542
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   543
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   544
						# else, then set the location of prototype data drive folder as DataDriveDirloc 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   545
						$proDataDriveDirloc = $DataDriveDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   546
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   547
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   548
					# create prototype data drive folder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   549
					print "creating data drive folder\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   550
					&datadriveimage::createDirectory($proDataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   551
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   552
					# check for sis file keyword in ROM description file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   553
					# if found,then locate for stub-sisfile.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   554
					# 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
   555
					# and dump all the non-sis files on to the Z drive folder. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   556
					if(&datadriveimage::checkForSisFile($datadriveobyfile,\@sisfilelist,\$sisfilepresent))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   557
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   558
						my $zDriveImagePresent = 0; # flag to check whether z drive image is Present;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   559
						if(&datadriveimage::checkForZDriveImageKeyword($datadriveobyfile,\@zDriveImageList,\$zDriveImagePresent) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   560
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   561
							# find out size of the array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   562
							my $arraysize = scalar(@zDriveImageList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   563
							for( my $i=0; $i < $arraysize; $i++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   564
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   565
								$zDriveSisFileLoc =  $ZDirloc."\/".$datadrivename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   566
								&datadriveimage::invokeReadImage(pop(@zDriveImageList),$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   567
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   568
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   569
						else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   570
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   571
							$zDriveSisFileLoc = $ZDirloc;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   572
							# locate and copy stub-sis file(s),for the first time.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   573
							if( !$zDrivePresent )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   574
							{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   575
								# check for image file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   576
								if( $opt_zimage )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   577
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   578
									# image(s)supplied to BUILDROM(like rom,rofs,extrofs or core) using "-zdriveimage" option, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   579
									# 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
   580
									# fed to READIMAGE as an input.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   581
									foreach my $element (@zdriveImageName)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   582
									{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   583
										# invoke READIMAGE to extract all /swi stub sis file(s) from the given image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   584
										$zDrivePresent = &datadriveimage::invokeReadImage($element,$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   585
									}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   586
								}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   587
								else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   588
								{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   589
									# 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
   590
									# 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
   591
									# fed to READIMAGE as an input.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   592
									foreach my $element (@romImages)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   593
									{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   594
										# invoke READIMAGE to extract all /swi stub sis file(s) from the given image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   595
										$zDrivePresent = &datadriveimage::invokeReadImage($element,$zDriveSisFileLoc,$opt_v,$imageEntryLogFile,$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   596
									}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   597
								}
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
						# invoke INTERPRETSIS tool with z drive folder location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   601
						if ($useinterpretsis)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   602
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   603
							&datadriveimage::invokeInterpretsis( \@sisfilelist,$proDataDriveDirloc,$opt_v,$zDriveSisFileLoc,$paraFile,$opt_k,\@interpretsisOptList)if($sisfilepresent);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   604
						}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   605
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   606
							print "Warning: interpretsis is not ready on linux.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   607
						}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   608
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   609
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   610
					# create an oby file by traversing through upated prototype data drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   611
					&datadriveimage::dumpDatadriveObydata( $proDataDriveDirloc,$datadriveobyfile,$size,\@nonsisFilelist,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   612
										\@renameList,\@aliaslist,\@hideList,\@sisobydata,\@datadrivedata,$opt_k,$opt_v );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   613
					#reset sisfilepresent flag to zero;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   614
					$sisfilepresent =0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   615
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   616
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   617
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   618
		create_datadriveImage();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   619
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   620
	tidy_exit;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   621
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   622
#Parse and process image content xml file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   623
#Gets the oby files listed in the xml file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   624
# Pushes all the oby files found to an array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   625
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   626
sub image_content_processing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   627
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   628
	if(!defined ($image_content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   629
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   630
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   631
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   632
	&ImageContentHandler::ParseImageContentXML($image_content);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   633
	&ImageContentHandler::ProcessImageContent;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   634
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   635
	if(defined ($image_content) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   636
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   637
#		Collect the oby files if any in the Image content file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   638
		my $files = &ImageContentHandler::GetObyFiles;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   639
		foreach my $obeyfile (@$files)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   640
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   641
			next if match_obyfile($obeyfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   642
			next if (match_obyfile("$obeyfile.oby"));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   643
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   644
	}
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
# Subroutine to process parameter-file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   648
sub parameterFileProcessor
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   649
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   650
	my $paramFile = shift(@_);	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   651
	my @paramFileParamaters = ();	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   652
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   653
	my $fileOpenFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   654
	open FILE,"<", $paramFile or $fileOpenFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   655
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   656
	if(!$fileOpenFlag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   657
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   658
		print "Error: Could not open parameter-file \"$paramFile\" for reading.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   659
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   660
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   661
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   662
	# Parse parameter-file and collect all the parameters in an array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   663
	while(my $line = <FILE>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   664
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   665
		# Read the line till character ';'(used for providing comments in the file) or EOL
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   666
		$line = $1 if ($line =~ /(.*);/); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   667
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   668
		# Split the parameters specified in a line based on white-spaces		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   669
		my @paramaters = split(/(\s)/,$line);	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   670
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   671
		my $flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   672
		my $argWithQuotes='';
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   673
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   674
		foreach my $value (@paramaters) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   675
		{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   676
			# If the parameter doesn't conatian double quotes then push it 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   677
			# to the list of parameters.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   678
			if(($value !~ /\"/) && (!$argWithQuotes)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   679
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   680
				if ($value !~ /^\s*$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   681
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   682
					push @paramFileParamaters,$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   683
				}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   684
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   685
			# If the parameter is in the form  -fm="faturedb.xml" then remove
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   686
			# double quotes and push it to the list of parameters.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   687
			elsif(($value =~ /\".*\"/))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   688
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   689
				$value =~ s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   690
				push @paramFileParamaters,$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   691
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   692
			# If the parameter is in the form  -fm="fature  db.xml" then read
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   693
			# the parameter starting from opening quote till the closing quote.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   694
			elsif( ($value =~ /\"/) && $argWithQuotes) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   695
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   696
				$argWithQuotes .= $value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   697
				$argWithQuotes =~ s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   698
				push @paramFileParamaters,$argWithQuotes;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   699
				$argWithQuotes='';		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   700
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   701
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   702
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   703
				$argWithQuotes .= $value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   704
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   705
		}		
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
	close FILE;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   709
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   710
	if (!@paramFileParamaters)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   711
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   712
		print "Warning: No parameters specified in paramer-file \"$paramFile\".\n";		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   713
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   714
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   715
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   716
	my $paramFileFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   717
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   718
	# Invoke subroutine "process_cmdline_arguments" to process the parameters read from
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   719
	# the parameter file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   720
	&process_cmdline_arguments($paramFileFlag, @paramFileParamaters);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   721
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   722
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   723
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   724
# Processes the command line arguments passed to buildrom tool
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   725
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   726
sub process_cmdline_arguments
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   727
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   728
   	my %tmpBldRomOpts;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   729
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   730
	my ($paramFileFlag, @argList); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   731
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   732
	if (defined @_)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   733
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   734
		($paramFileFlag, @argList) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   735
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   736
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   737
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   738
		@argList = @ARGV;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   739
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   740
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   741
	if (!defined $paramFileFlag) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   742
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   743
		# Enforce Feature Manager if macro SYMBIAN_FEATURE_MANAGER is defined in the HRH file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   744
		my @hrhMacros = &get_variantmacrolist;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   745
		if (grep /^SYMBIAN_FEATURE_MANAGER\s*$/, @hrhMacros)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   746
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   747
			$enforceFeatureManager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   748
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   749
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   750
		# Process the parameters of parameter-file if passed.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   751
		foreach my $arg (@argList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   752
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   753
			if ($arg =~ /^-argfile=(.*)/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   754
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   755
				&parameterFileProcessor($1);				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   756
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   757
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   758
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   759
	# first searching argList for keepgoing option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   760
	foreach my $arg (@argList) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   761
		if ( $arg =~ /^-k$/i || $arg =~ /^-keepgoing$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   762
	  {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   763
			$opt_k = 1;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   764
  		last;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   765
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   766
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   767
	foreach my $arg (@argList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   768
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   769
	    if ($arg =~ /^-argfile=(.*)/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   770
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   771
			&parameterFileProcessor($1) if (defined $paramFileFlag);						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   772
			next;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   773
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   774
		if ($arg =~ /^-[DI]/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   775
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   776
		$cppargs .= " $arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   777
		#Set 'udeb' for debug option 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   778
		if($arg =~ /^-D_FULL_DEBUG/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   779
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   780
		    $tmpBldRomOpts{"BUILD_DIR"} = "udeb";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   781
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   782
		#Set specific platform supplied from the command option 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   783
		elsif($arg =~ /^-D_PLAT=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   784
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   785
		    $tmpBldRomOpts{"ABI_DIR"} = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   786
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   787
		# Check for a Feature Variant
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   788
		elsif ($arg =~ /^-DFEATUREVARIANT=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   789
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   790
			my $varname = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   791
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   792
			if ($varname =~ /^\.(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   793
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   794
				# for testing, locate the VAR file in the current directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   795
				%featureVariant = get_variant($1, ".");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   796
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   797
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   798
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   799
				%featureVariant = get_variant($varname);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   800
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   801
			if (!$featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   802
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   803
			    print "FEATUREVARIANT $varname is not VALID\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   804
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   805
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   806
			if ($featureVariant{'VIRTUAL'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   807
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   808
			    print "FEATUREVARIANT $varname is VIRTUAL\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   809
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   810
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   811
			addDrivesToFeatureVariantPaths();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   812
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   813
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   814
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   815
	    if ($arg =~ /^-o(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   816
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   817
		$opt_o = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   818
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   819
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   820
	    if ($arg =~ /^-j(\d+)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   821
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   822
		    $opt_jobs = "-j".$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   823
		    next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   824
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   825
	    if ($arg =~ /^-v$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   826
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   827
		$opt_v =1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   828
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   829
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   830
	    if ($arg =~ /^-s$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   831
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   832
		$strict = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   833
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   834
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   835
	    if ($arg =~ /^-w$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   836
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   837
		$warnSelection = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   838
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   839
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   840
	    if ($arg =~ /^-p$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   841
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   842
		$preserve = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   843
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   844
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   845
	    if ($arg =~ /^-nospi$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   846
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   847
		$createspi=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   848
		$spiset=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   849
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   850
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   851
	    if ($arg =~ /^-spi$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   852
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   853
		$createspi=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   854
		$spiset=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   855
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   856
	    }	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   857
	    #Process External Tool
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   858
	    if ($arg =~/^-e(.*)/)#Match to get the tool perl module files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   859
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   860
		&externaltools::loadTools($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   861
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   862
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   863
   		#Process imagecontent file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   864
	    if( $arg =~ /^-i(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   865
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   866
# Disabling -i option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   867
		print "Warning: Ignoring invalid Option $arg \n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   868
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   869
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   870
		#Process feature manager database xml file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   871
	    if($arg =~ /^-fm=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   872
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   873
			if (!$enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   874
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   875
				print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   876
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   877
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   878
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   879
			$featureXml = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   880
			$xmlrequired = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   881
			$featuremanager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   882
			if ($featureXml =~ /^$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   883
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   884
				print "Error: No filename specified with \"-fm=\" option.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   885
			}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   886
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   887
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   888
		#Process Cache command line options.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   889
		if($arg =~ /^-cache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   890
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   891
			$opt_cache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   892
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   893
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   894
		if($arg =~ /^-nocache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   895
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   896
			$opt_nocache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   897
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   898
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   899
		if($arg =~ /^-cleancache/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   900
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   901
			$opt_cleancache = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   902
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   903
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   904
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   905
	    #Process ROM image compression type if it's specified through command line option.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   906
	    if($arg =~ /^-compress(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   907
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   908
	    	if($1 eq '')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   909
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   910
	    		$opt_compression_type = ALLSECTIONS;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   911
	    		print "Whole ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   912
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   913
	    	elsif($1 eq '=paged')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   914
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   915
	    		$opt_compression_type = PAGEDSECTION;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   916
	    		print "Paged section of the ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   917
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   918
	    	elsif($1 eq '=unpaged')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   919
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   920
	    		$opt_compression_type = UNPAGEDSECTION;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   921
	    		print "Unpaged section of the ROM image will be compressed.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   922
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   923
	    	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   924
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   925
	    		print "Unknown compression type: $1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   926
	    		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   927
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   928
	    	next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   929
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   930
		if ($arg =~ /^-nofm(=(.*))?$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   931
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   932
			if (!$enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   933
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   934
				print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   935
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   936
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   937
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   938
   			$noFeatureManager = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   939
            #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
   940
            if(!$2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   941
            {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   942
                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
   943
            }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   944
            else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   945
            {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   946
                $preBuiltFeaturesDataFile = $2;						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   947
            }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   948
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   949
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   950
		#Process feature registry database xml file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   951
	    if($arg =~ /^-fr=(.*)/ || $arg =~ /^-f(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   952
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   953
			if ($enforceFeatureManager)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   954
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   955
				print "Error: Option \"-f|-fr\" is no longer supported.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   956
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   957
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   958
			}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   959
			$featureXml = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   960
			$xmlrequired = 1;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   961
			if ($featureXml =~ /^$/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   962
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   963
				print "Error: No filename specified with \"-f|-fr\" option.\n";				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   964
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   965
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   966
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   967
	    if ($arg =~ /^-spiplacement$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   968
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   969
			$spiplacement = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   970
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   971
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   972
		if ($arg =~ /^-noimage$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   973
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   974
			$noimage=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   975
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   976
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   977
		if ($arg =~ /^-nosymbols$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   978
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   979
			$nosymbols=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   980
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   981
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   982
		if ($arg =~ /^-geninc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   983
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   984
			$geninc=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   985
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   986
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   987
		if($arg =~ /^-gendep$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   988
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   989
			$gendep=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   990
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   991
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   992
		if ($arg =~ /^-checkcase$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   993
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   994
			$checkcase=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   995
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   996
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   997
		if ($arg =~ /^-checkcase_test$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   998
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
   999
			$checkcase_test=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1000
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1001
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1002
		if ($arg =~ /^-workdir=(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1003
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1004
			my $workdir = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1005
			if (!-d $workdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1006
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1007
				die "directory $workdir does not exist\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1008
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1009
			my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1010
			chdir "$workdir" or die "cannot change to directory $workdir\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1011
			$thisdir=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1012
			$thisdir=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1013
			$thisdir.= "\/" unless $thisdir =~ /\/$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1014
			if(&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1015
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1016
				$thisdir =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1017
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1018
			$opt_workdir = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1019
			chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1020
			next;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1021
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1022
        if($arg =~/^-c(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1023
        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1024
          if($1 eq 'none' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1025
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1026
              $opt_compression = " -compressionmethod none";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1027
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1028
          elsif($1 eq 'inflate' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1029
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1030
              $opt_compression = " -compressionmethod inflate";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1031
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1032
          elsif($1 eq 'bytepair' )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1033
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1034
              $opt_compression = " -compressionmethod bytepair";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1035
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1036
          else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1037
          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1038
              print "Unknown compression method: $1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1039
              $errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1040
          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1041
          next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1042
        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1043
		if( $arg =~ /^-loglevel\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1044
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1045
			$logLevel= $arg;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1046
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1047
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1048
		# get Z directory location if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1049
		# if yes, then extract directory location from the given array element. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1050
		if( $arg =~ /^-z=(.*)/  || $arg =~ /^-zdrivepath=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1051
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1052
			# check for white space in the specified folder path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1053
			# if "yes" then warn the user saying folder will be created under default location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1054
			# else set the path specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1055
			if(&datadriveimage::checkForWhiteSpace($1,"zdrive"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1056
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1057
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1058
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1059
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1060
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1061
				$ZDirloc  = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1062
				$ZDirloc =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1063
				if( $ZDirloc !~ m/\/(\Z)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1064
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1065
					$ZDirloc .= "\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1066
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1067
				if( $ZDirloc !~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1068
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1069
					print "drive letter not specified\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1070
					$ZDirloc = &datadriveimage::setPath($ZDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1071
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1072
				print "Z Drive directory location = $ZDirloc\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1073
				#set the location of Z Drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1074
				$ZDirloc .= "zdrive";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1075
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1076
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1077
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1078
		# get data directory location if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1079
		# if yes, then extract directory location from the given array element. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1080
		if( $arg =~ /^-d=(.*)/ || $arg =~ /^-datadrivepath=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1081
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1082
			# check for white space in the specified folder path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1083
			# if "yes" then warn the user saying folder will be created under default location.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1084
			# else set the path specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1085
			if(&datadriveimage::checkForWhiteSpace($1,"datadrive"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1086
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1087
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1088
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1089
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1090
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1091
				$DataDriveDirloc = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1092
				$DataDriveDirloc =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1093
				if( $DataDriveDirloc !~ m/\/(\Z)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1094
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1095
					$DataDriveDirloc .= "\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1096
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1097
				if( $DataDriveDirloc !~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1098
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1099
					print "drive not specified\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1100
					$DataDriveDirloc = &datadriveimage::setPath($DataDriveDirloc);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1101
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1102
				print "Data Drive directory location = $DataDriveDirloc\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1103
				#set the location of Data Drive directory.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1104
				$DataDriveDirloc .= "datadrive";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1105
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1106
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1107
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1108
		# get Z dive image if specified by the user.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1109
		if( $arg =~ /^-zdriveimage=(.*)/i )	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1110
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1111
			my $imageName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1112
			if( $imageName =~ m/\,/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1113
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1114
				@zdriveImageName = split(/\,/,$imageName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1115
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1116
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1117
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1118
				push(@zdriveImageName,$imageName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1119
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1120
			$opt_zimage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1121
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1122
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1123
		# 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
  1124
		if( $arg =~ /^-argforinterpretsis=(.*)/i )	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1125
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1126
			my $interpretsisOpt = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1127
			if( $interpretsisOpt =~ m/\,/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1128
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1129
				@interpretsisOptList = split(/\,/,$interpretsisOpt);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1130
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1131
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1132
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1133
				push(@interpretsisOptList,$interpretsisOpt);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1134
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1135
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1136
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1137
		if ( $arg =~ /^-k$/i || $arg =~ /^-keepgoing$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1138
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1139
			$opt_k = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1140
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1141
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1142
		if ( $arg =~ /^-r$/i || $arg =~ /^-retainfolder$/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1143
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1144
			$opt_r = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1145
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1146
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1147
		if ( $arg =~ /^-pfile=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1148
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1149
			$paraFile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1150
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1151
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1152
		if ( $arg =~ /^-l=(.*)/i || $arg =~ /^-logimageentry=(.*)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1153
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1154
			if( $1 =~/[\/\\]/ || $1 =~ m/:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1155
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1156
				print "* Warning: Invalid log file extension try filename.txt\n";
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
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1160
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1161
				$opt_logFile = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1162
				$imageEntryLogFile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1163
			}
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
		if ( $arg =~ /^-lowmem/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1167
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1168
			$lowMem = $arg;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1169
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1170
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1171
	    if ($arg =~ /^-/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1172
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1173
		print "Unknown arg: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1174
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1175
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1176
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1177
	    # It's an OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1178
	    next if (match_obyfile($arg));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1179
	    next if (match_obyfile("$arg.oby"));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1180
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1181
	    print "Cannot find oby file: $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1182
	    $errors++ if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1183
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1184
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1185
	if (defined $paramFileFlag) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1186
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1187
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1188
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1189
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1190
	if (@obyfiles<1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1191
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1192
	    print "Missing obyfile argument\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1193
	    $errors++ if(!$opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1194
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1195
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1196
	if ($errors)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1197
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1198
	    print_usage();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1199
	    exit 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1200
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1201
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1202
	if ($noFeatureManager && $featuremanager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1203
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1204
		print "Warning: Ignoring \"-nofm\" option, as both \"-nofm\" and \"-fm\" options are provided.\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1205
		$noFeatureManager = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1206
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1207
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1208
	# Adding variant specific macros by including a HRH file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1209
	# (only required if no Feature Variant is used)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1210
	if (!$featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1211
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1212
	    my $variantMacroHRHFile = get_variantmacroHRHfile();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1213
	    if($variantMacroHRHFile){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1214
	        my $variantFilePath = split_path('Path',$variantMacroHRHFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1215
	        $cppargs .= " -I " . &append_driveandquote($variantFilePath) . " -include " . &append_driveandquote($variantMacroHRHFile); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1216
	        print "in cmd process $cppargs\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1217
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1218
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1219
	# load the required modules if xml is required
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1220
	if ($xmlrequired == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1221
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1222
	    if (defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1223
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1224
			load_featuresutil();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1225
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1226
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1227
	    if ($image_content)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1228
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1229
	    	&FlexLoad_ModuleL("ImageContentHandler");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1230
	    	# some variables for ImageContentHandler may have been setup
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1231
	    	my ($key, $value);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1232
	    	&ImageContentHandler::SetBldRomOpts; # Defaults to armv5 platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1233
	    	while (($key,$value) = each %tmpBldRomOpts)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1234
	    	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1235
			&ImageContentHandler::SetBldRomOpts($key, $value);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1236
	    	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1237
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1238
	    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1239
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1240
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1241
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1242
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1243
# Preprocessing phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1244
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1245
# Concatentate the specified .oby files and pass them through cpp
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1246
# to get the raw ROM specification in tmp1.oby
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1247
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1248
sub preprocessing_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1249
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1250
	my $temp1OBYFile = $thisdir."tmp1.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1251
	unlink "$temp1OBYFile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1252
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1253
#	Macro "ROM_FEATURE_MANAGEMENT" is defined when "-f|fr" or "-fm" is used
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1254
	if (defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1255
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1256
		$cppargs .= " -DROM_FEATURE_MANAGEMENT ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1257
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1258
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1259
	# add pre-include file and include directories for feature variants
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1260
	if ($featureVariant{'VALID'})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1261
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1262
		$cppargs .= " -I.";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1263
		my $incRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1264
		if ($incRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1265
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1266
			foreach (@$incRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1267
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1268
		    	$cppargs .= " -I \"$_\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1269
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1270
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1271
		my $HRH = $featureVariant{'VARIANT_HRH'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1272
		if ($HRH)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1273
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1274
		    $cppargs .= " -include \"$HRH\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1275
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1276
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1277
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1278
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1279
		# no feature variant so use the standard includes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1280
		$cppargs .= " -I. -I \"$rominclude\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1281
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1282
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1283
	print "* cpp -Wno-endif-labels -o $temp1OBYFile $cppargs\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1284
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1285
	is_existinpath("cpp", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1286
	$errors = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1287
	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
  1288
	foreach my $arg (@obyfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1289
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1290
		print CPP "\n#line 1 \"$arg\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1291
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1292
		if(open(OBY, $arg)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1293
			print "* reading $arg\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1294
			while ($line=<OBY>) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1295
				print CPP $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1296
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1297
			close OBY;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1298
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1299
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1300
			print STDERR "* Can't open $arg\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1301
			if(!$opt_k){			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1302
				close CPP;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1303
				exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1304
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1305
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1306
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1307
	close CPP;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1308
	my $cpp_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1309
	die "* cpp failed\n" if ($cpp_status != 0 || !-f "$temp1OBYFile");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1310
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1311
	if( defined ($image_content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1312
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1313
		#Read the OBY file that was generated by the pre-processor
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1314
		&ReadPreprocessedFile($temp1OBYFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1315
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1316
#		Check if the static dependencies of the OBY binaries are resolved.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1317
		&ImageContentHandler::UpdateObyBinaryStaticDep();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1318
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1319
		#Now append the files collected from cdfs.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1320
		&ImageContentHandler::GenObyFile($temp1OBYFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1321
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1322
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1323
	# Setup default rom configuration
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1324
	$romimage[0] = {xip=>1, compress=>0, extension=>0, composite=>"none",uncompress=>0 };
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1325
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1326
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1327
sub ReadPreprocessedFile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1328
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1329
#	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
  1330
#	passed directly to buildrom and/or the ones passed through Image Content XML.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1331
#	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
  1332
#	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
  1333
#	and need to be included in ROM.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1334
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1335
	my $temp1OBYFile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1336
	my $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1337
	my $srcFileName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1338
	my $srcFilePath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1339
	my $dstFileName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1340
	my $dstFilePath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1341
	open (OBYFH, "$temp1OBYFile") or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1342
	while($tmpline =<OBYFH>) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1343
		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
  1344
			$srcFilePath = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1345
			$dstFilePath = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1346
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1347
			if ($srcFilePath=~/.*[\/\\](\S+)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1348
				$srcFileName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1349
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1350
			if ($dstFilePath=~/.*[\/\\](\S+)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1351
				$dstFileName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1352
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1353
			my $binaryInfoRef = &cdfparser::GetBinaryInfo($dstFileName);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1354
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1355
			if(defined($binaryInfoRef)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1356
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1357
				#Found in CDF file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1358
				if($binaryInfoRef->{IsFoundInCDF})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1359
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1360
					print "Warning: File $srcFileName mentioned in OBY as well as CDF file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1361
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1362
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1363
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1364
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1365
				#Found in OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1366
				&ImageContentHandler::AddBinaryFromOby($dstFileName, $srcFilePath);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1367
			}
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
	close OBYFH;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1371
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1372
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1373
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1374
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1375
# Substitution phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1376
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1377
# Handle the "define XXX YYY" lines, perform the substitutions.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1378
# Print out any ECHO lines or ERROR lines. 
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
# Predefined substitutions: 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1382
#   TODAY means todays' date
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1383
#   RIGHT_NOW means the exact time
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1384
#   EPOCROOT taken from the environment
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1385
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1386
sub substitution_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1387
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1388
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1389
		my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1390
		$substitutionData{"TODAY"} = sprintf("%02d/%02d/%04d", $mday, $mon+1, $year+1900);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1391
		$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
  1392
		$substitutionData{"EPOCROOT"} = $epocroot;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1393
		@substitutionOrder = ("TODAY", "RIGHT_NOW", "EPOCROOT");
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 $temp1OBYFile = $thisdir."tmp1.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1397
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1398
	open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1399
	while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1400
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1401
		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
  1402
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1403
			$onlysmrimage = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1404
			last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1405
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1406
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1407
	close TMP1;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1408
	if ($enforceFeatureManager && (!$featuremanager) && (!$noFeatureManager) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1409
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1410
		my $defaultFeatureDbFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1411
		open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1412
		while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1413
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1414
			if ($line=~/^\s*defaultfeaturedb\s*=?\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1415
			{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1416
				# Get the default value for featuredatabasefile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1417
                
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1418
				$featureXml = "$epocroot$1";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1419
				$featureXml =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1420
				$featuremanager = 1;				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1421
				$defaultFeatureDbFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1422
				load_featuresutil();				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1423
				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1424
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1425
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1426
		close TMP1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1427
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1428
		if(!$defaultFeatureDbFlag && !$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1429
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1430
			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
  1431
			exit(1);			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1432
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1433
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1434
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1435
	open TMP1, "$temp1OBYFile" or die("* Can't open $temp1OBYFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1436
	while ($line=<TMP1>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1437
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1438
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1439
		$line =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1440
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1441
		my $tempstring = $epocroot."epoc32";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1442
		if(($line !~ /^\s*\#/) && ($line =~ /\/epoc32/i) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1443
		 && ($line !~ /EPOCROOT##\/?epoc32/i) && ($line !~ /$tempstring/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1444
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1445
			print "add EPOCROOT for line: $line\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1446
	  	$line =~ s-\/epoc32-EPOCROOT##epoc32-ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1447
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1448
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1449
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1450
		# Recognise keywords in lines that we process before substitution
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1451
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1452
		# # lineno "file" flagno
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1453
		# DEFINE name replacement-with-0-spaces
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1454
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1455
		if($line=~/^\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1456
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1457
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1458
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1459
		if ($line=~/^# (\d+) "(.*)" (\d+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1460
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1461
			push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1462
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1463
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1464
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1465
		if ($line=~/^\s*defaultfeaturedb\s*=?\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1466
		{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1467
			push @obydata, "REM $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1468
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1469
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1470
		#process the External tool invocation using IBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1471
		if ($line=~/externaltool=(.*),?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1472
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1473
			&externaltools::loadTools($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1474
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1475
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1476
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1477
		#Process the patch statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1478
		if($line =~ /^\s*patchdata\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1479
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1480
			$patchDataStmtFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1481
			my $new_line = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1482
 			# syntax "<DLLnamewithpath> addr <variableaddress> <variablesize> <newvalue>"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1483
 			# If the line matches with above syntax, just add the line into oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1484
 			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
  1485
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1486
 				if(AddDllDataInfo($new_line))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1487
 				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1488
 					$line = "REM $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1489
 				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1490
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1491
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1492
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1493
		if($line =~ /^\s*FEATURE\s*(.*)/i || $line =~ /^\s*EXCLUDE_FEATURE\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1494
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1495
			# Process the feature keywords only when "-f|fr" or "-fm" is passed to buildrom
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1496
			if(defined ($featureXml))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1497
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1498
				push @obydata, "$line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1499
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1500
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1501
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1502
				push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1503
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1504
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1505
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1506
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1507
		if ($line=~/^\s*DEFINE\s+(\w+)\s+(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1508
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1509
			my $key=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1510
			my $value=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1511
			foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1512
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1513
				my $whatToSubstituteItWith=$substitutionData{$wordToSubstitute};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1514
				$value=~s/$wordToSubstitute/$whatToSubstituteItWith/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1515
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1516
			$value=~s/##//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1517
			if (defined $substitutionData{$key})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1518
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1519
				# If the key is redefined, apply it at the new position rather
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1520
				# than the old one.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1521
				push @obydata, "REM redefined $key as $value\n";# Leave a record of the definition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1522
				@substitutionOrder = grep !/^$key$/, @substitutionOrder;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1523
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1524
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1525
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1526
				push @obydata, "REM defined $key as $value\n";	# Leave a record of the definition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1527
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1528
			$substitutionData{$key}=$value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1529
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1530
			foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1531
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1532
	   	        if ($key =~ /$wordToSubstitute/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1533
	   	        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1534
				   print_source_error("Warning: $key is masked by earlier definition of $wordToSubstitute");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1535
			 	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1536
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1537
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1538
			push @substitutionOrder, $key;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1539
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1540
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1541
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1542
		# Do the substitutions in strict order of definition, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1543
		# then eliminate any old-fashioned ## things which may be left
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1544
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1545
		foreach my $wordToSubstitute (@substitutionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1546
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1547
			my $whatToSubstituteItWith=$substitutionData{$wordToSubstitute};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1548
			$line=~s/$wordToSubstitute/$whatToSubstituteItWith/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1549
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1550
		$line=~s/##//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1551
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1552
		# Recognise keywords in lines that we process after substitution
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1553
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1554
		# ECHO  anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1555
		# WARNING anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1556
		# ERROR anything at all
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1557
		# LANGUAGE_CODE nnn
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1558
		# DEFAULT_LANGUAGE nnn
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1559
		# ABI_DOWNGRADE from to
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1560
		# ROMBUILD_OPTION command-line-option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1561
		# ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1562
		# PlatSecEnforceSysBin on|off
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1563
		# ENABLE_SPI/DISABLE_SPI
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1564
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1565
		if ($line=~/^\s*ECHO\s+(.*?)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1566
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1567
			print "$1\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1568
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1569
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1570
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1571
		if ($line=~/^\s*(ERROR|WARNING)\s+(.*?)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1572
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1573
			print_source_error("$1 $2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1574
			$errors++ if ($1 =~ /ERROR/i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1575
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1576
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1577
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1578
		if ($line=~/^\s*(PlatSecEnforceSysBin)\s+(\S+)\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1579
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1580
			$enforceSysBin = ($2 =~ /ON/i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1581
			push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1582
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1583
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1584
		if ($line=~/^\s*LANGUAGE_CODE\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1585
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1586
			my $code = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1587
			if ($code !~ /^\d\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1588
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1589
				print_source_error("bad language code $code");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1590
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1591
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1592
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1593
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1594
				$languageCodes{$code} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1595
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1596
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1597
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1598
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1599
		if ($line=~/^\s*DEFAULT_LANGUAGE\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1600
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1601
			my $code = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1602
			if ($code !~ /^\d\d+$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1603
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1604
				print_source_error("bad default language code $code");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1605
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1606
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1607
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1608
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1609
				$defaultLanguageCode = $code;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1610
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1611
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1612
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1613
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1614
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1615
		if ($line=~/^\s*ABI_DOWNGRADE\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1616
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1617
			if ($line =~ /\s(.+)\s*->\s*(.+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1618
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1619
				$abiDowngrade = "$1 $2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1620
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1621
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1622
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1623
				print_source_error("bad ABI downgrade : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1624
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1625
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1626
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1627
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1628
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1629
		if ($line=~/^\s*BINARY_SELECTION_ORDER\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1630
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1631
	 		if ($line =~ /\s([^,]+)\s*,\s*(.+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1632
   			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1633
  				$binarySelectionOrderFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1634
 				$firstDIR = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1635
   				# remove whitespaces
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1636
 				$firstDIR = trim($firstDIR); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1637
   				@binarySelectionOrder = split(',', $2);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1638
   				@binarySelectionOrder = trim(@binarySelectionOrder);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1639
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1640
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1641
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1642
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1643
				print_source_error("bad order specified: $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1644
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1645
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1646
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1647
			next;
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
		if ($line=~/^\s*ROMBUILD_OPTION\s+(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1651
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1652
			$rombuildOptions{$1} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1653
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1654
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1655
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1656
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1657
		if ($line=~/^\s*enable_spi\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1658
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1659
			if(!($spiset)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1660
				$createspi=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1661
			}
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*disable_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=0;
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*DATA_IMAGE\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 ($line =~ /\s+(\d+)\s+(\S+)\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1678
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1679
				my $datadriveidx = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1680
				my $datadriveimagename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1681
				# have a count on number of data drive images that needs to be created
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1682
				print "data drive partion name = $datadriveimagename\n " if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1683
				my $dataimagesize = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1684
				if ($line =~ /\s+size=(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1685
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1686
					$dataimagesize=$1; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1687
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1688
				my $fstype = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1689
				my $compress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1690
				my $uncompress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1691
				if ($line =~ /\s+compress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1692
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1693
					$compress=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1694
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1695
				elsif($line =~ /\s+uncompress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1696
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1697
					$uncompress=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1698
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1699
				if ($line =~ /\s+fat16\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1700
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1701
					$fstype = "fat16"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1702
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1703
				if ($line =~ /\s+fat32\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1704
				{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1705
					$fstype = "fat32"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1706
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1707
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1708
				$datadriveimage[$datadriveidx] = {name=>$datadriveimagename, size=>$dataimagesize, compress=>$compress, uncompress=>$uncompress, fstype=>$fstype};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1709
				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
  1710
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1711
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1712
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1713
				print_source_error("bad DATA_IMAGE specification : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1714
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1715
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1716
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1717
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1718
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1719
		if ($line=~/^\s*ROM_IMAGE\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1720
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1721
			if ($line =~ /\s+(\d+)\s+(\S+)\s+/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1722
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1723
				my $romidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1724
				my $rompartitionname=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1725
				my $rompartitionsize=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1726
				if ($line =~ /\s+size=(\S+)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1727
					{ $rompartitionsize=$1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1728
				my $xip=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1729
				my $compress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1730
				my $uncompress=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1731
				my $extend=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1732
				my $composite="none";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1733
				if ($line =~ /\s+non-xip\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1734
					{ $xip=0; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1735
				if ($line =~ /\s+compress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1736
					{ $compress=1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1737
				elsif($line =~ /\s+uncompress\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1738
					{ $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
  1739
				if ($line =~ /\s+extension\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1740
					{ $extend=1; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1741
				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
  1742
				{	if (!($extend))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1743
						{ $composite="composite_primary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1744
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1745
						{ print "Error: composite_primary keyword must be used with a core image\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1746
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1747
				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
  1748
				{ if (!($extend))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1749
						{ $composite="composite_secondary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1750
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1751
						{ print "Error: composite_secondary keyword must be used with core image\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1752
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1753
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1754
				#	Compress and Uncompress are 2 different options and
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1755
				#	not mentioning one of them doesn't necessarily mean the other.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1756
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1757
				$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
  1758
				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
  1759
				check_romimage($romidx, $line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1760
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1761
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1762
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1763
				print_source_error("bad ROM_IMAGE specification : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1764
				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1765
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1766
			push @obydata, "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1767
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1768
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1769
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1770
		push @obydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1771
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1772
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1773
	close TMP1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1774
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1775
	dump_obydata("tmp2.oby", "result of substitution phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1776
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1777
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1778
sub check_romimage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1779
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1780
	my ($idx, $line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1781
	if ($idx gt 7)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1782
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1783
		print_source_error("too many roms : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1784
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1785
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1786
	if ($romimage[$idx]{xip} eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1787
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1788
		if ($romimage[$idx]{size} eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1789
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1790
			print_source_error("must specify a size for non-xip ROM : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1791
			$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1792
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1793
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1794
	if ($romimage[$idx]{extension} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1795
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1796
		if ($romimage[$idx-1]{extension} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1797
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1798
			print_source_error("cannot extend ROM image multiple times : $line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1799
			$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1800
		}
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1804
sub dump_obydata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1805
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1806
	my ($dumpfile, $comment) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1807
	$dumpfile = $thisdir.$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1808
	unlink($dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1809
	open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1810
	print "* Writing $dumpfile - $comment\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1811
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1812
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1813
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1814
		print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1815
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1816
	close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1817
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1818
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1819
sub track_source
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1820
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1821
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1822
	if ($line=~/^# (\d+) "(.*)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1823
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1824
		$sourceline=$1-1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1825
		$sourcefile=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1826
		$sourcefile=~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1827
		$sourcefile=~ s/\\/\//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1828
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1829
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1830
	$sourceline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1831
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1832
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1833
sub print_source_error
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1834
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1835
	my ($message) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1836
	print "$sourcefile($sourceline): $message\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1837
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1838
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1839
sub reassert_sourceline
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1840
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1841
	my ($offset) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1842
	return sprintf "# %d \"$sourcefile\" \n", $sourceline+1+$offset;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1843
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1844
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1845
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1846
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1847
# Reorganisation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1848
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1849
# Group lines beginning with "rom_image[<id>]" and deposit them in the appropriate
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1850
# order.  Truncate the description at the "stop" line, if there is one.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1851
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1852
sub reorganize_phase
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
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1856
	my @section2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1857
	my @part3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1858
	my @part4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1859
	my @part5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1860
	my @part6;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1861
	my @part7;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1862
	my @part8;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1863
	my @partitions = ( \@newobydata, \@section2, \@part3, \@part4, \@part5, \@part6, \@part7, \@part8 );
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1864
	my @currentpartition;	# partition stack
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1865
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1866
	my @processedImageIdx;		# list of proccesed data drive image index. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1867
	my $dataDriveStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1868
	my $dataDriveEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1869
	my $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1870
	my @datapartition;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1871
	my @linesArray;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1872
	my $curlyBraceShouldFollow;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1873
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1874
	my $collect_section2=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1875
	my $smrImageStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1876
	my $smrImageEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1877
	my $smrImageIndex = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1878
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1879
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1880
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1881
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1882
		if ($line=~/^\s*stop/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1883
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1884
			last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1885
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1886
		if ($line =~ /^\s*ROM_IMAGE\[(\S+)\]\s+\{(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1887
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1888
			# ROM_IMAGE[n] {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1889
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1890
			my $partition=$partitions[$idx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1891
			push @currentpartition, $partition;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1892
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1893
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1894
		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
  1895
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1896
			# DATA_IMAGE[n] or DATA_IMAGE[n] {  is specified.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1897
			# get the index.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1898
			$dataDriveIdx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1899
 			if($line !~ /\s*\{\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1900
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1901
 				$curlyBraceShouldFollow = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1902
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1903
			# make a check if dataDriveIdx exists in the processedImageIdx array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1904
			# if no, then push the dataDriveIdx on the processedImageIdx array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1905
			# if yes,then dont execute the loop.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1906
			if(&datadriveimage::checkInArray(\@processedImageIdx,$dataDriveIdx))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1907
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1908
				# push the index on to the array.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1909
				push(@processedImageIdx,$dataDriveIdx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1910
				# increment the image count. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1911
				++$dataImageCount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1912
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1913
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1914
			$dataIndexHash{($dataImageCount-1)} = $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1915
			# set start of the image section.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1916
			$dataDriveStartRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1917
			# set end of image section to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1918
			$dataDriveEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1919
			push (@linesArray,"\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1920
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1921
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1922
		elsif( $line =~ /^\s*SMR_IMAGE\s*\{\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1923
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1924
			$smrImageStartRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1925
			$smrImageEndRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1926
			$needSmrImage = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1927
			push (@linesArray, "\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1928
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1929
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1930
 		elsif((defined $curlyBraceShouldFollow) && ($line !~ /^\s*$/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1931
 		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1932
			undef $curlyBraceShouldFollow;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1933
 			if($line !~ /^\s*\{\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1934
 			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1935
 				print "Error: Symbol '{' not followed after the keyword DATA_IMAGE\[".$dataDriveIdx."\]\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1936
 				$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1937
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1938
 			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1939
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1940
		# data drive specific keywords.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1941
		elsif( $line =~/^\s*dataimagename\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1942
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1943
			# set the name for the image, if image name is specified using driveimagename keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1944
			$datadriveimage[$dataDriveIdx]{name} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1945
			print"datadriveimagename = $datadriveimage[$dataDriveIdx]{name}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1946
			# skip the line.
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
		elsif( $line =~/^\s*dataimagesize\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1950
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1951
			# set the size for the image, if image size is specified using driveimagesize keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1952
			$datadriveimage[$dataDriveIdx]{size} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1953
			print"datadriveimagesize = $datadriveimage[$dataDriveIdx]{size}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1954
			# skip the line.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1955
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1956
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1957
		elsif( $line =~/^\s*dataimagefilesystem\s*\=\s*(\S+)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1958
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1959
			# 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
  1960
			$datadriveimage[$dataDriveIdx]{fstype} = $1 if($dataDriveStartRegion && !$dataDriveEndRegion);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1961
			print"datadriveimagefstype = $datadriveimage[$dataDriveIdx]{fstype}\n" if($dataDriveStartRegion && !$dataDriveEndRegion && $opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1962
			# skip the line.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1963
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1964
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1965
		elsif( $line =~/^\s*compress/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1966
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1967
			# Compresses the resulting data drive image using the Deflate, Huffman+LZ77 algorithm.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1968
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1969
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1970
				$datadriveimage[$dataDriveIdx]{compress} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1971
				$datadriveimage[$dataDriveIdx]{uncompress} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1972
				print"datadriveimage[$dataDriveIdx] compress = $datadriveimage[$dataDriveIdx]{compress}\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1973
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1974
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1975
		elsif( $line =~/^\s*uncompress/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1976
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1977
			# Uncompresses the resulting data drive image.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1978
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1979
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1980
				$datadriveimage[$dataDriveIdx]{uncompress} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1981
				$datadriveimage[$dataDriveIdx]{compress} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1982
				print"datadriveimage[$dataDriveIdx] uncompress = $datadriveimage[$dataDriveIdx]{uncompress}\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1983
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1984
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1985
		elsif ($line =~ /^\s*ROM_IMAGE\[(\S+)\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1986
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1987
			# ROM_IMAGE[n] file=...
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1988
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1989
			$line="$2\n";	# remove the ROM_IMAGE[.] keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1990
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1991
			my $partition=$partitions[$idx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1992
			push @$partition, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1993
			push @$partition, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1994
			$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1995
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1996
		elsif ($line =~ /^\s*DATA_IMAGE\[(\S+)\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1997
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1998
			# DATA_IMAGE[n] file=...
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  1999
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2000
			# remove the DATA_IMAGE[.] keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2001
			$line="$2\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2002
			# get the index value
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2003
			my $idx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2004
			# iterate through the hash to get corresponding 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2005
			# key from the value(i.e idx) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2006
			while (my($key, $value) = each(%dataIndexHash))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2007
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2008
				if ($value eq $idx ) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2009
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2010
					$idx = $key;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2011
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2012
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2013
			push @{$datapartition[$idx]}, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2014
			push @{$datapartition[$idx]}, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2015
			$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2016
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2017
		elsif ($line =~ /^\s*\}.*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2018
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2019
			if($dataDriveStartRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2020
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2021
				# since "}" brace is encountered
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2022
				# reset the start of DATA_IMAGE to zero.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2023
				$dataDriveStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2024
				# mark the the end of the DATA_IMAGE.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2025
				$dataDriveEndRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2026
				if(!$datadriveimage[$dataDriveIdx]{name})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2027
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2028
					# image name is not defined, define a default name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2029
					$datadriveimage[$dataDriveIdx]{name} = "dataImage".$dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2030
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2031
				if(!$datadriveimage[$dataDriveIdx]{fstype})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2032
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2033
					# image name is not defined, define a default name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2034
					$datadriveimage[$dataDriveIdx]{fstype} = "fat16";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2035
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2036
				foreach my $file (@linesArray)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2037
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2038
					push @{$datapartition[($dataImageCount-1)]},$file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2039
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2040
				## if end of the DATA_IMAGE is true,
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2041
				## make room for next DATA_IMAGE if any.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2042
				undef(@linesArray); 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2043
				#un define $dataDriveIdx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2044
				undef($dataDriveIdx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2045
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2046
			elsif($smrImageStartRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2047
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2048
				$smrImageStartRegion = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2049
				$smrImageEndRegion = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2050
				foreach my $file (@linesArray)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2051
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2052
					push @{$smrPartitions{$smrImageIndex}}, $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2053
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2054
				undef(@linesArray);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2055
				$smrImageIndex++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2056
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2057
			elsif (scalar @currentpartition > 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2058
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2059
				pop @currentpartition; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2060
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2061
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2062
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2063
				print "WARNING: closing '}' found with no matching 'ROM_IMAGE[<n>]/DATA_IMAGE[<n>] {'\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2064
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2065
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2066
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2067
		elsif ($line=~/^\s*section2(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2068
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2069
			my $origline=$line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2070
			$line="$1\n";	# remove the section2 keyword
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2071
			if ($collect_section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2072
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2073
				push @section2, reassert_sourceline(-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2074
				push @section2, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2075
				$line="REM handled $origline";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2076
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2077
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2078
		elsif ($line=~/^\s*section/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2079
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2080
			push @newobydata, $line;		# insert the section statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2081
			if (@section2 != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2082
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2083
				push @newobydata, "REM accumulated section2 lines\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2084
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2085
			foreach $line (@section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2086
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2087
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2088
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2089
			$collect_section2=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2090
			$line = reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2091
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2092
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2093
		elsif ($line=~/^\s*extensionrom/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2094
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2095
			# end of ROM description, so deposit accumulated lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2096
			if (@section2 != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2097
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2098
				push @newobydata, "REM accumulated section2 lines\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2099
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2100
			foreach $line (@section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2101
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2102
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2103
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2104
			$collect_section2=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2105
			push @newobydata, reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2106
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2107
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2108
		elsif ( scalar(@linesArray) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2109
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2110
			if($dataDriveStartRegion && !$dataDriveEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2111
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2112
				my $modifiedLine = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2113
				push @linesArray, $modifiedLine;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2114
				$line = "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2115
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2116
			elsif($smrImageStartRegion && !$smrImageEndRegion)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2117
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2118
				if($line =~ /^\s*IMAGENAME\s*=\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2119
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2120
					my $smrimagename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2121
					$smrimagename =~s/(\.img)//i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2122
					if(exists($smrNameInfo{$smrimagename}))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2123
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2124
						$smrNameInfo{$smrimagename}++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2125
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2126
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2127
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2128
						$smrNameInfo{$smrimagename} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2129
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2130
					$line =~s/(\.img)//i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2131
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2132
				push @linesArray, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2133
				$line = "REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2134
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2135
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2136
		elsif (scalar @currentpartition)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2137
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2138
			my $modifiedLine = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2139
			if ($line =~ /^\s*SPI_POSITION/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2140
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2141
				if(!($createspi && $spiplacement))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2142
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2143
					# 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
  2144
					$modifiedLine = "REM SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2145
					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
  2146
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2147
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2148
			# a partition is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2149
			# push this line into the currently selected partition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2150
			my $partition=$currentpartition[-1];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2151
			push @$partition, $modifiedLine;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2152
			$line="REM handled $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2153
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2154
		elsif ($line =~ /^\s*SPI_POSITION/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2155
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2156
			if(!($createspi && $spiplacement))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2157
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2158
                # 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
  2159
                $line = "REM SPI creation/placement flag not enabled. Ignoring SPI_POSITION\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2160
                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
  2161
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2162
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2163
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2164
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2165
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2166
	# output the grouped data
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2167
	my $partitionidx=2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2168
	if ($collect_section2)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2169
		{ $partitionidx=1; } # output old "section2" if not done already
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2170
	for (; $partitionidx<8; $partitionidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2171
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2172
		my $partition=$partitions[$partitionidx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2173
		if (@$partition != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2174
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2175
			push @newobydata, "REM ROM_IMAGE[$partitionidx]\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2176
			foreach $line (@$partition)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2177
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2178
				push @newobydata, $line;	# insert accumulated section2 lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2179
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2180
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2181
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2182
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2183
	for ( my $datapartitionidx=0; $datapartitionidx < $dataImageCount; $datapartitionidx++ )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2184
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2185
		if( defined( @{ $datapartition[$datapartitionidx] } ) )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2186
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2187
			push @newobydata, "REM DATA_IMAGE[$dataIndexHash{$datapartitionidx}]\n" ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2188
			foreach my $file (@{$datapartition[$datapartitionidx]})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2189
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2190
				push @newobydata, $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2191
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2192
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2193
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2194
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2195
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2196
	foreach my $imageIndex (keys(%smrPartitions))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2197
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2198
		my $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2199
		my @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2200
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2201
		foreach (@{$smrPartitions{$imageIndex}})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2202
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2203
			if(/^\s*imagename\s*=\s*(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2204
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2205
				$imagename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2206
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2207
			push @obeyfile, $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2208
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2209
		if($smrNameInfo{$imagename} == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2210
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2211
			push @obeyFileList, $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2212
			push @newobydata, "REM SMR_IMAGE \n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2213
			push @newobydata, @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2214
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2215
		if(! defined($imagename))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2216
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2217
			$smrNoImageName = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2218
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2219
		undef $imagename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2220
		undef @obeyfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2221
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2222
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2223
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2224
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2225
	dump_obydata("tmp3.oby", "result of reorganisation phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2226
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2227
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2228
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2229
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2230
# Plugin phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2231
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2232
# Process any plugin annotation lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2233
# Note: This expands resource lines to include MULTI_LINGUIFY so must be done before
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2234
# the Multilinguify phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2235
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2236
# 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
  2237
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2238
sub plugin_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2239
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2240
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2241
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2242
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2243
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2244
	 	if ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2245
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2246
		# ignore REM statements, to avoid processing "REM ECOM_PLUGIN(xxx,yyy)"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2247
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2248
		elsif(plugin_match($line)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2249
			$line = reassert_sourceline();		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2250
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2251
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2252
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2253
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2254
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2255
	dump_obydata("tmp4.oby", "result of Plugin stage") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2256
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2257
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2258
sub plugin_match ()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2259
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2260
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2261
	foreach my $plugintype (keys(%plugintypes)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2262
	  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
  2263
	  	# __<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
  2264
	  {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2265
		    my $emulatorDir=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2266
		    my $fileRomDir=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2267
		    my $dataz_= $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2268
		    my $resourceDir=$4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2269
		    my $pluginFileName=$5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2270
		    my $pluginResourceName=$6;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2271
		    my $spidatahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2272
			my $paged_data = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2273
  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2274
			if ($line =~ m/paged\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2275
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2276
				$line =~ m/\s+(\S+)\s*$/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2277
				$paged_data = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2278
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2279
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2280
		    if ($line =~ m/^\s*(_hide)/i )
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2281
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2282
		    	$spidatahide = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2283
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2284
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2285
		    # 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
  2286
		    # 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
  2287
		    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2288
		    if ($pluginResourceName =~ m/^(.+)\./)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2289
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2290
		      $pluginResourceName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2291
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2292
		    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2293
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2294
		      print_source_error("Invalid Resource name: $pluginResourceName in " . $plugintype . "_PLUGIN :$line");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2295
		      #treat as error if strict option selected;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2296
		      $errors++ if ($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2297
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2298
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2299
		    if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2300
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2301
			push @newobydata, "hide=$fileRomDir\/$pluginFileName\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2302
		    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2303
		    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2304
		    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2305
		    	push @newobydata, "file=$emulatorDir\/$pluginFileName $fileRomDir\/$pluginFileName $paged_data\n";
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($createspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2309
		    	    if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2310
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2311
			    	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
  2312
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2313
			    else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2314
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2315
			    	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
  2316
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2317
		  	} else {
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, "hide=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName)\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, "data=MULTI_LINGUIFY(RSC $dataz_\/$resourceDir\/$pluginResourceName $resourceDir\/$pluginResourceName)\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2325
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2326
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2327
				return 1; #successful match
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2328
	   }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2329
     }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2330
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2331
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2332
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2333
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2334
# Multilinguify phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2335
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2336
# Process the MULTILINGUIFY() lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2337
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2338
sub multlinguify_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2339
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2340
	if ((scalar keys %languageCodes) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2341
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2342
		print "* No language codes specified, defaulting to 01\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2343
		$defaultLanguageCode = "01";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2344
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2345
	$languageCodes{$defaultLanguageCode} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2346
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2347
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2348
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2349
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2350
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2351
		if ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2352
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2353
			# ignore REM statements, to avoid processing "REM data=xxx yyy"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2354
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2355
		elsif ($line=~/^(.*?)\bMULTI_LINGUIFY\s*\(\s*(\S+)\s+(\S+)\s+(\S+)\s*\)(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2356
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2357
			my $initialStuff=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2358
			$initialStuff = lc ($initialStuff);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2359
			my $defaultFileNameExtension=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2360
			$defaultFileNameExtension = lc ($defaultFileNameExtension);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2361
			my $sourceFileNameWithoutExtension=$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2362
			$sourceFileNameWithoutExtension = ($sourceFileNameWithoutExtension);# if ($enableLowercaseTransfer);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2363
			my $targetFileNameWithoutExtension=$4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2364
			my $finalStuff=$5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2365
			my $spidataflag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2366
			my $spidatahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2367
			my $datahide = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2368
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2369
			if ($initialStuff=~/\w$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2370
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2371
				$initialStuff.=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2372
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2373
			if ($finalStuff=~/^\w/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2374
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2375
				$finalStuff=" ".$finalStuff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2376
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2377
			if ($initialStuff =~ /^\s*spidata/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2378
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2379
				$spidataflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2380
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2381
			if ($initialStuff =~ /^\s*spidatahide/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2382
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2383
				$spidataflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2384
				$spidatahide = 1;
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*hide/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2387
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2388
				$datahide = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2389
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2390
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2391
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2392
# ecom.spi should contain the .RSC files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2393
			if ($spidataflag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2394
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2395
				my $sourceFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2396
				my $targetFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2397
				if (-e ("$sourceFileNameWithoutExtension.$sourceFileNameExtension"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2398
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2399
					if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2400
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2401
						push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension$finalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2402
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2403
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2404
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2405
						push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$targetFileNameExtension$finalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2406
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2407
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2408
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2409
			my $useDefaultFileNameExtension=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2410
			foreach my $languageCode (keys %languageCodes) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2411
				my $sourceFileNameExtension=$defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2412
				$sourceFileNameExtension=~s/^(.*).{2}$/$1$languageCode/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2413
				if (! -e ("$sourceFileNameWithoutExtension.$sourceFileNameExtension"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2414
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2415
					if (!$spidataflag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2416
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2417
						next if (!$useDefaultFileNameExtension);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2418
						next if (defined $defaultLanguageCode and !($languageCode eq $defaultLanguageCode));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2419
						$useDefaultFileNameExtension=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2420
						if (!$datahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2421
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2422
							print "Converting >$sourceFileNameWithoutExtension.$sourceFileNameExtension< to $defaultFileNameExtension\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2423
							$sourceFileNameExtension=$defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2424
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2425
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2426
					else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2427
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2428
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2429
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2430
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2431
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2432
				my $targetFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2433
# ecom.sNN should contain the corresponding language code .RNN files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2434
				if(!$spidataflag and (defined $defaultLanguageCode and ($languageCode eq $defaultLanguageCode)))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2435
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2436
					$targetFileNameExtension = $defaultFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2437
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2438
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2439
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2440
					$targetFileNameExtension = $sourceFileNameExtension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2441
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2442
				my $modifiedfinalStuff = $finalStuff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2443
				$modifiedfinalStuff =~ s/\.spi/\.s$languageCode/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2444
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2445
				if ($spidatahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2446
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2447
					push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2448
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2449
				elsif ($datahide)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2450
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2451
					push @newobydata, "$initialStuff$targetFileNameWithoutExtension.$targetFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2452
					if(!($sourceFileNameExtension eq $targetFileNameExtension))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2453
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2454
						push @newobydata, "$initialStuff$targetFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2455
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2456
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2457
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2458
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2459
					push @newobydata, "$initialStuff$sourceFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$sourceFileNameExtension$modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2460
					if(!($sourceFileNameExtension eq $targetFileNameExtension))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2461
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2462
						push @newobydata, "alias $targetFileNameWithoutExtension.$sourceFileNameExtension $targetFileNameWithoutExtension.$targetFileNameExtension $modifiedfinalStuff\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2463
						$targetFileNameWithoutExtension =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2464
						$multiLinguifyAlias{"$targetFileNameWithoutExtension.$sourceFileNameExtension"} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2465
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2466
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2467
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2468
			$line = reassert_sourceline();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2469
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2470
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2471
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2472
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2473
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2474
	dump_obydata("tmp5.oby", "result of choosing language-specific files") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2475
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2476
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2477
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2478
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2479
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
  2480
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
  2481
my $featurefilecount=0; #counts number of feature files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2482
my $featurescount=0; #counts number of features
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2483
my $dir; # Stores the ROM image location of features.dat/featreg.cfg files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2484
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
  2485
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
  2486
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
  2487
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
  2488
my $spicount=0; #counts number of spi files in each rom image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2489
my $filescount=0; #counts number of data files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2490
my $hidefilescount=0; #counts number of data files to be hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2491
my $romimage=0; #number of rom image currently working with
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2492
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2493
sub locateexisting 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2494
{ # 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
  2495
	my ($romimage, $spifile, $base) =@_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2496
	my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2497
	while(defined $spiarray[$base][$i]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2498
		if($spiarray[$base][$i]{spi} eq $spiarray[$romimage][$spifile]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2499
			my $spiname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2500
			my $spiextension;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2501
			if($spiarray[$base][$i]{spifile} =~ /(.*)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2502
				$spiname=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2503
				$spiextension=$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2504
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2505
			if(-e "$spiname-$base-$i\.$spiextension") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2506
					return "$spiname-$base-$i\.$spiextension";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2507
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2508
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2509
		$i++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2510
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2511
	return "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2512
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2513
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2514
sub create 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2515
{ #called to create SPI file and store in specified directory
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2516
	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
  2517
	my $existingspi = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2518
	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
  2519
		$existingspi = locateexisting($romimage, $spifile, $base);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2520
		if($existingspi ne "") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2521
			$existingspi = "-i$existingspi";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2522
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2523
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2524
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2525
	if($spiarray[$romimage][$spifile]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2526
		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
  2527
		my @dataforspi; # array to store names of data files to include in spi file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2528
		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
  2529
		for(my $k=0;$k<scalar @datafiles;$k++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2530
			if($datafiles[$k]{rom}==$romimage && $datafiles[$k]{spifile} == $spifile) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2531
				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
  2532
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2533
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2534
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2535
		for(my $j=0;$j<scalar @hidedatafiles;$j++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2536
			if($hidedatafiles[$j]{rom}==$romimage && $hidedatafiles[$j]{spifile} == $spifile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2537
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2538
				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
  2539
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2540
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2541
		my @spiargs; #arguments passed to createSpi
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2542
		push @spiargs, ("-t$targetspi", "-d$thisdir", "-hide@hidedatainspi");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2543
		if($existingspi ne "") { push @spiargs, $existingspi; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2544
		&spitool::createSpi(@spiargs, @dataforspi); # external call to 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2545
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2546
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2547
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2548
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2549
# SPI file creation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2550
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2551
# 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
  2552
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2553
sub spi_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2554
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2555
	my $composite_secondary=-1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2556
	if($createspi) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2557
		my $secondary=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2558
		for (my $i=1; $i<8; $i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2559
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2560
			if($romimage[$i]{composite} eq "composite_secondary") 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2561
				{ $secondary++; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2562
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2563
		if(!$secondary) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2564
			{ $romimage[0]{composite} = "composite_secondary"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2565
		if($secondary>1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2566
			{ 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
  2567
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2568
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2569
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2570
			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
  2571
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2572
				$romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2573
				$spicount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2574
			}	elsif ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2575
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2576
				# ignore any other REM statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2577
			} elsif ($line=~/^\s*spidata\s*=\s*(\S+)\s+(\S+)\s+(\S+)\s(\S+)\s*$/)	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2578
				#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
  2579
				my $targetspi=$4.$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2580
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2581
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2582
				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
  2583
					if($spiarray[$romimage][$i]{spi} eq $targetspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2584
						$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2585
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2586
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2587
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2588
				if($flag) { # adds spi file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2589
					$spiarray[$romimage][$spicount++]={spifile=>$3, spidir=>$4, spi=>$4.$3};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2590
					$i=$spicount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2591
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2592
					$datafiles[$filescount++]= {data=>$1, rom=>$romimage, spifile=>$i-1}; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2593
                        } elsif ($spiplacement && $line =~/^\s*SPI_POSITION/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2594
        			# 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
  2595
        			# entries of the spi file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2596
        			$spipositionflag{$romimage} = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2597
        		} elsif ($line=~/^\s*spidatahide\s*=\s*(\S+)\s+(\S+)\s(\S+)\s*$/)	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2598
				#spidatahide=\epoc32\data\Z\Resource\Plugins\Obexclasscontroller.RSC ecom.spi \private\10003a3f\
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2599
				my $targetspi=$3.$2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2600
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2601
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2602
				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
  2603
					if($spiarray[$romimage][$i]{spi} eq $targetspi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2604
						$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2605
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2606
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2607
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2608
				if($flag) { # adds spi file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2609
					$spiarray[$romimage][$spicount++]={spifile=>$2, spidir=>$3, spi=>$3.$2};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2610
					$i=$spicount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2611
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2612
					$hidedatafiles[$hidefilescount++]= {data=>$1, rom=>$romimage, spifile=>$i-1}; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2613
			}
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
		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
  2618
			if($romimage[$i]{composite} eq "composite_secondary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2619
				$composite_secondary=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2620
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2621
		}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2622
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2623
		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
  2624
			if($romimage[$i]{composite} eq "composite_primary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2625
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2626
				while(defined $spiarray[$composite_secondary][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2627
					my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2628
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2629
					while(defined $spiarray[$i][$k] && $flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2630
						if($spiarray[$composite_secondary][$j]{spi} eq $spiarray[$i][$k]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2631
							$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2632
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2633
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2634
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2635
					if($flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2636
						$spiarray[$i][$k]{spifile}=$spiarray[$composite_secondary][$j]{spifile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2637
						$spiarray[$i][$k]{spidir}=$spiarray[$composite_secondary][$j]{spidir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2638
						$spiarray[$i][$k]{spi}=$spiarray[$composite_secondary][$j]{spi};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2639
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2640
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2641
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2642
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2643
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2644
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2645
		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
  2646
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2647
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2648
				while(defined $spiarray[$i-1][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2649
					my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2650
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2651
					while(defined $spiarray[$i][$k] && $flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2652
						if($spiarray[$i-1][$j]{spi} eq $spiarray[$i][$k]{spi}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2653
							$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2654
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2655
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2656
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2657
					if($flag) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2658
						$spiarray[$i][$k]{spifile}=$spiarray[$i-1][$j]{spifile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2659
						$spiarray[$i][$k]{spidir}=$spiarray[$i-1][$j]{spidir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2660
						$spiarray[$i][$k]{spi}=$spiarray[$i-1][$j]{spi};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2661
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2662
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2663
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2664
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2665
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2666
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2667
		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
  2668
			if(!($romimage[$i]{extension}) && $romimage[$i]{composite} ne "composite_primary") {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2669
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2670
				while(defined $spiarray[$i][$j]) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2671
					create($i,$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<8;$i++) { #create SPI files for ROMs marked as composite_primary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2677
			if($romimage[$i]{composite} eq "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++,$composite_secondary);
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
		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
  2685
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2686
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2687
				while(defined $spiarray[$i][$j]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2688
					create($i,$j++,$i-1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2689
				}
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
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2694
		my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2695
        	my $imageIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2696
		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
  2697
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2698
                        if($spiplacement){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2699
                                $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
  2700
                                                        # 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
  2701
                                                        # is not found in the oby files, then no spi entry is emitted.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2702
                                if($line =~ /^\s*SPI_POSITION/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2703
                                        next if (!$spipositionflag{$imageIdx});#This spi has already been entered into OBY.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2704
                                        my $spiIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2705
                                        while(defined $spiarray[$imageIdx][$spiIdx]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2706
                                                if($spiarray[$imageIdx][$spiIdx]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2707
                                                        my $targetspi="$1-$imageIdx-$spiIdx\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2708
                                                        push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[$imageIdx][$spiIdx]{spi} . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2709
                                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2710
                                                $spiIdx++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2711
                                        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2712
                                        if($spiIdx == 0){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2713
                                                # If there is no plugin in this image, the SPI_POSITION statement is ignore.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2714
                                                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
  2715
                                        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2716
                                        $spipositionflag{$imageIdx} = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2717
                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2718
                                elsif( $line =~ /REM ROM_IMAGE\[(\d)\]/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2719
                                        $imageIdx = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2720
                                        push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2721
                                }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2722
                                elsif($line =~ /^\s*spidata/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2723
                                } else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2724
                                        push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2725
                                }
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)\]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2728
				my $romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2729
				if($flag) { #put in SPI files for ROM_IMAGE[0]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2730
					$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2731
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2732
					while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2733
						if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2734
							my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2735
							push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi .  "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2736
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2737
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2738
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2739
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2740
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2741
				push @newobydata, "\n" . $line . "\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2742
				while(defined $spiarray[$romimage][$j]) { #put in SPI files for current ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2743
					if($spiarray[$romimage][$j]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2744
						my $targetspi="$1-$romimage-$j\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2745
						push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[$romimage][$j]{spidir} . $targetspi .  "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2746
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2747
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2748
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2749
			} elsif($line =~ /^\s*extensionrom/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2750
				if($flag) { #put in SPI files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2751
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2752
					while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2753
						if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2754
							my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2755
							push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2756
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2757
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2758
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2759
					$flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2760
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2761
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2762
			} elsif($line =~ /^\s*spidata/i) {;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2763
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2764
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2765
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2766
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2767
		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
  2768
			my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2769
			while(defined $spiarray[0][$k]) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2770
				if($spiarray[0][$k]{spifile} =~ /(.+)\.(.*)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2771
					my $targetspi="$1-0-$k\.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2772
					push @newobydata, "data=" . "$thisdir" . $targetspi . " \"" . $spiarray[0][$k]{spidir} . $targetspi . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2773
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2774
				$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2775
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2776
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2777
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2778
	}	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2779
	dump_obydata("tmp6.oby", "result of SPI stage") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2780
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2781
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2782
sub load_featuresutil
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2783
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2784
	&FlexLoad_ModuleL("featuresutil");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2785
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2786
	# Parse the feature database XML file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2787
	if(!&featuresutil::parseXMLDatabase($featureXml, $featuremanager, $strict))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2788
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2789
		$featureXml = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2790
		exit(1) if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2791
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2792
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2793
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2794
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2795
# Feature registry configuration file/Features data file generation phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2796
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2797
# 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
  2798
# each ROM/ROFS image
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2799
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2800
sub featurefile_creation_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2801
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2802
	if($onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2803
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2804
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2805
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2806
	# Set the name and Rom Image location of feature file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2807
	if ($enforceFeatureManager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2808
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2809
		# features data file location
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2810
		$dir = "private\/10205054\/";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2811
		$featurefilename = "features.dat";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2812
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2813
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2814
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2815
		# feature registry configuration file location
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2816
		$dir = "private\/102744CA\/"; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2817
		$featurefilename = "featreg.cfg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2818
	}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2819
	if (defined ($featureXml)) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2820
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2821
		my $featurefilecount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2822
		my $romimage=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2823
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2824
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2825
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2826
			# specify which romimage following lines are part of
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2827
			if ($line=~/^\s*REM \s*ROM_IMAGE\[(\d)\]/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2828
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2829
				$romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2830
				$featurefilecount=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2831
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2832
			elsif ($line =~ /^\s*REM/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2833
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2834
				# ignore any other REM statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2835
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2836
			elsif($line =~ /^\s*(FEATURE)\s*(\S*)\s*(.*)/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2837
					|| $line =~ /^\s*(EXCLUDE_FEATURE)\s*(\S*)\s*(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2838
			{				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2839
				# FEATURE  <feature_name>  [ SF  <status falgs> ] [ UD  <user data> ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2840
				my $feature = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2841
				my $featurevalue = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2842
				my $featureargs = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2843
				my $reservedbit = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2844
				my %featureflags=();				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2845
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2846
				# Options 'SF' and 'UD' will be supported only for "-fm" option
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2847
				if ($featuremanager) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2848
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2849
					# [ SF  <status falgs> ] [ UD  <user data> ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2850
					$featureargs =~	/(\S*)\s*(\S*)\s*(\S*)\s*(\S*)\s*/ ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2851
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2852
					# Store the values of 'SF' and 'UD', or any invalid option, if provided					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2853
					if ($1) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2854
					{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2855
						$featureflags{uc($1)} = $2;						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2856
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2857
					if ($3) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2858
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2859
						$featureflags{uc($3)} = $4;									
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2860
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2861
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2862
					# Generate a warning if the option provided with Feature/Exclude_Feature keyword is  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2863
					# not 'SF' or 'UD'.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2864
					foreach my $Key (keys %featureflags)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2865
					{						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2866
						if ($Key !~ /^(SF|UD)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2867
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2868
							print "Warning: Invalid argument \"$Key\" specified for feature $featurevalue\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2869
							delete $featureflags{$Key};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2870
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2871
						}						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2872
					}							
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2873
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2874
				# In verbose mode, generate warning if "SF|UD" arguments or invalid arguments are specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2875
				# for "-f|fr" option.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2876
				elsif ($featureargs && $opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2877
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2878
					print "Invalid argument(s) \"$featureargs\" provided for feature \"$featurevalue\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2879
					foreach my $Key (keys %featureflags)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2880
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2881
						delete $featureflags{$Key};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2882
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2883
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2884
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2885
				# 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
  2886
				# where x is the romimage id, y is always 0, reserved for future use.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2887
				my $targetfeaturefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2888
				if (($romimage == 0) && ($reservedbit == 0))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2889
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2890
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2891
					# Core image will not have the mangled name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2892
				 	$targetfeaturefile = $featurefilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2893
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2894
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2895
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2896
				 	$targetfeaturefile = $featurefilename . "\[". $romimage . "\-$reservedbit\]";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2897
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2898
				my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2899
				my $featureflag;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2900
				if ($feature =~ /^FEATURE$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2901
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2902
					$featureflag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2903
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2904
				else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2905
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2906
					$featureflag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2907
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2908
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2909
				my $i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2910
 				# 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
  2911
				for($i=0;$i<$featurefilecount && $flag;$i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2912
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2913
					if($featurefilearray[$romimage][$i]{cfgfile} eq $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2914
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2915
						$flag=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
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2919
				if($flag) { # adds feature file if not yet listed for this romimage in array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2920
					$featurefilearray[$romimage][$featurefilecount++]={cfgfile=>$targetfeaturefile, cfgdir=>$dir};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2921
					$i=$featurefilecount;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2922
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2923
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2924
				$featureslist[$featurescount]= {feature=>$featurevalue, include=>$featureflag, rom=>$romimage, cfgfile=>$i-1};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2925
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2926
				# Store the value of 'SF' in 'featureslist' array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2927
				if (defined $featureflags{SF}) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2928
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2929
					$featureslist[$featurescount]->{SF} = $featureflags{SF};						
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2930
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2931
				# Store the value of 'UD' in 'featureslist' array
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2932
				if (defined $featureflags{UD}) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2933
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2934
					$featureslist[$featurescount]->{UD} = $featureflags{UD};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2935
				}				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2936
				$featurescount++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2937
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2938
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2939
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2940
		# Create Feature File
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2941
		for(my $i=0;$i<scalar @featurefilearray;$i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2942
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2943
			my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2944
			while(defined $featurefilearray[$i][$j])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2945
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2946
				my $targetfeaturefile = $thisdir.$featurefilearray[$i][$j]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2947
				if (!(&featuresutil::createFeatureFile($i,$j,$targetfeaturefile,\@featureslist,$featuremanager))) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2948
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2949
					$featurefilearray[$i][$j]{cfgfile}= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2950
					exit(1) if($strict);					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2951
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2952
				$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2953
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2954
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2955
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2956
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2957
		my $flag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2958
        	my $imageIdx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2959
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2960
		# 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
  2961
		# of feature files and target locations.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2962
		foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2963
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2964
			if($line =~/REM ROM_IMAGE\[(\d)\]/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2965
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2966
				my $romimage=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2967
				if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2968
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2969
					# Put in feature files for ROM_IMAGE[0]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2970
					$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2971
					my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2972
					while(defined $featurefilearray[0][$k])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2973
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2974
						my $targetfeaturefile=$featurefilearray[0][$k]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2975
						if (defined $targetfeaturefile) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2976
						{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2977
							push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[0][$k]{cfgdir} . $targetfeaturefile .  "\"\n";							
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2978
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2979
						$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2980
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2981
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2982
				push @newobydata, "\n" . $line . "\n";			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2983
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2984
				my $j=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2985
				while(defined $featurefilearray[$romimage][$j])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2986
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2987
					# Put in feature files for current ROM_IMAGE
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2988
					my $targetfeaturefile=$featurefilearray[$romimage][$j]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2989
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2990
					# Rom images will not have mangled name for feature files
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2991
				 	my $destinationfeaturefile = $featurefilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2992
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2993
					# 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
  2994
					# 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
  2995
					# 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
  2996
					my $exattribute = "exattrib=U";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2997
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2998
					if (defined $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  2999
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3000
						push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[$romimage][$j]{cfgdir} . $destinationfeaturefile .  "\"\t\t" . $exattribute . "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3001
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3002
					$j++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3003
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3004
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3005
			elsif($line !~ /^\s*(FEATURE)\s*/i && $line !~ /^\s*(EXCLUDE_FEATURE)\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3006
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3007
				# Put in all other lines except the FEATURE and EXCLUDE_FEATURE keywords
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3008
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3009
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3010
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3011
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3012
		if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3013
		{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3014
			# 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
  3015
			my $k=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3016
			while(defined $featurefilearray[0][$k])
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3017
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3018
				my $targetfeaturefile = $featurefilearray[0][$k]{cfgfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3019
				if (defined $targetfeaturefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3020
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3021
					push @newobydata, "data=" . "$thisdir" . $targetfeaturefile . " \"" . $featurefilearray[0][$k]{cfgdir} . $targetfeaturefile . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3022
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3023
				$k++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3024
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3025
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3026
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3027
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3028
	elsif ($enforceFeatureManager && $noFeatureManager && $preBuiltFeaturesDataFile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3029
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3030
        print "Valid: $preBuiltFeaturesDataFile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3031
		if (-e $preBuiltFeaturesDataFile) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3032
		{			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3033
			my @newobydata = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3034
			my $flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3035
			foreach my $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3036
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3037
				# Put in the pre-built features data file in ROM_IMAGE[0] 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3038
				if($line =~/REM ROM_IMAGE\[1\]/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3039
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3040
					push @newobydata, "data=$preBuiltFeaturesDataFile" . " \"" . $dir . $featurefilename . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3041
					$flag =0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3042
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3043
				push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3044
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3045
			if($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3046
			{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3047
				# 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
  3048
				push @newobydata, "data=$preBuiltFeaturesDataFile" . " \"" . $dir . $featurefilename . "\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3049
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3050
			@obydata =  @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3051
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3052
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3053
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3054
			print "Error: File \"$preBuiltFeaturesDataFile\" doesn't exist.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3055
			exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3056
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3057
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3058
	elsif ($enforceFeatureManager)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3059
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3060
	    print "Error: no feature data file or pre-built feature data file is provided!";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3061
	    exit(1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3062
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3063
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3064
	checkcase() if ($checkcase);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3065
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3066
my ($fromABI,$toABI) = split / /,$abiDowngrade;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3067
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3068
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3069
# Problem suppression phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3070
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3071
# 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
  3072
# Comment out missing files or report errors if strict option enabled
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3073
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3074
# Detect any references to Feature Variant binaries and substitute in the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3075
# correct source binary name using the VMAP file mechanism.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3076
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3077
sub suppress_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3078
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3079
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3080
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3081
	init_plat($PerlEPOCPath);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3082
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3083
	# use the "default" feature variant by default.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3084
	my $varname = $featureVariant{'VALID'} ? $featureVariant{'NAME'} : "default";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3085
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3086
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3087
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3088
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3089
		if ($line =~ /^\s*REM/i || $line =~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3090
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3091
			# ignore REM statements, to avoid processing "REM data=xxx yyy"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3092
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3093
		# 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3094
		# thing=some\file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3095
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3096
		elsif ($line =~ /(\S+)\s*=\s*"?(\S+[\/\\]\S+)"?/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3097
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3098
			my $what = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3099
			my $filename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3100
			if ($line =~ /(\S+)\s*=\s*"([^"]+)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3101
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3102
				$filename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3103
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3104
			my $normedFilename = &get_versionedname($filename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3105
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3106
			# find all the alternative file locations
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3107
			my @alternatives = fallback($normedFilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3108
			# test the original location first
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3109
			unshift(@alternatives, $normedFilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3110
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3111
			# choose the first file location that actually exists
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3112
			my $fileExists = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3113
			foreach my $altFile (@alternatives)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3114
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3115
			    my $tmpPath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3116
			    my $tmpFile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3117
				if($altFile =~ /"?(.*[\/\\]arm\w+_?\w+)[\/\\]([^"]+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3118
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3119
					$tmpPath = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3120
					$tmpFile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3121
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3122
				$tmpPath .= "\.$varname";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3123
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3124
				if (-e $tmpPath ."\/$tmpFile"){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3125
                  # SBSv2 variant binary exists
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3126
				  $fileExists = $tmpPath . "\/$tmpFile";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3127
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3128
				else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3129
                  # SBSv1 variant binary or invariant binary
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3130
				  $fileExists = get_BVbinname($altFile, $varname);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3131
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3132
				last if $fileExists;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3133
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3134
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3135
			# edit the OBY line to use the actual file name which we found.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3136
			# (maybe) warn if an alternative to the original was selected.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3137
			if ($fileExists)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3138
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3139
				my $from = $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3140
				$from =~ s/\\/\\\\/g;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3141
				$from =~ s/\//\\\//g;		# need to escape backslashes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3142
				$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
  3143
				my $into = $fileExists;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3144
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3145
 				$line =~ s/$from/$into/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3146
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3147
 				if ($warnSelection && ($fileExists ne $normedFilename))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3148
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3149
			    	print "replaced $filename with $fileExists\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3150
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3151
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3152
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3153
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3154
   				# No suitable alternative was found, so comment out the line unless
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3155
				# it is a manatory ROMBUILD keyword, in which case it is better
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3156
				# to let ROMBUILD report the missing file rather than report the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3157
				# missing keyword.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3158
   				if ($what !~ /^bootbinary|variant|primary|secondary|hide|dir/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3159
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3160
   					$line = "REM MISSING " . $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3161
   					print_source_error("Missing file: '$filename' in statement '$what='");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3162
					print "\ttried @alternatives\n"  if ($opt_v && @alternatives > 1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3163
   					# treat as an error if the strict option is selected.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3164
   					$errors++ if ($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3165
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3166
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3167
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3168
			# 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
  3169
			# 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
  3170
			# 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
  3171
			# .map file, while, in ABIv2, the destination file gives the dso file name.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3172
			if($line =~ /(\S+)\s*=\s*(\S+)\s+(\S+)\s*(.*)?/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3173
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3174
				my $aSrcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3175
				my $dstFile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3176
				my $dstPath = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3177
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3178
				if($aSrcfile =~ /"?([^"]+)/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3179
				$aSrcfile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3180
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3181
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3182
				$aSrcfile = &get_versionedname($aSrcfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3183
				if($dstFile =~ /"?(.*)[\/\\]([^"]+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3184
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3185
					$dstPath = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3186
					$dstFile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3187
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3188
				my $dllMapKey = lc ($dstFile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3189
				if(exists $DllDataMap{$dllMapKey}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3190
					my $dllSymInfo = \%{$DllDataMap{$dllMapKey}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3191
					$dllSymInfo->{srcfile} = $aSrcfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3192
					$dllSymInfo->{dstpath} = $dstPath;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3193
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3194
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3195
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3196
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3197
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3198
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3199
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3200
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3201
	dump_obydata("tmp7.oby", "result of problem-suppression phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3202
	die "ERROR: $errors missing file(s) detected\n" if ($strict && $errors );
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
# Remove leading and trailing whitespaces from a list of strings or a single string
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3206
sub trim 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3207
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3208
	my @out = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3209
	for (@out) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3210
		s/^\s+//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3211
		s/\s+$//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3212
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3213
	return wantarray ? @out : $out[0];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3214
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3215
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3216
# Generate a list of alternative locations for the given filename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3217
sub fallback
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3218
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3219
   	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3220
   	my @alternatives = CheckCustomization($file);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3221
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3222
 	# If BINARY_SELECTION_ORDER macro is specified in the oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3223
 	if ($binarySelectionOrderFlag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3224
   	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3225
 		# Search in the specified binary order 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3226
 		if(scalar(@Global_PlatList) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3227
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3228
			@Global_PlatList = get_platlist();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3229
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3230
 		my $b;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3231
 		my $e;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3232
 		foreach my $plat (@Global_PlatList) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3233
  		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3234
  			if ($file =~ /^(.*)[\/\\]$plat[\/\\](.*)$/i) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3235
  			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3236
  				$b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3237
  				$e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3238
 				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3239
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3240
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3241
 		push(@alternatives, "$b\/$firstDIR\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3242
 			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3243
 		foreach my $toDIR (@binarySelectionOrder)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3244
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3245
 			push(@alternatives, "$b\/$toDIR\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3246
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3247
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3248
  	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3249
 	# 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
  3250
 	# 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
  3251
	# Add the BPABI Platforms to be added
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3252
	if(scalar(@Global_BPABIPlats) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3253
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3254
		@Global_BPABIPlats = &get_bpabiplatlist;
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
 	foreach my $BpabiPlat (@Global_BPABIPlats)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3258
 	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3259
 		if ($fromABI eq "" && $file =~ /^(.*)[\/\\]$BpabiPlat[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3260
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3261
 			push(@alternatives, "$1\/armv5\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3262
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3263
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3264
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3265
	if ($customizedPlat && $fromABI eq "" && $file =~ /^(.*)[\/\\]$customizedPlat[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3266
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3267
		my $b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3268
		my $e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3269
		# if platform customization 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3270
		my $rootPlat = get_platroot($customizedPlat);		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3271
        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3272
   		#Check in ARMV7 folder for binaries in case GCCEV7 is used [DEF128457 ]
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3273
   		if($customizedPlat == "GCCEV7")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3274
   		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3275
   			push(@alternatives,"$b\/armv7\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3276
   		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3277
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3278
		if( grep /$rootPlat/, @Global_BPABIPlats)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3279
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3280
 			push(@alternatives, "$b\/armv5\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3281
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3282
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3283
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3284
	if ($fromABI eq "" && $file =~ /^(.*)[\/\\]armv5_abiv1[\/\\](.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3285
   	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3286
 		push(@alternatives, "$1\/armv5\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3287
   	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3288
  		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3289
   	if ($fromABI ne "" && $file =~ /^(.*)[\/\\]$fromABI[\/\\](.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3290
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3291
 		push(@alternatives, "$1\/$toABI\/$2");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3292
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3293
   
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3294
   	return @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3295
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3296
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3297
# Generate a list of alternative locations for the given filename which
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3298
# result from the possible platform customizations.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3299
sub CheckCustomization
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3300
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3301
 	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3302
 	my @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3303
	$customizedPlat = undef;	# global (used in feedback)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3304
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3305
 	if(scalar(@Global_PlatList) == 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3306
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3307
		@Global_PlatList = get_platlist();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3308
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3309
 	foreach my $plat (@Global_PlatList) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3310
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3311
 		if ($file =~ /^(.*)[\/\\]$plat[\/\\](.*)$/i) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3312
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3313
 			my $b = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3314
 			my $e = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3315
 			my $root = get_platcustomizes($plat);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3316
 			if ($root) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3317
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3318
				# Preserve the plat that is customized
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3319
				$customizedPlat = $plat;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3320
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3321
				# If a BSF platform customizes another BSF platform (i.e. a
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3322
				# BSF hierarchy exists), look for the file starting from the
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3323
				# child BSF platform and working back to the root BSF platform
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3324
				while ($root)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3325
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3326
					push(@alternatives, "$b\/$root\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3327
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3328
					# Temporary special case for armv5_abiv1 and armv5_abiv2
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3329
					if ($root =~ /^armv5_abiv[12]$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3330
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3331
						push(@alternatives, "$b\/armv5\/$e");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3332
 					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3333
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3334
					$root = get_platcustomizes($root);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3335
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3336
 			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3337
			return @alternatives;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3338
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3339
 	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3340
	return @alternatives;
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
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3344
# Bitmap and aif conversion phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3345
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3346
# Convert any "bitmap=" or "compressed-bitmap=" files into ROM format bitmaps
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3347
# Convert any "auto-bitmap=" to handle bitmap appropriately for xip and non-xip images
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3348
# Convert "aif=" files appropriately for xip and non-xip images
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3349
sub bitmap_aif_converison_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3350
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3351
	my $is_xip=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3352
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3353
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3354
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3355
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3356
		# keep track of the XIP-ness of this rom partition
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3357
		if ($line =~ /^\s*REM ROM_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3358
		{ $is_xip=$romimage[$1]{xip}; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3359
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3360
		# aif=source dest 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3361
		# 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
  3362
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3363
		if ($line =~ /^\s*aif=/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3364
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3365
			my $xip="_xip";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3366
			my @aif= split(/\s+/,$line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3367
			my $path=Path_Split('Path',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3368
			my $base=Path_Split('Base',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3369
			$path =~ s/^....//;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3370
			my $ext=Path_Split('Ext',"$aif[0]");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3371
			if ($is_xip && (-e "$path$base$xip$ext"))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3372
			{ $line="data=$path$base$xip$ext\t\t$aif[1]\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3373
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3374
			{ $line="data=$path$base$ext\t\t$aif[1]\n"; }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3375
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3376
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3377
		# auto-bitmap=
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3378
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3379
		# if currently in XIP image, then use a compressed-bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3380
		# otherwise use a RAM format bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3381
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3382
		if ($line =~ /^\s*auto-bitmap=/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3383
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3384
			if ($is_xip)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3385
			{ $line =~ s/auto-bitmap=/compressed-bitmap=/i }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3386
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3387
			{ $line =~ s/auto-bitmap=/data=/i }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3388
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3389
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3390
		# uncompressed-bitmap
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3391
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3392
		# this is currently just a synonym for 'bitmap'
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3393
		$line =~ s/uncompressed-bitmap=/bitmap=/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3394
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3395
		# 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3396
		# bitmap=source dest 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3397
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3398
		if ($line =~ /^\s*bitmap=\s*"?(\S+)"?\s+"?(\S+)"?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3399
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3400
			my $mbm = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3401
			my $dest = $2;            
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3402
			my $rom_mbm = "$1_rom";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3403
			if ($is_xip eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3404
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3405
				# non-XIP rom - just include the mbm file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3406
				$line = "data=\"$mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3407
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3408
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3409
			{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3410
		        if (! -e $rom_mbm || -M $rom_mbm >= -M $mbm)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3411
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3412
					is_existinpath("bmconv", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3413
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3414
                    my $rom_mbm_tmp = $rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3415
                    my $mbm_tmp = $mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3416
                    if ($^O =~ /^MSWIN32$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3417
                        $mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3418
                        $rom_mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3419
                    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3420
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3421
				    system "bmconv -q -r $rom_mbm_tmp -m$mbm_tmp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3422
	  		    my $bmconv_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3423
				    die "* bmconv failed\n" if ($bmconv_status != 0 || !-f $rom_mbm);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3424
			    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3425
				$line = "data=\"$rom_mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3426
				push @tempfiles, $rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3427
			}
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
		# compressed-bitmap=
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3431
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3432
		# if file is a compressed ROM image file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3433
		elsif ($line =~ /^\s*compressed-bitmap=\s*"?(\S+)"?\s+"?(\S+)"?/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3434
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3435
			my $mbm = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3436
			my $dest = $2;            
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3437
			my $cmprssd_rom_mbm = "$1_rom";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3438
			if ($is_xip eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3439
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3440
				# non-XIP rom - just include the mbm file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3441
				$line = "data=\"$mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3442
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3443
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3444
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3445
				if (! -e $cmprssd_rom_mbm || -M $cmprssd_rom_mbm >= -M $mbm)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3446
			    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3447
					is_existinpath("bmconv", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3448
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3449
                    my $cmprssd_rom_mbm_tmp = $cmprssd_rom_mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3450
                    my $mbm_tmp = $mbm;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3451
                    if ($^O =~ /^MSWIN32$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3452
                        $mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3453
                        $cmprssd_rom_mbm_tmp =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3454
                    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3455
                    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3456
				    system "bmconv -q -s $cmprssd_rom_mbm_tmp -m$mbm_tmp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3457
				    my $bmconv_status = $?;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3458
				    die "* bmconv failed\n" if ($bmconv_status != 0 || !-f $cmprssd_rom_mbm);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3459
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3460
				$line = "data=\"$cmprssd_rom_mbm\"\t\"$dest\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3461
				push @tempfiles, $cmprssd_rom_mbm;			    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3462
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3463
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3464
		push @newobydata, $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3465
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3466
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3467
	dump_obydata("tmp8.oby", "result of bitmap conversion phase") if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3468
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3469
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3470
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3471
sub reformat_line($)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3472
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3473
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3474
	my $type = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3475
	my $variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3476
	my $pcfile = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3477
	my $romfile = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3478
	my $tail = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3479
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3480
	# time=21/07/1999 12:00:00
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3481
	# primary[0x09080004]   =\epoc32\release\misa\udeb\ekern.exe
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3482
	# data=\epoc32\wins\C\System\Alarms\churchbell.snd    "System\Alarms\Church bell"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3483
	# file[0x07060001]=\epoc32\release\MAWD\urel\cAkyb1.dll          System\Libs\EKeyb.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3484
	# file=\epoc32\release\marm\urel\eikcore.dll 			System\Libs\Eikcore.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3485
	# alias \System\Bin\DRTRVCT2_2.dll 			\System\Bin\DRTRVCT2_1.dll
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3486
	#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3487
	$line =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3488
	if ($line =~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3489
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3490
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3491
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3492
  	elsif($line =~ /^\s*volume\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3493
  	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3494
  		return $line;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3495
  	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3496
	elsif($line =~ /^\s*kerneltrace\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3497
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3498
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3499
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3500
	elsif($line =~ /^\s*dir\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3501
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3502
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3503
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3504
	elsif($line =~ /^\s*bootbinary\s*=(.*)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3505
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3506
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3507
	if ($line =~ /^\s*(\S+)\s*=\s*(\S+)\s+"\/?(.*)"(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3508
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3509
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3510
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3511
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3512
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3513
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3514
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3515
	elsif ($line =~ /^\s*(\S+)(\[\S+\])\s*=\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3516
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3517
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3518
		$variant = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3519
		$pcfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3520
		$romfile = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3521
		$tail = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3522
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3523
	elsif ($line =~ /(\S+)\s*=\s*"([^"]+)"\s+"\/?(.*)"(.*)$/ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3524
			|| $line =~ /(\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
		if ($line !~ /^REM MISSING/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3527
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3528
			$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3529
			$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3530
			$pcfile = "\"$2\"";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3531
			$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3532
			$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3533
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3534
		else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3535
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3536
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3537
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3538
	elsif ($line =~ /^\s*(\S+)\s*=\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3539
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3540
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3541
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3542
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3543
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3544
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3545
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3546
	elsif($line =~ /^\s*(patchdata)\s*(\S+)\s*\@\s*(\S+)\s+(\S+)/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3547
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3548
		# Reformat the patchdata statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3549
		my $romfilename = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3550
		my $patchdlldatamap_key = lc ($romfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3551
		my $symbolname = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3552
		my $value = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3553
		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
  3554
		my $scalarSize;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3555
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3556
		if(!defined $DllDataMap{$patchdlldatamap_key}->{dstpath}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3557
			print_source_error(" File $romfilename has not been included into ROM image");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3558
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3559
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3560
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3561
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3562
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3563
		if ($enforceSysBin)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3564
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3565
			if ($DllDataMap{$patchdlldatamap_key}->{dstpath} !~ /^sys\\bin/i 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3566
			 && $DllDataMap{$patchdlldatamap_key}->{dstpath} !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3567
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3568
				$DllDataMap{$patchdlldatamap_key}->{dstpath} = "sys\/bin";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3569
			}
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
		my $dllfile = $DllDataMap{$patchdlldatamap_key}->{dstpath} . "\/". $romfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3573
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3574
		$line = "$1  ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3575
		$line .= "$dllfile ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3576
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3577
		# 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
  3578
		# 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
  3579
		# so we can't do it that way any more.)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3580
		if ($value =~ /^0x([0-9a-f]+)$/i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3581
			$value = hex($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3582
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3583
		elsif ($value =~ /^(-?\d+)$/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3584
			$value = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3585
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3586
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3587
			print_source_error("Attempt to set $symbolname to illegal value $value");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3588
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3589
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3590
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3591
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3592
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3593
		if ($symbolname =~ s/:(\d+)\[((0x)?[0-9a-f]+)\]$//i) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3594
			($index, $elementSize) = ($2, $1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3595
			$index = hex($index) if $index =~ /^0x/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3596
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3597
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3598
		my $DllSymInfoRef = $DllDataMap{$patchdlldatamap_key}->{$symbolname};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3599
 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3600
		if (!defined($DllSymInfoRef->{size})) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3601
			print_source_error("Size for symbol $symbolname not found");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3602
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3603
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3604
			return $line;
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
		if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3608
			$scalarSize = $elementSize / 8;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3609
			if ($scalarSize != 1 && $scalarSize != 2 && $scalarSize != 4) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3610
				print_source_error("Invalid bit size $elementSize for array $symbolname in $romfilename");
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
			if (($index + 1) * $scalarSize > $DllSymInfoRef->{size}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3616
				print_source_error("Invalid index $index into array $symbolname in $romfilename");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3617
				$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3618
				$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3619
				return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3620
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3621
		} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3622
			$scalarSize = $DllSymInfoRef->{size};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3623
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3624
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3625
		my $max_value = 0xffffffff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3626
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3627
		if ($scalarSize == 1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3628
			$max_value = 0xff;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3629
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3630
		elsif ($scalarSize == 2) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3631
			$max_value = 0xffff;
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
		if ($value > $max_value) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3635
			$value &= $max_value;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3636
			print "$DllSymInfoRef->{obyfilename}($DllSymInfoRef->{lineno}): Warning:Value overflow of $symbolname\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3637
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3638
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3639
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3640
		if(defined $DllSymInfoRef->{ordinal}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3641
			if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3642
				my $ord = $DllSymInfoRef->{ordinal};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3643
				my $offset = $index * $scalarSize;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3644
				$line .= "ordinal $ord+$offset ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3645
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3646
				$line .= "ordinal ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3647
				$line .= $DllSymInfoRef->{ordinal} . " ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3648
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3649
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3650
		elsif(defined $DllSymInfoRef->{dataAddr}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3651
			if (defined($elementSize)) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3652
				my $addr = $DllSymInfoRef->{dataAddr};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3653
				$addr = hex($addr) if $addr =~ /^0x/i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3654
				$addr = sprintf("0x%08x", $addr + $index * $scalarSize);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3655
				$line .= "addr $addr ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3656
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3657
				$line .= "addr ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3658
				$line .= $DllSymInfoRef->{dataAddr} . " ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3659
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3660
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3661
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3662
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3663
			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
  3664
			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3665
			$line = "REM $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3666
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3667
		};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3668
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3669
		$line .= "$scalarSize $value\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3670
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3671
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3672
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3673
	elsif ($line =~ /^\s*(\S+)\s*(\S+)\s+\/?(\S+)(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3674
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3675
		$type = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3676
		$variant = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3677
		$pcfile = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3678
		$romfile = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3679
		$tail = $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3680
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3681
		if ($type !~ /^(alias)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3682
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3683
			# Return now, if it is not an 'alias'.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3684
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3685
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3686
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3687
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3688
			# There is no substitution needed for SysBin 'alias'es.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3689
			if ($romfile =~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3690
			  ||$romfile =~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3691
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3692
				return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3693
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3694
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3695
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3696
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3697
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3698
		return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3699
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3700
 	# Buildrom should generate warning when destination path provided for a file 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3701
 	# is not a standard path(as per platsec) and "PlatSecEnforceSysBin" is turned off. 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3702
 	my $warnFlag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3703
	my $mustBeSysBin = $enforceSysBin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3704
	if ($type =~ /^(data|compress|nocompress)$/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3705
		&& $romfile !~ /^system\/(bin|libs|programs)\//i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3706
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3707
		$mustBeSysBin = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3708
 		$warnFlag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3709
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3710
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3711
	if ($mustBeSysBin)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3712
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3713
		if ($type =~ /^(alias)$/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3714
			&& $romfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3715
			&& $romfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3716
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3717
			# for multilinguify 'alias'es (generally resource files) 'MustBeSysBin' should not be enforced.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3718
			if(defined($multiLinguifyAlias{$pcfile})) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3719
				return $line;  
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3720
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3721
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3722
			my $filename = "\/$romfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3723
			$filename = substr $filename, rindex($filename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3724
			$romfile = "sys\/bin".$filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3725
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3726
			if ($pcfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3727
			    && $pcfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3728
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3729
				my $pcfilename = "\/$pcfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3730
				$pcfilename = substr $pcfilename, rindex($pcfilename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3731
				$pcfile = "sys\/bin".$pcfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3732
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3733
			return "$type$variant $pcfile \t$romfile$tail\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3734
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3735
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3736
		if ($romfile !~ /^sys\\bin\\/i
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3737
		    && $romfile !~ /^sys\/bin/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3738
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3739
			my $filename = "\/$romfile";	# in case no path is specified
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3740
			$filename = substr $filename, rindex($filename, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3741
			$romfile = "sys\/bin".$filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3742
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3743
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3744
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3745
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3746
 		if ($warnFlag && $romfile !~ /^sys\\bin\\/i && $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
 			print "Warning: Outside standard path at \"$line\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3749
 		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3750
		if ($type =~ /^(alias)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3751
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3752
			# Return the line as it is for non-MustBeSysBin 'alias'es.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3753
			return $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3754
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3755
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3756
	$romfiles{$romfile} = $variant.$pcfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3757
	return "$type$variant=$pcfile \t\"$romfile\"$tail\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3758
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3759
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3760
my @hidearray;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3761
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3762
sub mark
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3763
{ # function to mark files in ROMs as hidden
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3764
	my ($base,$ext) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3765
	my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3766
	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
  3767
	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
  3768
	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
  3769
		if($hidearray[$i]{rom}==$base) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3770
			if($coreimagerange[0]<0) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3771
				$coreimagerange[0]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3772
				$coreimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3773
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3774
				$coreimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3775
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3776
		} elsif($hidearray[$i]{rom}==$ext) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3777
			if($extensionimagerange[0]<0) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3778
				$extensionimagerange[0]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3779
				$extensionimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3780
			} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3781
				$extensionimagerange[1]=$i;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3782
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3783
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3784
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3785
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3786
	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
  3787
		for(my $j=$coreimagerange[0];$j<=$coreimagerange[1];$j++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3788
			if($hidearray[$i]{dest} eq $hidearray[$j]{dest}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3789
				$hidearray[$i]{hide}=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3790
			}
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3796
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3797
# Cleaning phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3798
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3799
# Remove "REM defined", "REM handled"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3800
# Remove the "# lineno" information
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3801
# Collapse multiple blank lines
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3802
# Apply the PlatSecEnforceSysBin setting
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3803
# Produce ROM directory listing
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3804
# Identify the ROM image name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3805
sub cleaning_phase
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3806
{	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3807
	my $romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3808
	my $skippingBlanks=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3809
	undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3810
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3811
    if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3812
    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3813
	  my $logWin = $thisdir."logwin.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3814
	  my $logLinux = $thisdir."loglinux.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3815
	  unlink($logWin);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3816
	  unlink($logLinux);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3817
	  open LOGWIN, ">$logWin" or die("* Can't create $logWin\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3818
	  open LOGLINUX, ">$logLinux" or die("* Can't create $logLinux\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3819
    }	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3820
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3821
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3822
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3823
		track_source($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3824
		if ($line=~/^REM (defined|handled)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3825
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3826
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3827
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3828
		if ($line=~/^# (\d+) "(.*)"/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3829
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3830
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3831
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3832
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3833
		# Blank line compression
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3834
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3835
		if ($line=~/^\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3836
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3837
			if ($skippingBlanks==1)
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
			$skippingBlanks=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3842
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3843
		else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3844
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3845
			$skippingBlanks=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3846
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3847
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3848
		# Track ROMNAME, allowing overrides
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3849
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3850
		if ($line=~/romname\s*[=\s]\s*"?(\S+)\.(\S+)"?\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3851
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3852
			if ($romname ne "" && $opt_o eq "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3853
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3854
				print_source_error("Overrides previous ROM name $romname");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3855
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3856
			$rombasename = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3857
			$romname = "$1.$2";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3858
			if ($opt_workdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3859
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3860
				$rombasename = $thisdir.$rombasename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3861
				$romname = $thisdir.$romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3862
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3863
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3864
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3865
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3866
		# ROM directory listing
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3867
		#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3868
		    my $newline = reformat_line($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3869
	    if( ($newline !~ /^\s*TIME\s*=\s*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3870
  	      &&($newline !~ /^\s*volume\s*=.*/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3871
	      &&($newline !~ /^\s*kerneltrace\s*=.*/i))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3872
	    {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3873
	        my $tmpline = $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3874
	        if(&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3875
	        {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3876
	          $newline =~ s-\/-\\-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3877
	          if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3878
	          {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3879
                print LOGWIN $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3880
	            $tmpline =~ s-\\-\/-go;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3881
	            print LOGLINUX $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3882
	          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3883
	        }else #unix os
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 LOGLINUX $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 LOGWIN $tmpline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3891
	          }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3892
	        }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3893
	    }
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3894
	    
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3895
		push @newobydata, $newline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3896
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3897
	if($opt_v)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3898
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3899
	  close LOGWIN;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3900
	  close LOGLINUX;
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
	exit(1) if($errors && $strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3904
	# Handle ROMNAME and possible -o override
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3905
	if ($opt_o ne "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3906
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3907
		if ($opt_workdir && $opt_o !~ /^[\\\/]/ && $opt_o !~ /^.:/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3908
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3909
			$opt_o = $thisdir.$opt_o;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3910
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3911
		if (&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3912
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3913
			$opt_o =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3914
		}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3915
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3916
			$opt_o =~ s-\\-\/-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3917
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3918
		$romname=$opt_o;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3919
		if ($opt_o=~/(\S+)\.(\S+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3920
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3921
			$rombasename=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3922
		}
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
			$rombasename=$romname;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3926
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3927
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3928
	if(!$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3929
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3930
		unshift @newobydata, "romname=$romname\n";	# first line of final OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3931
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3932
	@obydata = @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3933
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3934
	print "* Removing previous image and logs...\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3935
	unlink glob("$rombasename.*");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3936
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3937
	my $obyrecordline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3938
	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
  3939
		my $imagenum=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3940
		my $count=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3941
		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
  3942
			if($line =~/^\s*(file|data)\s*=\s*(\S+)\s+(\S+)\s*$/gi) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3943
				$hidearray[$count] = {rom=>$imagenum, type=>$1, dest=>$3};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3944
				$hidearray[$count]{dest} =~s/\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3945
				$count++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3946
			} elsif($line =~/^\s*REM\s+ROM_IMAGE\[(\d)\]\s*$/i ) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3947
				$imagenum=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3948
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3949
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3950
		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
  3951
			if($romimage[$i]{extension}) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3952
				mark($i-1,$i);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3953
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3954
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3955
		undef @newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3956
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3957
		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
  3958
		for(my $i=0;$i<scalar @hidearray;$i++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3959
			if($hidearray[$i]{hide}==1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3960
				$hideflag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3961
			}
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
		my $obeyrom=0;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3965
		if($hideflag) { #if there exist files which need hiding
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3966
			my $i=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3967
			my $exitflag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3968
			$obyrecordline=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3969
			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
  3970
				print "Line = $obyrecordline $i " . scalar @hidearray . "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3971
				if($i==scalar @hidearray) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3972
					$exitflag=1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3973
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3974
				for(;$i<scalar @hidearray;$i++) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3975
					if($hidearray[$i]{hide}==1) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3976
						my $rom=$hidearray[$i]{rom};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3977
						my $destination=$hidearray[$i]{dest};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3978
						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
  3979
							push @newobydata, $obydata[$obyrecordline];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3980
							if($obydata[$obyrecordline] =~/^\s*REM\s+ROM_IMAGE\[(\d)\]\s*$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3981
								$obeyrom=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3982
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3983
							$obyrecordline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3984
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3985
						my $flag=1; #get to here when $obeyrom==$rom
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3986
						while($flag && $obyrecordline<scalar @obydata) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3987
							$destination=~s|\\|/|g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3988
							my $obyline=$obydata[$obyrecordline];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3989
							$obyline=~s|\\|/|g;			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3990
							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
  3991
								push @newobydata, "hide=$hidearray[$i]{dest}\n$obydata[$obyrecordline]";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3992
								$obyrecordline++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3993
								$flag=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3994
							} else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3995
								push @newobydata, $obydata[$obyrecordline++];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3996
							}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3997
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3998
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  3999
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4000
			}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4001
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4002
		while($obyrecordline< scalar @obydata) { # add the rest of the lines from @obydata to @newobydata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4003
			push @newobydata, $obydata[$obyrecordline++];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4004
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4005
		@obydata=@newobydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4006
		undef @newobydata;	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4007
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4008
	dump_obydata("tmp9.oby", "result of cleaning phase") if ($opt_v);
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4012
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4013
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4014
# Divide the oby file into multiple sections - one for each rom image - ready
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4015
# for the appropriate rom builder.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4016
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4017
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4018
sub generate_romheader
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4019
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4020
	my ($idx) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4021
	if ($romimage[$idx]{xip} ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4022
	{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4023
		my $header = "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4024
		if ($romimage[$idx]{extension})
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4025
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4026
			$header = "extensionrom=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4027
			$header .= "romsize=$romimage[$idx]{size}\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4028
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4029
		return $header; 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4030
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4031
	# non-xip
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4032
	my $header;
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 =  "extensionrofs=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4036
		$header .= "rofssize=$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
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4039
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4040
		$header="rofsname=$rombasename.$romimage[$idx]{name}.img\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4041
		$header .= "rofssize=$romimage[$idx]{size}\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4042
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4043
	return $header;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4044
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4045
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4046
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4047
# Dump OBY file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4048
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4049
# Creates final OBY file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4050
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4051
sub create_dumpfile
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4052
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4053
	my $romimageidx;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4054
	my $smrimageidx = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4055
	my $dumpfile="$rombasename";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4056
	$romimage[0]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4057
	$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4058
	unlink($dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4059
	if($rombasename && !$onlysmrimage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4060
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4061
		open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4062
		print "* Writing $dumpfile - final OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4063
		$romimageidx=0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4064
		print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4065
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4066
	foreach $line (@obydata)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4067
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4068
		if ($line =~ /^\s*REM ROM_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4069
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4070
			$romimageidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4071
			if ($romimage[$romimageidx]{extension} eq '0')
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4072
			{ # next rom oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4073
				close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4074
				$dumpfile="$rombasename.$romimage[$romimageidx]{name}";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4075
				$romimage[$romimageidx]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4076
				$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4077
				open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4078
				print "* Writing $dumpfile - final OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4079
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4080
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4081
				print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4082
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4083
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4084
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4085
			{ # extension
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4086
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4087
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4088
				print DUMPFILE generate_romheader($romimageidx);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4089
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4090
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4091
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4092
		# write data drive oby file.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4093
		elsif ($line =~ /^\s*REM DATA_IMAGE\[(\d+)\]\s+(.*)$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4094
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4095
				my $dataimageidx=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4096
				close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4097
				$dumpfile="$datadriveimage[$dataimageidx]{name}";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4098
				$datadriveimage[$dataimageidx]{obeyfile}=$dumpfile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4099
				$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4100
				open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4101
				print "* Writing $dumpfile - intermediate OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4102
				# header
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4103
				print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4104
				print DUMPFILE generate_datadriveheader($dataimageidx,\@datadriveimage);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4105
				push(@dataDriveFileList,$dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4106
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4107
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4108
		elsif ($line =~ /^\s*REM SMR_IMAGE\s*$/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4109
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4110
			close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4111
			$dumpfile = $obeyFileList[$smrimageidx];
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4112
			$smrimageidx++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4113
			$dumpfile .= ".oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4114
			open DUMPFILE, ">$dumpfile" or die("* Can't create $dumpfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4115
			print "*Writing $dumpfile - intermediate OBY file\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4116
			print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4117
			push(@smrImageFileList, $dumpfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4118
			next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4119
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4120
		print DUMPFILE $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4121
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4122
	close DUMPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4123
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4124
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4125
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4126
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4127
# Full ROM directory listing - use case-insensitive sort
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4128
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4129
sub create_dirlisting
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4130
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4131
	if($rombasename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4132
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4133
		print "* Writing $rombasename.dir - ROM directory listing\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4134
		open DIRFILE, ">$rombasename.dir" or die("* Can't create ROM directory listing\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4135
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4136
		my $file;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4137
		my $prevdir = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4138
		foreach $file (sort {uc($a) cmp uc($b)} keys %romfiles)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4139
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4140
			my $dir = substr $file,0,rindex($file, "\/");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4141
			if (uc $dir ne uc $prevdir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4142
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4143
				$prevdir = $dir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4144
				print DIRFILE "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4145
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4146
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4147
			my @sources = split /\n/,$romfiles{$file};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4148
			printf DIRFILE "%-40s\t%s\n", $file, shift @sources;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4149
			while (@sources)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4150
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4151
				printf DIRFILE "%39s+\t%s\n", "", shift @sources;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4152
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4153
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4154
		close DIRFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4155
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4156
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4157
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4158
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4159
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4160
# Suppress Rom/Rofs/DataDrive Image creation if "-noimage" option is provided.
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
sub suppress_image_generation
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4164
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4165
	if($noimage) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4166
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4167
		&tidy_exit;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4168
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4169
}
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
# Execute rombuild & maksym for each final XIP OBY file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4173
# Execute rofsbuild for each non-XIP oby file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4174
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4175
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4176
sub run_rombuilder
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4177
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4178
	my ($command, $obeyfile, $logfile) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4179
	$command .= " $obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4180
	#CR1258 test cases are depending on the following output.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4181
	print "* Executing $command\n" if ($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4182
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4183
	open DATA, "$command 2>&1 |"   or die "Couldn't execute command: $command";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4184
	while ( defined( my $line = <DATA> ) ) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4185
	chomp($line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4186
	print "$line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4187
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4188
	close DATA;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4189
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4190
	if ($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4191
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4192
		$errors++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4193
		$command =~ /^\s*(\S+)\s+-slog/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4194
		print "* $1 failed\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4195
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4196
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4197
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4198
		push(@romImages,$obeyfile.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4199
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4200
	print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4201
	rename "$logfile","$obeyfile.log" or die("* Can't rename $logfile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4202
	exit(1) if ($errors);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4203
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4204
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4205
#----------------------------------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4206
# ROMBUILD AND ROFSBUILD
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4207
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4208
# Invokes rombuild and rofsbuild.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4209
# Creates .log, .symbol files.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4210
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4211
sub invoke_rombuild
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4212
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4213
	#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
  4214
	my $rom_compression_type;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4215
	if($opt_compression_type eq ALLSECTIONS)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4216
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4217
		$rom_compression_type = "-compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4218
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4219
	elsif($opt_compression_type eq PAGEDSECTION)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4220
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4221
		$rom_compression_type = "-compress=paged";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4222
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4223
	elsif($opt_compression_type eq UNPAGEDSECTION)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4224
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4225
		$rom_compression_type = "-compress=unpaged";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4226
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4227
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4228
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4229
		$rom_compression_type = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4230
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4231
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4232
	#Compose command line options for Cache.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4233
	my $cache_options;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4234
	if($opt_cache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4235
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4236
		$cache_options = "-cache ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4237
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4238
	if($opt_nocache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4239
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4240
		$cache_options .= "-nocache ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4241
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4242
	if($opt_cleancache == 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4243
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4244
		$cache_options .= "-cleancache";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4245
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4246
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4247
	my $rombuild;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4248
	if(!$geninc)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4249
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4250
		$rombuild = "rombuild -slog $rom_compression_type $logLevel $lowMem $opt_jobs";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4251
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4252
	else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4253
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4254
		$rombuild = "rombuild -slog $rom_compression_type -geninc $logLevel $lowMem $opt_jobs";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4255
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4256
	if($gendep)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4257
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4258
		$rombuild .= " -gendep";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4259
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4260
	$rombuild .= " -k" if($opt_k);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4261
	my $rofsbuild = "rofsbuild -slog $logLevel $lowMem $opt_jobs $cache_options";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4262
	foreach my $arg (keys %rombuildOptions)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4263
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4264
		$rombuild .= " $arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4265
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4266
	$rofsbuild .= " -k" if($opt_k);        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4267
	for (my $romidx=0; $romidx<8; $romidx++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4268
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4269
		my $obeyfile=$romimage[$romidx]{obeyfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4270
		my $xip=$romimage[$romidx]{xip};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4271
		my $compress=$romimage[$romidx]{compress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4272
		my $uncompress=$romimage[$romidx]{uncompress};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4273
		if ($obeyfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4274
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4275
			if(!defined $opt_compression)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4276
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4277
				if ($compress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4278
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4279
					$compress=" -compress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4280
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4281
				elsif($uncompress ne 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4282
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4283
					$compress=" -uncompress";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4284
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4285
 				elsif($compress eq 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4286
 				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4287
 					$compress=" ";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4288
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4289
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4290
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4291
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4292
				$compress = $opt_compression;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4293
				$compress =~m/\s-(compression)(method)\s(none|inflate|bytepair)/;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4294
				print "* ".$1." ".$2.": ".$3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4295
			}                        
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4296
			if ($xip)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4297
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4298
				is_existinpath("rombuild", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4299
				$rombuild .= " -symbols" unless($nosymbols) ;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4300
				run_rombuilder($rombuild.$compress, $obeyfile, "ROMBUILD.LOG");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4301
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4302
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4303
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4304
				# efficient_rom_paging.pm can move everything to core rom.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4305
				# If that is the case, don't run rofsbuild at all to avoid errors.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4306
			#	use constant TRUE => 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4307
			#	use constant FALSE => 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4308
				my $run_rofs_build = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4309
				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4310
				open OBYFILE, "$obeyfile.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4311
				for (<OBYFILE>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4312
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4313
					if (is_oby_statement($_))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4314
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4315
						$run_rofs_build = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4316
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4317
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4318
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4319
				close OBYFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4320
				if ($run_rofs_build)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4321
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4322
					is_existinpath("rofsbuild", romutl::DIE_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4323
					if(!$nosymbols)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4324
					{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4325
						$rofsbuild .= " -symbols";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4326
					}			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4327
					run_rombuilder($rofsbuild.$compress, $obeyfile, "ROFSBUILD.LOG");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4328
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4329
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4330
			unlink "rombuild.log";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4331
			unlink "maksym.out";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4332
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4333
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4334
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4335
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4336
#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4337
# Subroutine: check if current statement is a valid oby statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4338
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4339
sub is_oby_statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4340
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4341
	my ($li) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4342
	if ($li =~ /\s*data\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4343
	if ($li =~ /\s*file\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4344
	if ($li =~ /\s*dll\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4345
	if ($li =~ /\s*secondary\s*=/) { return 1;}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4346
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4347
	return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4348
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4349
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4350
#-------------------------------------------------------
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4351
# Subroutine: convert possibly absolute path into relative path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4352
#
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4353
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4354
sub relative_path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4355
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4356
    my ($arg) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4357
    return $arg if ($arg !~ /^\//);	# not an absolute path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4358
    if ($uppath eq "x")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4359
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4360
		$uppath=cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4361
		$uppath=~s-\\-\/-go;		    # separator from Perl 5.005_02+ is forward slash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4362
		$uppath=~s-^(.*[^\/])$-$1\/-o;	    # ensure path ends with a backslash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4363
		$uppath=~s-\/([^\/]+)-\/..-og;	    # convert directories into ..
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4364
		$uppath=~s-^.:\/--o;		    # remove drive letter and leading backslash
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4365
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4366
    $arg=~s-^\/--o;	# remove leading backslash from original path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4367
    return "$uppath$arg";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4368
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4369
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4370
# Returns the global @obydata reference to support external tool invocation.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4371
sub getOBYDataRef{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4372
	return \@obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4373
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4374
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4375
#Match the blank or the comment
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4376
sub isobystatement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4377
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4378
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4379
	if ($l !~ /=/) { 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4380
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4381
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4382
	return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4383
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4384
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4385
#Match the data statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4386
sub isdatastatement {
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 !~ /data=/) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4389
	{ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4390
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4391
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4392
	return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4393
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4394
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4395
#Match the spidata statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4396
sub isspidatastatement {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4397
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4398
	if ($l !~ /spidata=/) { 
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 executable statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4405
sub isexecutablefile {
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=~/file=/)||($l=~/dll=/)||($l=~/primary=/)||($l=~/secondary=/)||($l=~/variant=/)||($l=~/device=/)||($l=~/extension=/)){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4408
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4409
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4410
	return 0;
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 directory metadata statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4414
sub isdirectorymetadata {
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=~/hide=/) || ($l=~/rename=/) || ($l=~/alias=/)){ 
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 bitmap statements
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4423
sub isbitmap {
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=~/bitmap=/){ 
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4432
#Match the aif file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4433
sub isaif {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4434
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4435
	if ($l=~/(.*)\.aif/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4436
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4437
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4438
	return 0;
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4442
#Match the resource file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4443
sub isresource {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4444
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4445
	if ($l=~/(.*)\.rsc/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4446
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4447
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4448
	return 0;
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
#Returns the executable extensions
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4452
sub executableextension {
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=~/file=(.*)\.exe$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4455
		return "exe";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4456
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4457
	elsif ($l=~/file=(.*)\.dll$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4458
		return "dll";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4459
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4460
	elsif ($l=~/file=(.*)\.ldd$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4461
		return "ldd";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4462
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4463
	elsif ($l=~/file=(.*)\.fsy$/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4464
		return "fsy";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4465
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4466
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4467
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4468
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4469
#Returns all 3 UIDS
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4470
sub executabletype {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4471
	my ($l) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4472
	my $uid1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4473
	my $uid2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4474
	my $uid3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4475
	if ($l=~/uid1\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4476
		$uid1=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4477
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4478
	if ($l=~/uid2\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4479
		$uid2=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4480
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4481
	if ($l=~/uid3\s(0x[\d]*)/){ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4482
		$uid3=$1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4483
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4484
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4485
	return $uid1." ".$uid2." ".$uid3."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4486
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4487
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4488
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4489
#Return source file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4490
sub getSourceFile {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4491
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4492
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4493
		return $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4494
	}
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
#Return destination file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4498
sub getDestFile{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4499
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4500
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4501
		return $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4502
	}
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
#Return the obycommand attributes
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4506
sub getOBYAttributes{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4507
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4508
	if ($line=~/(\w*=)(\S*\s+\S*)\s+(\S*)\s+(\S*)?/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4509
		return $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4510
	}
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
#Return the hardware variant delimiter
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4514
sub getHardwareVariant{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4515
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4516
	if ($line=~/(\w*[0x[\d]*]=)/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4517
		return $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4518
	}
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
#Return the hardware variant delimiter
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4522
sub getObyCommand{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4523
	my ($line) = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4524
	if ($line=~/^[data=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4525
		return "data";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4526
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4527
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4528
	if ($line=~/^[file=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4529
		return "file";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4530
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4531
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4532
	if ($line=~/^[dll=]/) {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4533
		return "dll";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4534
	}
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
# Initialize the symbol info within the given DLL.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4538
sub AddDllDataInfo
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4539
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4540
	my ($line) = @_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4541
	# syntax "<DLLname>@<symbolname> <newvalue>"
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4542
	if($line =~ /^\s*(\S+)\s*\@\s*(\S+)\s+(\S+)\s*$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4543
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4544
		my $dllName = lc ($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4545
		my $symbolname = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4546
		my $intVal = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4547
		my $newVal = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4548
		if($intVal =~ /^0x([0-9a-fA-F]+)$/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4549
		$newVal = hex($1);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4550
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4551
		elsif($intVal =~ /^(-\d+)$/ or $intVal =~ /^(\d+)$/){		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4552
			$newVal = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4553
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4554
		else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4555
 			print "ERROR: Invalid patchable value at \"$line\"\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4556
 			$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4557
 			return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4558
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4559
		$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
  4560
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4561
		my $DllMapRef = \%{$DllDataMap{$dllName}};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4562
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4563
		my %DllSymInfo = ();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4564
		$DllSymInfo{ordinal}	= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4565
		$DllSymInfo{dataAddr}	= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4566
		$DllSymInfo{size}		= undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4567
		# 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
  4568
		# in which case we'll create another one of these, and lose the value.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4569
		# Instead, the value is retrieved by re-parsing the command line later.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4570
		$DllSymInfo{lineno}		= $sourceline;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4571
		$DllSymInfo{obyfilename}= $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4572
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4573
		$DllMapRef->{$symbolname} = \%DllSymInfo;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4574
		return 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4575
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4576
		return 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4577
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4578
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4579
sub process_dlldata
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4580
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4581
	if(!$patchDataStmtFlag){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4582
		return;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4583
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4584
	my $symbolTblEntry;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4585
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4586
	foreach my $dll (keys %DllDataMap){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4587
		my $DllMapRef = $DllDataMap{$dll};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4588
		if(!$DllMapRef->{srcfile}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4589
		next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4590
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4591
		my $aDllFile = $DllMapRef->{srcfile};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4592
		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
  4593
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4594
		my $DllSymMapRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4595
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4596
		my @BPABIPlats = &get_bpabiplatlist;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4597
		my $matchedSymbols = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4598
		my $globalSyms = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4599
		my @platlist = &get_platlist;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4600
		my $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4601
		my $rootPlatName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4602
		my $plat = "armv5";				
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4603
		$plat = &get_abiv2mode() ? $plat."_abiv1" : $plat."_abiv2";		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4604
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4605
		foreach my $plat(@platlist) 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4606
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4607
			if(($aDllFile =~ /[\/\\]($plat)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plat\.\w+)[\/\\]/i ))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4608
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4609
				$platName = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4610
				last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4611
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4612
		}		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4613
		$rootPlatName =	&get_platcustomizes($platName) ? &get_platroot($platName) : $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4614
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4615
		# Map files will be referred for all ARM platforms, 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4616
		# and for BSF platforms which cutomizes ARM platforms.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4617
		if($rootPlatName =~ /^armv5|$plat$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4618
			my $mapfile = "${aDllFile}.map";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4619
			
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4620
			open MAPFILE, "$mapfile" or die "Can't open $mapfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4621
			while(<MAPFILE>){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4622
			my $line = $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4623
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4624
				#Ignore Local symbols.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4625
				if(!$globalSyms){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4626
					if($line =~ /Global Symbols/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4627
						$globalSyms = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4628
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4629
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4630
					else{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4631
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4632
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4633
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4634
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4635
				$symbolTblEntry = $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4636
				if($symbolTblEntry =~ /\s*(\S+)(?:\s+\(EXPORTED\))?\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4637
					my $symbol		= $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4638
					my $symbolValue = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4639
					my $data		= $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4640
					my $symbolSz	= $4;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4641
					if(!exists $DllMapRef->{$symbol}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4642
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4643
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4644
					$DllSymMapRef = $DllMapRef->{$symbol};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4645
					if($data =~ /Data/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4646
					# Valid
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4647
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4648
					else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4649
					#	Invalid to patch a code symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4650
						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
  4651
						$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4652
						$DllMapRef->{$symbol} = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4653
						next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4654
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4655
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4656
					
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4657
					# Record the address and the size of the symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4658
					$DllSymMapRef->{dataAddr} = $symbolValue;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4659
					$DllSymMapRef->{size} = $symbolSz;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4660
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4661
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4662
					$matchedSymbols++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4663
					if( $matchedSymbols >= $SymbolCount){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4664
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4665
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4666
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4667
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4668
			close MAPFILE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4669
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4670
		# DSO files will be referred for BPABI platforms(excluding ARM platforms),
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4671
		# and for BSF platforms which cutomizes BPABI platforms.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4672
		else {
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4673
			my $abiDir = undef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4674
			foreach my $bpabi (@BPABIPlats){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4675
				if($rootPlatName =~ /^$bpabi$/i){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4676
					$abiDir = $platName;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4677
					last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4678
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4679
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4680
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4681
			if(!defined $abiDir){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4682
				print("Can't locate the map or proxy dso file for $aDllFile\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4683
				$errors++ if($strict);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4684
				next; #go to the next patch dll data statement
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4685
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4686
			if( $aDllFile =~ /(.*)\.[^.]+$/ ){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4687
				my $proxydsofile = "$1.dso";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4688
				$proxydsofile =~ s-$abiDir\/(.*)\/-armv5\/lib\/-ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4689
				open PIPE, "getexports -d $proxydsofile|" or die "Can't open file $proxydsofile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4690
				while (<PIPE>){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4691
					my $line = $_;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4692
					if($line =~ /\s*(\S+)\s+(\d+)\s+((\S+)\s+(\d+))?/){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4693
						my $symbol = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4694
						my $ordinal = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4695
						my $data = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4696
						my $symbolSz = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4697
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4698
						if(!$data){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4699
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4700
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4701
						if(!exists $DllMapRef->{$symbol}){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4702
							next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4703
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4704
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4705
						$DllSymMapRef = $DllMapRef->{$symbol};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4706
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4707
						# Record the ordinal and the size of the symbol.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4708
						$DllSymMapRef->{ordinal} = $ordinal;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4709
						$DllSymMapRef->{size} = $symbolSz;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4710
						$matchedSymbols++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4711
						if( $matchedSymbols >= $SymbolCount){
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4712
						last;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4713
						}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4714
					}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4715
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4716
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4717
				close PIPE;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4718
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4719
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4720
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4721
	exit(1) if ($errors && $strict ) ;
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
# make sure that all the absolute feature variant paths include a
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4725
# drive letter. This is required because cpp will not work with
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4726
# absolute paths starting with slashes.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4727
sub addDrivesToFeatureVariantPaths
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4728
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4729
	return unless $featureVariant{'VALID'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4730
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4731
	my $current = &get_epocdrive;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4732
	my $drive = $1 if ($current =~ /^(.:)/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4733
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4734
	# pre-include file
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4735
	my $HRH = $featureVariant{'VARIANT_HRH'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4736
	$featureVariant{'VARIANT_HRH'} = $drive . $HRH if ($HRH =~ /^[\\\/]/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4737
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4738
	# ROM include path
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4739
	my $dirRef = $featureVariant{'ROM_INCLUDES'};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4740
	return unless $dirRef;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4741
	my $i = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4742
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4743
	foreach my $dir (@$dirRef)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4744
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4745
		$$dirRef[$i] = $drive . $dir if ($dir =~ /^[\\\/]/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4746
		$i++;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4747
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4748
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4749
sub create_smrimage
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4750
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4751
	if($needSmrImage)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4752
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4753
		foreach my $oby (@obeyFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4754
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4755
			is_existinpath("rofsbuild", romutl::ERROR_NOT_FOUND);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4756
			my $command = "rofsbuild -slog -smr=$oby.oby";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4757
			print "* Executing $command\n" if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4758
			system($command);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4759
			if($? != 0)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4760
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4761
				print("* ROFSBUILD failed to generate SMR IMAGE\n") if($opt_v);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4762
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4763
			else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4764
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4765
				push(@smrImageFileList, $oby.".img");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4766
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4767
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4768
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4769
	if(@smrImageFileList)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4770
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4771
		print "\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4772
		print "-------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4773
		print "| List of file(s) generated pertaining to SMR image |\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4774
		print "-------------------------------------------------------\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4775
		my $arraySize = scalar(@smrImageFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4776
		for(my $i=0; $i < $arraySize; $i++)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4777
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4778
			my $element = shift(@smrImageFileList);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4779
			my $size = -s $element;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4780
			print "Size = ".$size." bytes"."\t"."File = ".$element."\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4781
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4782
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4783
	foreach my $errSmr (keys(%smrNameInfo))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4784
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4785
		if($smrNameInfo{$errSmr} > 1)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4786
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4787
			print "\n SMR image: $errSmr.img creating error for duplicated names!\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4788
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4789
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4790
	if($smrNoImageName)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4791
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4792
		print "\n SMR image creating error for empty image name!\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4793
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4794
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4795
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4796
sub checkcase()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4797
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4798
	if (&is_windows)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4799
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4800
		my @checkcase_obydatatemp = @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4801
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4802
		# call the phase without external tools.
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4803
		plugin_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4804
		multlinguify_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4805
		#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
  4806
		suppress_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4807
		process_dlldata();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4808
		bitmap_aif_converison_phase();
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4809
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4810
		my $checkcase_log = "checkcase.log";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4811
		unlink $checkcase_log;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4812
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4813
		open CHECKCASELOG, ">$checkcase_log" or die("* Can't create $checkcase_log\n");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4814
		my @checkcase_lines = @obydata;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4815
		my %checkcase_macro;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4816
		my @checkcase_macrodir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4817
		my $checkcase_line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4818
		print CHECKCASELOG "======================Macro check part:======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4819
		foreach $checkcase_line (@checkcase_lines)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4820
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4821
			track_source($checkcase_line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4822
			$checkcase_line =~ s-\/-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4823
			$checkcase_line =~ s-\\\\-\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4824
			if ($checkcase_line =~ /^\s*REM\s*(re)?defined\s*(\w*)\s*as\s*(\S+)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4825
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4826
				my $checkcase_macrocontent = $3;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4827
				my $checkcase_macroname = $2;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4828
				if ($checkcase_macrocontent =~ /[a-zA-Z]/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4829
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4830
					$checkcase_macro{$checkcase_macroname} = $checkcase_macrocontent;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4831
					checkcase_macro(\@checkcase_macrodir, $checkcase_macroname, $checkcase_macrocontent);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4832
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4833
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4834
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4835
		print CHECKCASELOG "======================Macro check part end======================\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4836
		print CHECKCASELOG "======================File check part:======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4837
		foreach $checkcase_line (@checkcase_lines)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4838
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4839
			if ($checkcase_line =~ /^\s*REM\s*.*/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4840
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4841
				next;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4842
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4843
			if ($checkcase_line =~ /^\s*#\s*\d+\s*\"(\S+)\"\s*\d*\s*$/) #oby filename
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4844
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4845
				my $checkcase_whichfile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4846
				checkcase_obyfilename($checkcase_whichfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4847
				track_source($checkcase_line);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4848
			}elsif ($checkcase_line =~ /^\s*\S+\s*=\s*"([^"]+)"\s+\S*\s*/ 
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4849
					 || $checkcase_line =~ /^\s*\S+\s*=\s*(\S+)\s+\S*\s*/) #oby content file name
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4850
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4851
				my $checkcase_pcsidefile = $1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4852
				checkcase_pcsidefilename(\@checkcase_macrodir, $checkcase_pcsidefile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4853
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4854
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4855
		print CHECKCASELOG "======================File check part end======================\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4856
		close CHECKCASELOG;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4857
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4858
		@obydata = @checkcase_obydatatemp;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4859
	}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4860
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4861
		print "WARNING: checkcase option is only valid on windows.\n";
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
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4865
sub checkcase_macro()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4866
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4867
	my $macrodir = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4868
	my $name = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4869
	my $content = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4870
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4871
	if ($content =~ /epoc32/i && (-d $content))
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4872
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4873
		my $realdir = `directory.bat $content`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4874
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4875
		$realdir =~ s/^\s*\w://g if ($content !~ /^\w:/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4876
		$realdir =~ s/\\$//g if ($content !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4877
		$realdir .= "\\" if ($content =~ /\\$/ && $realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4878
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4879
		$sourcefile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4880
		if ($realdir ne $content)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4881
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4882
			print CHECKCASELOG "check case: macro name is $name\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4883
			print CHECKCASELOG "WARNING: macro case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4884
			print CHECKCASELOG "file name is $sourcefile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4885
			print CHECKCASELOG "current is $content\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4886
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4887
			checkcase_convert($sourcefile, $content, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4888
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4889
		$content =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4890
		push @$macrodir, $content;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4891
	}else
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4892
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4893
		if($name eq "PLATFORM_NAME")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4894
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4895
			$content =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4896
			$content =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4897
			$checkcase_platform = $content;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4898
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4899
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4900
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4901
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4902
sub checkcase_obyfilename()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4903
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4904
	my $checkfile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4905
	if (-e $checkfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4906
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4907
		while ($checkfile=~s-[\\](?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go){};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4908
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4909
		if ($checkfile eq $sourcefile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4910
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4911
			return;		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4912
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4913
		my($filename, $dir, $suffix) = fileparse($checkfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4914
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4915
		my $realdir = `directory.bat $dir`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4916
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4917
		$realdir .= "\\" if ($realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4918
		if ($realdir ne $dir)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4919
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4920
			print CHECKCASELOG "check case: oby file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4921
			print CHECKCASELOG "WARNING: dir case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4922
			my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4923
			$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4924
			print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4925
			print CHECKCASELOG "current is $dir\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4926
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4927
			checkcase_convert($sourcefile, $dir, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4928
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4929
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4930
		my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4931
		chdir "$dir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4932
		my @realfile = `dir "$filename" 2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4933
		my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4934
		foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4935
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4936
			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
  4937
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4938
				my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4939
				my $filetemp = lc $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4940
				my $realtemp = lc $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4941
				if ($filetemp eq $realtemp && $realfilename ne $filename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4942
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4943
					print CHECKCASELOG "check case: oby file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4944
					print CHECKCASELOG "WARNING: filename case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4945
					my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4946
					$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4947
					print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4948
					print CHECKCASELOG "current is $filename\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4949
					print CHECKCASELOG "expect  is $realfilename\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4950
					checkcase_convert($sourcefile, $filename, $realfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4951
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4952
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4953
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4954
		chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4955
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4956
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4957
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4958
sub checkcase_pcsidefilename()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4959
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4960
	my $macrodirs = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4961
	my $checkfile = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4962
	$checkfile =~ s/^\"//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4963
	$checkfile =~ s/\"$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4964
	if (-e $checkfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4965
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4966
		while ($checkfile=~s-[\\](?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go){};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4967
		$sourcefile =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4968
		my($filename, $dir, $suffix) = fileparse($checkfile);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4969
		if ($dir eq "\.\\")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4970
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4971
			$dir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4972
			$dir =~ s/\//\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4973
			$dir .= "\\" if ($dir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4974
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4975
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4976
		my $realdir = `directory.bat $dir`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4977
		$realdir =~ s/\s+$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4978
		$realdir =~ s/^\s*\w://g if ($dir !~ /^\w:/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4979
		$realdir .= "\\" if ($realdir !~ /\\$/);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4980
		my $dirtemp = $dir;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4981
		if ($checkcase_test)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4982
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4983
			my $macrodirtemp = "";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4984
			foreach my $macrodir (@$macrodirs)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4985
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4986
				if ($dirtemp =~ /^$macrodir(.*)$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4987
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4988
					$macrodirtemp = $macrodir if (length($macrodirtemp) < length($macrodir));
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4989
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4990
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4991
			if ($macrodirtemp ne "")
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4992
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4993
				$dirtemp =~ s/^$macrodirtemp//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4994
				$realdir =~ s/^$macrodirtemp//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4995
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4996
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4997
		if ($realdir ne $dirtemp)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4998
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  4999
			print CHECKCASELOG "check case: pc side file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5000
			print CHECKCASELOG "WARNING: dir case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5001
			my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5002
			$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5003
			print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5004
			print CHECKCASELOG "current is $dirtemp\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5005
			print CHECKCASELOG "expect  is $realdir\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5006
			checkcase_convert($sourcefile, $dirtemp, $realdir);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5007
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5008
		
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5009
		my $currentdir = cwd;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5010
		chdir "$dir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5011
		my @realfile = `dir "$filename" 2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5012
		my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5013
		foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5014
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5015
			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
  5016
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5017
				my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5018
				my $filetemp = lc $filename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5019
				my $realtemp = lc $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5020
				if ($filetemp eq $realtemp && $realfilename ne $filename)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5021
				{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5022
					print CHECKCASELOG "check case: pc side file name is $checkfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5023
					print CHECKCASELOG "WARNING: filename case is not equal to real.\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5024
					my $tempsrcfile = $sourcefile;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5025
					$tempsrcfile =~ s/\\\\/\\/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5026
					print CHECKCASELOG "file name is $tempsrcfile\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5027
					print CHECKCASELOG "current is $filename\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5028
					print CHECKCASELOG "expect  is $realfilename\n\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5029
					checkcase_convert($sourcefile, $filename, $realfilename);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5030
				}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5031
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5032
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5033
		chdir "$currentdir";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5034
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5035
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5036
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5037
sub checkcase_convert()
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5038
{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5039
	return if (!$checkcase_test);
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5040
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5041
	my $file = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5042
	my $origin = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5043
	my $real = shift;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5044
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5045
	my @realfile = `dir "$file"  2>&1`;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5046
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5047
	foreach $line (@realfile)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5048
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5049
		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
  5050
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5051
			my $realfilename = $5;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5052
			$realfilename =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5053
			$file =~ s-$realfilename$--ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5054
			$realfilename =~ s-\\\.-\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5055
			$file .= $realfilename;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5056
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5057
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5058
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5059
	my $tempfile = $file.".temp";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5060
	my $usemultimacro = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5061
	my $uses60macro_aifrsc = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5062
	my $uses60macro_exe = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5063
	my $uses60macro_aificon = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5064
	my $uses60macro_resource = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5065
	my $originwithoutext = $origin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5066
	my $realwithoutext = $real;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5067
	if ($origin =~ /epoc32/i)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5068
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5069
		my $tempepocroot = $ENV{EPOCROOT};
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5070
		$tempepocroot =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5071
		$origin =~ s/^$tempepocroot//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5072
		$real =~ s/^$tempepocroot//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5073
	}elsif ($checkcase_platform ne "" && $origin =~ /^_$checkcase_platform\_(.*)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5074
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5075
		$origin =~ s/^_$checkcase_platform\_/_PLATFORM_NAME_/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5076
		$real =~ s/^_$checkcase_platform\_/_PLATFORM_NAME_/g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5077
	}elsif ($origin =~ /\S+\_reg\.rsc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5078
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5079
		$originwithoutext =~ s/\_reg\.rsc$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5080
		$realwithoutext =~ s/\_reg\.rsc$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5081
		$uses60macro_aifrsc = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5082
	}elsif ($origin =~ /\S+\.rsc$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5083
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5084
		$originwithoutext =~ s/\.rsc$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5085
		$realwithoutext =~ s/\.rsc$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5086
		$usemultimacro = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5087
		$uses60macro_resource = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5088
	}elsif ($origin =~ /\S+\.r01$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5089
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5090
		$originwithoutext =~ s/\.r01$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5091
		$realwithoutext =~ s/\.r01$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5092
		$usemultimacro = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5093
	}elsif ($origin =~ /\S+\.exe$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5094
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5095
		$originwithoutext =~ s/\.exe$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5096
		$realwithoutext =~ s/\.exe$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5097
		$uses60macro_exe = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5098
	}elsif ($origin =~ /\S+\_aif\.mif$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5099
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5100
		$originwithoutext =~ s/\_aif\.mif$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5101
		$realwithoutext =~ s/\_aif\.mif$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5102
		$uses60macro_aificon = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5103
	}elsif ($origin =~ /\S+\.mif$/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5104
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5105
		$originwithoutext =~ s/\.mif$//g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5106
		$realwithoutext =~ s/\.mif$//ig;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5107
		$uses60macro_aificon = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5108
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5109
	$origin =~ s-\\-\\\\-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5110
	$origin =~ s-\.-\\\.-g;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5111
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5112
	open (SRC, "<$file");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5113
	open (DST, ">$tempfile");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5114
	my $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5115
	while($line = <SRC>)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5116
	{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5117
		my $flag = 0;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5118
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5119
		if ($line =~ /$origin/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5120
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5121
			$originwithoutext = $origin;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5122
			$realwithoutext = $real;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5123
			$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5124
		}elsif ($usemultimacro)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5125
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5126
			if ($line =~ /^.*=\s*MULTI_LINGUIFY\s*\(.*$originwithoutext/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5127
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5128
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5129
			}elsif ($line =~ /^\s*S60_APP_RESOURCE\s*\(\s*$originwithoutext\s*\)/ && $uses60macro_resource)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5130
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5131
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5132
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5133
		}elsif ($uses60macro_exe)
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*S60_APP_EXE\s*\(\s*$originwithoutext\s*\)/)
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
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5139
		}elsif ($uses60macro_aificon)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5140
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5141
			if ($line =~ /^\s*S60_APP_AIF_ICONS\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5142
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5143
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5144
			}elsif ($line =~ /^\s*SCALABLE_IMAGE\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
			}elsif ($line =~ /^\s*S60_APP_BITMAP\s*\(\s*$originwithoutext\s*\)/)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5148
			{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5149
				$flag = 1;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5150
			}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5151
		}elsif ($uses60macro_aifrsc)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5152
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5153
			if ($line =~ /^\s*S60_APP_AIF_RSC\s*\(\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_UPGRADABLE_APP_REG_RSC\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
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5161
		if ($flag)
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5162
		{
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5163
			print CHECKCASELOG "it has been converted automatically\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5164
			print CHECKCASELOG "original  line is $line";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5165
			$line =~ s-$originwithoutext-$realwithoutext-;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5166
			print CHECKCASELOG "converted line is $line\n";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5167
		}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5168
		print DST $line;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5169
	}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5170
	close SRC;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5171
	close DST;
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5172
	
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5173
  unlink "$file";
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5174
  rename ("$file.temp", "$file");
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5175
}
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5176
30b30f9da0b7 Add ..\dev\.. to path
jjkang
parents: 0
diff changeset
  5177
1;