imgtools/romtools/rombuild/romnibus.pl
author Mike Kinghan <mikek@symbian.org>
Thu, 25 Nov 2010 13:59:07 +0000
changeset 40 68f68128601f
parent 39 fa9d7d89d3d6
child 41 1600211976c3
permissions -rwxr-xr-x
1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package. 2) Enhance romnibus.pl so that it generate the symbol file for the built rom when invoked by Raptor 3) Make the maksym.pl tool portable for Linux as well as Windows. 4) Remove the of armasm2as.pl from the e32tools component in favour of the copy now exported from sbsv1/e32util.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     1
#!/usr/bin/perl
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     2
#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     4
# All rights reserved.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     5
# This component and the accompanying materials are made available
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     6
# under the terms of the License "Eclipse Public License v1.0"
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     7
# which accompanies this distribution, and is available
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     8
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     9
#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    10
# Initial Contributors:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    11
# Nokia Corporation - initial contribution.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    12
#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    13
# Contributors:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    14
# Mike Kinghan, mikek@symbian.org, for Symbian Foundation
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    15
#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    16
# Description:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    17
#
32
98a715b0b23a Improve the self-description comment in romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 31
diff changeset
    18
# romnibus.pl - Yet another rombuild wrapper. This one's claim to fame is that
98a715b0b23a Improve the self-description comment in romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 31
diff changeset
    19
# it works in Linux and in Windows, works when invoked from sbsv2 and when
98a715b0b23a Improve the self-description comment in romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 31
diff changeset
    20
# not invoked from sbsv2.
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    21
#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    22
# Pre-processes the .oby/iby files then invokes rombuild.exe
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    23
# (or other specified builder)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    24
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    25
# First, read our config file
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    27
use strict;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    28
use Getopt::Long;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    29
use Cwd;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    30
use Cwd 'abs_path';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    31
use File::Spec;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    32
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    33
my $on_windows;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    34
my $epocroot_vol;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    35
my $epocroot_dir;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    36
my $epocroot_file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    37
my %dir_listings = ();	
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    38
my %opts=();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    39
my $param_count = scalar(@ARGV);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    40
my (@assps, @builds, %variants, @templates, %flags, %insts, %zip, %builder);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    41
my $main;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    42
my $kmain;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    43
my $toroot;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    44
my $e32path;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    45
my $rombuildpath;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    46
my $euserdir;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    47
my $elocldir;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    48
my $kbdir;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    49
my $romname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    50
my $single;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    51
my $smain;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    52
my $pagedCode;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    53
my $debug;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    54
my $quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    55
my $toolpath;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    56
my $epoc32path;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    57
my $epocroot;
33
667e3f7728f7 1) Make prep_env.pl apply a patch to epoc32/sbs_config/s60_sbs_config.xml to replace the ARM
mikek
parents: 32
diff changeset
    58
my $lc_epocroot;
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    59
my $drive = "";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    60
my $base_path;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    61
my $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    62
sub Variant_GetMacroHRHFile;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    63
sub is_RVCT_build($);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    64
sub parse_cfg;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    65
sub ASSPS;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    66
sub BUILDS;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    67
sub TEMPLATES;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    68
sub usage;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    69
sub rectify($$$);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    70
sub match_abbrev($$);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    71
sub check_opts;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    72
sub lookup_file_info($$);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    73
sub lookupSymbolInfo($$);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    74
sub parse_patch_data($$);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    75
sub gen_file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    76
sub nix_fixes {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    77
#	Fix case-sensitivity offenders for unix/linux environment.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    78
	my $e32plat_pm = File::Spec->catfile($toolpath,"e32plat.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    79
	my $armutl_pm = File::Spec->catfile($toolpath,"armutl.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    80
	my $bpabiutl_pm = File::Spec->catfile($toolpath,"bpabiutl.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    81
	my $e32variant_pm = File::Spec->catfile($toolpath,"e32variant.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    82
	my $E32Plat_pm = File::Spec->catfile($toolpath,"E32Plat.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    83
	my $Armutl_pm = File::Spec->catfile($toolpath,"Armutl.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    84
	my $BPABIutl_pm = File::Spec->catfile($toolpath,"BPABIutl.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    85
	my $E32Variant_pm = File::Spec->catfile($toolpath,"E32Variant.pm");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    86
	# Create symlinks for case-sensitively misnamed modules we need.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    87
	unless ( -f $E32Plat_pm or -l $E32Plat_pm) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    88
		symlink($e32plat_pm,$E32Plat_pm);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    89
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    90
	unless ( -f $Armutl_pm or -l $Armutl_pm) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    91
		symlink($armutl_pm,$Armutl_pm);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    92
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    93
	unless ( -f $BPABIutl_pm or -l $BPABIutl_pm) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    94
		symlink($bpabiutl_pm,$BPABIutl_pm);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    95
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    96
	unless ( -f $E32Variant_pm or -l $E32Variant_pm) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    97
		symlink($e32variant_pm,$E32Variant_pm);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    98
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    99
	# Make uppercase symlinks to all .bsf files in /epoc32/tools
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   100
	my @bsf_files = glob(File::Spec->catfile($toolpath,"*.bsf"));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   101
	foreach my $bsf_file (@bsf_files) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   102
		my ($vol,$dirs,$file) = File::Spec->splitpath($bsf_file);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   103
		$file =~ /^(\S+)\.bsf/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   104
		my $uc_stem = uc($1);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   105
		my $uc_bsf_file = File::Spec->catpath($vol,$dirs,($uc_stem .".bsf"));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   106
		unless ( -f $uc_bsf_file or -l $uc_bsf_file ) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   107
			symlink($bsf_file,$uc_bsf_file) or die "Can't symlink $bsf_file -> $uc_bsf_file. $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   108
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   109
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   110
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   111
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   112
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   113
BEGIN {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   114
	$on_windows = $^O =~ /^MSWin/ ? 1 : 0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   115
	$epocroot = $ENV{EPOCROOT};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   116
	die "ERROR: Must set the EPOCROOT environment variable.\n" if (!defined($epocroot));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   117
	print "Environmental epocroot - >$epocroot<\n";
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   118
	$epocroot =~ s/:$/:\//, if $on_windows;
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   119
	$epocroot = abs_path($epocroot);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   120
	die "ERROR: EPOCROOT must specify an existing directory.\n" if (!-d $epocroot);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   121
	($epocroot_vol,$epocroot_dir,$epocroot_file) = File::Spec->splitpath($epocroot);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   122
	$epocroot = File::Spec->catfile(($epocroot_vol,$epocroot_dir,$epocroot_file),undef);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   123
	print "EPOCROOT=$ENV{EPOCROOT} resolved as \"$epocroot\"\n";
33
667e3f7728f7 1) Make prep_env.pl apply a patch to epoc32/sbs_config/s60_sbs_config.xml to replace the ARM
mikek
parents: 32
diff changeset
   124
	$lc_epocroot = lc($epocroot);
39
fa9d7d89d3d6 A couple more small Windows compatibility fixes for romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 38
diff changeset
   125
	$epoc32path = File::Spec->catfile($epocroot,"epoc32");
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   126
	$toolpath = File::Spec->catfile($epoc32path,"tools");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   127
	push @INC, $toolpath;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   128
	nix_fixes(), unless ($on_windows);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   129
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   130
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   131
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   132
my $result = GetOptions (\%opts, "assp=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   133
						 "inst=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   134
						 "type=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   135
						 "variant=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   136
						 "build=s", 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   137
						 "conf=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   138
						 "name=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   139
						 "modules=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   140
						 "xabi=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   141
						 "clean",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   142
						 "quiet",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   143
						 "help",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   144
						 "debug",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   145
						 "zip",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   146
						 "symbol",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   147
						 "noheader",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   148
						 "kerneltrace=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   149
						 "rombuilder=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   150
						 "define=s@",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   151
						 "rofsbuilder=s",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   152
						 "compress",
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   153
						 );
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   154
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   155
$debug = $opts{debug};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   156
$quiet = $opts{quiet} unless $debug;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   157
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   158
my $cwd = Cwd::cwd();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   159
my ($vol,$dirs,$file) = File::Spec->splitpath($cwd);
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   160
$drive = $vol, if ($on_windows);
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   161
my @path_parts = File::Spec->splitdir($dirs);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   162
while(@path_parts[-1] ne "sf") {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   163
	pop(@path_parts);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   164
}
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   165
$base_path = File::Spec->catdir((@path_parts,"os"));
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   166
$base_path = "$drive$base_path", if ($on_windows);
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   167
$rombuildpath = File::Spec->catfile($base_path,"kernelhwsrv","kernel","eka","rombuild");
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   168
$base_path .= ($on_windows ? '\\' : '/');  
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   169
$e32path = ($on_windows ? "\\sf\\os" : "/sf/os"); 
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   170
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   171
use E32Plat;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   172
{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   173
        Plat_Init($toolpath . ($on_windows ? '\\' : '/'));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   174
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   175
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   176
if ($debug) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   177
	print "epocroot = $epocroot\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   178
	print "epoc32path = $epoc32path\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   179
	print "drive = $drive\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   180
	print "toolpath = $toolpath\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   181
	print "toroot = $toroot\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   182
	print "e32path = $e32path\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   183
	print "rombuildpath = $rombuildpath\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   184
	print "base_path = $base_path\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   185
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   186
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   187
#my $cppflags="-P -undef -Wno-endif-labels -traditional -lang-c++ -nostdinc -iwithprefixbefore $rombuildpath -I $rombuildpath -I $drive$epoc32path ";
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   188
my $cppflags="-P -undef -Wno-endif-labels -traditional -lang-c++ -nostdinc -I $rombuildpath -I $epoc32path ";
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   189
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   190
# Include variant hrh file defines when processing oby and ibys with cpp
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   191
# (Code copied from \\EPOC\master\cedar\generic\tools\romkit\tools\buildrom.pm -
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   192
# it used relative path to the working dir but we are using absolute path seems neater)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   193
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   194
my $variantMacroHRHFile = Variant_GetMacroHRHFile();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   195
if($variantMacroHRHFile){
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   196
	my ($ignore1,$dir,$file) = File::Spec->splitpath($variantMacroHRHFile);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   197
	$cppflags .= " -I " . File::Spec->catpath($epocroot_vol,$dir,undef) . " -include " . File::Spec->catpath($epocroot_vol,$dir,$file); 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   198
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   199
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   200
if($param_count == 0 || $opts{'help'} || !$result) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   201
	usage();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   202
	exit 0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   203
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   204
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   205
# Now check that the options we have make sense
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   206
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   207
checkopts();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   208
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   209
if (!$quiet) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   210
	print "Starting directory: ", Cwd::cwd(), "\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   211
	print <<EOF;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   212
OPTIONS:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   213
\tTYPE: $opts{'type'}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   214
\tVARIANT: $opts{'variant'}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   215
\tINSTRUCTION SET: $opts{'inst'}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   216
\tBUILD: $opts{'build'}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   217
\tMODULES: $opts{'modules'}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   218
EOF
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   219
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   220
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   221
#Pick out the type file
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   222
my $skel = "$opts{'type'}.oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   223
unless (-e $skel) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   224
	$skel= File::Spec->catfile($rombuildpath,"$opts{'type'}.oby");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   225
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   226
unless (-e $skel) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   227
	die "Can't find type file for type $opts{'type'}, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   228
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   229
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   230
print "Using type file $skel\n" if !$quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   231
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   232
# If clean is specified, zap all the image and .oby files
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   233
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   234
if($opts{'clean'}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   235
	unlink glob("*.img");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   236
	unlink "rom.oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   237
	unlink "rombuild.log";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   238
	unlink glob("*.rofs");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   239
	unlink "rofsbuild.log";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   240
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   241
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   242
# Now pre-pre-process this file to point to the right places for .ibys
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   243
# Unfortunately cpp won't do macro replacement in #include strings, so
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   244
# we have to do it by hand
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   245
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   246
my $k = $opts{kerneltrace};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   247
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   248
if ($opts{assp}=~/^m(\S+)/i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   249
	$kbdir="kb$1";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   250
	$kbdir="kbarm" if (lc $1 eq 'eig');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   251
} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   252
	$kbdir="kb$opts{assp}";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   253
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   254
$single=1 if ($opts{assp}=~/^s(\S+)/i);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   255
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   256
if ($single) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   257
	# Hackery to cope with old compiler
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   258
	if ($main eq 'MARM') {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   259
		$smain='SARM';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   260
	} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   261
		$smain="S$main";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   262
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   263
} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   264
	$smain=$main;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   265
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   266
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   267
unless ($on_windows) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   268
	$main = lc($main);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   269
	$kmain = lc($kmain);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   270
}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   271
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   272
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   273
open(X, "$skel") || die "Can't open type file $skel, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   274
open(OUT, "> rom1.tmp") || die "Can't open output file, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   275
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   276
# First output the ROM name
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   277
print OUT "\nromname=$romname\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   278
while(<X>) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   279
	s/\#\#ASSP\#\#/$opts{'assp'}/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   280
	s/\#\#VARIANT\#\#/$opts{'variant'}/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   281
	s/\#\#BUILD\#\#/$opts{'build'}/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   282
	s/\#\#MAIN\#\#/$main/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   283
	s/\#\#KMAIN\#\#/$kmain/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   284
	s/\#\#E32PATH\#\#/$e32path/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   285
	s/\#\#BASEPATH\#\#/$base_path/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   286
	s/\#\#EUSERDIR\#\#/$euserdir/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   287
	s/\#\#ELOCLDIR\#\#/$elocldir/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   288
	s/\#\#KBDIR\#\#/$kbdir/;
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   289
	unless ($on_windows) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   290
		if (m/#include/) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   291
			s|\\|\/|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   292
			lc;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   293
		}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   294
	}
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   295
	print OUT;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   296
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   297
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   298
close X;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   299
close OUT;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   300
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   301
# Use cpp to pull in include chains and replace defines
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   302
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   303
my $defines = "";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   304
$defines .= "-D MAIN=$main ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   305
$defines .= "-D KMAIN=$kmain ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   306
$defines .= "-D EUSERDIR=$euserdir ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   307
$defines .= "-D ELOCLDIR=$elocldir ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   308
$defines .= "-D E32PATH=$e32path ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   309
$defines .= "-D BASEPATH=$base_path ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   310
$defines .= "-D EPOCROOT=$epocroot ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   311
$defines .= "-D SMAIN=$smain " if $smain;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   312
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   313
foreach (@{$opts{'define'}}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   314
	my @array=split(/,/,$_);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   315
	foreach (@array) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   316
		$defines.="-D ".uc $_." ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   317
		$pagedCode = 1 if $_ eq 'PAGED_CODE';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   318
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   319
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   320
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   321
if ($opts{'modules'}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   322
	my @array=split(/,/,$opts{'modules'});
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   323
	foreach (@array) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   324
		$defines.="-D ".uc $_." ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   325
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   326
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   327
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   328
foreach (keys %opts) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   329
	next if ($_ eq 'name');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   330
	next if ($_ eq 'modules');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   331
	next if ($_ eq 'zip');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   332
	next if ($_ eq 'symbol');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   333
	next if ($_ eq 'kerneltrace');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   334
	next if ($_ eq 'define');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   335
	$defines.="-D ".uc $_."=".$opts{$_}." ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   336
	$defines.="-D ".uc $_."_".$opts{$_}." ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   337
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   338
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   339
$defines.="-D SINGLE " if ($single);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   340
$defines.="-D RVCT " if (IsRVCTBuild($main));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   341
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   342
print "Using defines $defines\n" if !$quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   343
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   344
my $ret=1;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   345
my $cppcmd;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   346
if($opts{'build'}=~/^u/i and $on_windows) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   347
	# Unicode build
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   348
	$cppcmd = File::Spec->catfile($epoc32path,"gcc","bin","cpp") . " $cppflags -D UNICODE $defines rom1.tmp rom2.tmp";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   349
} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   350
	$cppcmd = "cpp $cppflags $defines rom1.tmp rom2.tmp";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   351
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   352
print "Executing CPP:\n\t$cppcmd\n" if $debug;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   353
$ret = system($cppcmd);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   354
die "ERROR EXECUTING CPP\n" if $ret;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   355
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   356
# Purge remarks and blank lines. Complete source filenames and adapt them to host filesystem.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   357
rectify("rom2.tmp", "rom3.tmp", $k);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   358
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   359
# scan tmp file and generate auxiliary files, if required
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   360
open TMP, "rom3.tmp" or die("Can't open rom3.tmp\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   361
while ($line=<TMP>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   362
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   363
	if ($line=~/\s*gentestpaged/i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   364
		genfile("paged");	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   365
	if ($line=~/\s*gentestnonpaged/i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   366
		genfile("nonpaged");	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   367
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   368
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   369
parsePatchData("rom3.tmp", "rom4.tmp");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   370
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   371
# break down the oby file into rom, rofs and extensions oby files
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   372
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   373
my $oby_index =0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   374
my $dumpfile="rom.oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   375
my $rofs=0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   376
my $extension=0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   377
my $corerofsname="";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   378
open DUMPFILE, ">$dumpfile" or die("Can't create $dumpfile\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   379
open TMP, "rom4.tmp" or die("Can't open rom4.tmp\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   380
while ($line=<TMP>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   381
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   382
	if ($line=~/^\s*rofsname/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   383
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   384
		close DUMPFILE;							# close rom.oby or previous rofs#/extension#.oby
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   385
		$oby_index=1;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   386
		$corerofsname=$line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   387
		$corerofsname =~ s/rofsname\s*=\s*//i;		# save core rofs name
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   388
		chomp($corerofsname);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   389
		unlink $corerofsname || print "unable to delete $corerofsname";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   390
		my $dumpfile="rofs".$rofs.".oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   391
		$rofs++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   392
		open DUMPFILE, ">$dumpfile" or (close TMP and die("Can't create $dumpfile\n"));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   393
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   394
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   395
	if ($line=~/^\s*coreimage/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   396
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   397
		close DUMPFILE;							# close rofs.oby
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   398
		if ($oby_index ne 1) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   399
			close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   400
			die "Must specify ROFS image before ROFS extension\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   401
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   402
		my $name=$line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   403
		$name =~ s/coreimage\s*=\s*//i;		# read core rofs name
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   404
		chomp($name); 			# remove trailing \n
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   405
		if ($name ne $corerofsname) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   406
			close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   407
			die "This extension does not relate to previous ROFS\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   408
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   409
		$oby_index=33;						# open window
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   410
		my $dumpfile="extension".$extension.".oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   411
		$extension++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   412
		open DUMPFILE, ">$dumpfile" or (close TMP and die("Can't create $dumpfile\n"));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   413
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   414
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   415
	if ($line=~/^\s*extensionrofs/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   416
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   417
		$oby_index=3 if ($oby_index eq 2);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   418
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   419
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   420
	if (($oby_index eq 2) && !($line=~/^\s*$/)) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   421
		close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   422
		die "Bad ROFS extension specification\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   423
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   424
	print DUMPFILE $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   425
	$oby_index=2 if ($oby_index eq 33);		# close window
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   426
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   427
close DUMPFILE;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   428
close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   429
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   430
# For paged roms that use rofs, move all data= lines in rom which are not 'paging_unmovable' to rofs, so that paged ram-loaded code
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   431
# is automatically put into rofs
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   432
rename('rom.oby', 'rom4.tmp') || die;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   433
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   434
open(IN, 'rom4.tmp') || die "Can't read rom4.tmp";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   435
open(ROM, '>rom.oby') || die "Can't write to rom.oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   436
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   437
if ($oby_index >= 1 && $pagedCode)	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   438
	open(ROFS, '>>rofs0.oby') || die "Can't append to rofs0.oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   439
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   440
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   441
while ($line=<IN>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   442
{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   443
	if(($oby_index >= 1) && ($pagedCode) && ($line=~/^\s*data\s*=/) && !($line=~/\.*paging_unmovable\s*/)) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   444
		print ROFS $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   445
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   446
	else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   447
		$line=~s/paging_unmovable//;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   448
		print ROM $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   449
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   450
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   451
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   452
close IN;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   453
close ROM;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   454
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   455
if ($oby_index >= 1 && $pagedCode)	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   456
	close ROFS;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   457
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   458
	unlink 'rom4.tmp';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   459
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   460
my $flags;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   461
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   462
foreach (@{$flags{$opts{'assp'}}}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   463
	$flags.=" -$_";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   464
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   465
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   466
if($opts{'noheader'}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   467
	$flags.=" -no-header";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   468
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   469
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   470
if($opts{'compress'}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   471
	$flags.=" -compress";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   472
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   473
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   474
my $builder = $opts{'rombuilder'};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   475
if ($on_windows) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   476
	$builder = File::Spec->catfile($toolpath,"rombuild.exe") unless ($builder);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   477
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   478
else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   479
	$builder = File::Spec->catfile($toolpath,"rombuild") unless ($builder);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   480
	unless ( -x $builder ) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   481
		chmod 0755,$builder;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   482
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   483
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   484
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   485
print "$builder $flags -type-safe-link -S rom.oby 2>&1\n\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   486
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   487
open(Y, "$builder $flags -type-safe-link -S rom.oby 2>&1 | ") || 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   488
	die "Can't start $builder command, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   489
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   490
my $nerrors=0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   491
my $nwarnings=0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   492
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   493
while(<Y>) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   494
	my $error=(/^error:/i);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   495
	my $warning=(/^warning:/i);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   496
	print if ($error or $warning or !$quiet);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   497
	$nerrors++ if ($error);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   498
	$nwarnings++ if ($warning);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   499
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   500
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   501
print "\nGenerated .oby file is rom.oby\n" if !$quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   502
print "\nGenerated image file is $romname\n" if (!$nerrors);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   503
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   504
my$rerrors;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   505
my $rofsbuilder;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   506
if ($rofs) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   507
	$rofsbuilder = $opts{'rofsbuilder'};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   508
	$rofsbuilder = "rofsbuild" unless ($rofsbuilder);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   509
	for(my $i=0;$i<$rofs;++$i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   510
		print "Executing $rofsbuilder on main rofs\n" if !$quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   511
		my $image="rofs".$i.".oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   512
		system("$rofsbuilder $image");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   513
		if ($? != 0)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   514
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   515
			print "$rofsbuilder $image returned $?\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   516
			$rerrors++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   517
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   518
		rename "rofsbuild.log", "rofs$i.log"
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   519
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   520
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   521
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   522
if ($rofs and $extension) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   523
	for(my $i=0;$i<$extension;++$i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   524
		print "Executing $rofsbuilder on extension rofs\n" if !$quiet;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   525
		my $image="extension".$i.".oby";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   526
		system("$rofsbuilder $image");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   527
		if ($? != 0)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   528
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   529
			print "$rofsbuilder $image returned $?\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   530
			$rerrors++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   531
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   532
		rename "rofsbuild.log", "extension$i.log"
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   533
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   534
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   535
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   536
if ($nerrors) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   537
	print "\n\n Errors found during $builder!!\n\nLeaving tmp files\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   538
} elsif ($nwarnings) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   539
	print "\n\n Warnings during $builder!!\n\nLeaving tmp files\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   540
} elsif ($rerrors) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   541
	print "\n\n Errors during $rofsbuilder!!\n\nLeaving tmp files\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   542
} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   543
	unlink glob("*.tmp") if !$debug;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   544
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   545
if ($opts{zip} or $zip{$opts{assp}}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   546
	my $zipname=$romname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   547
	$zipname =~ s/\.(\w+)$/\.zip/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   548
	unlink $zipname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   549
	system("zip $zipname $romname");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   550
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   551
if ($opts{symbol}) {
40
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   552
	my $maksym = File::Spec->catfile($toolpath,"maksym.pl");
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   553
	my $logname=$romname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   554
	$logname =~ s/\.(\w+)$/\.log/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   555
	my $obyname=$romname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   556
	$obyname =~ s/\.(\w+)$/\.oby/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   557
	unlink $logname;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   558
	unlink $obyname;
40
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   559
	unless (rename("ROMBUILD.LOG",$logname)) {
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   560
		print "\"rename ROMBUILD.LOG -> $logname\" failed: $!\n";
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   561
		exit 1;
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   562
	}
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   563
	unless (rename("rom.oby",$obyname)) {
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   564
		print "\"rename rom.oby -> $obyname\" failed: $!\n";
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   565
		exit 1;
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   566
	}
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   567
	if (system("$maksym $logname")) {
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   568
		print "\"maksym.pl $logname\" failed: $!\n";
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   569
		exit 1;
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   570
	}
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   571
	unless (rename($logname,"ROMBUILD.LOG")) {
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   572
		print "\"rename $logname -> ROMBUILD.LOG\" failed: $!\n";
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   573
		exit 1;
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   574
	}
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   575
	unless (rename($obyname,"rom.oby")) {
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   576
		print "rename $obyname -\. rom.oby\" failed: $!\n";
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   577
		exit 1;
68f68128601f 1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
Mike Kinghan <mikek@symbian.org>
parents: 39
diff changeset
   578
	}
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   579
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   580
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   581
#IMK if ($nerrors || $nwarnings || $rerrors) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   582
#IMK	exit 4;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   583
#IMK}	
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   584
if ($nerrors || $rerrors) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   585
	exit 4;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   586
}	
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   587
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   588
	
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   589
exit 0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   590
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   591
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   592
################################ Subroutines  ##################################
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   593
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   594
sub usage {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   595
	print <<EOT;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   596
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   597
rom <options>
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   598
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   599
Generate a rom image for the specified target, along with a rom.oby file
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   600
that can be fed to (a) rombuild to regenerate the image.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   601
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   602
The following options are required:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   603
  --variant=<variant>         e.g. --variant=assabet
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   604
  --inst=<instruction set>    e.g. --inst=arm4
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   605
  --build=<build>             e.g. --build=udeb
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   606
  --type=<type of rom>  
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   607
         tshell for a text shell rom
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   608
         e32tests for a rom with e32tests
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   609
         f32tests for rom with f32tests
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   610
         alltests for all the tests
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   611
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   612
The following are optional:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   613
  --name=<image name>               Give image file specified name
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   614
  --noheader                        Pass -no-header option on to rombuild
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   615
  --help                            This help message.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   616
  --clean                           Remove existing generated files first
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   617
  --quiet                           Be less verbose
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   618
  --modules=<comma separated list>  List of additional modules for this ROM
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   619
  --define=<comma separated list>   List of CPP macros to define
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   620
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   621
Options may be specified as a short abbreviation 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   622
e.g. -b udeb instead of --build udeb
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   623
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   624
EOT
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   625
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   626
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   627
sub rectify($$$) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   628
	my ($in, $out, $k) = @_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   629
	my $lastblank;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   630
	my $lineno = 0;
39
fa9d7d89d3d6 A couple more small Windows compatibility fixes for romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 38
diff changeset
   631
	my $epocroot_pattern = $on_windows ? $epocroot . '\\\\' : $epocroot;
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   632
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   633
	open(OUTPUT_FILE, "> $out") or die "Cannot open $out for output";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   634
	open(INPUT_FILE, "< $in") or die "Cannot open for $in input";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   635
  
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   636
	while ($line=<INPUT_FILE>) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   637
		++$lineno;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   638
		if ($line =~ /^\/\// ) {} # Ignore c++ commented lines.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   639
		elsif ($line =~ /^\s*REM\s+/i) {} # Ignore REM commented lines.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   640
		elsif ($line =~ /^\s*$/) { # Compress blank lines down to one
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   641
			if($lastblank) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   642
				# Do nothing
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   643
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   644
			else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   645
				# This is the first blank line
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   646
				$lastblank=1;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   647
				print OUTPUT_FILE $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   648
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   649
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   650
		else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   651
			# Not blank
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   652
			my $epoc32_line = 0;
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   653
			$lastblank = 0;
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   654
			$line =~ s|\#\#||g; # Delete "token-pasting" ops
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   655
			$line =~ s|//.*$||g; # Delete trailing c++ comments
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   656
			# prefix the epocroot dir to occurrences of 'epoc32' in all "KEYWORD=..." lines.
39
fa9d7d89d3d6 A couple more small Windows compatibility fixes for romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 38
diff changeset
   657
			$line =~ s/(=\s*)[\\\/]epoc32/\1$epoc32path/i;
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   658
			$epoc32_line = defined($1);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   659
			if (!$epoc32_line) {
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
   660
				$line =~ /(=.*$epocroot_pattern)/i;
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   661
				$epoc32_line = defined($1);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   662
			}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   663
			if (!$epoc32_line) {
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   664
				if ($k and $line=~/^\s*kerneltrace/i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   665
					$line = "kerneltrace $k\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   666
				}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   667
			}
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   668
			elsif ($on_windows) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   669
				$line =~ s|\/|\\|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   670
			}
38
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   671
			elsif ($line =~ /(^bootbinary\s*=\s*${epocroot}epoc32)(\S+)$/) {
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   672
				# unixify the bootbinary line
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   673
				my $tail = $2;
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   674
				$line =~ s|\\|\/|g;
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   675
				$tail =~ s|\\|\/|g;
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   676
				my $lc_tail = lc($tail);
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   677
				$line =~ s|$tail|$lc_tail|;
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   678
			}
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   679
			elsif ($line =~ /^(\s*\S+\s*=\s*)(\S+)(\s*\S*)/) {
38
620772202a07 Bug fix: romnibus.pl did not "unixify" the input bootbinary-line when necessary.
Mike Kinghan <mikek@symbian.org>
parents: 33
diff changeset
   680
				#unixify the lefthand sides of rom-mapping lines.
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   681
				my $keyword_part = $1;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   682
				my $src = $2;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   683
				my $dest = $3;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   684
				$dest =~ s/^\s+//;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   685
				$dest =~ s/\s+$//;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   686
				$src =~ s|\\|\/|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   687
				if ($dest) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   688
					my ($vol,$dir,$leaf) = File::Spec->splitpath($src);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   689
					my $lc_leaf = lc($leaf);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   690
					my $lc_dir = lc($dir);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   691
					$lc_dir =~ s/\/$//;
33
667e3f7728f7 1) Make prep_env.pl apply a patch to epoc32/sbs_config/s60_sbs_config.xml to replace the ARM
mikek
parents: 32
diff changeset
   692
					$lc_dir =~ s|^$lc_epocroot|$epocroot|;
667e3f7728f7 1) Make prep_env.pl apply a patch to epoc32/sbs_config/s60_sbs_config.xml to replace the ARM
mikek
parents: 32
diff changeset
   693
					my $fulldir = $lc_dir;	
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   694
					$fulldir =~ s|//|/|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   695
					$dest =~ s|\/|\\|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   696
					$dest = '\\' . $dest, unless ($dest =~ /^\\/);
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   697
					unless ( -d $fulldir ) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   698
						chomp $line;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   699
						# Lower-cased source directory doesn't exist. Give up.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   700
						die "Guessed source directory \"$fulldir\" does not exist for line $lineno: \"$line\"\n";
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   701
					}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   702
					if (($leaf eq $lc_leaf) or (-f "$fulldir\/$leaf")) { 
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   703
						# Using source directory lowercase and source filename as input.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   704
						$line = "${keyword_part}${lc_dir}\/${leaf}\t${dest}\n";
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   705
					}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   706
					elsif ( -f "$fulldir\/$lc_leaf") {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   707
						# Using source directory source filename both lowercase.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   708
						$line = "${keyword_part}${lc_dir}\/${lc_leaf}\t${dest}\n";
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   709
					}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   710
					else { # Harder.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   711
						my @dirlist;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   712
						my $found = 0;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   713
						if (!defined($dir_listings{$fulldir})) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   714
							# Haven't got a cached dir listing for the source directory.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   715
							# Make one now.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   716
							@dirlist = glob("$fulldir.*");
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   717
							$dir_listings{$fulldir} = \@dirlist;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   718
						}	
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   719
						@dirlist = @{dir_listings{$fulldir}}; # Get listing of source directory from cache.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   720
						foreach my $file (@dirlist) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   721
							# See if any file in the source directory case-insensitively matches the input source file.
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   722
							if ( (-f "$fulldir\/$file") and (lc($file) eq $lc_leaf)) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   723
								$line = "${keyword_part}${lc_dir}\/${file}\t${dest}\n";
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   724
								$found = 1;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   725
								last;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   726
							}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   727
						}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   728
						unless ($found) {
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   729
							die "Cannot find any file case-insensitively matching \"$fulldir\/$leaf\" at line $lineno: \"$line\"\n";
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   730
						}
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   731
					}
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   732
				}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   733
				else {
29
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   734
					$line =~ s|\\|\/|g;
86492ef8d086 1) Update cross-plat-dev-utils for gcc 4.4.3
Mike Kinghan <mikek@symbian.org>
parents: 27
diff changeset
   735
				}								
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   736
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   737
			print OUTPUT_FILE $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   738
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   739
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   740
	close(INPUT_FILE);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   741
	close(OUTPUT_FILE);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   742
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   743
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   744
sub IsRVCTBuild($) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   745
    my ($build)=@_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   746
    return 1 if ($build =~ /^ARMV/i);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   747
	my @customizations = Plat_Customizations('ARMV5');
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   748
	return 1 if (grep /$build/, @customizations);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   749
	return 0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   750
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   751
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   752
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   753
sub IsSmp($) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   754
	my %SmpKernelDirs=(
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   755
		'x86smp' => 1,
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   756
		'x86gmp' => 1,
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   757
		'arm4smp' => 1,
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   758
		'armv4smp' => 1,
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   759
		'armv5smp' => 1
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   760
	);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   761
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   762
	my ($kdir) = @_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   763
	return $SmpKernelDirs{lc $kdir};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   764
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   765
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   766
sub checkopts {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   767
	unless($opts{variant}) { die "No Variant specified"; }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   768
	$opts{'build'}="UDEB" unless($opts{'build'});
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   769
	$opts{'type'}="TSHELL" unless($opts{'type'});
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   770
	$opts{'inst'}="ARM4" unless($opts{'inst'});
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   771
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   772
	my $additional;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   773
	if ($opts{'modules'}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   774
		$additional="_".$opts{modules};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   775
		$additional=~ s/,/_/ig;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   776
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   777
	my $build=lc $opts{build};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   778
	my $inst=uc $opts{'inst'};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   779
	if ($inst eq "MARM") {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   780
		# Hackery to cope with old compiler
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   781
		$main="MARM";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   782
		$euserdir="MARM";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   783
		$elocldir="MARM";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   784
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   785
	else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   786
		$main=$inst;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   787
		if ($main eq "THUMB") {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   788
			$euserdir="ARMI";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   789
		} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   790
			$euserdir=$main;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   791
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   792
		if ($main eq "ARMI" or $main eq "THUMB") {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   793
			$elocldir="ARM4";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   794
		} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   795
			$elocldir=$main;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   796
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   797
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   798
	$kmain = $opts{'xabi'};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   799
	$kmain = $main unless ($kmain);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   800
	if (IsSmp($kmain)) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   801
		$euserdir = $kmain;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   802
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   803
	if ($opts{name}) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   804
		$romname=$opts{name};
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   805
	} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   806
		$romname=uc($opts{variant}.$additional.$main);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   807
		if ($build=~/^\w*DEB$/i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   808
			$romname.='D';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   809
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   810
		$romname.='.IMG';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   811
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   812
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   813
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   814
sub lookupFileInfo($$)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   815
{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   816
	my ($infile, $fullname) = @_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   817
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   818
	my ($name, $ext) = $fullname =~ /^(.+)\.(\w+)$/ ? ($1, $2) : ($fullname, undef);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   819
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   820
	open TMP, $infile or die("Can't open $infile\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   821
	while(<TMP>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   822
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   823
		$_ = lc;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   824
		if(/^\s*(\S+)\s*=\s*(\S+)\s+(\S+)/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   825
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   826
			my ($src, $dest) = ($2, $3);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   827
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   828
			my $destFullname = $dest =~ /^.*\\(.+)$/ ? $1 : $dest;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   829
			my ($destName, $destExt) = $destFullname =~ /^(.+?)\.(\w+)$/ ? ($1, $2) : ($destFullname, undef);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   830
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   831
			if ($destName eq $name && (!$ext || $ext eq $destExt))
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   832
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   833
				close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   834
				return ($src, $dest);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   835
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   836
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   837
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   838
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   839
	die "patchdata: Can't find file $fullname\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   840
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   841
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   842
sub lookupSymbolInfo($$)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   843
{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   844
	my ($file, $name) = @_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   845
	open TMP, $file or die "Can't read $file\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   846
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   847
	# ignore local symbols.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   848
	while (<TMP>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   849
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   850
		last if /Global Symbols|Linker script and memory map/;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   851
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   852
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   853
  my @return_values = ();
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   854
  my $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   855
	while ($line = <TMP>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   856
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   857
		next if (index($line, $name) < 0);		
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   858
		
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   859
		# RVCT 2.2
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   860
		# 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   861
		#     KHeapMinCellSize  0x0004e38c  Data 4  mem.o(.constdata)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   862
		#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   863
		if ($line =~ /^\s*(\S+)\s+(\S+)\s+data\s+(\S+)/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   864
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   865
			my ($symbol, $addr, $size) = ($1, $2, $3);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   866
			if ($symbol eq $name)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   867
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   868
				@return_values = ($addr, $size);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   869
				last;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   870
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   871
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   872
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   873
		# This is a quick fix for RVCT 3.1, which uses the text "(EXPORTED)"
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   874
		# in the map file. Here is an example:
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   875
		#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   876
		# KHeapMinCellSize (EXPORTED) 0x0003d81c Data 4 mem.o(.constdata)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   877
		#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   878
		elsif ($line =~ /^\s*(\S+)\s+\(exported\)\s+(\S+)\s+data\s+(\S+)/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   879
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   880
			my ($symbol, $addr, $size) = ($1, $2, $3);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   881
			if ($symbol eq $name)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   882
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   883
				@return_values = ($addr, $size);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   884
				last;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   885
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   886
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   887
		
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   888
		# GCC 4.x map files
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   889
		#                 0x00114c68                KHeapMinCellSize
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   890
		#                 0x00114c6c                KHeapShrinkHysRatio
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   891
		#  .rodata        0x00115130      0x968 M:/epoc32/build/kernel/c_99481fddbd6c6f58/_omap3530_ekern_exe/armv5/udeb/heap_hybrid.o
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   892
		#
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   893
		elsif ($line =~ /^.+\s+(0x\S+)\s+(\S+)/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   894
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   895
			my ($addr, $symbol) = ($1, $2);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   896
			if ($symbol eq $name)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   897
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   898
				my $next_line = <TMP>;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   899
				if ($next_line =~ /^.+\s+(0x\S+)\s+(\S+)/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   900
				{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   901
					my $addr2 = $1;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   902
					
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   903
					@return_values = ($addr, hex($addr2) - hex($addr));
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   904
					last;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   905
				}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   906
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   907
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   908
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   909
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   910
	close TMP;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   911
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   912
	die "patchdata: Can't find symbol $name\n" if (scalar @return_values == 0);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   913
	return @return_values;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   914
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   915
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   916
sub parsePatchData($$)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   917
{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   918
	my ($infile, $outfile) = @_;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   919
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   920
	open IN, $infile or die("Can't read $infile\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   921
	open OUT, ">$outfile" or die("Can't write $outfile\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   922
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   923
	my $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   924
	while($line = <IN>)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   925
	{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   926
		if ($line =~ /^\s*patchdata\s+(.+?)\s*$/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   927
		{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   928
			if ($1 !~ /(\S+)\s*@\s*(\S+)\s+(\S+)\s*$/)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   929
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   930
				die "Bad patchdata command: $line\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   931
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   932
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   933
			my ($file, $symbol, $value) = (lc $1, $2, $3);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   934
			my ($srcFile, $destFile) = lookupFileInfo($infile, $file);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   935
			my ($index, $elementSize) = (undef, undef);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   936
			if ($symbol =~ s/:(\d+)\[(\d+)\]$//)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   937
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   938
				($index, $elementSize) = ($2, $1);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   939
				$index = hex($index) if $index =~ /^0x/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   940
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   941
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   942
			if ($srcFile =~ /\\armv5(smp)?\\/i)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   943
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   944
				my ($symbolAddr, $symbolSize) = lookupSymbolInfo("$srcFile.map", $symbol);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   945
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   946
				my $max;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   947
				if (defined($index))
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   948
				{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   949
					my $bytes;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   950
					$bytes = 1, $max = 0xff       if $elementSize ==  8;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   951
					$bytes = 2, $max = 0xffff     if $elementSize == 16;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   952
					$bytes = 4, $max = 0xffffffff if $elementSize == 32;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   953
					die("patchdata: invalid element size $elementSize: $line\n") unless defined($bytes);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   954
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   955
					if ($bytes > 1 && (($symbolSize & ($bytes-1)) != 0))
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   956
					{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   957
						die("patchdata: unexpected symbol size $symbolSize for array $symbol ($elementSize-bit elements)\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   958
					}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   959
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   960
					if ($index >= int($symbolSize / $bytes))
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   961
					{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   962
						die("patchdata: index $index out of bounds for $symbol of $symbolSize bytes ($elementSize-bit elements)\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   963
					}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   964
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   965
					$symbolAddr = hex($symbolAddr) if $symbolAddr =~ /^0x/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   966
					$symbolAddr += $index * $bytes;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   967
					$symbolAddr = sprintf("0x%x", $symbolAddr);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   968
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   969
					$symbolSize = $bytes;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   970
				}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   971
				elsif ($symbolSize == 1) { $max = 0xff; }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   972
				elsif ($symbolSize == 2) { $max = 0xffff; }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   973
				elsif ($symbolSize == 4) { $max = 0xffffffff; }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   974
				else { die "patchdata: Unexpected symbol size $symbolSize for $symbol\n"; }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   975
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   976
				$value = hex($value) if $value =~ /^0x/i;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   977
				if ($value > $max)
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   978
				{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   979
					print("Warning:  Value overflow of $symbol\n");
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   980
					$value &= $max;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   981
				}					
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   982
				$value = sprintf("0x%08x", $value);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   983
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   984
				$line = "patchdata $destFile addr $symbolAddr $symbolSize $value\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   985
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   986
			else
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   987
			{
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   988
				$line = "";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   989
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   990
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   991
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   992
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   993
		print OUT $line;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   994
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   995
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   996
	close IN;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   997
	close OUT;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   998
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   999
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1000
sub genfile {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1001
	my $count=0;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1002
	if($_[0] eq 'paged') {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1003
		my $file='gentestpaged.txt';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1004
		unlink $file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1005
		open(OUTFILE, ">$file") or die "Can't open output file, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1006
		for(my $i=0;$i<50000;++$i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1007
			if(($i >5) && ($i % 40 ==0)) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1008
			print OUTFILE "\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1009
			$count++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1010
			} 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1011
			if(($i+$count) % 5 ==0) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1012
			print OUTFILE "SATOR ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1013
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1014
			if(($i+$count) % 5 ==1) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1015
			print OUTFILE "AREPO ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1016
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1017
			if(($i+$count) % 5 ==2) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1018
			print OUTFILE "TENET ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1019
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1020
			if(($i+$count) % 5 ==3) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1021
			print OUTFILE "OPERA ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1022
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1023
			if(($i+$count) % 5 ==4) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1024
			print OUTFILE "ROTAS ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1025
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1026
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1027
	} else {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1028
		my $file='gentestnonpaged.txt';
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1029
		unlink $file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1030
		open(OUTFILE, ">$file") or die "Can't open output file, $!";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1031
		for(my $i=0;$i<20000;++$i) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1032
			if(($i >5) && ($i % 40 ==0)) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1033
			print OUTFILE "\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1034
			$count++;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1035
			} 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1036
			if(($i+$count) % 4 ==0) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1037
			print OUTFILE "STEP ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1038
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1039
			if(($i+$count) % 4 ==1) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1040
			print OUTFILE "TIME ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1041
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1042
			if(($i+$count) % 4 ==2) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1043
			print OUTFILE "EMIT ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1044
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1045
			if(($i+$count) % 4 ==3) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1046
			print OUTFILE "PETS ";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1047
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1048
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1049
	}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1050
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1051
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1052
sub Variant_GetMacroHRHFile {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1053
	my $cfgFile =  File::Spec->catfile($toolpath,"variant","variant.cfg"); # default location
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1054
	# save the volume, if any.
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1055
	my ($cfg_vol,$ignore1,$ignore2) = File::Spec->splitpath($cfgFile);    
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1056
    my $file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1057
    if(-e $cfgFile){
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1058
		open(FILE, $cfgFile) || die "\nCould not open for reading: " . $cfgFile ."\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1059
		while (<FILE>) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1060
			# strip comments
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1061
			s/^([^#]*)#.*$/$1/o;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1062
			# skip blank lines
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1063
			if (/^\s*$/o) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1064
				next;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1065
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1066
			# get the hrh file
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1067
			if($_ =~ /\.hrh/xi){
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1068
				$file = $_; 
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1069
				last;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1070
			}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1071
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1072
		close FILE;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1073
		die "\nERROR: No variant file specified in $cfgFile!\n" unless $file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1074
		$file =~ s/\s+//g;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1075
		$file =~ s|\\|\/|g, unless($on_windows);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1076
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1077
		if ($on_windows) {
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1078
			if (File::Spec->file_name_is_absolute($file)) {
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1079
				my ($vol,$dir,$leaf) = File::Spec->splitpath($file);
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1080
				unless ( $vol) {
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1081
					$vol = substr $epocroot,0,2;
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1082
					$file = substr $file,1;                 
39
fa9d7d89d3d6 A couple more small Windows compatibility fixes for romnibus.pl
Mike Kinghan <mikek@symbian.org>
parents: 38
diff changeset
  1083
					$file = File::Spec->catfile($epocroot,$dir,$leaf);
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1084
				}
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1085
				die "\nERROR: Variant file specified in $cfgFile is not on the same volume as EPOCROOT\n", if (lc($vol) ne lc($cfg_vol));
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1086
			}
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1087
			else {
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1088
				$file = File::Spec->catfile($epoc32path,$file);
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1089
			}
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1090
		}
31
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1091
		elsif (File::Spec->file_name_is_absolute($file) && ! -e $file) {
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1092
			$file = File::Spec->catfile($epocroot,$file);
96678c29f842 Fixing romnibus.pl to work on Windows/Linux, in SBSv2/not in SBSv2
Mike Kinghan <mikek@symbian.org>
parents: 29
diff changeset
  1093
		} 
26
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1094
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1095
		unless(-e $file) {
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1096
			die "\nERROR: $cfgFile specifies $file which doesn't exist!\n";
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1097
		}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1098
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1099
		$file =~ s/\//\\/g, if ($on_windows);
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1100
    }
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1101
    return $file;
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1102
}
d10c1f04b2be Linux support for ROM building under Raptor
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
  1103