MPS issue job001944

TitleMPS lacks separate w3i3m9 platform for building with VC9 (Microsoft Visual C++ 9.0)
Statusclosed
Priorityessential
Assigned userRichard Kistruck
OrganizationRavenbrook
DescriptionMPS 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)
AnalysisRHSK 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 foundunknown
EvidenceNone
Observed in1.108.2
Introduced in1.108.2
Created byRichard Kistruck
Created on2008-10-22 17:35:05
Last modified byRichard Kistruck
Last modified on2008-10-23 15:47:25
History2008-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