Ravenbrook / Projects / Memory Pool System / Issues


MPS issue job001944

Title:MPS lacks separate w3i3m9 platform for building with VC9 (Microsoft Visual C++ 9.0)
Status:closed
Priority:essential
Assigned user:Richard Kistruck
Organization:Ravenbrook
Description:MPS lacks separate platform for building with VC9 (Microsoft Visual C++ 9.0)
A separate platform allows:
  - experimenting with different compiler and linker options;
  - makes it easier and safer to build both VC6 and VC9 versiosn and compare.

Related jobs:
job001945 "MPS buildsys CONFIG_PF_* does not select a platform, is not checked by mpstd.h"
(provides automatic checking of compiler version)
Analysis:RHSK 2008-10-22
Making a new separate w3i3m9 platform in the MPS buildsys has many
advantages:
  - keeps build products separate;
  - allows verification of _MSC_VER, to check that the intended
    compiler really is being used;
  - records in mps.lib which compiler it was built with;
  - is not betting on the VC6/VC9 split going away any time soon.

(The alternative is manually moving and renaming directories and
build products in-sync with manually selecting between VC6 and VC9
compilers. This is error-prone.)

MPS buildsys is simple: for example there is no notion of
closely-related 'builders'. Several source files ifdef on
"MPS_BUILD_MV"; these ifdefs must be selected for both VC6 and VC9;
it would be onerous to change them.

Therefore the new w3i3m9 is NOT a full new platform: it is a
'clone-platform' that is a clone of w3i3mv. The both define
"MPS_BUILD_MV", and so to most MPS source code they appear identical.

Therefore the only differences between w3i3mv and w3i3m9 are:
  - in the buildsystem;
  - in mpstd.h;
  - in the value of the "MPS_PF_STRING" preprocessor symbol.

If, in the long-term, both platforms are still required, this design
decision might need re-evaluation. Splitting MPS_BUILD_MV into
_MV and _M9, and the consequent source code changes, would make
w3i3m9 a full platform.

(More likely is that they will merge back into w3i3mv, with compiler
options that work for both).
How found:unknown
Evidence:None
Observed in:1.108.2
Introduced in:1.108.2
Created by:Richard Kistruck
Created on:2008‑10‑22 17:35:05
Last modified by:Richard Kistruck
Last modified on:2008‑10‑23 15:47:25
History:2008-10-22 RHSK Created.

Fixes

Change Effect Date User Description
166537 closed 2008‑10‑23 15:46:50 Richard Kistruck MPS master: manual/build-notes: w3i3m9 (Windows Visual C++ 9.0) platform
166505 closed 2008‑10‑20 17:31:57 Richard Kistruck MPS br/vc9: new w3i3m9 clone-platform:
- w3i3m9.nmk: use commpre9.nmk (not commpre.nmk), for VC9 compiler
  and linker options;
- w3i3m[v9].nmk: declare CONFIG_PF_...
- mpstd.h: if CONFIG_PF_... is declared, check that the correct
  compiler really is in use.
166504 open 2008‑10‑20 16:51:50 Richard Kistruck MPS br/vc9: new w3i3m9 clone-platform:
Regular changes w3i3mv ->w3i3m9
166500 open 2008‑10‑20 16:24:20 Richard Kistruck MPS br/vc9: new w3i3m9 clone-platform (not a full platform)
Clone w3i3mv.nmk -> w3i3m9
Clone w3build.bat -> w3vc9.bat

Generated at 2013-05-18 14:13:51 by $Id: //info.ravenbrook.com/infosys/cgi/issue.cgi#476 $

Copyright © Ravenbrook Limited. This document is provided "as is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this document. You may not duplicate or reproduce this document in any form without the express permission of the copyright holder.

Ravenbrook / Projects / Memory Pool System / Issues