<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 24, 2016 at 8:00 AM, Ben Coman <span dir="ltr">&lt;<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
On Sun, Apr 24, 2016 at 3:33 AM, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi Tobias,<br>
&gt;<br>
&gt; On Sat, Apr 23, 2016 at 10:55 AM, Tobias Pape &lt;<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 23.04.2016, at 19:44, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Hi Tobias,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; On Apr 23, 2016, at 10:30 AM, Tobias Pape &lt;<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; On 23.04.2016, at 19:21, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Hi Fabio,<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;  and the &quot;if not, why not?&quot; question is a request for information, not an expression of annoyance. Subversion tags update the source in checkin.  I remember Igor saying that he couldn&#39;t find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn&#39;t support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn&#39;t version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of<br>
&gt;&gt; &gt;&gt;&gt;   myvm -version<br>
&gt;&gt; &gt;&gt;&gt;   yourvm -version<br>
&gt;&gt; &gt;&gt;&gt; whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I did such stuff like 4 years ago for self (don&#39;t ask why)<br>
&gt;&gt; &gt;&gt; I changed their whole VM build process to CMake.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Here&#39;s some parts that vaguely do what you want want:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; This uses &quot;date&quot; to generate a vm build date (lines 12 and following)<br>
&gt;&gt; &gt;&gt; and &quot;git&quot; to extract VCS infos (lines 39 and following)<br>
&gt;&gt; &gt;&gt;   <a href="https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in" rel="noreferrer" target="_blank">https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in</a><br>
&gt;&gt; &gt;&gt; (it is namend .in because it gets configured itself from elsewhere)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; It is clearly possible to switch all the stuff to git and cmake and I&#39;d like to see that happen.<br>
&gt;&gt; &gt;&gt; I would love to have time for that (although it regularly makes me angry :D).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Best regards<br>
&gt;&gt; &gt;&gt;   -Tobias<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with<br>
&gt;&gt; &gt;&gt;   probably some mix of the self vm stuff. It can really work. And it can also help us<br>
&gt;&gt; &gt;&gt;   getting things compiled on MS compilers, btw.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; What do you mean by &quot;Ian&#39;s way&quot; exactly?  Please describe it.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Things I know:<br>
&gt;&gt; &gt; - Ian&#39;s autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with<br>
&gt;&gt;<br>
&gt;&gt; Ian&#39;s unix conf uses CMake for a while now.<br>
&gt;&gt; There&#39;s no autoconf.<br>
&gt;&gt; Thers no platforms/unix/conf, neither in<br>
&gt;&gt;         <a href="http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/" rel="noreferrer" target="_blank">http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/</a><br>
&gt;&gt; nor in<br>
&gt;&gt;         <a href="https://github.com/fniephaus/squeak/tree/master/platforms/unix" rel="noreferrer" target="_blank">https://github.com/fniephaus/squeak/tree/master/platforms/unix</a><br>
&gt;<br>
&gt;<br>
&gt; Yes, I know.  I also know that, for example,  <a href="http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/cmake/Plugins.cmake" rel="noreferrer" target="_blank">http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/cmake/Plugins.cmake</a> is /not/ easy to work with.  It is essentially impenetrable without significant thought.  I will critique fully below.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; So I&#39;m a bit confused about what you refer to.<br>
&gt;&gt;<br>
&gt;&gt; &gt; - gmake files work with MS compilers too<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I am strongly in favor of gmake files.  It&#39;s /much/ easier to work with.<br>
&gt;&gt;<br>
&gt;&gt; Sorry, i beg to differ.<br>
&gt;&gt;<br>
&gt;&gt; &gt;  Please, please, please let&#39;s limit the use of cmake to generating a config file as I&#39;ve already discussed.<br>
&gt;&gt;<br>
&gt;&gt; you mean gnu make?<br>
&gt;<br>
&gt;<br>
&gt; Yes.  And as examples I invite you to read, for example,<br>
&gt;<br>
&gt; <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/" rel="noreferrer" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog/</a><br>
&gt;         build.macos64x64/common/Makefile.app<br>
&gt;         build.macos64x64/common/Makefile.app.newspeak<br>
&gt;         build.macos64x64/common/Makefile.app.squeak.cog<br>
&gt;         build.macos64x64/common/Makefile.flags<br>
&gt;         build.macos64x64/common/Makefile.plugin<br>
&gt;         build.macos64x64/common/Makefile.rules<br>
&gt;         build.macos64x64/common/Makefile.vm<br>
&gt;<br>
&gt;         build.macos64x64/pharo.cog.spur/Makefile<br>
&gt;         build.macos64x64/squeak.cog.spur/Makefile<br>
&gt;         build.macos64x64/squeak.stack.spur/Makefile<br>
&gt;<br>
&gt;         build.win32x86/common/Makefile<br>
&gt;         build.win32x86/common/Makefile.plugin<br>
&gt;         build.win32x86/common/Makefile.rules<br>
&gt;<br>
&gt;<br>
&gt; So what are the trade offs?  I&#39;ll mark cmake plusses with &#39;+&#39;, gmake advantages over cmake &#39;-&#39;.<br>
&gt;<br>
&gt; + cmake and autoconf include systems for computing a platform-specific config.h file from aplatform-independent template that identifies a platform&#39;s basic facilities, word size, available APIs, etc.  This is of value.  I&#39;ve described earlier in this thread how I want to use this, by generating a single copy of the platform-speciifc file per platform-specific build directory, where each build directory includes several distinct VMs (squeak vs pharo vs newspeak * context vs stack vs cog vs sista * v3 vs spur) and a single copy of support libraries such as Bochs, Cairo et al.<br>
<br>
</div></div>Naive questions about using a one-time generated config.h...<br>
  Is this enough to support cross-compilation with cmake itself?<br></blockquote><div><br></div><div>I don&#39;t know but I would have thought that&#39;s orthogonal to the issue/  Whatever cross compilation scheme is used one has to use the includes for the platform.  So the config.h would be generated w.r.t. the target platform not the host.  That&#39;s no different.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  Where in the priorities is cross-compilation?<br></blockquote><div><br></div><div>Well, I&#39;d love to use more cross compilation; things would be much faster.  But again it&#39;s additional work to get going.  Anyone who gets cross compilation to any target running on Mac OS X please let me know; I&#39;m interested.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Of minor concern (because I&#39;ve no clue of the impact)...  &quot;Rumprun<br>
unikernels are always cross-compiled. In practical terms, that<br>
statement means that the compiler will never run on a Rumprun<br>
unikernel. Instead, the compiler always runs on a build host (e.g. a<br>
regular Linux/BSD system).&quot;<br>
<br>
cheers -ben<br>
</blockquote></div><br><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>