From 36dd1ada0f685a04881773ba047efefea3fc2bac Mon Sep 17 00:00:00 2001
From: Peter Jackson
Date: Mon, 29 Aug 2011 13:09:37 +0100
Subject: [PATCH] Mainline changes to make a standard nt build environment
based on nt6.1
(Windows7) and its SDK. The w3i3m9 pseudo platform has been removed and
w3i3mv adjusted for this framework.
Copied from Perforce
Change: 175966
ServerID: perforce.ravenbrook.com
---
mps/code/commpre.nmk | 17 +--
mps/code/mpstd.h | 39 ++----
mps/manual/build-notes/index.html | 47 +++++++-
mps/readme.txt | 192 +++++++++++++++---------------
mps/tool/test-runner.py | 46 ++++---
5 files changed, 188 insertions(+), 153 deletions(-)
diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk
index 66a3cf2965c..05bfb422671 100644
--- a/mps/code/commpre.nmk
+++ b/mps/code/commpre.nmk
@@ -128,7 +128,9 @@ CFLAGSCOMMONPRE = /nologo /W4 /WX $(PFMDEFS) $(CFLAGSTARGETPRE)
CFLAGSCOMMONPOST = $(CFLAGSTARGETPOST)
# Flags for use in the variety combinations
-CFLAGSHOT = /Ox /DNDEBUG
+CFLAGSHOT = /O2 /DNDEBUG
+# (above /O2 (maximise speed) used to be set to /Ox
+# (maximise optimisations) in for tool versions before VS 9)
# We used to have /GZ here (stack probe).
# Note that GZ is specific to version 12 of the cl tool. drj 2003-11-04
# It is ignored on earlier versions of the cl tool.
@@ -158,7 +160,8 @@ CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL)
# %%VARIETY: define a macro containing the flags for the new variety
LINKER = link
LINKFLAGSCOMMON = /nologo
-LINKFLAGSINTERNAL = /DEBUG:full
+LINKFLAGSINTERNAL =
+# ( Internal flags used to be set to /DEBUG:full )
LINKFLAGSEXTERNAL = /RELEASE
LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL)
@@ -202,18 +205,18 @@ LIBFLAGSTI =
# Copyright (C) 2001-2002 Ravenbrook Limited .
# All rights reserved. This is an open source license. Contact
# Ravenbrook for commercial licensing options.
-#
+#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
-#
+#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
-#
+#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
-#
+#
# 3. Redistributions in any form must be accompanied by information on how
# to obtain complete source code for this software and any accompanying
# software that uses this software. The source code must either be
@@ -224,7 +227,7 @@ LIBFLAGSTI =
# include source code for modules or files that typically accompany the
# major components of the operating system on which the executable file
# runs.
-#
+#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h
index fb721e8bdda..c7360ed942c 100644
--- a/mps/code/mpstd.h
+++ b/mps/code/mpstd.h
@@ -26,27 +26,27 @@
*
* Sometimes the platform is *already* known by the buildsystem:
* - the Global Graphics buildsystem always sets CONFIG_PF_*.
- * - the Ravenbrook buildsystem knows the platform and may (but
+ * - the Ravenbrook buildsystem knows the platform and may (but
* typically does not) set CONFIG_PF_*.
*
* Regardless of this, mpstd.h still attempts to detect the platform.
- * (This is intentional). However if both CONFIG_PF_* and
+ * (This is intentional). However if both CONFIG_PF_* and
* CONFIG_PF_STRING are set, then mpstd.h performs a third function:
- * 3. checking that the detected platform corresponds to that
+ * 3. checking that the detected platform corresponds to that
* specified by CONFIG_PF_*.
*
- * Sometimes no MPS buildsystem is in use, so the platform *must*
- * be detected. For example, when client software #includes mps.h,
- * we want it to just work out of the box with whatever compiler is
- * being used. In other words we do not require the client to define
+ * Sometimes no MPS buildsystem is in use, so the platform *must*
+ * be detected. For example, when client software #includes mps.h,
+ * we want it to just work out of the box with whatever compiler is
+ * being used. In other words we do not require the client to define
* CONFIG_PF_*.
- * (This is the case that justifes mpstd.h doing platform detection
- * by looking at preprocessor symbols; otherwise we'd simply use
+ * (This is the case that justifes mpstd.h doing platform detection
+ * by looking at preprocessor symbols; otherwise we'd simply use
* CONFIG_PF_*).
*
* mpstd.h fails if it cannot detect the platform (even if CONFIG_PF_*
- * is specified). This is intentional. mpstd.h does *not* allow
- * CONFIG_PF_* to override the platform as detected from preprocessor
+ * is specified). This is intentional. mpstd.h does *not* allow
+ * CONFIG_PF_* to override the platform as detected from preprocessor
* symbols. This is intentional.
*
* References:
@@ -127,23 +127,6 @@
#define MPS_WORD_SHIFT 5
#define MPS_PF_ALIGN 4
-/* w3i3m9 clone-platform, differs from w3i3mv only in MPS_PF_STRING
- * and compiler options.
- */
-
-#elif defined(_MSC_VER) && (_MSC_VER >= 1500) && defined(_WIN32) && defined(_M_IX86)
-#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_W3I3M9)
-#error "specified CONFIG_PF_... inconsistent with detected w3i3m9"
-#endif
-#define MPS_PF_W3I3MV
-#define MPS_PF_STRING "w3i3m9"
-#define MPS_OS_W3
-#define MPS_ARCH_I3
-#define MPS_BUILD_MV
-#define MPS_T_WORD unsigned long
-#define MPS_WORD_WIDTH 32
-#define MPS_WORD_SHIFT 5
-#define MPS_PF_ALIGN 8
/* Visual C++ 2.0, Books Online, C/C++ Book, Preprocessor Reference,
* Chapter 1: The Preprocessor, Macros, Predefined Macros.
diff --git a/mps/manual/build-notes/index.html b/mps/manual/build-notes/index.html
index cedf1fb05aa..6b21c56257e 100644
--- a/mps/manual/build-notes/index.html
+++ b/mps/manual/build-notes/index.html
@@ -45,7 +45,7 @@
This document is not confidential.
-
+
+
+Related documents
+
+
+- readme.txt
+-
+This contains notes on building the MPS from a "kit".
+
+
+-
+MPS build system
+
+-
+Brief notes on the keywords used in the build system commands.
+
+
+-
+MPS product procedures
+
+-
+Links to separate procedures for making builds for a release.
+
+
+
+
+
+
+
Platform support
@@ -256,16 +284,20 @@ This platform is a clone of w3i3mv; the only differences are:
use w3i3m9.nmk (not w3i3mv.nmk) to build it;
the MPS_PF_STRING in version.c is "w3i3m9" (not "w3i3mv").
-The only reason for this to be separate from the w3i3mv platform is
+The only reason for this to be separate from the w3i3mv platform was
to enable builds with version 6.0 and version 9.0 compilers to be
-kept separate, to enable performance comparisons. The w3i3m9
-clone may merge back into w3i3mv in the future.
+kept separate, to enable performance comparisons.
+
See
<ravenbrook.com/project/mps/issue/job001944/>
-
+
+2011-08
+The w3i3m9 platform has been withdrawn from the mainline and w3i3mv
+is once again the master NT platform.
+
The Windows linker can accept a .def file to allow re-export of MPS
functions from a client executable that includes the MPS, such that
@@ -302,6 +334,9 @@ See
2011-08-18 PNJ
Converted to HTML so the hyperlinks work, ready for further
enhancements.
+2011-08-28 PNJ
+w3i3m9 platform withdrawn. Mainline now focussed on NT6.1 and its
+SDK as its Windows build platform.
diff --git a/mps/readme.txt b/mps/readme.txt
index 944cfb24748..4264ab99013 100644
--- a/mps/readme.txt
+++ b/mps/readme.txt
@@ -52,6 +52,12 @@ This document is not confidential.
record of changes. In a release of the MPS-Kit, this section becomes
the summary of what is new for that release.)
+2011-08
+ Master change to standardise on an NT build environment of
+ NT6.1 (Windows 7) and it its SDK version 7.1. Previous versions
+ of Windows that are still supported by Microsoft can be accomodated
+ through this framework if required.
+
[
After a release, bracket the previous section, and start a new section like this:
@@ -70,14 +76,14 @@ Changes from release 1.109.0:
Functional changes to MPS code:
-Improvement: return virtual memory (address space) from
-mps_arena_class_vm to the operating system, when complete chunks are
-unused after a garbage collection. Whether, and how much, virtual
-memory is returned depends on many factors. Small chunks may be more
-likely to be returnable than big chunks. The mps_arena_vm_growth()
-function controls the size of chunks by which VM arena may grow. The
-default, if this function is never called, is for new chunks to be the
-same size as the original arena created by mps_arena_create(), if
+Improvement: return virtual memory (address space) from
+mps_arena_class_vm to the operating system, when complete chunks are
+unused after a garbage collection. Whether, and how much, virtual
+memory is returned depends on many factors. Small chunks may be more
+likely to be returnable than big chunks. The mps_arena_vm_growth()
+function controls the size of chunks by which VM arena may grow. The
+default, if this function is never called, is for new chunks to be the
+same size as the original arena created by mps_arena_create(), if
possible.
@@ -89,22 +95,22 @@ Functional changes to MPS code:
Defects discovered in mps_message_type_gc_start lifecycle:
- - enabling mps_message_type_gc_start and then failing to promptly
- mps_message_get the resulting messages could corrupt the MPS
+ - enabling mps_message_type_gc_start and then failing to promptly
+ mps_message_get the resulting messages could corrupt the MPS
message queue;
- - a corrupted message queue could cause an assert, incorrect
- behaviour, or an infinite loop, when getting or discarding
+ - a corrupted message queue could cause an assert, incorrect
+ behaviour, or an infinite loop, when getting or discarding
messages, or when calling mps_arena_destroy;
- - also, the _gc_start message could change while the client read it,
+ - also, the _gc_start message could change while the client read it,
and the message for a new GC start could be silently skipped.
Fixed: redesign _gc_start message lifecycle:
- - if mps_message_type_gc_start is enabled, a separate GC start
- message is issued for each collection, as long as there is
+ - if mps_message_type_gc_start is enabled, a separate GC start
+ message is issued for each collection, as long as there is
sufficient memory to create the message;
- - these messages will be queued indefinitely until the client gets
+ - these messages will be queued indefinitely until the client gets
and discards them;
- - therefore: a client that enables mps_message_type_gc_start must
- call mps_message_get() and mps_message_discard() to get and
+ - therefore: a client that enables mps_message_type_gc_start must
+ call mps_message_get() and mps_message_discard() to get and
discard these messages;
- warning: failure to do so will eventually exhaust memory.
@@ -112,28 +118,28 @@ Fixed: redesign _gc_start message lifecycle:
New features to inform client of activity and timing of collections:
mps_message_clock():
- - for a _gc_start or _gc message, returns the time at which the
+ - for a _gc_start or _gc message, returns the time at which the
MPS posted it; see Reference Manual for documentation;
mps_alert_collection_set():
- - set a client-supplied function which the MPS will synchronously
+ - set a client-supplied function which the MPS will synchronously
call when a collection begins or ends;
- - there are restrictions on what the client-supplied function is
- permitted to do; please ask Ravenbrook if you require further
+ - there are restrictions on what the client-supplied function is
+ permitted to do; please ask Ravenbrook if you require further
details.
-Improvement: reduce the risk of ambiguous retention, when the client
+Improvement: reduce the risk of ambiguous retention, when the client
allocates large objects in mps_class_amc and mps_class_amcz.
Defect discovered:
- collections run too slow if client allocates big objects.
Fix:
- - improved collection scheduling, when client allocates large
+ - improved collection scheduling, when client allocates large
objects.
-New features for client to determine pool or format, given object
+New features for client to determine pool or format, given object
address:
mps_addr_pool()
mps_addr_fmt()
@@ -143,14 +149,14 @@ Other changes:
-MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
+MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
See manual/build-notes.
-Configura releases include a .def file to allow re-export of MPS
-functions from a client executable that includes the MPS, such that
+Configura releases include a .def file to allow re-export of MPS
+functions from a client executable that includes the MPS, such that
other client DLLs can link to and call those MPS functions.
See also manual/build-notes.
]
@@ -162,60 +168,60 @@ Functional changes to MPS code:
Defect discovered:
- - when using an auto_header format (mps_fmt_create_auto_header)
- with AMC pools (mps_class_amc), the MPS leaks a small amount of
+ - when using an auto_header format (mps_fmt_create_auto_header)
+ with AMC pools (mps_class_amc), the MPS leaks a small amount of
memory on each collection.
Impact:
- - the leak is likely to be a few bytes per collection, and at most
- one byte per page (typically 2^12 bytes) of the address-space
+ - the leak is likely to be a few bytes per collection, and at most
+ one byte per page (typically 2^12 bytes) of the address-space
currently in use for objects in AMC pools;
- - the leak is of temporary memory that the MPS uses to process
- ambiguous references (typically references on the stack and in
- registers), so a larger stack when a collection starts will
+ - the leak is of temporary memory that the MPS uses to process
+ ambiguous references (typically references on the stack and in
+ registers), so a larger stack when a collection starts will
tend to cause a larger leak;
- - the leaked bytes are widely-spaced single bytes which therefore
+ - the leaked bytes are widely-spaced single bytes which therefore
also cause fragmentation;
- - the leaked bytes are not reclaimed until the client calls
+ - the leaked bytes are not reclaimed until the client calls
mps_arena_destroy().
Fixed: correctly release all of this temporary memory.
Defect discovered:
- AMC pools (mps_class_amc) temporarily retain the memory that was
- used for a dead object, if there is an ambiguous reference (such
- as a value on the stack) that happens to point at the interior of
+ used for a dead object, if there is an ambiguous reference (such
+ as a value on the stack) that happens to point at the interior of
the (dead) object.
Impact:
- - if the (dead) object was small- or medium-sized, this temporary
+ - if the (dead) object was small- or medium-sized, this temporary
retention is unlikely to cause a problem;
- if the (dead) object was very large, then this retention is more
likely, and will retain a large amount of memory;
- - if many large objects are allocated, this retention can cause
+ - if many large objects are allocated, this retention can cause
memory to be exhausted when it should not be.
Fix:
- - it is usually possible for AMC pools to free the memory
- immediately (that is, during the collection that identifies the
+ - it is usually possible for AMC pools to free the memory
+ immediately (that is, during the collection that identifies the
object as being dead), and AMC pools now do so;
Future work:
- - occasionally, there are adjacently located objects that are
+ - occasionally, there are adjacently located objects that are
ambiguously referenced and are not dead;
- - in this case it is not possible to free the memory immediately,
- and so temporary retention still occurs (this is not expected to
+ - in this case it is not possible to free the memory immediately,
+ and so temporary retention still occurs (this is not expected to
be very common).
- - however, the MPS could prevent this by avoiding locating small
+ - however, the MPS could prevent this by avoiding locating small
objects adjacent to very large objects, see:
Further changes to arena growth (see notes below for version 1.108.1).
-When the arena cannot grow by the desired increment, the MPS
-attempts successively smaller increments, but with a more fine-grained
-search than in version 1.108.1, thereby achieveing an increment that
-more closely matches the largest available chunk of remaining
+When the arena cannot grow by the desired increment, the MPS
+attempts successively smaller increments, but with a more fine-grained
+search than in version 1.108.1, thereby achieveing an increment that
+more closely matches the largest available chunk of remaining
address-space.
New interface function mps_arena_vm_growth(). This function allows
-the client more control over how a VM arena (mps_arena_class_vm)
-grows. The interface is under development and is likely to change;
+the client more control over how a VM arena (mps_arena_class_vm)
+grows. The interface is under development and is likely to change;
please contact us if you would like further details.
]
@@ -226,22 +232,22 @@ Functional changes to MPS code:
Limitation:
- - if a VM arena (of mps_arena_class_vm) needed to be extended,
- and the attempt to extend it was refused by the OS (usually
- because the requested address-space was not available), MPS
+ - if a VM arena (of mps_arena_class_vm) needed to be extended,
+ and the attempt to extend it was refused by the OS (usually
+ because the requested address-space was not available), MPS
would not try a smaller extension.
-Fixed: MPS now tries to extend the arena by successively smaller
+Fixed: MPS now tries to extend the arena by successively smaller
amounts, until the extension succeeds.
Defect discovered:
- - internal memory-protection state in AMC pools (mps_class_amc)
- was incorrect for a brief period of time during a collection,
+ - internal memory-protection state in AMC pools (mps_class_amc)
+ was incorrect for a brief period of time during a collection,
which could (theoretically) have caused an assert and failure.
However:
- - during this brief period, the MPS protection cache masks the
- defect. As a result, we believe this defect is unlikely to be
- observed in practice (and we have no evidence that it has
+ - during this brief period, the MPS protection cache masks the
+ defect. As a result, we believe this defect is unlikely to be
+ observed in practice (and we have no evidence that it has
ever occurred in practice).
Fixed: maintain memory-protection state correctly in AMC pools.
@@ -250,14 +256,14 @@ Other changes:
- in the Mac OS X (PowerPC) build, remove outdated compiler flags.
-The MPS diagnostic system -- which produces diagnostic output for the
-purpose of helping MPS programmers and client-code programmers -- is
+The MPS diagnostic system -- which produces diagnostic output for the
+purpose of helping MPS programmers and client-code programmers -- is
undergoing improvement. Some early documentation is at
There is a new build variety "di" that emits diagnostics.
-Note: for further details of this release (including a 'live' report
-of defects found after these release-notes were written), and details
+Note: for further details of this release (including a 'live' report
+of defects found after these release-notes were written), and details
of earlier and later releases, please see:
]
@@ -269,40 +275,40 @@ Functional changes to MPS code:
Defect discovered:
- - an assert could, rarely, be incorrectly triggered when a pool
+ - an assert could, rarely, be incorrectly triggered when a pool
of mps_class_amc is in a constrained memory condition.
-Fixed: in this rare case, calculate a certain value correctly,
- such that the assert which checks it is not incorrectly
+Fixed: in this rare case, calculate a certain value correctly,
+ such that the assert which checks it is not incorrectly
triggered.
Defect discovered:
- - finalization messages could suffer an unnecessary delay, of
- several full collections (in the worst case), if there were
+ - finalization messages could suffer an unnecessary delay, of
+ several full collections (in the worst case), if there were
more than 1024 finalization-registered objects;
-Fixed: the number of finalization-registered objects should
- no longer cause such a delay, so more finalization messages
+Fixed: the number of finalization-registered objects should
+ no longer cause such a delay, so more finalization messages
are likely to be produced by a single collection.
- - on Mac OS X (PowerPC and Intel), MPS now has memory-protection
+ - on Mac OS X (PowerPC and Intel), MPS now has memory-protection
code, so collections are much faster.
- - on Mac OS X (Intel), MPS now has stack-scanner code, so the
- stack may be declared an ambiguous root. (Note: there was
+ - on Mac OS X (Intel), MPS now has stack-scanner code, so the
+ stack may be declared an ambiguous root. (Note: there was
already a stack-scanner for Mac OS X PowerPC).
- - on Mac OS X (PowerPC and Intel), MPS now has locking code, so
- multiple client threads may use the MPS. (But note: the thread
- module has not been implemented for Mac OS X, so threads may
+ - on Mac OS X (PowerPC and Intel), MPS now has locking code, so
+ multiple client threads may use the MPS. (But note: the thread
+ module has not been implemented for Mac OS X, so threads may
not yet have their stacks as roots, I think. See:
).
-
+
Defect discovered:
- - a macro used only in asserts was incorrect; this could have made
+ - a macro used only in asserts was incorrect; this could have made
some checks ineffective.
Fixed: corrected the macro.
@@ -315,7 +321,7 @@ Other changes:
- now builds on Linux.
- - on Mac OS X (Intel) default "all" build works (fix broken
+ - on Mac OS X (Intel) default "all" build works (fix broken
compile of amsss stress test).
]
@@ -327,15 +333,15 @@ Functional changes to MPS code:
Defect discovered:
- if there was a pool of pool-class LO (leaf-only objects,
- see mps_class_lo), the mps_arena_formatted_objects_walk()
+ see mps_class_lo), the mps_arena_formatted_objects_walk()
call would fail.
Fixed: mps_arena_formatted_objects_walk() will now work.
- - when MPS starts a garbage collection, it now tells
+ - when MPS starts a garbage collection, it now tells
the client by posting a message of the new type
- mps_message_type_gc_start(). The message includes
- a textual explanation (for the client programmer)
+ mps_message_type_gc_start(). The message includes
+ a textual explanation (for the client programmer)
of why this collection was triggered.
@@ -346,7 +352,7 @@ Fixed: mps_arena_formatted_objects_walk() will now work.
Other changes:
- - the default "all" build now builds mps library and plinth, on
+ - the default "all" build now builds mps library and plinth, on
all platforms.
@@ -364,7 +370,7 @@ No functional changes to MPS implementation code.
Fixed
- the "mps.a" library does not (now) contain plinth files;
- therefore, if your MPS client code needs the example plinth
- ("mpsplan.a"), you must link with it explicitly to obtain
+ ("mpsplan.a"), you must link with it explicitly to obtain
_mps_lib_assert_fail, _mps_clock, etc;
- the default "all" build now succeeds on Unix-like platforms
(in 1.106.1 the "all" build only worked on Mac OS X).
@@ -381,7 +387,7 @@ Fixed
example/hello-world/index.txt
]
-For more information about the status and progress of the MPS project,
+For more information about the status and progress of the MPS project,
consult the project home-page: .
@@ -403,7 +409,7 @@ The top-level file "index.html" in the sources indexes many other files,
and is a good place to start. You should read the user manuals and the
high level design documents.
-A quick start to writing code that uses the MPS is the "hello-world"
+A quick start to writing code that uses the MPS is the "hello-world"
example:
example/hello-world/index.txt
@@ -606,9 +612,9 @@ B. DOCUMENT HISTORY
C. COPYRIGHT AND LICENSE
-Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
-All rights reserved. .
-This is an open source license.
+Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
+All rights reserved. .
+This is an open source license.
Contact Ravenbrook for commercial licensing options.
Redistribution and use in source and binary forms, with or without
diff --git a/mps/tool/test-runner.py b/mps/tool/test-runner.py
index 939501fbe43..014abe096e4 100755
--- a/mps/tool/test-runner.py
+++ b/mps/tool/test-runner.py
@@ -1,21 +1,24 @@
#!/usr/bin/python
-#How to test a release before shipping it to Configura
+# How to test a release before shipping it to Configura
-#You have a candidate release. This document tells you how to test it before shipping it -- quick tests.
-#Readership: all. Confidential: no. Status: rough notes.
-#Background: knowing the history of MPS development for Configura is an advantage.
-#Peer documents:
+# You have a candidate release. This document tells you how to test it
+# before shipping it -- quick tests.
+# Readership: all. Confidential: no. Status: rough notes.
+# Background: knowing the history of MPS development for Configura is
+# an advantage.
+# Peer documents:
# .
# .
-#What do we test?
-#Not much -- this procedure is for a quick test before shipping, principally to make sure that the build isn't crock in some way.
+# What do we test?
+# Not much -- this procedure is for a quick test before shipping,
+# principally to make sure that the build isn't crock in some way.
-#How to run the test:
-#You need python (eg. 2.3). Cd to where you would type w3build.bat.
-#Type ..\tool\test-runner.py
-#Each test should report "Conclusion: Failed to find any defects."
-#Also check full log placed in file a1.txt.
+# How to run the test:
+# You need python (eg. 2.3). Cd to where you would type w3build.bat.
+# Type ..\tool\test-runner.py
+# Each test should report "Conclusion: Failed to find any defects."
+# Also check full log placed in file a1.txt.
import os
@@ -50,6 +53,7 @@ def mpsplatformcode() :
# under Rosetta, so I'm not confident it's right).
arch = {'Power Macintosh':'pp',
'i386':'i3',
+ 'x86':'i3',
}[platform.machine()]
except :
# Windows specific hack. On Python 2.4 and 2.5 platform.machine
@@ -64,7 +68,7 @@ def mpsplatformcode() :
# Here, we simplify and get it right for Windows and Macs.
try :
compiler = {'xc':'gc',
- 'w3':'m9',
+ 'w3':'mv',
}[os]
except :
pass
@@ -76,10 +80,14 @@ def mpsplatformcode() :
mpsplatform = mpsplatformcode()
+print "mpsplatform = ", mpsplatform
+
+exit
+
make = ''
if mpsplatform[4:6] == 'gc' :
make = "make -r -f %s.gmk VARIETY=%%s %%s >> %%s" % mpsplatform
-elif mpsplatform[4:6] == 'm9' :
+elif mpsplatform[4:6] == 'mv' :
make = "nmake /f %s.nmk VARIETY=%%s %%s.exe >>%%s" % mpsplatform
run = ''
@@ -133,18 +141,18 @@ os.system("echo DONE")
* Copyright (C) 2005 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* 3. Redistributions in any form must be accompanied by information on how
* to obtain complete source code for this software and any accompanying
* software that uses this software. The source code must either be
@@ -155,7 +163,7 @@ os.system("echo DONE")
* include source code for modules or files that typically accompany the
* major components of the operating system on which the executable file
* runs.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR