<div dir="ltr">Hi Tim,<div class="gmail_extra"><br><div class="gmail_quote">On Sat, May 28, 2016 at 6:43 PM, gettimothy <span dir="ltr">&lt;<a href="mailto:gettimothy@zoho.com" target="_blank">gettimothy@zoho.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> <br><u></u><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif">Does a matrix exist that maps <br>ls -1 Cog/platforms/unix/vm/*.c<br>aio.c<br>debug.c<br>dlfcn-dyld.c<br>mac-alias.c<br>osExports.c<br>sqUnixCharConv.c<br>sqUnixEvent.c<br>sqUnixExternalPrims.c<br>sqUnixHeartbeat.c<br>sqUnixITimerHeartbeat.c<br>sqUnixITimerTickerHeartbeat.c<br>sqUnixMain.c<br>sqUnixMemory.c<br>sqUnixSpurMemory.c<br>sqUnixThreads.c<br>sqUnixVMProfile.c<br><br>to build type and platform?<br><br>If not, I will assemble one by hand, but I don&#39;t want to duplicate work that has already been done.<br><br>For example...<br><br>linux32x86 squeak.cog.v3 builds fine with sqUnixMemory.c however squeak.cog.spur requires sqUnixSpurMemory.c <br><br>I suspect all the relationships are encoded in the configure and mvm scripts. If they are documented elsewhere, it will save some work.<br></div></div></blockquote><div><br></div><div>Actually in the Makefiles, and in tests on manifest defines in the sources.  So...in e.g. build.macos32x86/common/Makefile.vm you find </div><div>...</div><div>OSXCOMMONDIR:=$(PLATDIR)/iOS/vm/Common<br></div><div>...</div><div>XEX:=%/sqSqueakMainApplication+screen.m %/sqMacV2Window.m \</div><div>     %/SqViewBitmapConversion.m %/sqSqueakOSXCGView.m</div><div>OSXSRC=$(wildcard $(OSXDIR)/*.c) $(wildcard $(OSXDIR)/*.m) \</div><div>        $(wildcard $(OSXCOMMONDIR)/*.c) $(wildcard $(OSXCOMMONDIR)/*.m) \</div><div>        $(wildcard $(OSXCLASSESDIR)/*.c) $(wildcard $(OSXCLASSESDIR)/*.m)</div><div>OSXSRC:=$(filter-out $(XEX),$(OSXSRC)) UNIXSRC:=$(addprefix $(UNIXVMDIR)/,aio.c sqUnixHeartbeat.c sqUnixSpurMemory.c \<br></div><div>                     sqUnixThreads.c sqUnixVMProfile.c)</div><div><br></div><div>and in platforms/unix/vm/sqUnixSpurMemory.c you find</div><div><br></div><div><div>#if SPURVM</div></div><div>...</div><div>#endif</div><div><br></div><div>and in platforms/iOS//vm/Common/sqMacV2Memory.c you find</div><div><div>#include &quot;sq.h&quot;</div><div>#if !SPURVM</div></div><div>...</div><div>#endif</div><div><br></div><div><br></div><div>So that on the Mac v3 sqUnixSpurMemory..o is empty and sqMacV2Memory..o is not, but on the Mac Spur vice verse.</div><div><br></div><div>Likewise for platforms/unix/vm/sqUnixSpurMemory.c &amp; platforms/unix/vm/sqUnixMemory.c.  Use the source Luke!</div><div><br></div><div>Which is to say that I try and use manifest constants defined in *src/vm/interp.h to define which features to include.  e.g. Compare src/v/interp.h with spursrc/vm/interp.h:</div><div><br></div><div><div>McStalker.oscogvm$ diff {src,spursrc}/vm/interp.h</div><div>10c10</div><div>&lt; #define BaseHeaderSize 4</div><div>---</div><div>&gt; #define BaseHeaderSize 8</div><div>35a36</div><div>&gt; #define SPURVM 1</div></div><div><br></div><div>or spursrc/vm/interp.h with spur64src/vm/interp.h</div><div><br></div><div><div>2c2</div><div>&lt;       CCodeGeneratorGlobalStructure VMMaker.oscog-eem.948 uuid: 9323b2ad-f5cf-4aca-8f31-67eb5616ccca</div><div>---</div><div>&gt;       CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1580 uuid: 2b856f5e-e0b4-44bb-b23d-07561132f8c8</div><div>8c8</div><div>&lt; #define SQ_VI_BYTES_PER_WORD 4</div><div>---</div><div>&gt; #define SQ_VI_BYTES_PER_WORD 8</div><div>11,12c11,12</div><div>&lt; #define BytesPerOop 4</div><div>&lt; #define BytesPerWord 4</div><div>---</div><div>&gt; #define BytesPerOop 8</div><div>&gt; #define BytesPerWord 8</div><div>32,33c32,33</div><div>&lt; #define MinSmallInteger -1073741824</div><div>&lt; #define MaxSmallInteger 1073741823</div><div>---</div><div>&gt; #define MinSmallInteger -1152921504606846976</div><div>&gt; #define MaxSmallInteger 1152921504606846975</div></div><div><br></div><div>or spursrc/vm/interp.h with nsspursrc/vm/interp.h</div><div><div>McStalker.oscogvm$ diff {spursrc,nsspursrc}/vm/interp.h</div><div>34a35,37</div><div>&gt; #define NewspeakVM 1</div><div>&gt; #define MULTIPLEBYTECODESETS 1</div><div>&gt; </div></div><div><br></div><div>etc.</div><div><br></div><div>Putting stuff in config files is sadistic.  I wouldn&#39;t do that.  It needs to be in the source.</div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>