--- a/imgtools/romtools/group/release.txt Wed Jun 16 16:51:40 2010 +0300
+++ b/imgtools/romtools/group/release.txt Wed Jun 23 16:56:47 2010 +0800
@@ -1,3680 +1,3826 @@
-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.
-
+Version 1.1.1 (fixupsym.pl)
+===============
+Released by Lorence Wang, 12/05/2010
+ 1) DPDEF145440 fixupsym cannot startup
+
+Version 2.17.3 (rombuild)
+Version 2.10.4 (rofsbuild)
+===============
+Released by Lorence Wang, 12/05/2010
+ 1) DPDEF145436 ROMBUILD and ROFSBUILD cannot take OBY filename from command line
+
+Version 2.17.2 (rombuild)
+===============
+Released by Lorence Wang, 05/05/2010
+ 1) DPDEF145420 rombuild fails on TB10.1 vasco_ui core image creation
+
+Version 2.10.3 (rofsbuild)
+===============
+Released by Lorence Wang, 29/04/2010
+ 1) DPDEF145380 Small letters are changing to capital letters in folder and file names
+ 2) DPDEF145381 Voide guidance file names are corrupted with following way
+
+Version 2.10.2 (rofsbuild)
+===============
+Released by Lorence Wang, 20/04/2010
+ 1) DPDEF145346 rofsbuild crashs if ROFS partition is too small
+
+Version 2.10.1 (rofsbuild)
+Version 2.17.1 (rombuild)
+===============
+Released by Ross Qin, 12/04/2010
+ 1) DPDEF145300 Rombuild hangs in S60 2010wk13 vasco_ui rom building
+
+Version 2.10.0 (rofsbuild)
+Version 2.17.0 (rombuild)
+===============
+Released by Ross Qin, 09/04/2010
+ 1) DPDEF145281 Paged meaning change
+
+Version 2.9.5 (rofsbuild)
+Version 2.16.1 (rombuild)
+===============
+Released by Ross Qin, 29/03/2010
+ 1) RDPDEF145196 rombuild/rofsbuild has extension rom/rofs recognition issues
+
+Version 2.16.0 (rombuild)
+===============
+Released by Ross Qin, 26/03/2010
+ 1) RM-RIM406-1232: BU: MAKSYMROFS Integration
+
+Version 2.9.4 (rofsbuild)
+===============
+Released by Lorence Wang, 25/03/2010
+ 1) DPDEF145165 S60 build break caused by latest Buildrom.
+
+Version 2.15.3 (rombuild)
+Version 2.9.3 (rofsbuild)
+===============
+Released by Zheng Shen, 16/03/2010
+ 1) DPDEF144882 buildrom, rombuild,rofsbuil -keepgoing option
+
+Version 2.15.2 (rombuild)
+Version 2.9.2 (rofsbuild)
+Version 2.2 build(2) (readimage)
+===============
+Released by Zheng Shen, 10/03/2010
+ 1) DPDEF144887 [System build] : NE1 smoketest not booting up for TB92SF_1069 vtb92sf build
+
+
+Version 2.15.1 (rombuild)
+Version 2.9.1 (rofsbuild)
+Version 2.2 build(1) (readimage)
+===============
+Released by Zheng Shen, 05/03/2010
+ 1) DPDEF144535 remove -fastcompress option for rombuild/rofsbuild
+
+Version 2.15.0 (rombuild)
+Version 2.9.0 (rofsbuild)
+Version 2.2 build(0) (readimage)
+Version 1.1.0 (maksym)
+Version 1.1.0 (maksymrofs)
+Version 1.1.0 (hpsym)
+Version 1.1.0 (fixupsym)
+===============
+Released by Zheng Shen, 22/02/2010
+ 1) DPDEF144562 Build Tools cannot be built in Linux
+
+Version 2.14.3 (rombuild)
+================
+(Made by Zheng Shen, 08/02/2010)
+ 1. DPDEF143270 -compress=paged is not supported by buildrom/rombuild
+
+Version 2.14.3 (rombuild)
+================
+(Made by Marvin Shi, 25/01/2010)
+ 1. DPDEF143859 Bitwise compatible bytepair algorithm update
+
+Version 2.8.4 (rofsbuild)
+================
+(Made by Marvin Shi, 19/01/2009)
+ 1. DPDEF143713 TSW error CSTI-7X4GHW: Buildtool creates invalid long names in FAT images
+ 2. DPDEF143834 Creating multiple rofs images encounters a problem and rofsbuild failed
+ 3. DPDEF143859 Bitwise compatible bytepair algorithm update
+
+Version 2.8.3 (rofsbuild)
+================
+(Made by Zheng Shen, 06/01/2009)
+ 1. DEF143442 rofsbuild hangs occasionally with -symbols
+
+Version 2.8.2 (rofsbuild)
+================
+(Made by Zheng Shen, 09/12/2009)
+ 1. DPDEF143314 rofsbuild cannot generate FAT16 files
+
+Version 1.0.1 (fixupsym)
+================
+(Made by Marvin Shi, 23/11/2009)
+ 1. DPDEF142869 Fixupsym failed for romutl.pm cannot be found
+
+Version 2.14.2 (rombuild)
+================
+(Made by Marvin Shi, 18/11/2009)
+ 1. DEF142972 buildrom produces garbled logs
+
+Version 2.8.1 (rofsbuild)
+================
+(Made by Marvin Shi, 17/11/2009)
+ 1. DPDEF142921 TSW error CSTI-7X4GHW: Buildtool creates invalid long names in FAT images
+
+
+Version 2.8.0 (rofsbuild)
+================
+(Made by Marvin Shi, 13/11/2009)
+ 1. RM-RIM406-1233: BU: MAKSYMROFS Integration
+Version 2.7.0 (rofsbuild)
+===============
+Made by Zhi Dou 03/11/2009
+
+1. RM-RIM406-1228: BU: ROFSBUILD Cache
+
+Version 2.14.1 (rombuild)
+===============
+Made by Zhi Dou 02/11/2009
+
+1. DEF142739 - rombuild.exe displays bogus error messages when trailing REM statement present
+
+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.
+