From 80fe60df02b89cde78e1a4d99dc76745faee0204 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 30 Apr 2012 14:33:00 +0100 Subject: [PATCH] Added w3i6mv platform and fixed types of arguments to windows api functions for 64-bit. Copied from Perforce Change: 178063 ServerID: perforce.ravenbrook.com --- mps/code/arenavm.c | 7 +- mps/code/mpm.h | 16 +- mps/code/mpstd.h | 41 +++++ mps/code/protw3.c | 4 +- mps/code/vmw3.c | 10 +- mps/code/w3i6mv.nmk | 362 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 426 insertions(+), 14 deletions(-) create mode 100644 mps/code/w3i6mv.nmk diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 40a4d28a9b7..a271ca10acf 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -483,8 +483,13 @@ static Res VMArenaInit(Arena *arenaReturn, ArenaClass class, va_list args) vmArena->spareSize = 0; /* .blacklist: We blacklist the zones corresponding to small integers. */ + /* @@@@ (Addr)1 and (Addr)-1 don't correctly express the problem, that + we're trying to avoid false pointers from places that have had integers + stored. Also, this only avoids 1 and -1 and should probably avoid + other patterns, such as two 32-bit 1s in a 64 bit field. + Should probably use a union! RB 2012-03-26 */ vmArena->blacklist = - ZoneSetAdd(arena, ZoneSetAdd(arena, ZoneSetEMPTY, (Addr)1), (Addr)-1); + ZoneSetAdd(arena, ZoneSetAdd(arena, ZoneSetEMPTY, (Addr)1LL), (Addr)-1LL); for(gen = (Index)0; gen < VMArenaGenCount; gen++) { vmArena->genZoneSet[gen] = ZoneSetEMPTY; diff --git a/mps/code/mpm.h b/mps/code/mpm.h index 371319aeee6..979ccaec360 100644 --- a/mps/code/mpm.h +++ b/mps/code/mpm.h @@ -405,11 +405,14 @@ extern double TraceWorkFactor; #define TRACE_SCAN_BEGIN(ss) \ BEGIN \ - Shift SCANzoneShift = (ss)->zoneShift; \ - ZoneSet SCANwhite = (ss)->white; \ - RefSet SCANsummary = (ss)->unfixedSummary; \ - Word SCANt; \ - { + /* Check range on zoneShift before casting to Shift. */ \ + AVER((ss)->zoneShift < MPS_WORD_WIDTH); \ + { \ + Shift SCANzoneShift = (Shift)(ss)->zoneShift; \ + ZoneSet SCANwhite = (ss)->white; \ + RefSet SCANsummary = (ss)->unfixedSummary; \ + Word SCANt; \ + { /* Equivalent to MPS_FIX1 */ @@ -431,8 +434,9 @@ extern double TraceWorkFactor; /* Equivalent to MPS_SCAN_END */ #define TRACE_SCAN_END(ss) \ + } \ + (ss)->unfixedSummary = SCANsummary; \ } \ - (ss)->unfixedSummary = SCANsummary; \ END extern Res TraceScanArea(ScanState ss, Addr *base, Addr *limit); diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h index c7360ed942c..eb7021c4ba0 100644 --- a/mps/code/mpstd.h +++ b/mps/code/mpstd.h @@ -149,6 +149,30 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 8 + +/* Duplicated from W3I3MV, then... @@@@ + * "Predefined Macros" from "Visual Studio 2010" on MSDN + * . + * Note that Win32 includes 64-bit Windows! + */ + +#elif defined(_MSC_VER) && defined(_WIN32) && defined(_WIN64) && defined(_M_X64) +#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_W3I6MV) +#error "specified CONFIG_PF_... inconsistent with detected w3i6mv" +#endif +#define MPS_PF_W3I6MV +#define MPS_PF_STRING "w3i6mv" +#define MPS_OS_W3 +#define MPS_ARCH_I6 +#define MPS_BUILD_MV +#define MPS_T_WORD unsigned __int64 +#define MPS_T_LONGEST __int64 +#define MPS_T_ULONGEST unsigned __int64 +#define MPS_WORD_WIDTH 64 +#define MPS_WORD_SHIFT 6 +#define MPS_PF_ALIGN 16 /* @@@@ ref? */ + + /* MW C/C++/ASM Lang Ref (CW9), pp. 184-186. Metrowerks does not document * a way to determine the OS -- we assume MacOS 7. */ @@ -265,6 +289,23 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 /* I'm just guessing. */ +/* @@@@ fill in */ + +#elif defined(__APPLE__) && defined(__x86_64__) && defined(__MACH__) \ + && defined(__GNUC__) +#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI6GC) +#error "specified CONFIG_PF_... inconsistent with detected xci6gc" +#endif +#define MPS_PF_XCI6GC +#define MPS_PF_STRING "xci6gc" +#define MPS_OS_XC +#define MPS_ARCH_I6 +#define MPS_BUILD_GC +#define MPS_T_WORD unsigned long +#define MPS_WORD_WIDTH 64 +#define MPS_WORD_SHIFT 6 +#define MPS_PF_ALIGN 8 /* I'm just guessing. */ + /* GCC 2.5.8, gcc -E -dM, (__SVR4 indicates Solaris) */ #elif defined(__sun__) && defined(__sparc__) && defined(__GNUC__) \ diff --git a/mps/code/protw3.c b/mps/code/protw3.c index 8a9e690b62d..03af9ff40cf 100644 --- a/mps/code/protw3.c +++ b/mps/code/protw3.c @@ -42,7 +42,7 @@ void ProtSet(Addr base, Addr limit, AccessSet mode) if((mode & AccessREAD) != 0) newProtect = PAGE_NOACCESS; - if(VirtualProtect((LPVOID)base, (DWORD)AddrOffset(base, limit), + if(VirtualProtect((LPVOID)base, (SIZE_T)AddrOffset(base, limit), newProtect, &oldProtect) == 0) NOTREACHED; } @@ -52,7 +52,7 @@ LONG ProtSEHfilter(LPEXCEPTION_POINTERS info) { LPEXCEPTION_RECORD er; DWORD iswrite; - DWORD address; + ULONG_PTR address; AccessSet mode; Addr base, limit; LONG action; diff --git a/mps/code/vmw3.c b/mps/code/vmw3.c index ee33544793b..f864d315749 100644 --- a/mps/code/vmw3.c +++ b/mps/code/vmw3.c @@ -151,7 +151,7 @@ Res VMCreate(VM *vmReturn, Size size) return ResOK; failReserve: - b = VirtualFree((LPVOID)vm, (DWORD)0, MEM_RELEASE); + b = VirtualFree((LPVOID)vm, (SIZE_T)0, MEM_RELEASE); AVER(b != 0); return res; } @@ -171,10 +171,10 @@ void VMDestroy(VM vm) * fail and it would be nice to have a dead sig there. */ vm->sig = SigInvalid; - b = VirtualFree((LPVOID)vm->base, (DWORD)0, MEM_RELEASE); + b = VirtualFree((LPVOID)vm->base, (SIZE_T)0, MEM_RELEASE); AVER(b != 0); - b = VirtualFree((LPVOID)vm, (DWORD)0, MEM_RELEASE); + b = VirtualFree((LPVOID)vm, (SIZE_T)0, MEM_RELEASE); AVER(b != 0); EVENT_P(VMDestroy, vm); } @@ -238,7 +238,7 @@ Res VMMap(VM vm, Addr base, Addr limit) /* .improve.query-map: We could check that the pages we are about to * map are unmapped using VirtualQuery. */ - b = VirtualAlloc((LPVOID)base, (DWORD)AddrOffset(base, limit), + b = VirtualAlloc((LPVOID)base, (SIZE_T)AddrOffset(base, limit), MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (b == NULL) return ResMEMORY; @@ -268,7 +268,7 @@ void VMUnmap(VM vm, Addr base, Addr limit) /* .improve.query-unmap: Could check that the pages we are about */ /* to unmap are mapped, using VirtualQuery. */ - b = VirtualFree((LPVOID)base, (DWORD)AddrOffset(base, limit), MEM_DECOMMIT); + b = VirtualFree((LPVOID)base, (SIZE_T)AddrOffset(base, limit), MEM_DECOMMIT); AVER(b != 0); /* .assume.free.success */ vm->mapped -= AddrOffset(base, limit); diff --git a/mps/code/w3i6mv.nmk b/mps/code/w3i6mv.nmk new file mode 100644 index 00000000000..0bbfe14535a --- /dev/null +++ b/mps/code/w3i6mv.nmk @@ -0,0 +1,362 @@ +# w3i6mv.nmk: WINDOWS (x64) NMAKE FILE +# +# $Id$ +# Copyright (c) 2001 Ravenbrook Limited. See end of file for license. + +PFM = w3i6mv + +# @@@@ Can we remove this? RB 2012-03-26 +RAINBOWPATH = MSVISUAL\WIN32\I386 +DONGLELIB = $(RAINBOWPATH)\spromeps.lib + +# /Gs appears to be necessary to suppress stack checks. Stack checks +# (if not suppressed) generate a dependency on the C library, __chkesp, +# which causes the linker step to fail when building the DLL, mpsdy.dll. +PFMDEFS = /DCONFIG_PF_STRING="w3i6mv" /DCONFIG_PF_W3I6MV \ + /DWIN32 /D_WINDOWS /Gs /I$(RAINBOWPATH) + +MPM = \ + \ + \ + \ + \ + \ + \ + \ + +SW = \ + \ + \ + \ + \ + \ + \ + \ + \ + +PLINTH = +AMC = +AMS = +AWL = +LO = +SNC = +DW = +FMTTEST = +POOLN = +TESTLIB = + + +!INCLUDE commpre.nmk + + +# Source to object file mappings and CFLAGS amalgamation +# %%VARIETY %%PART: Add new macros which expand to the files included +# in the part for each variety +# %%VARIETY: Add a CFLAGS macro which expands to the flags that that variety +# should use when compiling C. And a LINKFLAGS macro which expands to the +# flags that the variety should use when building executables. And a LIBFLAGS +# macro which expands to the flags that the variety should use when building +# libraries + +!IF "$(VARIETY)" == "he" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFHE) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHE) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHE) +MPMOBJ0 = $(MPM:<=w3i6mv\he\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\he\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\he\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\he\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\he\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\he\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\he\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\he\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\he\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\he\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\he\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\he\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "ce" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFCE) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCE) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCE) +MPMOBJ0 = $(MPM:<=w3i6mv\ce\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ce\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\ce\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\ce\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\ce\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\ce\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\ce\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\ce\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\ce\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ce\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\ce\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ce\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "hi" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFHI) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHI) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHI) +MPMOBJ0 = $(MPM:<=w3i6mv\hi\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\hi\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\hi\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\hi\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\hi\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\hi\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\hi\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\hi\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\hi\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\hi\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\hi\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\hi\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "di" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFDI) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFDI) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSDI) +MPMOBJ0 = $(MPM:<=w3i6mv\di\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\di\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\di\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\di\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\di\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\di\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\di\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\di\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\di\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\di\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\di\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\di\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "ci" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFCI) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCI) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCI) +MPMOBJ0 = $(MPM:<=w3i6mv\ci\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ci\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\ci\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\ci\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\ci\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\ci\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\ci\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\ci\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\ci\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ci\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\ci\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ci\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "ti" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFTI) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFTI) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSTI) +MPMOBJ0 = $(MPM:<=w3i6mv\ti\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ti\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\ti\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\ti\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\ti\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\ti\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\ti\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\ti\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\ti\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ti\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\ti\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ti\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "wi" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFWI) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWI) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWI) +MPMOBJ0 = $(MPM:<=w3i6mv\wi\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\wi\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\wi\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\wi\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\wi\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\wi\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\wi\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\wi\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\wi\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\wi\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\wi\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\wi\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ELSEIF "$(VARIETY)" == "we" +CFLAGS=$(CFLAGSCOMMONPRE) $(CFWE) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWE) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWE) +MPMOBJ0 = $(MPM:<=w3i6mv\we\) +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\we\) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +SWOBJ0 = $(SW:<=w3i6mv\we\) +SWOBJ = $(SWOBJ0:>=.obj) +AMSOBJ0 = $(AMS:<=w3i6mv\we\) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ0 = $(AMC:<=w3i6mv\we\) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ0 = $(AWL:<=w3i6mv\we\) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ0 = $(LO:<=w3i6mv\we\) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ0 = $(SNC:<=w3i6mv\we\) +SNCOBJ = $(SNCOBJ0:>=.obj) +DWOBJ0 = $(DW:<=w3i6mv\we\) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\we\) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ0 = $(POOLN:<=w3i6mv\we\) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\we\) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +#!ELSEIF "$(VARIETY)" == "cv" +#CFLAGS=$(CFLAGSCOMMON) $(CFCV) +#LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCV) +#LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCV) +#MPMOBJ0 = $(MPM:<=w3i6mv\cv\) +#MPMOBJ = $(MPMOBJ0:>=.obj) +#PLINTHOBJ0 = $(PLINTH:<=w3i6mv\cv\) +#PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +#AMSOBJ0 = $(AMS:<=w3i6mv\cv\) +#AMSOBJ = $(AMSOBJ0:>=.obj) +#AMCOBJ0 = $(AMC:<=w3i6mv\cv\) +#AMCOBJ = $(AMCOBJ0:>=.obj) +#AWLOBJ0 = $(AWL:<=w3i6mv\cv\) +#AWLOBJ = $(AWLOBJ0:>=.obj) +#LOOBJ0 = $(LO:<=w3i6mv\cv\) +#LOOBJ = $(LOOBJ0:>=.obj) +#SNCOBJ0 = $(SNC:<=w3i6mv\cv\) +#SNCOBJ = $(SNCOBJ0:>=.obj) +#DWOBJ0 = $(DW:<=w3i6mv\cv\) +#DWOBJ = $(DWOBJ0:>=.obj) +#POOLNOBJ0 = $(POOLN:<=w3i6mv\cv\) +#POOLNOBJ = $(POOLNOBJ0:>=.obj) +#TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\cv\) +#TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + +!ENDIF + + +!INCLUDE commpost.nmk + + +# C. COPYRIGHT AND LICENSE +# +# 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 +# included in the distribution or be available for no more than the cost +# of distribution plus a nominal fee, and must be freely redistributable +# under reasonable conditions. For an executable file, complete source +# code means the source code for all modules it contains. It does not +# 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 +# PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.