Version 2.14.0 (rombuild)
===============
Made by Zhi Dou 26/10/2009

1. RM-RIM406-1263: BU: Visual ROM Layout

Version 2.13.4 (rombuild)
===============
Made by Zhi Dou 19/10/2009

1. Minor change for copyright from SPL to EPL.

Version 2.6.5 (rofsbuild)
===============
Made by Zhi Dou 19/10/2009

1. Minor change for copyright from SPL to EPL.

Version 2.6.4 (rofsbuild)
===============
Made by Zhi Dou 14/10/2009

1. DPDEF142516 rofsbuild somtimes crash when building rofs image for tube with many times.

Version 2.13.3 (rombuild)
===============
Made by Ross Qin 14/09/2009

1. DPDEF141843 Coverity defects about Resource Leak and Delete Array. 

Version 2.6.3 (rofsbuild)
===============
Made by Ross Qin 14/09/2009

1. DPDEF141843 Coverity defects about Resource Leak and Delete Array. 

Version 2.6.2 (rofsbuild)
===============
Made by Ross Qin 10/09/2009

1.DPDEF141840 ROFSBUILD is not processing "-s<log|screen|both>" and "-loglevel<012>" correctly  

Version 2.6.1 (rofsbuild)
===============
Made by Ross Qin 07/09/2009

1.DPDEF141838 rofsbuild behaves differently from rombuild when invalid numbers given 

Version 2.13.2 (rombuild)
===============
Made by Ross Qin 07/09/2009

1.DPDEF141838 rofsbuild behaves differently from rombuild when invalid numbers given 
2.DPDEF141291 Update unpaged memory overflow error message of rombuild.exe

Version 2.13.1 (rombuild)
===============
Made by Ross Qin 03/09/2009

1.DPDEF141685 Low error privilege for Kernel/variant/extension links to non-extension

Version 2.6.0 (rofsbuild)
===============
Made by Ross Qin 26/08/2009

1. REQ11940 Parallel processing - ROFSBUILD

Version 2.13.0 (rombuild)
===============
Made by Ross Qin 26/08/2009

1. REQ12560 Parallelise Content Preparation - ROMBUILD
2. REQ13102 Parallelise Image Generation - ROMBUILD

Version 2.1.603 (readimage)
===============
Made by Ross Qin 24/08/2009

1. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.

Version 2.12.2 (rombuild)
===============
Made by Ross Qin 24/08/2009

1. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.

Version 2.5.3 (rofsbuild)
===============
Made by Ross Qin 24/08/2009

 1. DPDEF141076 Memory leak in rofsbuild
 2. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.

Version 2.1.602 (readimage)
===============
Made by Zhi Dou 19/08/2009

  1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file' 
  
Version 2.12.1 (rombuild)
===============
Made by Zhi Dou 19/08/2009

  1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file' 

Version 2.5.1 (rofsbuild)
===============
Made by Zhi Dou 19/08/2009

  1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file' 
  
Version 2.5.0 (rofsbuild)
===============
Made by Zhi Dou 31/07/2009

  1. PREQ2465's REQ12562 Byte-pair compression update
  
Version 2.12.0 (rombuild)
===============
Made by Zhi Dou 31/07/2009

  1. PREQ2465's REQ12562 Byte-pair compression update

Version 2.4.1 (rofsbuild)
===============
Made by Zhi Dou 29/07/2009

  1. DPDEF141175 - Removal of the "-w" option in imgtools .mmp files results in a lot of warnings 
  
Version 2.11.2 (rombuild)
===============
Made by Zhi Dou 29/07/2009

  1. DPDEF141175 - Removal of the "-w" option in imgtools .mmp files results in a lot of warnings 

Version 2.11.1 (rombuild)
===============
Made by Zhi Dou 27/07/2009

  1. DPDEF141013 ROMBUILD should prevent kernel extensions linking to user side 
  
Version 2.11.0 (rombuild)
===============
Made by Zhi Dou 21/07/2009

  1. PREQ2465's REQ11939 Warnings for unpaged memory size overflows

Version 2.10.0 (rombuild)
===============
Made by Zhi Dou 20/07/2009

  1. REQ13110 HCR file in ROM (ROMBUILD)

Version 2.4.0 (rofsbuild)
===============
Made by Zhi Dou 20/07/2009

  1. REQ13111 HCR file in a separate NAND partition (ROFSBUILD)
  
Version 2.1.602
===============
Made by Vino Jose 10/07/2009

1.	ChrisN
	1.	MILESTONE: SymTB9.2, GT0419, MS3.36, DS.1815 PREQ2621 System Architecture Relocating header files - K&HS support

Version 2.1.601
===============
Made by DeleOgunjumelo 15/01/2009

1.	JonCo
	1.	MILESTONE: Diran, GT0421, MS3.20, DS1210, REQ11822: WDP support for SBSv1
	2.	MILESTONE: Diran, GT0421, MS3.20, DS1210, REQ11823: WDP support for romtools
		PREQ1954 Writeable data paging: prototype release 

Version 2.1.600
===============
Released by Kun Xu, 20/06/2008
	1. DEF122540: Slight issue with readimage and sis files that specify a drive letter.

Version 2.1.599
===============
Released by Kun Xu, 17/06/2008
	1. DEF122721 READIMAGE:Files are extracted in 'reftsp.ini' directory for an ROFS image.

Version 2.1.598
===============
Released by Kun Xu, 02/06/2008
	1. DEF122243: ROMBuild deal with file contain line more than 255 characters incorrectly 

Version 2.1.597
===============
Released by Kun Xu, 02/06/2008
	1. DEF122827: Rom build failure with _ONENAND switch
	2. DEF119470: ROFSBUILD hangs when an empty OBY file is passed as input
	3. DEF122024: Many warnings when compiling readimage tool with MSVC++ 6.0
	4. DEF122533: ROFSBUILD loglevel2 generates logs which don't work for interpretsis
	
Version 2.1.596
===============
Released by ReubenH, 12/05/2008
	1. DEF115401: Incomplete validation of data in loader 

Version 2.1.595
===============
Released by Mool Chand Tyagi, 13/12/2007
	1. PDEF115166 	Symbian rombuild.exe work incorrectly when compression is used

Version 2.1.594
===============
Released by Tamilarasu Byran, 04/12/2007
	1. PDEF114692: elf2e32 - failed to report relocation data.

Version 2.1.593
===============
Released by Tamilarasu Byran, 07/11/2007
	1. DEF113140: Buildrom fails with error "Use the keyword 'romsize' " for extension ROFS image.

Version 2.1.592
===============
Released by Madhu, 31/10/2007
	1. PDEF107501: readimage is not able to display output of the patched dll.

Version 2.1.591
===============
Released by Tamilarasu Byran, 26/10/2007
	1. INC112577: Readimage tool crashes when run on S60 3.2 rom image.

Version 2.1.590
===============
Released by Tamilarasu Byran, 25/10/2007
	1. DEF107096: Postlinker ignores references to imports from the data segment.
	2. DEF112586: Buildrom fails while building extension rofs image.

Version 2.1.589
===============
Released by Saurabh, 11/10/2007
	1.	INC112241: Operator precedence bug in Rombuild  

Version 2.1.588
===============
Released by Moolchand, 10/10/2007
	1.	PDEF109724: Rombuild/Rofsbuild should warn if dll or exe is located outside standard paths 

Version 2.1.587
===============
Released by Saurabh, 03/10/2007
	1.	DEF111903: Elf2e32 GT warning base e32  

Version 2.1.586
===============
Released by Madhu, 28/09/2007
	1.	PDEF102323: rofsbuild crashes without generating appropriate error message 

Version 2.1.585
===============
Released by Tamilarasu Byran, 25/09/2007
	1.	DEF111695: Data drive image generation failed
	2.	DEF104630: elf2e32 crashes

Version 2.1.584
===============
Released by AndrewSmi, 09/08/2007
1.	AndrewSmi
	1.	DEF110094: Run mode debug: debuggable keyword not supported for armv5_abiv1 in MCL

Version 2.1.583
===============
Released by Tamilarasu Byran, 08/08/2007
	1.	DEF106861: Specifying a compression method in buildrom doesn't work

Version 2.1.582
===============
Released by MiguelB, 06/06/2007

1.	Andrew Haigh
	1.	PREQ1426: Added Debuggable bitfield to E32 header and associated changes


Version 2.1.581
===============
Released by ???, dd/mm/yyyy
1.  SivashankarN
	1.	EC114: Core OS: Enhance File Server to solve 1085/1086 interoperability issue. 
			Enhanced rofsbuild tools to handle the special attributes to create the rofs image

Version 2.1.580
===============
Released by JonC, 03/04/2007

	1) DEF104558 ELF2E32 should build dynamically for TOOLS2 rather than statically for TOOLS

Version 2.1.579
===============
Released by KunalM, 27/03/2007

	1) Seclib built as part of the system build

Version 2.1.578
===============
Released by KunalM, 20/03/2007

	1) ROM building tools (ROMBUILD,ROFSBUILD) ported to the TOOLS2 platform, under PREQ1182, MS3.1

Version 2.00.577
==========================
(Made by SushmitaR, 19/03/2007)

1) OlegI
	DEFECT FIX: PDEF102522: DP: unhandled exception readimage.exe when using a XIP ROM paged core image 

Version 2.1.576
===============
Released by KunalM, 06/03/2007

	1) Build tools (elfdump,uidcrc) ported to the TOOLS2 platform, under PREQ1182, MS3.6.2
	2) Seclib and Zlib added as pre-built libraries in the MCL for TOOLS2


Version 2.00.575
==========================
(Made by JonathanM, 07/02/2007)

1) JonathanM
	DEFECT FIX: DEF101095: DP: Rofsbuild doesn't support paged, unpaged and pagingoverride keywords

Version 2.00.574
==========================
(Made by Dusko, 12/12/2006)

1) Dusko
	DEF097419: DemandPaging:Keywords paged/unpaged are case sensitive

Version 2.00.573
==========================
(Made by Dusko, 11/10/2006)

1) Dusko
	DEF095506: Change in behaviour for 0 length files (rofsbuild)

Version 2.00.572
==========================
(Made by Dusko, 27/09/2006)

1.	Dusko
	DEF093537: Re-Introducing warnings when creating demand paged ROMs

2.	RajeswariR
	DEF087061 : PR0104 test failures - Incorrect function call, incorrect msg checking
	DEF088937: Incorrect usage of $ChopSrcPath in cl_bpabi.pm.
	DEF091008: ignorenoncallablefunction not supported in ABIV2 mode toolchain.
	DEF093342: Symbol name for absent exports present in the DSO file.
	DEF093344: ABIV2 fixup should not happen for export table relocation entries in postlinker.
	DEF093345: Support for no exception compiler option in the ABIV2 mode toolchain.
	DEF094731: Workaround to handle ARM linker veneer problem.	

Version 2.00.571
==========================
(Made by RichardC, 13/09/2006)

1.	RichardCo
	1.	DEF093954: GetSecurityInfo does not support opening unicode filenames
	2.	DEF092758: E32ImageFile::Open does not support opening unicode filenames

Version 2.00.570
==========================
(Made by Dusko, 05/09/2006)

1.	Dusko
	INC088317 Elftran crashes during compilation of ARMV5 dll 

Version 2.00.569
==========================
(Made by JonathanM, 01/09/2006)

1.	DanH
	1.	DEF091669: Several rombuild problems in demand paged roms.
		Fixed various rombuild problems with different demand paging configurations, including
		unhandled exceptions with certain edge cases and missing support for the 'alwayspage'
		value for the pagingoverride keyword.

Version 2.00.568
==========================
(Made by Dusko, 23/08/2006)

1.	Dusko
	DEF092459: Warnings when creating demand paged ROMs

Version 2.00.567
==========================
(Made by ????, ??/??/2006)

1.	AttilaV
	1.	DEF090973: elf2e32 can't dump header of a byte pair compressed binary
		Added missing image header wirting code fragment into e32imagefile.cpp 
		E32ImageFile::WriteImage()method Bytepair compressed image generation branch.
		Added new case: branch for display bytepair compression method in t the imgdump.cpp 
		E32ImageFile::DumpHeader method. 

	2.	DEF091564: Spurious warnings when using BytePair compression.
		In \e32tools\e32image\e32image.cpp there are spuriou 'warning' messages whenever 
		BytePair compression is used in "ostream& operator<<". These should be deleted. 

Version 2.00.566
==========================
(Made by RobertJ, 20/07/2006)

1.	DanH
	1. 	DEF090813: Rofsbuild has warnings when creating demand paged ROMs
		Added support for paged/unpaged attributes in rofsbuild. No action is taken with these 
		attributes yet (not needed until "Code Paging" support is added) but the warnings have
		been removed when DP ROMs are created.

Version 2.00.565
===========================
(Made by DmitryL, 28/06/2006)

1.	AttilaV
	1.	DEF088473: ELF2E32 tool terminates if --compressionmethod bytepair CLI parameter presents
		Fixed an uninitialised pointer use at create byte pair compressed executable image.


Version 2.00.564
===========================
(Made by Dusko, 19/06/2006)

1.	JohanG
	DEF088447 Change in the rom log file format breaks CW debugging ...


Version 2.00.563
===========================
(Made by Dusko, 19/06/2006)

1.	JohanG
	1.	DEF079348: ROMBUILD doesn't always fail cleanly on OOM
	2.	DEF083206: elftran only dumps inferred relocations, not code or data


Version 2.00.562
===========================
(Made by DjordjeK, 06/06/2006)

1.	AttilaV
	1.	DEF081770: The Loader should verify compression type.


Version 2.00.561
===========================
(Made by DavidM, 26/05/2006)

1.	AttilaV
	Milestone: Argus,GT0286,MS3.2
	Extended PETRAN, ELFTRAN, ELF2E32, ROMBUILD, ROFSBUILD to handle new compression method Byte Pair 
	and new executable image compressed by the new compression


Version 2.00.560
===========================
(Made by DuskoJ, 30/05/2006)
1) SatyakamM
	DEF083920: Rofsbuild crashes on using patchdata for ABIV2 DLL (ABIV1 works fine)

Version 2.00.559
===========================
(Made by DuskoJ, 13/04/2006)
1) Dusko
	DEF083116 Validaterel always fails 

Version 2.00.558
===========================
(Made by DuskoJ, 16/03/2006)
1) JonC
	DEF082002 - EVALID can't deal with case differences in ARMV5 DLL

Version 2.00.557
===========================
(Made by JonathanM, 06/03/2006)

1)	JonathanM
	MILESTONE: Argus GT0286, MS3.1 PREQ209 Demand Paging Prototype.
	First delivery of demand paging prototype. Delivery step DS204.

Version 2.00.556
===========================
(Made by KuldipN, 08/02/2006)
1) KuldipN
	DEF078510 buildrom does not validate new XML files 
	DEF077827 buildrom feature management - should disallow default ranges with extra flags 

Version 2.00.555
===========================
(Made by DuskoJ, 24/01/2006)
1) DuskoJ
	DEF075849 Feature registry API returning error when featreg.cfg file is greater than 64KB
	DEF077941 VA_* macros cannot be used with GCCE 

Version 2.00.554
===========================
(Made by JonathanM, 04/01/2006)

1) JonathanM
	PREQ1030 - Kernel support for device driver test suites - Generic Logging Engine.
	This adds support for the following keywords into ROMBUILD:
		btrace, btracemode and btracebuffer
	See base/documentation/Base_How_To_BTrace.doc

Version 2.00.553
===========================
(Made by KuldipN, 21/10/2005)
1) KuldipN
	PREQ1086 - Device Feature Management (DS 069)
Version 2.00.552
===========================
(Made by KuldipN, 12/10/2005)
1) KuldipN
	PREQ1028 - Plug-in compiler integration (DS 063)
Version 2.00.551
===========================
(Made by KuldipN, 06/10/2005)
1) KuldipN
	PREQ1085 Flexible device ROM configuration
Version 2.00.550
===========================
(Made by KuldipN, 14/09/2005)
1) KuldipN
	REQ5412: Enhance ROM tools compression options  (part of PREQ1192)

Version 2.00.549
===========================
(Made by DuskoJ, 12/07/2005)
1) RajeswariR
	DEF065105 Using GCC-E should not require modification of existing bld.inf files
	DEF063447 Postlinker crashes with unsupported outfile

Version 2.00.548
================
(Made by JonC, 21/07/2005)
1) JonC
      PREQ1032 Hardware-dependent support for "VFP" floating point acceleration and accelerated maths functions

Version 2.00.547
===========================
(Made by DuskoJ, 13/07/2005)
1) Dusko
	DEF063791 ROFSBUILD resets main ROFS file attributes when processing a ROFS extension

Version 2.00.546
===========================
(Made by DuskoJ, 01/07/2005)

1) Dusko
	DEF062362 PE_DUMP does not report all significant content in NSIS files 
	DEF064173 secdump.exe blows up when you try and use it 

Version 2.00.545
===========================
(Made by KuldipN, 22/06/2005)

1) KuldipN
		DEF060825  PR0104: Addition of GCCE support to CodeWarrior 

Version 2.00.544
===========================
(Made by KuldipN, 10/06/2005)

1) KuldipN
		DEF062125  PR104: Custom DLL generation is failing 

Version 2.00.543
===========================
(Made by DuskoJ, 10/06/2005)

1) Dusko
		DEF061701 Petran.exe can crash on certain non E32 files

Version 2.00.542
===========================
(Made by KuldipN, 27/05/2005)

1) KuldipN
	PREQ413   Changes to support the GCCE toolchain.
      	PREQ414   Enable Commercial Compatible Compilers
      	DEF061420 Elf2e32 Problems

Version 2.00.541
===========================
(Made by DuskoJ, 27/05/2005)

1) BalaT
	DEF060837 RVCT2.2 emits unresolved symbols which ELFTRAN does not notice.


Version 2.00.540
===========================
(Made by KuldipN, 11/05/2005)

1) KuldipN
	DEF060826 - PR0104 - PostLinker Memory Leaks

Version 2.00.539
===========================
(Made by KuldipN, 3/05/2005)

1) KuldipN
	PREQ413 - Changes to support the GCCE toolchain.

Version 2.00.538
===========================
(Made by BalaT, 1/04/2005)

1) BalaT
	DEF058002 - [System Build] Failed to build EIKCORE.DLL using RVCT2.2 

Version 2.00.537
===========================
(Made by MiguelB, 1/03/2005)

1) MiguelB
	DEF055301 - ROFSBUILD, COREIMAGE keyword: problem with single-char files/directories 

Version 2.00.536
===========================
(Made by Bala, 22/02/2005)
1) Bala
	PREQ1027 Submission of RVCT 2.2 Run-Time ABI Compliance to MCL

Version 2.00.535
===========================
(Made by Dusko, 21/02/2005)

1)	BalaT
	DEF051265 Problems debugging .cia files in ARMV5 builds.

Version 2.00.534
===========================
(Made by Dusko, 19/01/2005)

1)	Dusko
	DEF052809 - GENSTUB ERROR: can't open output file....

Version 2.00.533
===========================
(Made by Dusko, 23/11/2004)

1)	BalaT
	1) DEF051128 - armv5 library build in parallel cause conflicts

Version 2.00.532
===========================
(Made by KamranN, 11/11/2004)

1)	KamranN
	1)	Fix for defect DEF051421  Problems with binary search in ROFS  

Version 2.00.531
===========================
(Made by Dusko, 08/10/2004)

1)	BalaT
	1) DEF047934 - ROMBUILD:EXE corrupts ROM directory of an extension ROM 

Version 2.00.530
===========================
(Made by Dusko, 04/10/2004)

1)	BalaT
    1.	Fix for DEF046271 - EVALID cannot cope with differing temp paths present in some ARMV5 .lib files.

Patch to Version 2.00.529
===========================
(Made by ???, ??/??/2004)

1.	JonathanM
	1.	Fix for -dump option in PETRAN.

Patch to Version 2.00.529
===========================
(Made by MichaelP, 27/08/2004)

1.	JonathanM
	1.	Defect Fix: DEF048051 - ROMBUILD can when PlatSecEnforceSysBin is ON


Version 2.00.529
===========================
(Made by KuldipN, 25/08/2004)

1.	NaheedA
	1.  DEF047579 - petran fails to report a corrupted input file.
	2.  DEF046271 - EVALID cannot cope with differing temp paths present in some ARMV5 .lib files

Patch to Version 2.00.528
===========================
(Made by JonathanM, 19/08/2004)

1.	JonathanM
	1.	Defect Fix: DEF048015 - [System Build] ROMs failed to build for MCL 03344 8.1b/9.0

Version 2.00.528
===========================
(Made by DjordjeK, 18/08/2004)

1.	JonathanM
	1.	Added -dump option to PETRAN and ELFTRAN to select what information should
		be displayed about an image file. This takes a string argument consisting
		of letters to select the information to be dumped:
			h	All header info
			s	Platform Security info
			c	Code section
			d	Data section
			e	Exports
			i	Imports
		These letters can be used in any combinations, e.g. "PETRAN -dump ie foo.exe"
		will show all Imports and Exports of FOO.EXE

Version 2.00.527
===========================
(Made by JonathanM, 26/07/2004)

1.	JonathanM
	1.	Added PlatSecEnforceSysBin setting to ROMBUILD which forces all binary files to
		be placed under the \sys\bin\ directory.
		Part of Yankee,GT0217,MS3.1.4 PS6.3.2 Ignore path information for binary files
		within ROM build and loader.
		
Version 2.00.526
===========================
(Made by JonathanM, 26/05/2004)

1.	DennisM
	1.	Fixed defect DEF041434 EKA2 ROMBUILD can't build extension ROMs
	2.	ROMBUILD now checks that kernel side code doesn't link to user side
		code, and vice-versa.

Version 2.00.525
================
Made by Dusko, 18/05/2004

1) Dusko
	1) Fix for DEF045146  EVALID does not correctly handle ARMV5 lib files or RVCT .MAP files.

Version 2.00.524
================
Made by JonC, 29/04/2004

1) Jon
	Fixes for:
	1) DEF044567 gendirective obtains ELF section header data incorrectly
	2) DEF044048 RVCT version of DEF2DLL camplains about DLLs not having exports 

Version 2.00.523
===========================
(Made by JonathanM, 19/03/2004)

1.	JonathanM
	1.	Implemented the requirements:
		REQ2632 - Configurability of the enforcement of capabilities
		REQ2633 - Security violation diagnostic
		REQ3142 - Associate Platform Security information with an executable.
		See /cedar/generic/base/documentation/Base_How_To_Configure_Platform_Security_Settings.doc

Version 2.00.522
===========================
(Made by JonathanM, 26/02/2004)

1)	JonathanM
	1)	Modifications made for implementation of
		Change Request JDOD-5VUJ7F - Change in executable format of EKA2 binaries.
	2)	Tools now use the sytax "cap1+cap2+cap3" to specify a named set of capabilities
		(Rather than specifying a single hexadecimal number.)
	3)	Added three new keywords to ROMBUILD:
			PlatSecEnforcement
			PlatSecDiagnostics
			PlatSecDiasabledCaps cap1+cap2+cap3
		these are used for specifying Platform Security settings which are then placed
		in the ROM Header.

Version 1.00.521
================
Made by DuskoJ, 16/02/2004

1) Dusko
	1) Fix for DEF042440 - elfdump creates a new file with zero length.


Version 2.01.520
================
Made by AndrewJ, 13/02/2004

1) StephanGu
	Implemented CLCT-5VEK4P - "Binary search in ROFS 
	together with 'expanding ROFS entries with UIDs'".
	Changed Rofsbuild to provide a sorted array of offsets
	in order to allow the file system to perform binary search
	through the image.  Also expended the TRofsEntry structure
	to include a copy of the file UID data.


Version 2.01.519
================
Made by DuskoJ, 30/01/2004

1) Jon
	1) Fix for - DEF040324 PETRAN access violation whilst converting THUMB build EXEDLL
	   (Further amendment).

Version 2.01.518
================
Made by DuskoJ, 22/01/2004

1) Kuldip
	1) Fix for DEF40965 Changes to stop overwriting readonly attribute for directories.


Version 2.01.517
================
Made by DuskoJ, 05/01/2004

1) Kuldip
	Fix for DEF039055  "Change in behaviour for 0 length files"

Version 2.01.516
================
Made by DuskoJ, 19/12/2003

1) Dusko
	1)	fix for DEF039365 - Petran ignores -fixed keyword	


Version 2.01.515
================
Made by Dusko, 17/12/2003

1. Kuldip
	1)	REQ1733, A3.2 Improved Command Line Build Tools
        ROFSBUILD ROM flexing, Automatic sizing behaviour
		Automatic XIP-extension OBEYFILE, header generation

Version 2.01.514
================
Made by Dusko, 24/11/2003

1. Dusko
	1)	DEF039411  pediff does not ignore the header CRC 
		File changed pediff.cpp

Version 2.01.513
================
Made by Dusko, 03/11/2003

1. Dusko
	1.	fix for DEF039536 Non existing files referenced in  Tools_e32tools.mrp...


1) William
	1)	Added PE_DUMP to support the new EVALID.

Version 2.01.512
================
Made by Dusko, 10/10/2003

1. Dusko
	1.	Zephyr,PRO0085,REQ1663, Remove dependencies on MSDEV	
	  	Changes to BIN2COFF and  WVECONV in order to build with CW


Version 2.01.511
================
Made by Dusko, 02/10/2003

1. Dusko
	1.	fix for DEF037065 Problem with error message from uidcrc

Version 2.01.510
================

Made by Dennis, 24/09/2003

1. Dennis
	1.	ROMBUILD adds sorted offsets to directory structures to enable binary
		searching of the ROM file system.
	2.	Implemented CR ATHE-5PZEAU (Add Version Numbers to Symbian OS Executables).

Version 1.00.505
================
Made by DuskoJ, 22/08/2003

1) Morgan
	Ported ROFSBUILD extension support from beech
	1) 	Added ROFSBUILD extension support.  Start a ROFS extension with obey file 
		commands
			extensionrofs = <filename>
			rofssize = <size>
		Added support for ALIASing, HIDEing and RENAMEing.  Semantics and syntax
		for these commands are the same as ROMBUILD.
		Core image and extension can be joined together with 
			tools\e32tools\rombuild\addextensions.pl
		Added TRofsExtensionHeader to ROFS.H
		Padding, Alignment and Repro assumptions: 
		The extension assumes it will be added TRofsHeader::iMaxSize bytes
		after the start of the core image.  It is assumed the max size of the core
		image will be aligned appropriately for the underlying ROM device.
		Core image has signature "ROFS" at offset 0, extension has signature
		"ROFx" at offset 0 into extension (= iMaxSize after start of core image).

2) Morgan
	1)	Added rofsbuild\dumpdirs.pl - utility for dumping the ROFS directory
		structure.
	2)	Ported ROFSBUILD executable compression from beech

3) Dusko	Changes to a number of e32tools components in order to build cleanly with CodeWarrior


Version 1.00.504
================
Made by DuskoJ, 25/07/2003

1. Jon
	1. Fixed DEF036679 by adding copyright statements where appropriate.


Version 2.00.503
================

1) Morgan
	1) Removed ROMBUILD build warning

Version 2.00.503
================

1) Dennis
	
	ROMBUILD changes:

	1)	'kernelstackaddress' keyword removed. This is now always calculated by
		ROMBUILD.
	2)	Address allocation strategy modified. The initial stack is now placed
		immediately after the kernel .data/.bss area. The kernel heap follows
		the initial stack (as before). In the moving model, fixed process data
		chunks are placed after the kernel heap (on chunk boundaries).
	3)	TRomHeader::iKernStackAddress replaced with TRomHeader::iKernelLimit,
		which gives the end of the kernel heap rounded up to a chunk boundary
		except on the moving memory model where it is advanced past the space
		reserved for fixed process data chunks.


Version 2.00.502
================

1) Dennis
	1)	Pulled out general E32Image file handling code into e32tools/e32image/...
		directories. This includes compression/decompression and all stuff which
		doesn't require	the native PE or ELF file.
	2)	Merged the two versions of ROMBUILD. ROMBUILD.EXE now accepts E32Image
		files derived from either PE or ELF. It no longer accepts the native
		PE/ELF files directly. XIPRMBLD.EXE is no longer built.
	3)	Added a special instruction (TST PC, #0) to the beginning of all EKA2
		entry points. This is detected by PETRAN/ELFTRAN and the file marked as
		having an EKA2 style entry point. The ELF-derived and JFormat flags have
		been generalised into header format, import format and ABI fields. An
		entry point type field has been added to distinguish EKA1 and EKA2 entry
		points.
	4)	Add 'nowrapper' keyword to ROMBUILD. If specified in OBY file it causes
		the 256 byte wrapper to be omitted. This setting can still be overridden
		on the command line.



======================
ELFDUMP version 1.0.0
1) Dusko
     1) Adding elfdump.cpp. Elfdump is required to be a standalone program     
    	which can present an ELF object file in a form suitable for use with 
    	EVALID. It prints hex dumps of relevant sections, directive section as 
    	text and relocation information showing the symbol the name and of the 
    	section in which the relocation occurs.

Version 1.00.501
================
EKA2 Tools

1) RobertJ
	1) Support for compressed executables introduced. Source code for the compression
	& decompression is in petran\szip. Changed PEDUMP to dump compressed executables
	added -compress & -nocompress options to PETRAN
	2) Bumped version number of written executables to 1.10
	3) Added a new format bit to iFlags JFormat (Jetstream format)

Version 1.00.500
================
EKA2 Tools

1) Dennis
	1) Added support for the x86 development target to PETRAN
	2) Added various values to the ROM header for EKA2 in ROMBUILD
2) William
	1) Added -capability <mask> option to PETRAN. There isn't yet an iCapability field in the
	   E32ImageHeader, but everything else is ready to go.


================
ROMBUILD version 2.05

1) William
	1)	Fixed defect ROS-52XF6E "ROMBUILD produces incorrect S-Record checksums" by getting the length
		right (actually by checksumming the bytes we write instead of calculating the values twice).
	2)	Disable the 3-byte address form of S-Record with a #define, since it upsets some external
		tools and only benefitted serial download to M*Core.
	3)	Fixed defect ROS-52ZED7 "ROMBUILD crashes if section 1 overflows in 2 section ROMs" by
		checking for overflows in the right place.
	4)	Made verification failure use Print(EError, ...) in all cases, so that it will cause a 
		ROMBUILD failure rather than just a small complaint at the end of the log file.
	5)	Extend checkstubs.pl to handle the R3UNUSED Thumb stubs, and update stubs.lst

Todo
handle section 1 DLLs linking to section 2 DLLs so that section 2 can be replaced
respect the E32Image flags for dll static data and called entrypoints 
			

2) Chris
	1)	Updated romimage.rtf to remove screensize keyword

3) Nicolas (work done as part of CR JPAR-54XMZD)
	1)	Added new keyword: DEBUGPORT.  It takes a numeric argument
		which is a magic cookie as far as rombuild is concerned and
		is stored in the ROM header for interpretation by the
		kernel and bootstrap.  The default value is -1.
	2)	Updated romimage.rtf to include DEBUGPORT.	


================
ROMBUILD version 2.04

1) Nicolas
	1)  Fixed bug where EPOC crashes during boot if there is a non-empty
	    area after an empty one in the relocation table.
	2)  Modified the way the kernel extensions list is built to
	    ensure the extensions are always in the same order in the
	    list as in the obey file even when some extensions are in
	    areas and other aren't.  This is necessary because the
	    kernel extension ordering in the obey file is important
	    (for example an extension registering a power handler
	    *must* be loaded after the extension that loads the power
	    model).
	3)  Fixed bug in AreaSet::AddArea() (overlap was not detected
	    when an existing area is embedded in the new one).
	4)  Overlap unit tests updated.
	5)	Fixed bug in TDllExportInfo ctor: The ptr to the export directory in
	  	the ROM buffer was wrong when the file was relocated to a non-default
	  	area (iRunAddress / iImageAddr mismatch).


================
ROMBUILD version 2.03

1) William
	1)  Set the default srecordbase to zero, and remove the srecordbase validation.
	2)  Added "data-align" attribute, and used it in the calculation of dataOffset for
	    things sharing the SvData. It's not a great name, but it will do for now...
	3)  Added "KeepIAT" attribute, which builds an old-style Import Address Table instead
	    of pointing the stubs directly at the export data.  NB. this won't work for
	    section 1 DLLs, because I haven't reinstated the machinery for putting the IAT into
	    the second section.
	4)  Fix defect CLE-4ZEJBB "rom building: fatal error when file to hide isn't found" by
	    dealing with (aKeyword==EKeywordHide) before testing for !existingFile, and issuing
	    a warning if the existing file wasn't found.
	5)  Export checkstubs.pl to \epoc32\rom\tools

---------------------
ROMBUILD version 2.02

1) Nicolas

	1) ROMBUILD: Introduced new area syntax (incompatible with the existing
       scheme):

		a) The "area <name> <start> <size>" statement declares an area
		(there is no need to declare the default ROM area).

		b) The "area=<name>" file attribute relocates individual files to
		the designated area.

		c) When invoking rombuild with -s, a summary of the free and used
		space in each area is printed.

		d) Areas can be used only in the first section of a sectioned ROM
		and are forbidden in extension ROMs.

		e) It is forbidden to patch a relocated file.

	2) ROMBUILD: Introduced classes Area and AreaSet and associated
       iterators to replace all the existing dynamic arrays and indexes
       used to store the area-related state.  Unit tests for these are
       built using r_t_areaset.mmp.  Refactored existing code (notably
       E32Rom::LayoutRom()) to use those new classes.

	3) ROMBUILD: Moved global variables from rombuild.cpp to r_global.cpp
       to allow build of r_t_areaset.exe.  Made static the globals which
       were used only in rombuild.cpp.

	4) ROMBUILD: Merged TAddressSet into TAddressRange.  Renamed every
       "i.*Set" variable to either "i.*Range" or "i.*Section" (previously
       existing "i.*Section" variables have been suffixed with "Number").

	5) ROMBUILD: Updated version number to 2.02.

	6) HOST: Turned the various overloads of Val() into a template
       function.

---------------------
ROMBUILD version 2.01

1) William
	1)  Fixed bug in ParseArea() which reused the area address as the area length
	2)  Allow for executables generated before GCC 530 by changing the assertion about 
	    unexpected data. If it looks as though the rdata is after the IAT, then the whole
	    of the E32ImageFile text area is included in the ROM.
	3)  The rounding up for the ROM size to a multiple of a megabyte must not exceed the
	    originally specified size.
	4)  Increased the ROMBUILD version to 2.01

Version 1.00.174
================
Made by William, 23/03/2001

1) William
	1)  Removed the old .ipr files associated with the predecessor to DISTRIBUTION.TXT
	2)  Moved ROMBUILD.MMP into the ROMBUILD directory
	3)  Gave ROMBUILD it's own major and minor version numbers - now 2.0
	4)  Moved the collapsing routines into ROMBUILD\R_COLLAPSE.CPP
	5)  Substantial rework of the way that the E32Image files are put into the ROM: it's now
	    almost the case that the ROM layout is established before copying any data. The layout
	    is expressed by setting up TAddressRange and TImageSection values in the TRomBuilderEntry,
	    and the rest of the relocation and copying to the ROM image follows from those values.
	6)  Change of approach on relocation: instead of relocating the file contents after copying
	    into the ROM image, do the relocation beforehand. This allows the relocation to operate on
	    a simple fixed layout (the one which PETRAN set up), and frees the ROM layout to be
	    entirely different.
	7)  Unified all the various ROM flavours: in particular the "areas" support is part of the
	    normal layout process. The use of TAddressSets and their derived forms makes this
	    pretty painless.
	8)  Removed the Import Address Tables, saving ~240K in a Quartz 6.1 ROM. The import stubs
	    are fixed up to point directly into the export directory for the relevant DLL. In two 
	    section ROMs the export directories are now placed at the start of the upper section 
	    to support patching: this was previously done using the import address tables.
	9)  Various special case handling for the Primary has been reworked using generic support.
	    In particular the primary now gets a default code alignment of 4K, which allows the 
	    gap to be occupied by other files if the obey file is suitably arranged.
	10) Area relocation is more pervasive than before. The import stubs in relocated executable
	    no longer refer back to the unrelocated original contents of the area.
	11) The sizes of the DLL reference tables are now reported in the log.
	12) Fixed a bug which caused ROMBUILD to crash if a file was marked as "patched" in a 
	    two section ROM.
	13) Size information in the ROM is more consistent: the size in the ROM filesystem is always
	    the length of the contiguous section beginning at the given address, and the size summary
	    in the log file reports the SizeInRom() information for the file, which should always
	    reflect the real cost in ROM of the file regardless of layout.

Version 1.00.173
================
Made by Morgan, 08/03/2001

1) Morgan
	1)	Fixed ROMBUILD to accept DLLs with no imports and DLLs with no exports


Version 1.00.172
================
Made by William, 07/12/2000

1) William
	1)  Introduced ROMBUILD support for extension ROMs, the deliverable from project PR0027.
	    Lots of churn, but the key new data structure is the TRomNode which separates the
	    ROM directory structure information from the individual files (TRomBuilderEntry). The
	    TRomNodes handle the DLL name matching and are used to drive the multiple-variant clever
	    directory structure operations.
	2)  Reworked the ROMBUILD parsing strategy to remove the need for "files=", allowing the
	    header statements and file statements to be mixed freely in the OBY file.
	3)  Use the tables which now drive the ROMBUILD parsing to generate the help information.
	4)  Don't create ROMBUILD.LOG unless processing an OBY file, and put extra useful information
	    into the log. In particular, print a line include the ROM image name before processing
	    the files and after writing the ROM image, e.g.

	        Creating Rom image testrom.IMG
		...
	        Writing Rom image with repro header to file testrom.IMG

	    Also report the "Writing" line to the screen, as a comfort to the user.
	5)  Fix ROS-4RJPTK "ROMBUILD checksums are incorrect" by computing the checksum at the 
	    right stage, and cross check to make sure it's still right when displaying the ROM stats.
	    ROMs built with this version of ROMBUILD are likely to be different in up to 4 bytes
	    at offsets 0x1A8 to 0x1AB (0xA8 to 0xAB for images without a REPRO header).
	6)  Make "unicode" the default, and introduce sensible defaults for various other keywords.
	7)  Remove the ROMBUILD support for bigendian images (it's still present in the files
	    shared with PETRAN.
	8)  Added dumpdirs.pl which prints out the ROM root directory structures.
	9)  Added addextension.pl which concatenates a kernel ROM and an extension ROM, making a 
	    combined image suitable for use with Brutus.
	10) Try harder to continue reporting errors rather than stopping immediately. In particular,
	    report all of the unresolved DLL linkages rather than just the first one.
	11) Introduce new keywords "hide", "alias" and "rename" to manipulate the directory structure.
	12) Added romimage.rtf documentation (from the BPK, but somewhat edited) and export it to
	    \epoc32\engdoc\e32tools


Version 1.00.171
================
Made by Nicolas, 19/10/2000

1) William
	1)  Rework internals of ROMBUILD to remove arrays indexed by file number.
	    TRomBuilderEntry is now derived from E32ImageFile, and the various arrays
	    have become member data in the associated TRomBuilderEntry - OO, dontcha just love it!
	2)  Added -coff-header option, which could remove the need for bin2coff
	3)  Use the .idata information to get the DLL ordinals, not the IAT. 
	    This is preparation for the IAT removal idea, which involves turning the IAT into
	    a table of pointers back to the associated stubs.
	4)  Added a range check to TRomBuilderEntry::AddressOfOrdinal
	5)  Added documentation about various forms of import stub, and checkstubs.pl which
	    scans all of the stubs in a ROM to check that they lead to a function of the
	    correct name.
	6)  Introduced TAddressSet for recording the various addresses associated with
	    code in a ROM (address of ROMBUILD.EXE working copy, address in ROM, execution address).
	    Currently used for handling ImportAddressTable and DllRefTable and seems to work in
	    a two-section Brutus ROM.
	7)  Partial fix for EDNRFID-4J6DV3 "Corrupt reloc table generated"
	    Allow for the possibility that there is only .bss with no .data when applying the
	    heuristic for relocs that don't point into any known section.
	    Fix printf format specifier typo by changing %0x8 -> %08x
	8)  Added a verbose option to W32REPRO


Version 1.00.170
================
Made by Dennis, 13/09/2000

1) William
	1)  Dust off the S-Record support in ROMBUILD
	    Use the full 78-bytes available per line, and add support for the
	    3-byte address form, since this is beneficial to M*Core Cogent.
	2)  Use "srecordfilename=*" to mean "append .srec to romname and use that"
	    Same approach for "romnameodd=*" and "romnameeven=*" filenames.
	3)  Set the RomHeader iSize to be iSizeUsed rounded up to a megabyte. This is
	    particularly beneficial on platforms which RAM-load a ROM image (Brutus, Cogent)
	    because it allows the bootstrap to use only the amount of RAM really needed
	    for the ROM image.
	4)  Add "hide" keyword to ROMBUILD, as requested by a licensee. This stops the
	    specified file from being included in the ROM directory, but doesn't stop other
	    ROM files from linking to the hidden file. A consequence of hiding a DLL is that
	    it can't be dynamically loaded, which means that you can't hide kernel extensions.


Version 1.00.156
================
Made by Morgan, 5/7/2000

1) Anon
	1) Changes to ETOUCH
	==== //EPOC/development/base/6.0/e32tools/ETOUCH/ETOUCH.CPP#1
	@@ -3,6 +3,10 @@
	 // Copyright (c) 1996-1999 Symbian Ltd.  All rights reserved.
	 //

	+#if defined(__VC32__)
	+#pragma warning(disable : 4710)        // function '...' not expanded
	+#endif
	+


Version 1.00.155
================
Made by Dennis 22-06-2000.

1)	Dennis
	1)	Modified W32REPRO so that the -HEX option only makes it receive in hex.
		It always transmits in base 10. This is so it works with REPROC.
	2)	Fixed bug in ROMBUILD - it didn't like files with no imports.

Version 1.00.154
================
(Made by Alastair, 10.3.2000)

1)	William
	1)	Added M*Core support
		Basically just another PE magic number and another TCpu code.

Version 1.00.153
================
(Made by Pete, 24/02/2000)

1)	William
	1)	Updated PETRAN to report exports with value 0 as

			WARNING: No export specified for ordinal 62

		and promoted the non-zero exports from an unknown section to be errors.
	2)	Added more information to the warning about failure to identify a section for relocation,
		just in case it ever happens...

2)	Simon
	1)	Added bin2coff, a utility to add a coff header to a binary
	  	image. Mainly for use with the cogent smartfirmware

Version 1.00.152
================
(Made by Dennis, 19/01/2000)

1)	William
	1)	Updated W32REPRO usage statement to remove misleading limit on the baud rate
		The baud rate is actually passed directly to the Win32 comms device, so it should
		be possible to specify any baud rate supported by the device.
	2)	Updated W32REPRO to add a -RAW option for use with Brutus REPROB (and others).
		This tells W32REPRO not to expect a 256-byte header on the image, but it will
		still pretend that there is one, as expected by the existing REPRO code.
	3)	Updated W32REPRO to a -BOOT <boostrap_image> and -HEX options, to support
		the Cirrus Logic board. The bootstrap is sent at 9600 baud before starting the
		normal REPRO protocol, and -HEX changes the protocol to use base 16 rather than
		base 10 for numbers transmitted between W32REPRO and the other end.
	4)	Added W32REPRO protocol support for a new command 'D' which tells W32REPRO to
		disconnect after a successful transfer: REPROB could usefully be extended to
		send this command...

2)	Morgan
	1)	Fixed ROMBUILD so it gives appropriate errors if passed an empty file
	2)	ROMBUILD.LOG reports inclusion of 256 ROM repro header (Defect EDN147097)
	3)	Fixed EDN580686 Rombuild is not very tolerant
	4)	Fixed EDN210727 PEDIFF returns stupid result codes
		PEDIFF now returns 0 for identical files, and 2 for different files
	5)	Improved PETRAN dump output (Fixed EDNGLAY-463LNN)


Version 1.00.151
================
(Made by Morgan, 3/12/99)

1)	Alastair
	1)	Created a new utility, ERUNTEST.EXE, which will take a batch file
		listing tests as generated by ABLD and run each test in turn, checking
		whether each test has succeeded or not by checking the return value from
		the process and also checking output to the EPOCWIND.OUT file in the
		temporary directory.  ERUNTEST.EXE logs output to standard output.
		Obviously this utility will only run WINS/WINC tests.  It must be invoked
		from the directory in which the test executables reside.

2)	Morgan
	1)	Fixed some warnings


Version 1.00.150
================
(Made by Morgan, 27/9/99)

1)	Alastair
	1)	Created new directory COLTAB and added COLTAB.CPP, BASEKEYS.TXT,
		COMPKEYS.TXT and README.TXT.  COLTAB comes from Graham Asher, and is a
		tool for writing the collation tables in COLLATE.CPP.  README.TXT
		contains details of the URL from which data files BASEKEYS.TXT and
		COMPKEYS.TXT were sourced.  Type COLTAB without any parameters for help,
		and/or read the header in COLTAB.CPP.  Console APP COLTAB.EXE will be
		built into \EPOC32\Tools\.

2)	Malcolm
	1)	Added code to allow the kernel debug mask to be set via the ROM.OBY
		file via the new KERNELTRACE keyword.

3)	Morgan
	1)	ROMBUILD internal directory structure is now sorted wrt a unique
		identifier for each Dir.  This (hopefully) fixes the reproducability
		problems ("drifting-directories") experienced when building identical
		Roms in different NT environments.


Version 1.00.125
================
(Made by Morgan, 26/8/99)

1)	Dennis
	1)	Added "defaultstackreserve" keyword. The argument to this keyword is
		added to the combined size of .data and .bss to determine the address
		space to reserve for the $DAT chunk of a 'fixed' process. The value
		defaults to zero for compatibility with previous versions.
		Added "stackreserve" keyword to override the default setting on a
		per-file basis.


Version 1.00.124
================
(Made by Alastair, 2nd August 1999)

1)	Jonathan
	1)	Removed MAKSYM - moved to e32toolp.


Version 1.00.123
================
(Made by Kal Patel, 22 July 1999)

1) Morgan
	1)	New ROMMASK.  Added a -verbose flag for logging, and added a -no-header
		for Roms with no Epoc header.

2) Malcolm
   
    1) Added Area support to ROMBUILD for Roxette.  This allows the
       code to be fixed up to execute outside the rom where it's stored.
       Relocation info is written into the rom and the bootstrap uses
       this to copy the info out to its final location.  Any file can 
       be in any arbitrary area.  This is only enabled in
       singleprocess mode, since the same effect can be achieved with
       an MMU on a real system.

	   This is enabled by placing a "areas=<num>" line in the first
	   section of the .oby file.  Then, in the files= section, the
	   next tranche of files can be sent to another area with a
	   directive like "area 0x81000000 0x100000" where the first value 
	   is the address and the next the length. Up to <num> area lines
	   can be in the file section.

	   A relocation table is placed in ROM for the bootstrap.  Its
	   address is stored in the romheader info that rombuild uses.
	   The table is a list of <length> <src> <dest> triples, ending
	   with a <0,0,0> tuple.

	   Note that any bootstrap that uses this should not process a
	   relocation table address of 0, as this maintains backwards
	   compatability with old rombuilds which will put zero in the
	   address location.

3)	Alastair
	1)	Removed all .DSP and .MAK files, now that makefiles are generated.
	2)	Fixed minor typo in W32Repro.


Version 1.00.122
================
(Made by Alastair, 12.7.99)

1) Alastair
	1)	Added fetcher definition file, E32TOOLS.FTC, to the group directory.
	2)	Added William's new version of E32UID.CPP which no longer requires
		WINDOWS.H.
	3)	Added William's new UIDCRC.EXE, which provides a simple way to calculate
		the checksum:

			uidcrc <uid1> <uid2> <uid3> [<outputfile>]

		This reads the three uids (using strtoul, so decimal and 0x9999 hex are 
		found), computes the checksum, and either prints the 4 hex values to standard
		output or creates <outputfile> as the 32 byte sequence which is the specified
		UIDs and checksum in little-endian byte order.


Version 1.00.121
================
(Made by Alastair, 16.6.99)

1)	Alastair
	1)	Fixed EDN459831 "Wveconv help is out of date" .
	2)	Removed MAKTRAN, DEFMAKE and DEFTOOL.
	3)	Converted all projects to MAKMAKE building for the new TOOLS platform.
	4)	Changed zip of releasables onto the network - this is now called
		TOOLS.<ver> rather than E32TOOLS.<ver>.  It also contains full paths to
		the releasables so make sure you're in the root of your EPOC drive
		before calling, say, "getrel e32tools tools 121".
	5)	Updated MNT.CMD in various ways, including adding an MNT CHECKREL.
	6)	Added dopcvs.pl and lock.pl to GROUP directory for use with MNT.BAT.


Version 1.00.120
================
(Made by Morgan, 30th March 1999)

1)	Morgan
	1)	Fixed EDNGBON-46BQK4, "ROMBUILD "patched" keyword is broken".
		(merged in from ER5 release E32TOOLS 110)
	2)	Left a gap in the build numbers for ER5 maintenance releases
	3)	Introduced a new version of ROMMASK.EXE.  The syntax has changed
		from previous versions.  Type "ROMMASK" to see the new syntax.
		For example, to produce a 10Meg image split into 8 and 2,
		type the following:     
rommask -rom p2rom.img -output rom.img -log rom.log -size 10 -section 8 -section 2
		(You can leave off the final -section 2, and ROMMASK will do the
		calculations for you.)
		The output of Rommask will be "rom.log", and the 2 mask files
		"rom.img" and "rom.im2"
		ROMMASK still expects the image to contain a Psion 256byte header.


Version 1.00.100
================
(Made by Morgan, 16th February 1999

1)	Morgan
	1)	Added the keyword 'srecordbase' to change the base address of
		the motorola srecord output file.  (Defaults to address 0x0000)
	2)	Fixed srecord output for big and little endians.
	3)	Removed unused dependencies from MNT GETCOMPS


Version 1.00.099
================
(Made by Jonathan, 8th February 1999)

1)	Alastair
	1)	Edited PETRAN.MAK so that sources depend upon
	  	\Epoc32\Include\E32uid.h rather than ..\E32uid\E32uid.h. This
		change should complete the fixing of bug EDN057832 "E32Tools won't
		rebuild on my PC".

2)	Jonathan
	1)	Fixed ROMBUILD defect EDN853437 "Dual Boot ROM does not function on
	  	Series 5" by applying Dennis' fix to fix up data as well as
	  	executables in dual-boot images.


Version 1.00.098
================
(Made by Jonathan, 1st February 1999)

1)	Petteri
	1)	Applied boilerplate copyright to sources.

2)	Jonathan
	1)	Fixed copyright message in executables.
	2)	Removed odbc32.lib and odbccp32.lib from all .DSP and .MAK files
	  	since these libraries are neither required nor always installed.


Version 1.00.97
===============
(Made by Alastair, 28th January 1999)

1)	Alastair
	GENERAL
	1)	Created and added VC5 .DSP files for all projects for debugging.
	2)	Removed hard-coded drive letters from .DSP files.
	3)	Re-generated makefiles from .DSP files.
	4)	Reinstated E32UID directory containing files E32UID.CPP and STDAFX.H
		required for building ROMBUILD, PEDIFF and PETRAN.
	5)	Replaced hard-coded instances of 'R:' in MNT.CMD with '%s%'.
	MAKSYM
	1)	Added proper handling of two functions appearing at the same address in
		a ROM.
	2)	Removed an unnecessary destructor to prevent allocated memory being
		deleted twice.
	TMAKTRAN
	1)	Removed MAKTRAN tests.
	PEIGER, PREPRO
	1)	Removed these executables.  Previously MNT.CMD attempted to unzip these
		from S:\ptool\ and then zip them up again in the e32tools release zip
		file.  Plans are afoot to provide these tools elsewhere, since we no
		longer have access to S:.


Version 1.00.096
================
(Made by Morgan, 21st January 1999)

1)	Morgan
	GENERAL
	1)	Removed E32UID
	2)	Converted all makefiles to VC5
	3)	Built with VC5
	ROMBUILD
	4)	Rectified the drifting directory problem.  ROM images can now
		be reproduced and validated reliably.
	READTYPE
	5)	Removed definitions for "true" and "false" so readtype will
		compile with VC5.


Version 0.01.095
================
(Made by Alastair, 18th August 1998)

Morgan
ROMBUILD
1) Big-endian bug fix

Alastair
DEFMAKE
1) Fixed Epoc S/W Problem SW1-141 - 'DEFMAKE adds an "E" to the end of
   the generated DEF file'
ROMBUILD
1) Fixed Bluebell defect SW1-734 - "What do the tools have against August?".
   A rom time of 08/08/2008 08:08:08 is now acceptable.


Version 0.01.094
================
(Made by Jonathan, 10th June 1998)

1)	Morgan
	ROMBUILD
	1)	Added extra info to log output.

2)	Graham Asher
	READTYPE
	1)	New uniflds.txt and unidata2.txt from release 2.1 of the charater
		database from Unicode Inc. Many additions and corrections have been
		made. One of them fixes defect SW1-42 (User::UpperCase is wrong for
		Greek final sigma (03C2) in the Unicode build) in the EPOC32
		Software Problems database.
	2)	Changes to readtype.cpp to accommodate the new character categories
		in unidata2.txt.

Version 0.01.093
================
(Made by Morgan, 15th May 1998)

1) Dennis
    ROMBUILD
1)	Added support to ROMBUILD for multiple-boot ROMs:
 a)	Added keywords 'singlekernel' and 'multikernel' to declare whether a
	single kernel ROM or multiple-kernel ROM is required (defaults to single).
 b)	Added keyword 'variant' to declare which files define hardware variants;
	this keyword should be applied to the variant DLL (ECUST.DLL) of each
	hardware variant to be supported.
 c)	Added keywords 'extension' and 'device'. These define kernel-mode DLLs
	which may have global data, the address of which is generated by ROMBUILD.
	'device' DLLs are simply LDDs or PDDs with global data.
	'extension' DLLs are not yet supported by E32.
 d)	Files declared with one of the keywords
		{primary, file, data, dll, variant, extension, device}
	may have an additional hardware variant discriminator specified by means
	of the syntax
		file[0x05040001]=filename
	The hardware variant discriminator (HWVD) is an 8-digit hex number whose
	purpose is to specify which hardware variants the file is relevant to.
	The top 16 bits indicate which conceptual layer the file belongs to:
		0100=independent - file is required by all hardware variants
		xx03=CPU-specific - file is required by all variants with same CPU
		yyxx=ASIC/variant specific - file is required by all variants with
			 CPU xx and ASIC yy.

	The bottom 16 bits are only relevant in the last of these three cases.
	They form a bit mask indicating which specific variants the file is
	required for. A file declared with the variant keyword must be totally
	variant-specific, i.e. must have only one bit set in the bit mask.
	If the HWVD is not specified, a value of 01000000 is assumed, which means
	that the file appears in all hardware variants.

	Examples (from forthcoming Bluebell/Protea upgrade ROM):

	primary[0504ffff] - kernel for EIGER
	primary[0706ffff] - kernel for WINDERMERE (different CPU core and ASIC)
	variant[05040001] - variant DLL for PROTEA
	variant[07060001] - variant DLL for BLUEBELL v.1
	variant[07060002] - variant DLL for BLUEBELL v.2 (for illustration)

	Static linkage between files is now restricted by the HWVDs of those
	files. It is possible for file A to link statically to file B iff
	{variants V | V requires A} is a subset of {variants V | V requires B}.
	For the example above, variant[0x05040001] can link to primary[0x0504ffff]
	but not the other way round.

	It is possible to have two or more files of the same name in the same
	directory provided that they have HWVDs which are mutually exclusive, so
	that the two files can never appear on the same machine. The HWVD is used
	to determine which of the files to use to resolve any static linkage.

 e)	The ROM file system now has multiple root directories and directory trees,
	one for each hardware variant supported by the ROM. This automatically
	ensures that F32 only sees the files which are relevant to the hardware
	on which it is running.

 f) DLLs declared with one of the keywords {variant, device, extension} can
	have global data (.data and .bss) which will be allocated in the kernel
	static data chunk after the kernel data itself.

2)	The 'fixed' flag is now propagated through from PETRAN.

3)	The 'kernstackaddress' keyword is now optional - if it is not present in
	the obey file, ROMBUILD uses a default value of 
	kerneldataaddress + Round(kernel-mode dataBss size) +
		Sum over all fixed .EXEs(Round(DataBss size of .EXE file))
	where Round(x) rounds up to the PDE size (1Mb on ARM).


Version 0.01.092
================
(Made by Morgan, 25th February 1998)

ROMBUILD
1) Fixed the 'code-align' file attribute
2) Forced the image file size to a multiple of 4k for the good of Rome.


Version 0.01.091
================
(Made by Alastair, 18th February 1998)

Removed MAKMAKE and BLDMAKE - these tools are now part of
new project E32TOOLP.


Version 0.01.090
================
(Made by Morgan, 13th February 1998)

ROMBUILD
1)	Added support for 'fix'ing LDDs with global static data in Rom.
2)	The 'file=' specifier now honours the KNoCallEntryPoints flag in
	the image header (as set by PETRAN).  This means all 'dll='
	specifiers should be changed to 'file=' and MAKMAKE used to
	control the entrypoint behaviour with the CALLDLLENTRYPOINTS
	keyword.
3)	Added a '-no-header' switch to suppress the Rom loader header.


Version 0.01.089
================
(Made by Alastair, 9th February 1998)

DEFMAKE
1)  Changed defmake.exe so that it processes freeze files without
    carraige returns at the end of the last line correctly. 
    Fixes SW1-803.
2)  Put in warning for unfrozen exports.

MAKMAKE
1)  Changed the warning generated if parameters appear with the
    NOSTRICTDEF keyword so that it doesn't just appear when MAKMAKE
    is invoked with the -V flag.  The NOSTRICTDEF keyword,
    if required, should be used in addition to the DEFFILE keyword,
    not instead of it.
2)  Intermediate deffiles created by command-line makefiles no
    longer have the basename extensions, eg D for narrow debug,
	if the NOSTRICTDEF keyword is specified.	
2)  Added warning for any SUBPROJECT keyword appearing before a
    project has been specified with the PROJECT keyword.  This
    is now necessary because MAKMAKE now stores SUBPROJECT directories
    as absolute paths rather than paths relative to the PROJECT directory.
    If a SUBPROJECT statement specifies a directory beginning with a
    backslash, it will be treated as an absolute directory; otherwise
    it will be treated as a directory relative to the PROJECT directory,
    as before.
3)  Added warnings for the non-existence of SYSTEMINCLUDE, USERINCLUDE,
    \PROJECT, SUBPROJECT and \PROJECT\SUBPROJECT directories.
4)  Put in START WINS .. END block option, NOBROWSEINFO, which can
    be used to stop generation of .SBR and .BSC files for command-line
    WINS and WINC builds.
5)  Changed MAKMAKE.BAT so that the help for the batch command "CALL"
    is no longer produced if MAKMAKE /? is typed.
6)  Moved all makmake releasables out of \epoc32\tools\makmake into
    \epoc32\tools.
7)  Changed MAKMAKE.BAT over to using the -S PERL switch so that the
    system path is searched for MAKMAKE.PL, then MAKMAKE.PL searches
    for the modules it depends upon in whichever \epoc32\tools is
    specified in the system path.  This means that makmake can be
    installed on one drive and called to operate on .MMP files from
    another.
8)  The second UID for targettypes APP, LDD and PDD will now be added
    if not present.
9)  Restructured MAKMAKE and moved some functionality into new modules
    to facilitate code reuse.  MAKMAKE and BLDMAKE now depend upon the
    following shared modules
    PARSECOM.PM, E32ENV.PM, E32TVER.PM, MODLOAD.PM, PATHUTL.PM, PREPFILE.PM.
    MMP.PM and GENUTL.PM are currently only used by MAKMAKE but may be
    useful for other purposes in the future.
10)  Renamed MAKPREP.PM MAKDEPS.PM.


BLDMAKE
1)  Added warning that BLDMAKE ALL won't create batchfiles for preparing
    IDE makefiles.
  

Version 0.01.088
================
(Made by Morgan, 29th January 1998)

MAKMAKE
1)	Inserted '-bigendian' on the PETRAN command line for BE builds

PETRAN and ROMBUILD
1)	Added -bigendian switches to both tools

From Simon Lewis
1)	Added a new file attribute 'code-align' to ROMBUILD
2)	Added the switches '-align-const-section' and
	'const-section-address-mask' to PETRAN


Version 0.01.087
================
(Made by Alastair, 23th January 1998)

MAKMAKE
1)  Changed paths within created makefiles so that they are relative
    to the directory where MAKMAKE was invoked rather than relative
    to the makefile.  If you are using the /D makmake command-line
    flag and invoking makmake from directory \[project]\group there
    is therefore no longer a need to change directory to
    \Epoc32\Make\[platform] before calling NMAKE.

2)  Deffiles created by the build process in the build directories
    now have the build-variant dependent U, D, and UD suffixes, and
    are removed by a makmake -clean.

3)  Changed handling of EXEDLL targettypes so that they can export
    functions under MARM.  MAKMAKE will expect EXEDLL targettypes to
    be function exporters for MARM if a deffile is specified in the
    MMP file, otherwise it will make no use of the intermediate deffile
    created during the build process.  This means that, until a fix for
    dlltool becomes available from Cygnus, the first time functions are
    frozen for EXEDLL targettypes for MARM it is necessary to build once,
    put a deffile statement for MARM in the MMP file, put the intermediate
    deffile where the MMP deffile statement expects the freeze file to be,
    and build once again so that the target is frozen by ordinal.

4)  Changed MAKMAKE warnings so they go to STDERR rather than STDOUT.

5)  Added LONGBLDPATH keyword to MAKMAKE which inserts an extra directory
    into the build path for a project.  The extra directory may be
    specified as a parameter to the new keyword but will default
    to the basename of the MMP file if the keyword is specified
    without a parameter.

6)  Added new TARGETTYPE, LIB, for creating static libraries.  This
    is not yet implemented for MSVC5.0.  The object file compiled
    from the first source file specified in the mmpfile is copied
    into the target directory and given the same basename as the
    target.  The behaviour for this keyword is not yet finalised.

7)  Added new TARGETTYPE, IMPLIB, for creating import libraries
    for DLLs with mutual imports.  Specify a new MMP file for
    one of the DLLs, give the name of the DLL as the argument
    for the TARGET keyword (so that the .LIB produced contains
    the right DLL name) and set the TARGETTYPE as IMPLIB.
    This is not yet implemented for IDE makefiles and the behaviour
    for this keyword is not yet finalised.

8)  Added handling of Win32 Resource files to command-line WINS
    and VC4 and VC5 makefiles because the kernel uses one.

9)  Added new MARM MMP file keywords to cater for unusual scenarios
    START MARM
    ALLOWDLLDATA // for dlls requiring static data
	DATALINKADDRESS [address] // for relocation address for dll data
    DLLNAME [dll basename for linking] // for dlls which are built
    // as one thing but linked in the ROM as another
	STACKSIZE // for stack size other than the default
    END

10) Added new module SARMBE.PM for creating big-endian single-process
    arm makefiles

11) Implemented more stringent checking of the format of UIDs in mmp files
    and made sure dlls with null uids link as mydll.dll rather than
    mydll[00000000].dll for consistency with rombuild.

12) Made all relative paths in VC4 and VC5 makefiles absolute.

BLDMAKE
1)  Added new perl tool, bldmake, which creates batch files to
    control the building of E32 and F32.  Type bldmake without
    any parameters for options.


Version 0.01.086
================
(Made by Alastair, 5th January 1998)

DEFMAKE
1)  Added .E32_UID and .rsrc to the list of recognised sections so that,
    eg, "WARNING: Section '.E32_UID' removed" no longer appears during
    WINS builds.

MAKMAKE
1)  Changed cl_arm.pm and cl_win.pm so that makmake -clean will remove
    resource headers from \Epoc32\Include if a resource file is specified.

Version 0.01.085
================
(Made by Alastair, 9th December 1997)

MAKMAKE
1)  Removed automatic addition of kernel32.lib and libc.lib to list
    of Win32 libraries for WINC EXE targettypes as this addition is
    apparently unnecessary.


Version 0.01.084
================
(Made by Alastair, 9th December 1997)

MAKMAKE
1)  Changed handling of targettype EXE for WINC, VC4WINC and VC5WINC
    platforms so that the LINK.EXE flag /subsystem:console is used
    rather that /subsystem:windows, and kernel32.lib and libc.lib
    are automatically added to the list of Win32 libraries to be linked
    to.

2)  Targettypes LDD and PDD makefiles for MSVC IDEs now require the
    presence of \epoc32\include\lddwins.def and \epoc32\include\pddwins.def
    respectively.


Version 0.01.083
================
(Made by Alastair, 20th November 1997)

Some Makmake Bug Fixes
1)  Makmake invoked with the /CLEAN flag will now erase the autouid
    object file if the Win32 autouid keyword is used.

2)  Makmake now uses the environmental variable "INCLUDE" rather
    than "MsDevDir" to decide which standard include directories
    should be searched for Win32 header files if a project is
    linking to Win32 libraries, so that the wrong standard
    include directories aren't searched when creating MSVC5
    project files.
    Fixes SW1-698.

3)  Fixed bug caused by CPP inserting a space after expanding
    macros in .mmp files by taking the space out again.  This was
    causing problems where, for example, a path specified as
    "\EPOC32\RELEASE\WINS\APP.DEF" in the .mmp file would become
    "\EPOC32\RELEASE\WINS \APP.DEF" after preprocessing prior
    to creating a WINS makefile.  Lower case paths were not
    affected.

4)  Replaced link.exe flag
    /EXPORT:?NewApplication@@YAPAVCApaApplication@@XZ,@1,NONAME
    in VC4 and VC5 makefiles where the targettype is APP with the
    flag /def:\EPOC32\RELEASE\WINS\APP.DEF, because the former flag
    failed to ensure that the function in question was exported
    at ordinal one.  This solution means that if no deffile is
    specified in the .mmp file for an APP, \EPOC32\RELEASE\WINS\APP.DEF
    must be present for the project to link.  Command-line Win32
    makefiles will link properly without the presence of APP.DEF
    because they use a defmake flag to ensure the function is
    exported at the right ordinal.
    Targettypes LDD and PDD will link by name in MSVC until
    their deffiles are released to
    \epoc32\release\wins or somewhere else suitable. 

Version 0.01.082
================
(Made by Alastair, 12th November 1997)

MAKMAKE
1)  Added link-libraries and e(dll|exe) object as dependencies of
    main target.  This cannot be done for MSVC IDE makefiles.
    Fixes SW1-565.

2)  Added new targettypes LDD and PDD.  A frozen first ordinal export,
    the respective gate funtion for the targettype, is specified for
    these targettypes and for targettype APP if no deffile is specified
    for the project, otherwise the deffile controls the order of
    exported functions.  This applies for all supported platforms.  Apart
    from this feature, projects specifying one of these targettypes build
    in the same way as projects with targettype DLL.
    Fixes SW1-666.

3)  Changed MAKMAKE help information so that the build version appears and
    a list of platform choices appears.  This list of platforms is produced
    by a search of .PM modules in \EPOC32\TOOLS\MAKMAKE for the comment line
    "# Can call in makmake command line".  If the line is present in the module
    then the basename of the module is added to the list.  This is a cheap way
    of producing a list of available platforms while preserving MAKMAKE's
    extensibility, and doesn't involve the loading of every .PM module and all
    the modules that each one of those depends on.
        The module controlling MAKMAKE help is loaded only when required and
    provides a brief guide to MMP file syntax if makmake is invoked
	    MAKMAKE /MMP {PLATFORM}
    If PLATFORM is specified, syntax for the START .. END block relating to
    the platform is displayed as well as platform-independent MMP syntax.
    Fixes SW1-653.

4)  The macros "WIN32" and "_WINDOWS" are now only used in compilation by MAKMAKE-
    generated Win32 makefiles if the project's MMP file states that the project
    needs to link to Win32 libraries by listing the libraries it needs with the
    WIN32_LIBRARY keyword in a Win32 START .. END block. 
    Fixes SW1-652.

5)  New MMP file keyword - OBJECT - is available.  This keyword is intended to
    be used by projects having access not to the source files but only the compiled
    code for certain objects.  Specify the basename of the object only.  Created Win32
    makefiles will expect object <basename>.OBJ to exist in the build directories
    for a project, while MARM makefiles will look for <basename>.o.  These object
    files will appear in the dependency list for the main target in command-line
    makefiles - this is not possible in MSVC IDE makefiles.

6)  Command-line makefiles now contain extra targets MAKEWORK, MAKEWORKDEB,
    MAKEWORKREL, etc.  The build-specific targets are included in the list of
    dependencies for the main makefile build-specific target, so that work
    directories will be automatically created when building with command-line
    makefiles if these directories do not already exist.  The new targets could
    also be used to make the work directories for a project with NMAKE
        e.g.  NMAKE /f <command line makefile> MAKEWORK
    would create all the makefiles for a project for all builds.

7)  Win32 command line makefiles now generate SBR and BSC browse files for DEBUG
    builds so that if a DEBUG build of a project has already been done with a Win32
    command line makefile, subsequent building of the DEBUG build of the project
    within the MSVC IDE will not recompile everything to generate the browse files.

8)  Added new module MAKPREP.PM to handle everything relating to MAKMAKE's use of
    \EPOC32\GCC\BIN\CPP.EXE to generate lists of dependencies for source files.
    This module now identifies missing system and user headers -
          - if missing system headers have the extension .RSG or .MBG, the header is
        listed as existing in \EPOC32\INCLUDE, so there is no longer a need for
        MAKMAKE to generate a dummy resource header in \EPOC32\INCLUDE to fool CPP.
          - platform modules can specify standard directories to search for missing
       system headers.  This means, e.g., Win32 makefiles can specify the MSDEV include
       directory for those projects linking to Win32 libraries.  If the missing system
       header is found by the module in the standard directory, it will be left out
       of the dependency list since the MSVC tools will know where to find it and it
       can be trusted to be there and unchanged.
          - if a missing system header fails to satisfy both the above tests then
       makmake will issue a warning since the generated makefile will probably fail to
       build.
 	      - a warning is issued for any user headers not found in the user include or
       system include paths, where the user include path is the source directory if no
       user include paths are specified explicitly.

9)  Processing of MMP files now involves a lot more syntax checking and produces
    corresponding warnings, especially if MAKMAKE is invoked with the -V switch.

10) MAKMAKE will now automatically generate WINS uid source files when creating Win32
    makefiles, but only if the new keyword - AUTOUID - is specified in a Win32 START ..
    END MMP file block.  The keyword is necessary since LINK.EXE would fail for projects
    which already specified UIDS in the source code, so remove WINS UID specification in
    the project's source code before using AUTOUID.  MAKMAKE works out UID 1 from a
    project's targettype and takes UIDs 2 and 3, if specified, from the MMP file.  It
    then creates the UID source file in the same directory as the MAKEFILE it is to create
    with the name "<target basename>.UID.cpp".  The source file will look something like this

        // Makmake-generated uid source file
        #include <E32STD.H>
        #pragma data_seg("E32_UID")
        __WINS_UID(0x10000079,0x1000008D,0x100002C3)
        #pragma data_seg()

	The file will be created only if it doesn't already exist or if it is older than the
    project's MMP file.

11) In MARM makefiles, multiple calls to GNU tool "ar" to archive the object files for
    a project prior to linking have been replaced by a single call to ar.  The single
    call passes a script listing the object files to ar.  This changes speeds up the
    archiving stage of MARM building considerably.

12) Renamed MAKMAKE.CMD MAKMAKE.BAT for Windows 95 compatibility.

13) Changed MSVC5 dependency generation to be the same as for other platforms,
    but with system headers stripped out of the list later.  Before, vc5 dependencies
    called CPP such that only user headers were generated.  This change means that
    CPP will no longer fail if one of the user headers is expecting a macro definition
    from a system header and forcing CPP to fail if it doesn't get it.

14) Replaced relative with absolute filepaths where possible in CL_WIN.PM.

15) Changed \e32tools\makmake\makmake.mak so that debug utilities like
	the perl -w switch and use of module strict.pm apply for "DEB" builds.
    of MAKMAKE only.

16) Added SARM.PM module to be used by the base for building SARM makefiles.

17) Improved path utilities module MAKPATH.PM to do more error checking
    and handle extra functions.

GROUP
1)  Changed e32tools\group\mnt.cmd so that makmake is released in a way more similar
    to other e32tools project - from \epoc32\build\e32tools\makmake\rel.


Version 0.01.081
================
(Made by Morgan, 4th November 1997)

ROMBUILD
1)	Added fixed keyword for use with EXE files. This keyword results in the
	file being loaded as a fixed address process. The data section base address
	is allocated in the region between the kernel data address and the kernel
	stack address. The multiprocess keyword can be used to specify the chunk
	size; it defaults to 1Mb.

PETRAN
1)	Added -fixed and -moving options which set and clear KImageFixedAddressExe
	flag respectively.

2)	Added the following switches
		-heap <min> <max>
		-allowdlldata
		-datalinkaddress <base>

MAKSYM
1)	Removed duplicate function address error message.


Version 0.01.080
================
(Made by Alastair, 30th September 1997)

MAKMAKE
1)	Changed Makmake.pl so that if a project uses a resource file
	and the resource header file is not yet present in \epoc32\include
	a dummy header file will be created there so that MAKMAKE's generation
	of dependencies does not assume that the missing header file is
	in some other location.

2)	Changed /Fd compiler flag in Ide_vc4.pm so that pdb files have the right
	name rather than vc40.pdb. 


Version 0.01.079
================
(Made by Morgan, 22nd September 1997)

ROMBUILD
1)	Integrated the code for building ROMs for the single process
	version of E32.  Currently this code is protected with a
	__SINGLE__ macro.
	Use the keyword 'singleprocess <ChunkSize>' to generate a
	single process ROM.  Default is 'multiprocess'.


Version 0.01.078
================
(Made by Alastair, 15th September 1997)

MAKMAKE

0)	Forget to say about release 077 that \[project]\bwinc is the default
	directory for which WINC def files are searched if the file specified
	with the DEFFILE keyword has no path.

1)	Improved MMP file reading so that a warning is generated if MAKMAKE
	ignores a line because it doesn't recognise the syntax.

2)	Makmake.pl - added new code to trap dependency generation errors.

3)	Makmake.pl - minor changes required to support creation of MSVC5 project
	files.

4)	Added new modules VC5.PM and VC5WINC.PM to support MSVC5.  These modules
	will create .DSP MSVC5 project control files.  When an MSVC5 .DSP file is
	created with makmake project files with the following extensions will be
	deleted - .dsw,.mak,.mdb,.ncb,.opt,.plg.  The new features of MSVC5 which
	distinguish between header files belonging to the project and system header
	files are supported.

5)	Added new module MISA.PM to support MISA command-line makefiles.

6)	Tidied up VC4.PM.

7)	Changed MAKMAKE internal structure so that implementaion modules can
	share modules controlling the layout of the makefile and other common
	features.  This change does not affect the way that MAKMAKE is invoked.

		VC5.PM and VC5WINC.PM share IDE_VC5.PM
		VC4.PM and VC4WINC.PM share IDE_VC4.PM
		WINS.PM and WINC.PM share CL_WIN.PM
		MARM.PM and MISA.PM share CL_ARM.PM

8)	Changed CL_WIN.PM and CL_MARM.PM to use an inline batch file in the
	makefile for calling fc4bat to decide whether a resource header file
	needs rewriting or not.  Previously, if fc4bat returned an error to
	indicate that the header file should be rewritten, nmake would die.

9)	Added Makmake.mak to \e32tools\makmake\ for building makmake source to
	\epoc32\tools and \epoc32\tools\makmake in a way similar to C++ projects.

10)	Changed all .PM modules to ensure that they return a true value
	when loaded successfully.

E32TOOLS MNT

1)	Changed e32tools.rel file so that readtype.exe is released.

2)	Updated MNT MAKEWORK and MNT GETBLD so that PGETBLD and MNT BLDALL will
	now work on a clean drive.  Changed readtype.mak so that it searches
	\epoc32\include rather than \e32\inc for system header files.
	File \e32\inc\unicode.h needs to be listed in e32\inc\incc.prj 
	at some point.

3)  Modernised MNT BLDALL so that NMAKE is invoked with the /nologo flag.

4)	Modernised MNT VALID so that pediff is used instead of fc /b for binary
	file comparison.  Makmake is now included and e32uid.exe removed since it's
	not used or released.


Version 0.01.077
================
(Made by Alastair, 8th September 1997)

MAKMAKE

1)	Changed 1st stage of linking (by name) for WINS command-line builds so that
	linking is not attemped incrementally to stop unnecessary warning appearing.

2)	Added two new modules, WINC.PM and VC4WINC.PM, for use in creating WINC
	command-line and IDE makefiles respectively.  For command-line makefiles,
	type "makmake {options} [project] WINC;  for IDE makefiles, type
	"makmake {options} [project] VC4WINC.  DIfferences between WINC and WINS
	makefiles are slight - WINC appears where WINS would otherwise appear, and
	WINC source files are preprocessed with the macros "__WINC__" and "__XCON__"
	defined as well as all the usual WINS macros including "__WINS__".  Note that,
	in line with the macro scheme applied to source files, MAKMAKE will preprocess
	XXX.MMP files with macros "WINS" AND "WINC" defined when creating WINC makefiles,
	so keywords within "#if defined(WINS) ... #endif" and "START WINS ... END" blocks
	will apply for WINC builds too.  This scheme required changes to the way
	MAKMAKE.PL processes START ... END blocks.

3)	Removed possibility of passing extra macros to makmake for preprocessing XXX.MMP
	files - this possibility was never documented and has never been requested so
	is now presumed unnecessary.

4)	Introduced keyword option which, if specified in XXX.MMP files, will cause
	MAKMAKE to search for the same deffile for all build variants rather than
	several files differentiated by suffixes "U","D" and "UD".	The new keyword
	is "NOSTRICTDEF", originally enough.  Hopefully deffiles for LDDs and PDDs
	can soon be done away with by having targettypes for LDDs and PDDs and having
	MAKMAKE implementation modules pass the correct mangled names as 1st ordinal
	command-line option arguments to DEFTOOL and DEFMAKE instead.

5)	Changed resource handling to be entirely compatible with eikrs.bat - the basename
	of XXX.RSS is used for XXX.R$(EPOCLANG) and all intermediate resource files.  This
	change still does not fix SW1-204, for which a spec decision regarding the handling
	of differing licensee resource file requirements is required.
	

Version 0.01.076
================
(Made by Alastair, 15th August 1997)

MAKMAKE

1)  Changed MARM and WINS modules so that rcomp is called to compile resources
    directly rather than via eikrs.bat.  This change will mean that resources will
    be compiled into the correct directory for MARM builds, and that the *.rss file
	need no longer be in the same directory as the makefile.  This change addresses
	SW1-204 and SW1-212.
2)  The STRICTDEF keyword is no longer recognised by makmake.  Its function in
	appending "D", "U", and "UD" to the base name of *.DEF files for DEB, UREL and
	UDEB builds is now carried out by default.  There should now be a *.def file for
	each of these build variants in use if any definition files are used at all.
	This change addresses SW1-196.
3)  Makmake.cmd has been improved.  If makmake fails, a basic perl operation will be
	attempted.  If this fails, the user will be asked if the correct version of perl
	is installed.  This change addresses SW1-345.

Version 0.01.075
================
(Made by Alastair, 24th July 1997)

DEFTOOL (from William Roberts)

1)	Modified DEFTOOL.CPP and DEFTOOL.H
	Basically just improved error reporting so that
	a)	When it tells you that there are "frozen ordinals missing from supplied
		def file" it also tells you which ordinal numbers have been lost.
	b)	If your DLL exports functions that weren't in the freeze file then it
		gives you a gentle warning, because that's not something which we'd 
		want to allow in a release.

MAKMAKE

1)	Changed makmake so that target makefile is created in the current
	working directory rather than the directory containing the *.mmp
	file.
2)  Added line of code to makpath.pm so that single dot directories
	are stripped from paths.
3)	Removed repeat occurrence of deffile flag in the link command for 
	*.wins makefiles.
4)	Changed RELGDB path macros for MARM makefiles so that they are prefixed
	with ".\" rather than "..\\..<absolute path to makefile directory>".
	This is a neater way to get them to expand to something textually different
	from REL path macros while still specifying the same path.
5)	Changed "ar q" lines within MARM makefiles to include 8 object files maximum
	rather than 4 - this should improve efficiency without breaking limits on
	command-line lengths.
6)	Changed WINS.PM so that the $(LINK_OBJS) macro is used in the link command line
	in *.wins makefiles rather than a list of all the objects concerned.
7)	Changed MARM.PM so that the first stage of linking (by name) for a dll target
	creates the dll in the build directory rather than the release directory.
	The	second stage of linking (by number) creates a dll in the build directory
	rather than the release directory too, overwriting the first dll.  Finally,
	this target is petranned to the release directory and the dll left in the
	build directory is deleted. This change solves the problem of nmake thinking
	that the target has been successfully created when the build has failed
	anywhere between the first link stage and the petranning stage, because of
	the presence of an apparently up-to-date dll in the release directory.
8)	Changed WINS.PM similarly so that *.wins makefiles do a two-stage link.  Defmake
	is called between the two link stages with a "freeze" file if one is specified
	with the DEFFILE statement (see below).  The defmake-created def file is then
	used for the second-stage link (by number).  The first stage of linking creates
	the target dll in the intermediate directory while the second stage creates the
	final target dll in the target directory and the first dll is deleted.
9)	Removed /NAME flag from MAKMAKE - no longer necessary due to (8).
10)	Radically changed behaviour of MAKMAKE towards DEFFILE and FRZFILE statements
	within *.mmp files.  There is no longer handling of FRZFILE statements.  As
	before, if a DEFFILE statement is placed within an #if defined(WINS) ... #endif
	block, the statement will be used by both WINS and VC4 makefiles but not MARM
	makefiles, and vice versa if a #if defined(MARM) ... #endif block is used.  If
	the file specified has no path, the file is assumed to be in directory 
	\<project>\bwins\ for WINS and VC4 makefiles and \<project>\bmarm\ for MARM
	makefiles.  For VC4 makefiles, the specified file is passed to LINK.EXE as 
	before.  For WINS makefiles, the file is not used in the first stage of linking.
	Defmake is called and uses the file as a freeze file in the creation of a new
	deffile which will include any new exports produced by changes to the source code
	for the project.  The new deffile created is used in the second stage of linking.
	For MARM makefiles, the specified file works in much the same way as for WINS
	makefiles.
		In other words, the DEFFILE statement should now be used to specify "freeze"
	files.  WINS *.def files were in effect "freeze" files anyway.  The choice of
	"DEFFILE" rather than "FRZFILE" for the new statement within *.mmp file reflects
	the widespread understanding of "def" vocabulary outside Psion.  For more
	information, see the discussion on e32proposals - tools - makmake and frz files.
		The STRICTDEF keyword is still required if differently-named "freeze" files
	are required for different builds, but this requirement is under review together
	with potential default directories for components not using directories
	\<project>\bwins and \<project>\bmarm.  Note that if these directories are not
	being used and files specified with the DEFFILE statement include a path then is
	is essential to place DEFFILE statements with #if defines because WINS and VC4
	builds should never use the same "freeze" file as MARM builds due to the compilers
	mangling function names in different ways.
11)	A file specified with the DEFFILE statement is now put in the list of 
	dependencies for a target in WINS and MARM makefiles, but not yet VC4.
12)	Changed MAKMAKE to allow for use of the WINDOWS API.  If you are using this API,
	specify the windows libraries you wish to link to in *.mmp as follows

	START WINS
	BASEADDRESS		0x43500000
	WIN32_LIBRARY	kernel32.lib gdi32.lib user32.lib
	END

		ie, put the WIN32_LIBRARY statement somewhere in a START WINS ... END block
	and	list the libraries after it.  Please note that these START WINS ... END
	blocks are very different from #if defined(WINS) ... #endif blocks.  Makmake
	always preprocesses the *.mmp file when invoked, and later passes any text within
	START ... END blocks onto the perl module specific to the platform in question.
	When makmake is invoked with the VC4 argument, the *.mmp file is preprocessed
	the WINS macro defined.
13) Fixed bug causing AIF file subroutine to be ignored
14)	Fixed bug causing path specified with TARGETPATH statement to be left out of
	path to resource target for WINS makefiles.
15) Changed resource file building command so that the base name of the target
	resource file is the same as the base name of the releasable rather than
	the base name of the file specified with the RESOURCE or SYSTEMRESOURCE
	statement.
16) Changed name for target AIF from the base name of the releasable + ".aif" to
	the name specified by the AIF statement.
18)	Changed code designed to warn the user if the version of perl they are using
	is not supported by MAKMAKE so that it is activated before rather than after
	compilation - untested.


Version 0.01.074
================
(Made by Alastair, 1st July 1997)

MAKMAKE
1)  Fixed egregious error causing the content of LIBRARY
    statements in *.MMP files to be ignored.  This error
    is present in e32tools releases 071, 072 and 073.


Version 0.01.073
================
(Made by Morgan, 18th June 1997)

1) ROMBUILD
   Added 'time' keyword for specifying the date/time stamp
   in the rom header.
   Syntax:
      time=dd/mm/yyyy hh:mm:ss

   Added 'reloc' file attribute to specify user process
   data run address for Exes.

   Added 'align' keyword to align files on particular
   alignment boundries.


Version 0.01.072
================
(Made by Alastair, 16th June 1997)

MAKMAKE
1)  Added line of code to makmake.pl so that makmake will refuse
	to work with versions of PERL released prior to version 
	5.003_07   .  To find out what version of PERL you are using,
	type  perl -v<return>  in a DOS box.


Version 0.01.071
================
(Made by Alastair, 9th June 1997)

MAKMAKE
1)  Added new preprocessor macro, __PSISOFT32__, defined for all
	projects using MAKMAKE regardless of platform or build variant.


Version 0.01.070
================
(Made by Matthew, 4th June 1997)

Added new tool ROMMASK, for generating rom images suitable for masking.


Version 0.01.069
================
(Made by Alastair, 4th June 1997)

MAKMAKE

1)      Fixed bugs causing _UNICODE macro to be output
	without the initial underscore by marm.pm and
	wins.pm.

2)      Single call to gcc archiving tool "ar" replaced
	by multiple call to avoid overriding of command-line
	length limits for projects comprising many source
	files.

3)      Fixed bug in \e32tools\makmake\mnt.cmd so that
	makpath.pm is copied to directory
	\epoc32\tools\makmake.


Version 0.01.068
================
(Made by Alastair, 2nd June 1997)

MAKMAKE

1)      Removals
	makmake.txt - SDK documentation now available
	revmak.pl - redundant
	winsname.pm - redundant

2)      Fixes

a)      fixed dependency macro bug for VC4 platform
b)      fixed problem with mmp file specification of
	multiple subprojects
c)      Other minor bug fixes

3)      Internal Changes

a)      Improved generation of dependencies
b)      Improved path utility functions
c)      Moved path utility functions out of makmake.pl to
	new module "MAKPATH.PM"
d)      Other structural changes

4)      Command-Line invocation

a)      Platform VC4 can now be specified to produce MSVC4.0
	compatible makefiles - WINS platform now produces
	makefiles incompatible with MSVC4.0 allowing greater
	freedom for using nmake to build resource files, etc.
	*.MMP files will still be preprocessed with the "WINS"
	macro whether the platform is specified as WINS or VC4
b)      New flag "/clean" - deletes all non-source files for the
	project and platform specified.
c)      New flag "/lang [language]" - sets a language for the
	project and platform specified except for VC4.
d)      New flag "/name" - doesn't add any /def:[deffile]
	linker flags to WINS or VC4 makefiles.  No effect
	on MARM makefiles.  This flag makes linking-by-name
	builds possible for WINS.
e)      Flags can now be specified anywhere on the command-line

5)      *.MMP Files

a)      New keyword "LANG [language]" - sets a language for
	the project and platform specified except VC4.
	This setting is overridden if the command-line language
	flag is used.
b)      New keyword "AIF [*.aif file]" - specifies an application
	information file.  This keyword is subproject relative,
	and merely copies the *.aif file to the target directory
	at the moment (except for VC4).
c)      New keyword "BITMAP [*.mbm file] [*.bmp files]" - specifies
	a protea multi-bitmap target and compiles it to the target
	directory using bmconv on the windows bitmap files (except
	for VC4).  The keyword is subproject relative, so all
	windows bitmaps files specified are expected to reside in
	the current \PROJECT\SUBPROJECT directory.  This may not be
	the required behaviour.
d)      New "RESOURCE" keyword behaviour - eikrs.bat is invoked
	for MARM and WINS platforms to compile the resource specified
	to the target directory.  VC4 platform uses the keyword
	parameter for information only.  If a language is specified
	it is passed to eikrs.bat, defaults to "SC".
e)      New keyword "SYSTEMRESOURCE [*.rss file]" - subproject
	relative, behaves exactly as the RESOURCE keyword except
	that for WINS the target resource is compiled to directory
	\epoc32\release\wins\[build]\Z\system\data.  Ignored by
	VC4.
f)      New "TARGETTYPE" keyword option - "exedll".  This option
	can be used to specify a target which will be built as
	a dll under single-process platform WINS (or VC4), but as
	an exe for multi-process platform MARM.
g)      New keyword "STRICTDEPEND" - if specified, makmake will
	generate dependencies for each source or resource specified
	for all builds - DEB,UREL,RELGDB etc.  If sources are unlikely
	to specify different include header files for different
	builds then there is no need to specify this keyword and
	dependencies will be generated once only for each source
	file.
h)      New "DEFFILE" keyword behaviour.  This keyword is no longer
	platform-specific (within a "START [platform] ... END" block).
	If the deffile is specified without a path, then makmake
	will expect the deffile to live in directory "\PROJECT\BMARM"
	for the MARM platform, and in "\PROJECT\BWINS" for WINS or VC4.
	Note that currently the *.def file will be used in a call
	to dlltool in MARM makefiles as follows:-
		"dlltool --def [deffile] --output-def [created deffile]".
	This behaviour is required for at least one project, and
	different deffiles can be specified for different platforms
	using "#if defined [platform]" within *.mmp files.
i)      New keyword "FRZFILE [*.frz file]" - behaves the same as
	"DEFFILE" keyword as regards paths.  A specified freeze file
	is ignored by makmake when producing WINS or VC4 makefiles.
	The file is used by MARM makefiles as follows
		"ld -z [frzfile] [dlltool-created deffile]".
j)      New keyword "STRICTDEF" - if this keyword is specified then
	makmake assumes that, for each *.def or *.frz files specified,
	there are actually as many of these files as there are
	different build configurations for the project.  E.G. for
	WINS makefiles, if a deffile is secified in a *.mmp file as
	"DEFFILE mydef.def", then makmake will assume "mydefd.def",
	"mydefu.def" and "mydefud.def" for DEB, UREL, and UDEB builds
	respectively.  Though for MARM, a RELGDB build would look for
	plain "mydef.def".

6)      Output

a)      Makmake for MARM will produce *.MARM makefiles.
b)      Makmake for WINS will produce *.WINS makefiles.
c)      Makmake for VC4 will produce *.MAK makefiles.
d)      MARM and WINS makefiles are restructured to allow
	the following example NMAKE command-line invocations

		"NMAKE /f euactiv2.wins UREL"
		"NMAKE /f euactiv2.marm UDEB"
		"NMAKE /f euactiv2.wins CLEANDEB"
		"NMAKE /f euactiv2.marm CLEAN"

e)      Macros specifying target directories, language,
	build directories and so on are produced at the
	top of WINS and MARM makefiles.
f)  RELGDB builds for MARM aim to put the executable
	produced into \epoc32\release\marm\rel, and also use 
	\epoc32\build\[project]\marm\rel as their building 
	directory.
g)      Gcc tool OBJCOPY produces a *.sym file for MARM debug
	builds, including RELGDB.


Version 0.01.067
================
(Made by Morgan, 19th May 1997)

1) PEDIFF
   Recognises time/date stamps in debug and export directories.
   Ignores PETRAN version information in the header.

2) PETRAN
   Uids take the full 32bits.

3) WVECONV
   From \VNOTES\WVECONV.  S3a to S5 sound file converter.


Version 0.01.066
================
(Made by Alastair, 9th May 1997)

MAKMAKE

1) Fixed bug causing extra "print " text to be produced
   as part of the USERINCLUDES text outputted in verbose mode.

2) Fixed bug causing makmake.pl to fail to produce the extension
   of a target filename when requested by *.pm modules

3) Fixed bug causing makmake to fail with an error report if
   more than one flag is specified on the command line

MAKSYM

1) Added a few lines of extra code so that the base address of
   a dll in the rom is printed to maksym.log when maksym cannot
   find the corresponding *.map file.


Version 0.01.065
================
(Made by Alastair, 6th May 1997)

MAKMAKE

1) reorganised to be more easily maintainable and extensible.

2)      handles uid keyword in *.mmp file - uid1 is provided automatically,
	uid's 2 and 3 are specified ... 

UID <uid2> <uid3>

in *.mmp file.

3)      dependency generation section calls CPP with flag -MG so that
	makmake responds gracefully to missing generated headers

4)      *.mdp and *.ncb files are automatically deleted from directories
	in which makmake is directed to create a wins makefile with the same
	root.

5)      petran is invoked from the arm makefile

6)      invocation syntax simplified so that makmake is invoked 
		makmake [flags] [mmp file root] [platform]
	rather than
		makmake [flags] [mmp file] [destination makefile] [platform]

7)      makmake by default operates in quiet mode, verbose mode is invoked
	using the new "/V" flag on the command-line

8)      makmake will create the work directories rather than the makefile
	if the new "/MAKEWORK" flag is used on the command-line

9)      the "/q" flag for "del" commands is no longer added to marm makefiles
	created with makmake

10)     the DEFFILE keyword is no longer searched for within a START WINS ... END       
	block, now it is platform independent though not yet utilised by the marm 
	platform.

11)     winsname.pm is not currently expected to work

12)     PERL is no longer invoked with the -w debugger flag

Version 0.01.064
================
(Made by Morgan, 16th April 1997)

1)      ROMBUILD
	Removed the checks for unicode-ness of Uid[0] on Exes/Dlls

2)  W32REPRO
	An NT version of PREPRO written by WilliamR


Version 0.01.063
================
(Made by Morgan, 15th April 1997)

1)      MAKTRAN
	Changed over to the new (and slightly less mad) Uid scheme
	introduced in E32(098).
	Dlls now have a Uid[0] of 0x10000079
	Exes now have a Uid[0] of 0x1000007A
	Everything else is as before.


Version 0.01.062
================
(Made by Graham Asher, 15th April 1997)

READTYPE
	Added this new tool, which writes the new file unitable.cpp, which contains
	the Unicode character attribute information. I've put a full
	explanation of how to use READTYPE in Notes under e32 software design.


Version 0.01.061
================
(Made by Morgan, 13th April 1997)

1)      ROMBUILD
	1) Bug fix when using the -S switch with Rom patching
	2) Added class TRomSectionHeader to the start of the
	   second section of the Rom so sectioned Roms can have
	   a separate build time, language variant, and checksum.
	3) Added iRomSectionHeader member to TRomHeader to point
	   at the start of the sectioned Rom and padded TRomHeader
	   to 256 bytes.  This needs a new BOOTROM.BIN which will
	   be released with E32(098)
	4) Fixed a bug in the split rom verify code.
	5) Fixed the overriding of Uids.


Version 0.01.060
================
(Made by Morgan, 9th April 1997)

1)      PETRAN
	Fixed a PETRAN dumping bug when there are no .data relocations.

2)      MAKTRAN
	Bug fix for -P switch when no uid3 is specified.

3)      DEFMAKE
	Made the -S switch work when -Z is used.


Version 0.01.059
================
(Made by Morgan, 7th April 1997)

HIGHLIGHTS:
	* MAKTRAN now produces PETRANned targets.
	* Components should use the new -P switch instead of -U.
	* Suggested minimum commandline for Dlls:
	  MAKTRAN <src .MAK> <dest .ARM> -z<Your .FRZ> -p"-uid2 <Your Uid2> -uid3 <Your Uid3> -nocall"

2)      MAKTRAN
	1) Overhauled for releasing PETRANned components.
	   -U switch has been removed and been replaced by new
	   -P switch for specifying PETRAN command line arguments. Uid1
	      will default to the correct uid for the build type unless
		  you specify otherwise.


Version 0.01.058
================
(Made by Morgan, 3rd April 1997)

1)      ROMBUILD
	1) Filenames can now be quoted ("") to include spaces.
	2) More details provided when the Rom overflows.

	NOTE: Currently there is a bug that occurs if the Rom 
	is exactly the correct size (byte for byte) and sectioning
	is being used.  It's harmless - I'll fix this in a release
	soon.


Version 0.01.057
================
(Made by Alastair, 2nd April 1997)

1)      MAKMAKE
	Fixed bug in wins.pm causing *.def files specified in *.mmp
	files to be ignored by MSVC.
	Included deftool flag -1 NewApplication__Fv for MARM makefiles
	where the target is an APP.
	
	E32TOOLS GROUP MNT.CMD
	Added lock, unlock and wholock parameters.


Version 0.01.056
================
(Made by Alastair, 27th March 1997)

Alastair:
1)      MAKMAKE
	MAKMAKE generates makefiles for WINS or MARM builds.
	It is being released because the SDK example projects
	now use it, and no longer use MAKTRAN.  Makmake is by no
	means fully tested and is certainly not intended for 
	incorporation into Epoc32 projects prior to V1 shipping.
	Details of its use are roughly documented in file 
	\e32tools\makmake\makmake.txt.
	Use of makmake requires the installation of Perl 
	from directory T:\UTIL\PERL.


Version 0.01.055
================
(Made by Morgan, 20th March 1997)

1) ROMBUILD
   CheckSum bug fix.
   Kernel alignment bug fix.


Version 0.01.054
================
(Made by Morgan, 18th March 1997)

1) ROMBUILD
   Removed some unnecesary recurtion and tidied some dodgy code.
   Loaded the files to Rom in the order they appear in the obey
   file, rather than depth first order.
   
   Roms can now be sectioned into two parts allowing the upper
   part of the rom to be switched for language variations and
   file patching.  Both these processes require the original
   releasables, original obey file, and any new releasables.
   It is also advisable to supply the original Rom so the lower
   section can be verified to be constant.

   In a sectioned rom the directory structure, import address
   tables, and Dll reference tables of all files in the first Rom
   are placed after the section border.
   The overhead of sectioning a Rom (over and above an unsectioned
   one) is the space required to duplicate the import address
   tables of files from the first section.
   Last time I counted (B2) the iat's took up 42k.

   The 32bit sum of all 32bit words in the second section is
   always 0.  This means the iChecksum member in TRomHeader is
   valid for the rom as a whole and for the first section in
   isolation.
   It is not possible to patch any files that are listed before
   the primary or the secondary.  Doing this causes the position
   of the kernel's/file-server's entry in the directory table to
   move.  This may be fixed in a future release.

   To section a Rom:
      Use the keyword
	 section <rom offset>
      at the point in the obey file where you want the Rom to be
      split.  All files before this line appear in the first
	  (constant) section, and files after appear in the second
	  (patch/language) section.

   Patching a file in the second section:
      Add file attribute 'patch[ed]' to the file to be patched.
      (This will cull the file from the first section).
      Supply a replacement file in the top section as required.
	  Note, the original file is still required to guarantee
	  consistency in the first section of Rom.
	  Run ROMBUILD.

   Supplying a language dependant file:
      Put the file after the section keyword.
	  Run ROMBUILD.

   To verify the lower section of Rom has remained constant:
      Specify the original Rom image on the command line with
	  -r<FileName>


Version 0.01.053
================
(Made by Morgan, 7th March 1997)

1) ROMBUILD
   Bug fix to 'screen' keyword


Version 0.01.052
================
(Made by Morgan, 3rd March 1997)

1) ROMBUILD
   Bug fix for Exes/Dlls with no relocations in .text or .rdata
   Check Uids for exporting .EXEs as well as .DLLs
   New 'screen' keyword.  Default is: screen = 640x240x4

2) MAKTRAN
   Bug fix


Version 0.01.051
================
(Made by Morgan, 13th January 1997)

Alastair:
1) MAKSYM
   Generates a list of C++ symbols and their addresses in rom from
   ROMBUILD.LOG and accompanying .MAP files.
   MAKSYM ? for help.


Version 0.01.050
================
(Made by Morgan, 6th January 1997)

1) ROMBUILD
   Incompatable with any E32 before 083.
   Added some stuff to TRomHeader for the test department:
   A language bitfield (64bits for specifying the languages supported
   by the ROM), and a 32bit hardware identifier.
   The languages are as defined by TLanguage in E32STD.H.  (ie Test
   is bit 0,  English is bit 1, French is bit 2,  etc...)
   Added two more obeyfile keywords for this.  Usage:
   languages = <list of supported languages>
   hardware = <n>

   Rombuild now has a -? switch.


Version 0.01.049
================
(Made by Morgan, 11th December 1996)

1) MAKTRAN
   Object files are now grouped on the ar (archive) command line to
   speed up building.  By default they are grouped in 4s but this
   can be changed by using the new -a<n> switch.

2) ROMBUILD
   More informative error information when a dll is exporting by
   name.

3) E32UID
   Removed.


Version 0.01.048
================
(Made by Morgan, 22nd November 1996)

1) ROMBUILD
   Added 128 bytes of space to TRomHeader which appears at the front
   of the ROM.  This is to allow work on the StrongARM port to
   progress.
   Naturally, this makes ROMBUILD compatable with absolutely nothing.
   So a new bootrom.bin will be released with E32(075).


Version 0.01.047
================
(Made by Morgan, 1st November 1996)

1) MAKTRAN
   Another minor fix to deal with unusually shaped .MAK files.  This
   time it's old link information stored in comment lines.
   Added "-Wno-ctor-dtor-privacy" to CPPFLAGS.

2) PEDIFF
   Bug fix HA-283.  The final section in a PE file may be truncated
   to its VirtualSize making the SizeOfRawData field of the header
   inaccurate.  This was causing a problem in the release build but
   not the debug build.
   Fixed by padding the section data with zeros up to SizeOfRawData
   bytes.

3) ROMBUILD
   Added a iTextSize member to TRomImageHeader.  Making this version
   of rombuild incompatable with any E32 before build 075.


Version 0.01.046
================
(Made by Morgan, 1st November 1996)

1) MAKTRAN
   Added support for include directories other than ..\inc and
   \epoc32\include
      

Version 0.01.045
================
(Made by Morgan, 7th October 1996)

1) MAKTRAN
   Added a -U<Uid> switch to put the 3rd uid in the target's import
   stub so the Dll/Exe exports as DllName[Uid].Ext
   This enables you to use the type-safe static linking (based on the
   Dll's 3rd Uid) in E32(070)/F32(036) and ROMBUILD(043).

2) ROMBUILD
   Officially PVCSed DW's patch to ROMBUILD(044) that disables
   type-safe static linking and added a -type-safe-link option to
   turn it back on.
   I'll leave it that way until people get used to the idea (or until
   someone comes up with a better plan).
   Also added checks on the first Uid against
   KNarrowDebugUid, KNarrowReleaseUid for Ascii builds and
   KWideDebugUid, KWideReleaseUid for Unicode builds.  I havn't made
   this dependent on the -type-safe-link option because executables
   and dlls wont load if this Uid is not set correctly.


Version 0.01.044
================
(Made by Morgan, 3rd October 1996)

1) ROMBUILD
   ROMBUILD can now take E32 Image (pre-PETRANned) files as well as
   PE Format files as input.


Version 0.01.043
================
(Made by Morgan, 2th October 1996)

1) MAKTRAN
   Better filename parsing for the -z option.

2) PETRAN
   Added a -priority option.  This takes a number or one of these
   keywords: low, background, foreground, high, windowserver,
   fileserver, realtime, supervisor.

3) ROMBUILD
   Added 'priority' inline keyword for EXEs.
   Added checks for type-safe static linking of DLLs.

5) E32UID
   Jal:  Displays the psion copyright message and build.
	 Renumbered Uids to be Uid0, Uid1, and Uid2.

6) ALL
   Redirected error output to stderr.
   

Version 0.01.042
================
(Made by Morgan, 14th September 1996)

1) PREPRO, PEIGER
   Changes to MNT.CMD to include the latest versions of
   PREPRO and PEIGER in the E32TOOLS release.

2) MAKTRAN
   Minor bug fixes for -D defined symbols.

3) E32UID
   Added a -Q quiet switch.


Version 0.01.041
================
(Made by Morgan, 14th September 1996)

1) MAKTRAN
   Added support for maktranning make files of static libraries.
   There are added complications when using static libraries from
   GCC:
   You may find that any executables linked with a static library
   produce reams of "bad relocation" errors from either PETRAN or
   ROMBUILD.  At the moment, to work around this you will need to
   modify 2 lines for each build in the MAKTRANed file.
       $(LD) ... --whole-archive my_exe.in --no-whole-archive ... my_lib.lib
   becomes:
       $(LD) ... --whole-archive my_exe.in my_lib.lib --no-whole-archive ...
   this has the effect of including all code from the static library
   in your .EXE whether it is used or not, but it fixes the bad
   relocations generated by the GCC linker.

   MAKTRAN also propogates defined symbols from the MSVC4
   Build/Settings dialog excluding:
	      __WINS__,__VC32__,__EXE__,__DLL__,
	      _UNICODE,WIN32,_WINDOWS

2) DEFTOOL
   No longer truncates your def file if it can't find the specified
   freeze file.


Version 0.01.040
================
(Made by Morgan, 2nd September 1996)

!) ROMBUILD
   Bug fix:  for EXEs/DLLs with no imports.
   
   The tab character is now treated as white space in obey files.
   
   Improved some error messages.

   Removed the universally dispised 'nocallentrypoint' directive on
   the grounds that it looked silly.
   Executables specified with 'file=' do not have the entry points
   called.  New keyword 'dll=' indicates that the entry points
   should be called.

   Fixed filename case dependency.

2) MAKTRAN
   Added the switches '--whole-archive' and '--no-whole-archive'
   around the .in file on the linker command line to keep GCC happy.
   This only effects EXEs - as DLLs did it already.


Version 0.01.039
================
(Made by Morgan, 19th August 1996)

1) MAKTRAN
   Added Unicode and Debug (U,D) suffixes to DEF files to make the
   filenames for each target different under the new directory
   structure.
   Freeze files have also been given the same treatment:  specifying
   -z afile.frz
   will use afile.frz, afileD.frz, afileU.frz, afileUD.frz
   as freeze files for the respective builds.


Version 0.01.038
================
(Made by Morgan, 2nd August 1996)

1) MAKTRAN
   New maktran for the new epoc32 directory structure.
   -T option removed.  Template instantiation is automatic.
   Dlls are auto-detected by looking for __DLL__ in the .MAK file,
   but this can be overridden with -D (to force a DLL) and -E (to
   force an EXE)
   Bug fix:  MAKTRAN now deals with make files that do not have
   their "Win32 Release" target first.

2) ETOUCH
   Replacement TOUCH program.

3) ROMBUILD
   Bug fix:  for data sections with no relocations

4) PETRAN
   Added -nocallentrypoints option (can be shortened to -nocall)
   and   -callentrypoints   option (       shortened to -call)
   Bug fix:  for executable files with no relocations


Version 0.01.037
================
(Made by Morgan, 2nd August 1996)

1) ROMBUILD
   Yet another change that will break your rom if you don't pay
   attention to the version numbers.  This build is intended to
   work with E32 (065).
   The format of the Dll reference table has changed, and now looks
   like this:

   class TDllRefTable
      {
   public:
      TUint16 iFlags;
      TUint16 iNumberOfEntries;
      };
   followed by iNumberOfEntries of these:
   class TDllRefTableEntry
      {
   public:
      TUint iEntryPoint;
      TUint iDllRefTable;
      };

   Added another inline keyword "nocallentrypoint" to obey files.
   When attached to a file it prevents the entry points of linked
   Dlls being called.  This is used to save time during loading
   when the Dll's entry points are trivial (=empty).

2) Fiddled with the -s option.
   -S        outputs the size summary to the screen and to the log
   -SLog     outputs the size summary to the log only
   -SScreen  outputs the size summary to the screen only

3) Forced the primary's code section to start on a 4K page boundry
   for obscure operating system reasons.
   (ie, Getting the exception/interrupt vectors to land on a page
   boundry so they can be easily mapped by the MMU to the address
   where they are expected to be.)

4) Added support for building Unicode roms.  The implementation for
   writing Unicode filenames to ROM is temporarily dubious.
   A Unicode rom is made by specifying the keyword 'unicode' in the
   first section of the obey file.

5) Added the keyword 'stop' so parsing of an obey file can
   be stopped prematurely.
   

Version 0.01.036
================
(Made by Morgan, 11th July 1996)

1) ROMBUILD
   Support for generating split ROM images - added the optional
   keywords:
   romnameodd=<file name>
   romnameeven=<file name>
   resulting in two half-roms.  one containing all odd numbered
   half-words (16bits) and one containing all the even half-words.

   Checksums:
   Added a checksum member to TRomHeader and an optional keyword
   romchecksum=<n>
   for obey files.  This results in a ROM where summing all 32 bit
   words (ignoring overflows) will return n.  The default sum of
   all ROM words is 0.

   Checksums for the ROM and for split ROMs are now calculated and
   reported in the log.  These checksums are calculated by summing
   all 8bit bytes and taking the least significant 32 bits of the
   result.


Version 0.01.035
================
(Made by Morgan, 10th June 1996)

1) MAKTRAN
   Added a RELGDB target which pretends to be the REL target
   while keeping the debug info.
   This has the same effect as a REL build when the makefile is
   generated with:
   MAKTRAN -no-strip-symbols -g"-g -fno-omit-frame-pointer" src dest

2) DEFMAKE, DEFTOOL
   Added -2 switch to compliment the -f switch so you can specify
   the second ordinal as well as the first without the need to mess
   around with freeze files.
   This allows us to accomadate DLLs with the UID function at 
   ordinal 1, and the GateL function at ordinal 2.
   Also added -1 switch which is the same as -f to keep things 
   consistent.


Version 0.01.034
================
(Made by Morgan, 26th June 1996)

1) ROMBUILD
   Added facility to output Motorola S format Records.
   Use the optional keyword:
   srecordfilename=<output filename>
   in the first section of the obey file.

2) MAKTRAN
   gcc option -mcpu-arm710 is now -mcpu=arm710
   Added -strip-symbols and -no-strip-symbols options.
   These force the linker to keep or strip all symbol
   information (including debug symbol info).  If both
   are omitted then symbols are striped for release
   builds only.


Version 0.01.033
================
(Made by Morgan, 24th June 1996)

1) MAKTRAN
   The -m6 flag on the CPPFLAGS line has changed to
   -mcpu-arm710 -mapcs-32
   added -fvtable-thunks and
   removed -fno-implicit-templates


Version 0.01.032
================
(Made by Morgan, 20th June 1996)

1) PETRAN, ROMBUILD
   Bug fix:  Relocations for the .rdata section were 4 bytes out
   when the executable had a .rdata section and no imports.

   PETRAN now performs a sanity check on all virtual addresses, and
   lists the dubious ones.

2) MAKTRAN
   Made the error messages more descriptive when the .MAK file
   doesn't contain one of the expected targets.


Version 0.01.031
================
(Made by Morgan, 12th June 1996)

1) PEDIFF
   syntax: PEDIFF pefile pefile
	   PEDIFF -e32 e32imagefile e32imagefile
   compares 2 PE/E32Image format files to see if they are identical
   ignoring all time/date stamps

2) PETRAN
   Another change to the E32Image file format to add a time stamp.


Version 0.01.030
================
(Made by Morgan, 11th June 1996)

1) PETRAN, ROMBUILD
   Fixes to supply more information for the ram loader.
   (ie. the size of the import section)
   Documentation for the E32 Image file format is available from
   the 'E32Base' Notes database.


Version 0.01.029
================
(Made by Morgan, 7th June 1996)

1) PETRAN
   Added the command line switches:
     -stack <stack size>
     -uid<n> <uid>
   for setting the stack size and the file's uids

   The output of PETRAN has changed to the new E32Image file
   format giving a (seasonally adjusted) size reduction of between
   20 and 40 bytes.

2) ROMBUILD
   Uses the new E32Image file format.
   Added heap size, and uids to the file modifiers
   file = <src PE file> <dest EPOC file> [attributes]*
       where 'attributes' is
       attrib = [r|s|h|R|S|H]+
       stack = <stack size>
       reloc = <specific relocation address>
       heapmax = <heap size>
       heapmin = <heap size>
       uid<n> = <uid>
   Files in the rom are now read-only (R) by default (use
   attrib=r to make them read/write)

   Made filename and import/export name compares case insensitive

3) DEFMAKE
   DEFMAKE now accepts Alpha CPU PE Files


Version 0.01.028
================
(Made by Morgan, 30th May 1996)

1) MAKTRAN
   added a -g flag to pass extra parameters to the gcc command line
   eg.
   -g-fcheck-new
   adds: -fcheck-new to CPPFLAGS and
   -g"-fcheck-new -fsigned-char"
   adds: -fcheck-new -fsigned-char


Version 0.01.027
================
(Made by Morgan, 29th May 1996)

1) ROMBUILD
   Changed the format of the 'file' keyword to allow overriding of 
   various file attributes.
   New format is:
   file = <src PE file> <dest EPOC file> [attributes]*
       where 'attributes' is
       attrib = [r|s|h]+
       stack = <stack size>
       reloc = <specific relocation address>

   The -s switch now lists file sizes in the same order as files
   occur in the obey file.

   Fixed a problem with reading relocations when the PE format file
   lies about the VirtualSize of the section.

2) MAKTRAN
   Removed the -s flag from the linking stage of debug builds
   to keep gcc generated debug information.

3) DEFTOOL
   Improved error reporting.

4) General
   Removed the dependencies on TRomExeHeader and TRomDllHeader
   (from the header files of E32(059)) which are now defunct
   so the tools build properly with E32(060).
   Removed some of the dead code left over from E32ROM


Version 0.01.026
================
(Made by Morgan, 24th May 1996)

1) ROMBUILD
   Altered the size summary output to include data files.
   Currently the files are listed in depth first directory
   order.  I intend to change this so they appear in the
   same order as they appear in the obey file.

2) PETRAN
   Fixed a bug that crashed the translator when the size of the
   relocation section of an executable was a multiple of 0x200
   (the PE format file alignment size.)

3) MAKTRAN
   Added a CLEAN target.


Version 0.01.025
================
(Made by Morgan, 23rd May 1996)

1) E32ROM has been killed

2) ROMBUILD replaces E32ROM
   Syntax: ROMBUILD [-v] [-s] obeyfilename
   -v verbose flag
   -s gives a size summary of all executables in the rom
   Logged output appears in the file ROMBUILD.LOG

   The obey files for ROMBUILD are slightly different:
   The keyword 'resource' has been replaced with 'data' for
   putting data files in rom.
   A manditory keyword 'kernheapmax' has been added.
   The 'version' keyword has the syntax Major[.Minor[(Build)]]

3) PETRAN
   Produces E32ImageFile format files from PEFiles.

4) Jal,
   E32UID
   Attaches UIDs to WINS files.


Version 0.01.024
================
(Made by Morgan, 14th May 1996)

1) DEFMAKE, DEFTOOL and MAKTRAN
   Added -z switch to specify a frozen def file.
   The exports in the frozen def file appear first (and in order)
   in the new def file.  All additional exports are added to the
   end.
   A warning will be give if an export in the frozen def file
   does not appear in the executable being processed.


Version 0.01.023
================
(Made by Morgan, 3rd May 1996)

1) Jane
   Added space for the Uid system to the Rom Exe and DLL headers.


Version 0.01.022
================
(Made by Morgan, 1st May 1996)

1) E32ROM:
   Added path checking so now it is not possible to create
   directories with the name ""
   The version specified by the obey file is now put into the rom.

2) MAKTRAN:
   /f switch added to specify the name of the function to use as
   the first ordinal in the dll. (only works with /d switch).
   More looping bugs fixed.  This time in the Archive generation.
   Added some meagre form of test suit:  DIFs good .ARM files
   with files generated from the current version.
   Put in the work-around for the "ld hardcoded to C:" problem.


Version 0.01.021
================
(Made by Morgan, 23rd April 1996)

1) MAKTRAN bug fixes:
   Added gcc -g option to the debug builds to produce debug output.
   Fixed HA-103:  Now rules are only output for .cpp files
   Having a .. or a . in the path for a source file 
   (eg SOURCE=.\T_BLOB.CPP) no longer puts MAKTRAN into an endless
   loop.  Also using system variables in path specifiers
   (eg {($INCLUDE)}"\AHeader.H" ) no longer fills your hard disk.
   Source files with no dependancies now generate a target.


Version 0.01.020
================
(Made by Morgan, 11th April 1996)

   E32ROM:
1) Jal,
   The 'resource' option is fixed and the rom is given the correct
   date.

2) Jane,
   Added an error message if you don't supply enough parameters on
   any line in the files section.


Version 0.01.019
================
(Made by Graham, 8th April, 1996)

1) Changed MAKTRAN-created makefile compiler options:

   Added -fno-implcit-templates
   In the past GCC automatically instantiated template classes and
   functions. We now want to take complete control of this, so all
   such templates will have to be instantiated by hand. There is an
   extra switch (/T) on the command line which enables automatic
   template instantiation to be turned back on, but this should only
   be used when compiling test programs. Releasable code should take
   advantage of the reduction in ROM size which hand-instantiation
   brings.

   Removed -fvtable-thunks
   Those programs which exploit multiple-inheritence should now work.

   Added $(USERDEFS)
   This enables you to add your own definitions to the build.
   e.g. nmake /f elink.mak USERDEFS=-D_USE_LOG

2) Changed MAKTRAN-created makefile linker options:

   Added --no-whole-archive option
   This should greatly improve the size and linking speed DLL's. In
   order to exploit this, you must get the next release of the GCC
   tools from the network. Do this by typing TOOLS GCC and making
   sure that \GCC\BIN is in your path.

3) Fixed a bug with MSVC .MAK files which contain custom builds


Version 0.01.018
================
(Made by Morgan, 3rd April, 1996)

1) Extended DEFTOOL to take a -f switch (takes the name of the
   function to be ordinal 1).


Version 0.01.017
================
(Made by Graham, 26th March, 1996)

1) Fixed a bug in E32ROM which gave "relocation type not handled" in
   the presence of .reloc sections which were an exact multiple of
   256 bytes in length.

2) Fixed the MAKTRAN "if exist xxx.in del xxx.in" bug

3) Added DEB, UREL and UDEB builds to MAKTRAN make files

Jane:

4) Better error reporting in E32ROM.EXE


Version 0.01.016
================
(Made by Graham, 19th March, 1996)

1) Fixed a bug in targetting some test program make files.
2) Changed "del xxx.in" to "if exist xxx.in del xxx.in"

Lane:

3) Changed the mechanism by which libraries to be linked are found.

Jane:

4) Further improvements to the error reporting for DEFMAKE.


Version 0.01.015
================
(Made by Graham, 8th March, 1996)

1) Changed all tools to display their version and build numbers.

Jane:

2) Fixed a couple of heap problems in E32ROM, and generally increased robustness. 
   Will now print an error message if there are too many files for the ROM,
   rather than scribbling all over your nice memory.

3) Improved some of the error reporting for DEFMAKE.

Version 0.01.014
================
(Made by Graham, 6th March, 1996)

1) Changed MAKTRAN to accept makefiles which have depenencies ..\..\
   away from their source directory.

Version 0.01.013
================
(Made by Graham, 5th March, 1996)

1) Changed MAKTRAN to accept makefiles which are completely relative to
   the directory in which they reside. NB These makefiles cannot be
   correctly translated if they are moved to a different directory.

Version 0.01.012
================
(Made by Graham, 4th March, 1996)

1) Changed MAKTRAN to assume DEFTOOL.EXE is in your path
2) Changed MAKTRAN so that it correctly sets __DLL__ and __EXE__
3) Changed MAKTRAN to handle specially named DLL's - .DEV .MTD etc
4) Changed MAKTRAN to handle projects with non-compilable components
5) Changed the mechanism by which MAKTRAN decides group and project.

Version 0.01.011
================
(Made by Graham, 27th February, 1996)

1) Changed E32ROM to give each .EXE an 8K Stack
2) Fixed bugs in MAKTRAN to do with picking up the name of the target
3) Removed --whole-archive from .EXE make files built by MAKTRAN

Version 0.01.010
================
(Made by Jane, 26th February, 1996)

1) Fixed mnd.cmd for command line builds

Version 0.01.009
================
(Made by Jane, 23rd February, 1996)

1) Switched to Visual C++ 4.0

2) E32ROM - Added support for REM statement in obeyfiles

3) E32ROM - Fixed an obeyfile init bug which became apparent under the new compiler

4) DEFMAKE & E32ROM - added support for export table being in .rdata section, as it is
   now with Visual C++. (Export table in .edata is still supported.)

5) DEFMAKE - added -q option which surrounds symbols names in "". This is mostly needed by
   gcc builds where all destructors have a full stop in their name.

6) First release of MAKTRAN and DEFTOOL from Lane
	MAKTRAN converts msvc .mak files to gcc format.
	DEFTOOL is used by MAKTRAN to strip out garbage from .def files
		and to insert "NONAME" as required by gcc.
	For MAKTRAN usage type "MAKTRAN".

7) E32ROM - in log now displays absolute ROM addresses rather than offsets, and for text only

Version 0.01.008
================
(Made by Jane, 31st January, 1996)

1) Removed support for old time class


Version 0.01.007
================
(Made by Jane, 8th January, 1996)

1) Changed to new time class


Version 0.01.006
================
(Made by Jane, 21st December 1995)

1) Added versions to tools

2) E32ROM - Changed heap min size for apps to 32k.

3) E32ROM - Exits with error if files fail to fixup due to importing by name


Version 0.01.004/005
====================
(Made by Jane, 15th November 1995)

1) Added -R option to DEFMAKE so that the omission of ??__Dbg names in the .DEF
   (release 003, (1)) can be optional.

2) DEFMAKE alone now prints the meaning of the switches as well as help text.

Version 0.01.003
================
(Made by Jane, 7th November 1995)

1) Changed DEFMAKE not to write any exports after it hits the first
   ??__Dbg prefixed name, allowing me to automate the E32 build
   completely.

2) E32ROM - Added code to avoid overwriting the first byte of a file if presented
   with an invalid RVA of 0. (Bug in Cygnus tools).

Version 0.01.002
================
(Made by Jane, 2nd November 1995)

1) Converted DEFMAKE to the new HOST scheme.

2) Sorted MNT.CMD so E32ROM will actually build.


Version 0.01.001
================
(Made by Jane, 1st November 1995)
1) First release.

