diff options
| author | Richard Brooksby | 2012-09-03 12:56:38 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2012-09-03 12:56:38 +0100 |
| commit | 5140062cd6f1736f72b328ae0a15dca754629bed (patch) | |
| tree | e4d7650e71c5b4546def6d7f1bae8351a99631ca /mps/code | |
| parent | 164a6b4bc745ec8e2e467bf52ca31c8bf5bb7cba (diff) | |
| download | emacs-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.nmk | 82 |
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 | ||