aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-09-03 12:56:38 +0100
committerRichard Brooksby2012-09-03 12:56:38 +0100
commit5140062cd6f1736f72b328ae0a15dca754629bed (patch)
treee4d7650e71c5b4546def6d7f1bae8351a99631ca /mps/code
parent164a6b4bc745ec8e2e467bf52ca31c8bf5bb7cba (diff)
downloademacs-5140062cd6f1736f72b328ae0a15dca754629bed.tar.gz
emacs-5140062cd6f1736f72b328ae0a15dca754629bed.zip
Building hot varieties with globally optimized mps.c instead of separate object files.
Copied from Perforce Change: 179191 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/commpost.nmk82
1 files changed, 52 insertions, 30 deletions
diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk
index 05ed6a0ba84..0308ada12ab 100644
--- a/mps/code/commpost.nmk
+++ b/mps/code/commpost.nmk
@@ -37,8 +37,7 @@ mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awlu
37 walkt0.exe locbwcss.exe locusss.exe \ 37 walkt0.exe locbwcss.exe locusss.exe \
38 exposet0.exe zcoll.exe zmess.exe \ 38 exposet0.exe zcoll.exe zmess.exe \
39 replay.exe replaysw.exe eventcnv.exe \ 39 replay.exe replaysw.exe eventcnv.exe \
40 mps.lib mpsplcb.lib \ 40 mps.lib:
41 mpsdy.dll:
42!IFDEF VARIETY 41!IFDEF VARIETY
43 $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety 42 $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety
44!ELSE 43!ELSE
@@ -79,7 +78,55 @@ mpsicv.cov:
79 $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ VARIETY=cv variety 78 $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ VARIETY=cv variety
80 79
81 80
82# GENUINE TARGETS 81# THE MPS LIBRARY
82#
83# The MPS library is built in two ways:
84#
85# 1. In the usual way, from a pile of object files compiled from their
86# corresponding sources.
87#
88# 2. From mps.c, which effectively concatenates all the sources, allowing
89# important global optimisation and inlining to occur.
90#
91# We mostly use the method (2), because it is fast to compile and execute.
92# But we use method (1) for some varieties to ensure correctness of
93# code (linkage errors are masked by (2)) and to maintain a correct list
94# of source files in case method (1) won't work on some future constrained
95# platform.
96#
97# %%VARIETY: Add a rule for how to build the MPS library for the variety
98
99$(PFM)\we\mps.lib: $(PFM)\we\mps.obj
100 $(ECHO) $@
101 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $**
102
103$(PFM)\hot\mps.lib: $(PFM)\hot\mps.obj
104 $(ECHO) $@
105 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $**
106
107$(PFM)\cool\mps.lib: \
108 $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \
109 $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ)
110 $(ECHO) $@
111 cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c
112 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o
113
114$(PFM)\di\mps.lib: \
115 $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \
116 $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ)
117 $(ECHO) $@
118 cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c
119 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o
120
121$(PFM)\ti\mps.lib: \
122 $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \
123 $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ)
124 $(ECHO) $@
125 cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c
126 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o
127
128
129# OTHER GENUINE TARGETS
83# 130#
84# Each line defines an executable or library target to be built and the object 131# Each line defines an executable or library target to be built and the object
85# files it is build from. For an executable these lines add dependencies to 132# files it is build from. For an executable these lines add dependencies to
@@ -168,7 +215,7 @@ $(PFM)\$(VARIETY)\arenacv.exe: $(PFM)\$(VARIETY)\arenacv.obj \
168 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) 215 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ)
169 216
170$(PFM)\$(VARIETY)\abqtest.exe: $(PFM)\$(VARIETY)\abqtest.obj \ 217$(PFM)\$(VARIETY)\abqtest.exe: $(PFM)\$(VARIETY)\abqtest.obj \
171 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) 218 $(PFM)\$(VARIETY)\abq.obj $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ)
172 219
173$(PFM)\$(VARIETY)\cbstest.exe: $(PFM)\$(VARIETY)\cbstest.obj \ 220$(PFM)\$(VARIETY)\cbstest.exe: $(PFM)\$(VARIETY)\cbstest.obj \
174 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) 221 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ)
@@ -177,6 +224,7 @@ $(PFM)\$(VARIETY)\btcv.exe: $(PFM)\$(VARIETY)\btcv.obj \
177 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) 224 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ)
178 225
179$(PFM)\$(VARIETY)\mv2test.exe: $(PFM)\$(VARIETY)\mv2test.obj \ 226$(PFM)\$(VARIETY)\mv2test.exe: $(PFM)\$(VARIETY)\mv2test.obj \
227 $(PFM)\$(VARIETY)\poolmv2.obj $(PFM)\$(VARIETY)\abq.obj \
180 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) 228 $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ)
181 229
182$(PFM)\$(VARIETY)\zcoll.exe: $(PFM)\$(VARIETY)\zcoll.obj \ 230$(PFM)\$(VARIETY)\zcoll.exe: $(PFM)\$(VARIETY)\zcoll.obj \
@@ -213,32 +261,6 @@ $(PFM)\$(VARIETY)\walkt0.exe: $(PFM)\$(VARIETY)\walkt0.obj \
213$(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ 261$(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \
214 $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) 262 $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ)
215 263
216$(PFM)\$(VARIETY)\mps.lib: \
217 $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \
218 $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ)
219 $(ECHO) $@
220 cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c
221 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o
222
223# We would like to use $** in the linker command line here, but we
224# cannot because the target, mpsdy.dll, depends on the w3gen.def file,
225# but this is not to be treated as an object on the linker line. Sorry
226# about the repetition of the object list.
227$(PFM)\$(VARIETY)\mpsdy.dll: $(PFM)\$(VARIETY)\mpslibcb.obj \
228 $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \
229 $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) w3gen.def \
230 mpslibcb.def
231 $(ECHO) $@
232 $(LINKER) $(LINKFLAGS) /def:w3gen.def \
233 /def:mpslibcb.def /dll /OUT:$@ \
234 $(PFM)\$(VARIETY)\mpslibcb.obj \
235 $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \
236 $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ)
237
238$(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj
239 $(ECHO) $@
240 $(LIBMAN) $(LIBFLAGS) /OUT:$@ $**
241
242!ENDIF 264!ENDIF
243 265
244 266