From d5dff566ea7e19e07d8cbf3625ebfca35290af08 Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Thu, 14 Aug 2008 20:38:34 +0100 Subject: [PATCH] Br/vc9: instead of include, just paste in commpre & post (hack!) Copied from Perforce Change: 165714 ServerID: perforce.ravenbrook.com --- mps/code/w3i3mv.nmk | 600 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 598 insertions(+), 2 deletions(-) diff --git a/mps/code/w3i3mv.nmk b/mps/code/w3i3mv.nmk index fc9509cd87b..182ce9b3265 100644 --- a/mps/code/w3i3mv.nmk +++ b/mps/code/w3i3mv.nmk @@ -42,7 +42,244 @@ POOLN = TESTLIB = -!INCLUDE commpre.nmk +# commpre.nmk: FIRST COMMON FRAGMENT FOR PLATFORMS USING MV AND NMAKE +# +# $Id$ +# Copyright (c) 2001 Ravenbrook Limited. See end of file for license. +# +# DESCRIPTION +# +# .description: This makefile fragment is included in more specific +# makefiles for platforms which use the "mv" builder. This is +# the first of two common makefile fragements (the other is commpost.nmk). +# Alas, due to shortcomings in nmake, it is not possible to use only one +# common fragment. +# +# %%PART: Add a new parameter for the files included in the part +# Parameters: +# PFM platform code, e.g. "nti3mv" +# PFMDEFS /D options to define platforms preprocessor symbols +# to the compiler. Eg "/DOS_NT /DARCH_386 /DBUILD_MVC" +# MPM list of sources which make up the "mpm" part for this +# platform. Each source is stripped of its .c extension +# and surrounded in angle brackets (<>) +# PLINTH as above for the "plinth" part +# AMC as above for the "amc" part +# AMS as above for the "ams" part +# LO as above for the "lo" part +# MRG as above for the "mrg" part +# SW as above for the "sw" part +# TESTLIB as above for the "testlib" part +# NOISY if defined, causes command to be emitted +# +# +# EDITING +# +# To add new targets. varieties, and parts: +# Search for the string "%%TARGET", "%%VARIETY", or "%%PART" in this makefile +# and follow the instructions. If you're adding a part, you'll have to change +# the makefile for all the platforms which use this makefile to define the +# source list for that part. +# + +# CHECK PARAMETERS +# +# +# %%PART: Add checks for the parameter with the sources for the new part. + +!IFNDEF PFM +!ERROR commpre.nmk: PFM not defined +!ENDIF +!IFNDEF PFMDEFS +!ERROR commpre.nmk: PFMDEFS not defined +!ENDIF +!IFNDEF MPM +!ERROR commpre.nmk: MPM not defined +!ENDIF +!IFNDEF PLINTH +!ERROR commpre.nmk: PLINTH not defined +!ENDIF +!IFNDEF LO +!ERROR commpre.nmk: LO not defined +!ENDIF +!IFNDEF AMC +!ERROR commpre.nmk: AMC not defined +!ENDIF +!IFNDEF AMS +!ERROR commpre.nmk: AMS not defined +!ENDIF +!IFNDEF SW +!ERROR commpre.nmk: SW not defined +!ENDIF +!IFNDEF TESTLIB +!ERROR commpre.nmk: TESTLIB not defined +!ENDIF + + +# DECLARATIONS + + +!IFDEF NOISY +ECHO = rem +!ELSE +.SILENT: +ECHO = echo +!ENDIF + + +# C FLAGS + +# /MD means compile for multi-threaded environment with separate C library DLL. +# /MT means compile for multi-threaded environment. +# /ML means compile for single-threaded environment. +# A 'd' at the end means compile for debugging. + +!ifdef TARGET +!if "$(TARGET)" == "mmsw.lib" || "$(TARGET)" == "epvmss.exe" || "$(TARGET)" == "replaysw.exe" +CFLAGSTARGETPRE = /DCONFIG_PROD_EPCORE +CFLAGSTARGETPOST = +CRTFLAGSW = /MD +CRTFLAGSH = /MDd +CRTFLAGSC = /MDd +LINKFLAGSWHITE = msvcrt.lib +LINKFLAGSHOT = msvcrtd.lib +LINKFLAGSCOOL = msvcrtd.lib + +!elseif "$(TARGET)" == "mmdw.lib" +# /Oy- is actually 86-specific, but Dylan is only built for that platform +CFLAGSTARGETPRE = /DCONFIG_PROD_DYLAN +CFLAGSTARGETPOST = /Oy- +CRTFLAGSW = /MT +CRTFLAGSH = /MT +CRTFLAGSC = /MT +LINKFLAGSWHITE = libcmt.lib +LINKFLAGSHOT = libcmt.lib +LINKFLAGSCOOL = libcmt.lib + +!else +CFLAGSTARGETPRE = /DCONFIG_PROD_MPS +CFLAGSTARGETPOST = +CRTFLAGSW = /MT +CRTFLAGSH = /MT +CRTFLAGSC = /MTd +LINKFLAGSWHITE = libcmt.lib +LINKFLAGSHOT = libcmt.lib +LINKFLAGSCOOL = libcmtd.lib +!endif +!endif + +CFLAGSCOMMONPRE = /nologo /W4 /WX $(PFMDEFS) $(CFLAGSTARGETPRE) +CFLAGSCOMMONPOST = $(CFLAGSTARGETPOST) + +# Flags for use in the variety combinations +CFLAGSHOT = /Ox /DNDEBUG +# 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. +# /GZ here generates a dependency on the C library and when we are +# building a DLL, mpsdy.dll, the linker step will fail (error LNK2001: +# unresolved external symbol __chkesp). See +# http://support.microsoft.com/kb/q191669/ +CFLAGSCOOL = /Od +CFLAGSINTERNAL = /Zi +CFLAGSEXTERNAL = + +# The combinations of variety +# %%VARIETY: Define a macro containing the set of flags for the new variety. +CFWE = /DCONFIG_VAR_WE $(CRTFLAGSW) $(CFLAGSHOT) $(CFLAGSEXTERNAL) +CFWI = /DCONFIG_VAR_WI $(CRTFLAGSW) $(CFLAGSHOT) $(CFLAGSINTERNAL) +CFHE = /DCONFIG_VAR_HE $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSEXTERNAL) +CFHI = /DCONFIG_VAR_HI $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSINTERNAL) +CFDI = /DCONFIG_VAR_DI $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSINTERNAL) +CFCE = /DCONFIG_VAR_CE $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSEXTERNAL) +CFCI = /DCONFIG_VAR_CI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) +CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) + +# Microsoft documentation is not very clear on the point of using both +# optimization and debug information + +# LINKER FLAGS +# %%VARIETY: define a macro containing the flags for the new variety +LINKER = link +LINKFLAGSCOMMON = /nologo +LINKFLAGSINTERNAL = /DEBUG:full +LINKFLAGSEXTERNAL = /RELEASE + +LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL) +LFWI = $(LINKFLAGSWHITE) $(LINKFLAGSINTERNAL) +LFHE = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) +LFHI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) +LFDI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) +LFCE = $(LINKFLAGSCOOL) $(LINKFLAGSEXTERNAL) +LFCI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) +LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) + +#LFCV = /PROFILE /DEBUG:full /DEBUGTYPE:cv + +# Library manager +# %%VARIETY: define a macro containing the flags for the new variety +LIBMAN = lib # can't call this LIB - it screws the environment +LIBFLAGSCOMMON = /nologo +LIBFLAGSWE = +LIBFLAGSWI = +LIBFLAGSHE = +LIBFLAGSHI = +LIBFLAGSDI = +LIBFLAGSCE = +LIBFLAGSCI = +LIBFLAGSTI = +#LIBFLAGSCV = + +# Browser database manager [not used at present] +#BSC = bscmake +#BSCFLAGS = /nologo /n + + +# == Common definitions == +# %%PART: Add your part here, unless it's platform-specific +# [It is not possible use a macro, like $(PFM), in a substitution, +# hence all parts end up being platform-specific.] + + +# 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. # Source to object file mappings and CFLAGS amalgamation @@ -314,7 +551,366 @@ TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ENDIF -!INCLUDE commpost.nmk +# commpost.nmk: SECOND COMMON FRAGMENT FOR PLATFORMS USING MV AND NMAKE +# +# $Id$ +# Copyright (c) 2001 Ravenbrook Limited. See end of file for license. +# +# DESCRIPTION +# +# Second common makefile fragment for w3*mv.nmk. See commpre.nmk + + +# PSEUDO-TARGETS + +# "all" builds all the varieties of all targets +# %%TARGET: Add the target to the all dependencies, if it uses the +# CONFIG_PROD_MPS configuration, to swall if CONFIG_PROD_EPCORE + +all: mpmss.exe amcss.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awluthe.exe\ + mpsicv.exe lockutw3.exe lockcov.exe poolncv.exe locv.exe qs.exe apss.exe \ + finalcv.exe fin1658a.exe finaltest.exe \ + arenacv.exe bttest.exe teletest.exe \ + abqtest.exe cbstest.exe btcv.exe mv2test.exe messtest.exe steptest.exe \ + locbwcss.exe locusss.exe \ + eventcnv.exe \ + mps.lib mpsplan.lib + +swall: mmsw.lib replaysw.exe + + +# Convenience targets + +# %%TARGET: Add a pseudo-target for the new target here, first rule for +# variety-dependent targets, and second for variety-independent ones. + +mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awluthe.exe dwstress.exe \ + mpsicv.exe lockutw3.exe lockcov.exe poolncv.exe locv.exe qs.exe apss.exe \ + finalcv.exe fin1658a.exe finaltest.exe \ + arenacv.exe bttest.exe teletest.exe \ + expt825.exe \ + abqtest.exe cbstest.exe btcv.exe mv2test.exe messtest.exe steptest.exe \ + walkt0.exe locbwcss.exe locusss.exe \ + exposet0.exe \ + replay.exe replaysw.exe eventcnv.exe \ + mmdw.lib mmsw.lib mps.lib mpsplan.lib mpsplcb.lib \ + mpsdy.dll: +!IFDEF VARIETY + $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety +!ELSE + $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ target +!ENDIF + +# "clean" removes the directory containing the build results. +# Depends on there being no file called "clean". +# Since we can't know whether we have rmdir, try with deltree as well. + +clean: + $(ECHO) $(PFM): $@ + -echo y | rmdir/s $(PFM) + -deltree /Y $(PFM) + +# target target +# %%VARIETY: Optionally, add a recursive make call for the new variety, +# if it should be built by default. +# Only the varieties needed for development and internal customers are made. +# Depends on there being no file called "target". + +!IFDEF TARGET +!IFNDEF VARIETY +target: + $(MAKE) /nologo /f $(PFM).nmk VARIETY=hi variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=ci variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=ti variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=wi variety +!ENDIF +!ENDIF + +# variety +# Depends on there being no file called "variety". + +!IFDEF VARIETY +!IFDEF TARGET +variety: $(PFM)\$(VARIETY)\$(TARGET) +!ENDIF +!ENDIF + +mpsicv.cov: + $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ VARIETY=cv variety + +# FORCE +# Used to force a target to be built. +# Depends on there being no file called "FORCE". +FORCE: + + +# GENUINE TARGETS +# +# Each line defines an executable or library target to be built and the object +# files it is build from. For an executable these lines add dependencies to +# the generic rules below, and should not include commands to execute. +# For a library this is not possible and the target should include commands +# to build it. +# %%TARGET: Add your new target here + + +!IFDEF VARIETY + +# .special.version: version.obj has a special rule so that it is always +# built. This rule has no commands, meaning that the commands from +# other rules (the implicit .c -> .obj rule in particular) will be used. +# (Actually, there's a MS bug that causes this to randomly fail to build.) +$(PFM)\$(VARIETY)\version.obj: FORCE + +$(PFM)\$(VARIETY)\finalcv.exe: $(PFM)\$(VARIETY)\finalcv.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ + $(MRGOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\fin1658a.exe: $(PFM)\$(VARIETY)\fin1658a.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ + $(MRGOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\finaltest.exe: $(PFM)\$(VARIETY)\finaltest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ + $(MRGOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\expt825.exe: $(PFM)\$(VARIETY)\expt825.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ + $(MRGOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\locv.exe: $(PFM)\$(VARIETY)\locv.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) + +$(PFM)\$(VARIETY)\mpmss.exe: $(PFM)\$(VARIETY)\mpmss.obj \ + $(PFM)\$(VARIETY)\poolmvff.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\apss.exe: $(PFM)\$(VARIETY)\apss.obj \ + $(PFM)\$(VARIETY)\poolmvff.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\bttest.exe: $(PFM)\$(VARIETY)\bttest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\teletest.exe: $(PFM)\$(VARIETY)\teletest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\lockcov.exe: $(PFM)\$(VARIETY)\lockcov.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\lockutw3.exe: $(PFM)\$(VARIETY)\lockutw3.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\mpsicv.exe: $(PFM)\$(VARIETY)\mpsicv.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\amcss.exe: $(PFM)\$(VARIETY)\amcss.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\amcsshe.exe: $(PFM)\$(VARIETY)\amcsshe.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\amsss.exe: $(PFM)\$(VARIETY)\amsss.obj \ + $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\amssshe.exe: $(PFM)\$(VARIETY)\amssshe.obj \ + $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\segsmss.exe: $(PFM)\$(VARIETY)\segsmss.obj \ + $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\locbwcss.exe: $(PFM)\$(VARIETY)\locbwcss.obj \ + $(PFM)\$(VARIETY)\poolmvff.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\locusss.exe: $(PFM)\$(VARIETY)\locusss.obj \ + $(PFM)\$(VARIETY)\poolmvff.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\dwstress.exe: $(PFM)\$(VARIETY)\dwstress.obj \ + $(DWOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) + +$(PFM)\$(VARIETY)\awlut.exe: $(PFM)\$(VARIETY)\awlut.obj \ + $(FMTTESTOBJ) \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) $(AWLOBJ) + +$(PFM)\$(VARIETY)\awluthe.exe: $(PFM)\$(VARIETY)\awluthe.obj \ + $(FMTTESTOBJ) \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) $(AWLOBJ) + +$(PFM)\$(VARIETY)\poolncv.exe: $(PFM)\$(VARIETY)\poolncv.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(POOLNOBJ) + +$(PFM)\$(VARIETY)\qs.exe: $(PFM)\$(VARIETY)\qs.obj \ + $(AMCOBJ) $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\arenacv.exe: $(PFM)\$(VARIETY)\arenacv.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\abqtest.exe: $(PFM)\$(VARIETY)\abqtest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\cbstest.exe: $(PFM)\$(VARIETY)\cbstest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\btcv.exe: $(PFM)\$(VARIETY)\btcv.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\mv2test.exe: $(PFM)\$(VARIETY)\mv2test.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\eventcnv.exe: $(PFM)\$(VARIETY)\eventcnv.obj \ + $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj + +$(PFM)\$(VARIETY)\replay.exe: $(PFM)\$(VARIETY)\replay.obj \ + $(PFM)\$(VARIETY)\eventrep.obj \ + $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj \ + $(MPMOBJ) $(AWLOBJ) $(AMSOBJ) $(POOLNOBJ) $(AMCOBJ) $(SNCOBJ) \ + $(PFM)\$(VARIETY)\poolmvff.obj $(PFM)\$(VARIETY)\mpsliban.obj + +# Have to rename the object file, because the names must match, or +# the template rule for .exe.obj won't be used. +$(PFM)\$(VARIETY)\replaysw.obj: $(PFM)\$(VARIETY)\replay.obj + $(ECHO) $@ + copy $** $@ >nul: + +$(PFM)\$(VARIETY)\replaysw.exe: $(PFM)\$(VARIETY)\replaysw.obj \ + $(PFM)\$(VARIETY)\eventrep.obj \ + $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj \ + $(PFM)\$(VARIETY)\fmtpstst.obj $(TESTLIBOBJ) \ + $(PFM)\$(VARIETY)\mpsliban.obj $(SWOBJ) + +$(PFM)\$(VARIETY)\messtest.exe: $(PFM)\$(VARIETY)\messtest.obj \ + $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\steptest.exe: $(PFM)\$(VARIETY)\steptest.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\walkt0.exe: $(PFM)\$(VARIETY)\walkt0.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ + $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ + $(TESTLIBOBJ) + +$(PFM)\$(VARIETY)\mmsw.lib: $(SWOBJ) + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +$(PFM)\$(VARIETY)\mmdw.lib: $(MPMOBJ) $(AMCOBJ) $(DWOBJ) \ + $(AWLOBJ) $(LOOBJ) $(SNCOBJ) + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +$(PFM)\$(VARIETY)\mps.lib: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +# We would like to use $** in the linker command line here, but we +# cannot because the target, mpsdy.dll, depends on the w3gen.def file, +# but this is not to be treated as an object on the linker line. Sorry +# about the repetition of the object list. +$(PFM)\$(VARIETY)\mpsdy.dll: $(PFM)\$(VARIETY)\mpslibcb.obj \ + $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) w3gen.def + $(ECHO) $@ + $(LINKER) $(LINKFLAGS) /def:w3gen.def /dll /OUT:$@ \ + $(PFM)\$(VARIETY)\mpslibcb.obj \ + $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) + +$(PFM)\$(VARIETY)\mpsplan.lib: $(PLINTHOBJ) + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +$(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +!ENDIF + + +# GENERIC RULES + +# Object files + +{}.c{$(PFM)\$(VARIETY)}.obj: + $(ECHO) $@ + @if not exist $(PFM) mkdir $(PFM) + @if not exist $(PFM)\$(VARIETY) mkdir $(PFM)\$(VARIETY) + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$@ $< + +{}.asm{$(PFM)\$(VARIETY)}.obj: + $(ECHO) $@ + @if not exist $(PFM) mkdir $(PFM) + @if not exist $(PFM)\$(VARIETY) mkdir $(PFM)\$(VARIETY) + ml /nologo /c /coff /Fo$@ $< + +# Coverage files +#{$(PFM)\$(VARIETY)}.exe{$(PFM)\$(VARIETY)}.cov: +# $(ECHO) $@ +# cd $(PFM)\$(VARIETY) +# prep /nologo /lv $( $(@F) + + +# Executables + +{$(PFM)\$(VARIETY)}.obj{$(PFM)\$(VARIETY)}.exe: + $(ECHO) $@ + $(LINKER) $(LINKFLAGS) /OUT:$@ $(**) + + +# 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. # C. COPYRIGHT AND LICENSE