<div dir="ltr"><p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On Mon, Jun 16, 2014 at 5:16 PM, Igor Stasenko <span style="direction:ltr">&lt;<a href="mailto:siguctua@gmail.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">siguctua@gmail.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On 17 June 2014 01:49, Eliot Miranda <span style="direction:ltr">&lt;<a href="mailto:eliot.miranda@gmail.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">eliot.miranda@gmail.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On Mon, Jun 16, 2014 at 4:38 PM, Igor Stasenko <span style="direction:ltr">&lt;<a href="mailto:siguctua@gmail.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">siguctua@gmail.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On 16 June 2014 18:31, Eliot Miranda <span style="direction:ltr">&lt;<a href="mailto:eliot.miranda@gmail.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">eliot.miranda@gmail.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On Mon, Jun 16, 2014 at 3:33 AM, Igor Stasenko <span style="direction:ltr">&lt;<a href="mailto:siguctua@gmail.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">siguctua@gmail.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Yes, config.h is a leftover of old make process which i had to port over to cmake build process without need to do big changes in source code.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">I am strong opponent of idea that configuration variables shall automatically , dynamically and implicitly change depending on where you compiling the code. Configuration , as a whole can change, but not its variables. </p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">They must be defined once and stay same regardless of building environment.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">That gives you a better chances that software which you successfully built using same configuration will work identically no matter who or where is built it.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">And sure thing, for having variations, you can define own configuration e.g. MyVMWith(orWithout)UUID</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">and use it to compile VM with that flag changed.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">But as i say, key here that this flag is set by your hand once and forever, not by some pre-build configure script which depends on where it runs on.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Depends what you&#39;re talking about.  In this case some linuxes have /usr/include/uuid.h and a program called uuidgen, others have /usr/include/uuid/uuid.h and a program called uuidgenerate (let alone other unixes).  IMO it is not the business of a VM source generation pass to decide this.  It is a compile-time configuration pass.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">My take on it goes from following:</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">you make two configuration - one which uses </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">/usr/include/uuid/uuid.h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">another which uses</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">/usr/include/uuid.h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">that way leads to generating the VM immediately before one builds, and that&#39;s a very bad direction because it goes against any repeatable build process that records the C source, that allows debugging older VMs etc.  I disagree.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Straightly opposite. it guarantees that it will generate exactly same artifact (and sources) for same configuration. No matter how broken your build system is.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">No it doesn&#39;t.  The resulting artifact depends on compiler, linker and libraries and these can change.  The VM configuration step can&#39;t control the entire platform.  It&#39;s a waste of effort making it try.  But let&#39;s agree to disagree.  Timothy is producing a CMake system that the Squeak VM team is happy with.  Hence we&#39;ll ask Timothy to /not/ have configH produced by the VM.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">When I was VM lead for VW I also maintained a system that didn&#39;t use automake.  It just used makefiles and the flags there-in were maintained manually.  But that was a different situation.  The company supported specific OS versions.  But I think the Squeak/Pharo VM on unix is different.  THis is open source and we should make it as easy as possible for people to get the software running on their machine (hence a repository containing ready-to-build C source rather than pointing them at an image and VMMaker).  I say this to point out that I&#39;ve changed my mind on this issue.  That I&#39;m backing the configure-at-build-time approach for a reason.  But I accept we disagree.  Cheers!</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Because when it broken - it will simply fail &amp; report.. instead of trying to hide problem among numerous ifdefs which you then discover only hours (if not days) after, when some client tries to run things on his machine (which apparently will have completely different environment than on machine where you built the thing).</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">The build fails and reports too.  It doesn&#39;t fail silently. It may take platform knowledge to decipher the failure message but its there, especially if the build is careful enough to record a log file.  That&#39;s what we get with Jenkins too.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">and when you building VM you always know which one you build and which one works...</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">in contrast to situation when you have like 50+ automagically resolved flags &amp;  dependencies, so you don&#39;t even know what module is included into final artifact without checking it by hand.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">No, its not magic.  Its autoconf/CMake.  There&#39;s good reason to expect the maintainers of autoconf and CMake to do a better job detecting and deciding on the right platform make files for a given unix than the Pharo/Squeak community.  i.e. thousands of unix programs, many of them critical infrastructure such as apache were built using autoconf and are buult using CMake.  Your approach complicates the lives of people trying to port to unusual unix platforms such as Open Solaris, FreeBSD etc.  I don&#39;t see the point of forcing people through the VM generation step just to manually do a configuration their platform tools will do for them.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">No, it is magic, because when it fails, especially at linking stage, you often have no clue why the heck symbol X is undefined and who the hell defines it and where (because you simply cannot know names of all functions of all modules VM and its plugins using)..</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Yes I can.  It&#39;s called &quot;nm&quot;.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">and next you do is use command line tools , like find , (which i always forget how to use  - probably because it is very intuitive to use ;) in order to find in a system, is there any source file/header that defines this symbol which you omitted or messed up with ifdefs/defines &amp; makefiles configurations.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">How do you determine the configuration in the first place but by engaging with the platform?  And find is hard to use??</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Look, all thats happening with your approach is you&#39;re freezing something which worked once you solved all the platform problems.  That didn&#39;t stop you having to solve the problems up front.  t just meant that once you had something that worked you could record it.  But a platform expert can make the configure-at-build-time scheme work on arbitrary configurations, unless you shackle them to a specific configuration.  Anyway... enough.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">But what can be worse is that sometimes that missing symbol belongs to library which is [not yet] installed on your system (or installed but wrong version, or it is 64-bit while you want 32-bit), since you trying to build on a fresh machine.. and so your search extends to world-wide-web.. (because nobody told &amp; written that you need to install these deps before building it and where to get them) because all knowledge about critical dependencies is hidden in 1M configure/ac scripts + ifdefs, of course, which no human can comprehend... and  so time spent on making things work increases in geometrical progression (because again where the guarantees that you will install correct version of library &amp; that library in own turn won&#39;t have dependencies which will force you to enter nested search/install/configure/build loop?)</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Now if you have configuration, which says:</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> - this works with that, that and that, and here&#39;s how to prepare your system before building it. For other systems it may not work, so try at own risk.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">This is at least FAIR and straightforward.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Because when i want to build VM which includes/uses feature X, it should include X, not X&#39; or Y, (or even worse - automatically ignore it because it&#39;s not avail on your system).</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Because if feature cannot be strictly guaranteed, i prefer to see the build process to simply abort reporting failure.. instead of behave fuzzily &amp; be smart and nicely trying to guess best possible combination of bells &amp; whistles to build on current platform.. it is wrong place for being smart.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">The approach of having lots of configurations determined at VM source generation time leads to VM source which becomes obsolete, is inflexible, is duplicated.  There needs to be a sensible split.  VM generation time is not the time to choose things like sets of plugins, particular include file locations.  IMO it should only produce a full suite of source.  A build directory is the place to decide what plugins to choose etc, allowing special configurations for special uses (an embedded device vs a desktop OS, etc).  Compile time configuration is the time to choose include files, library names etc, etc.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">does it really matters at which point you decide how to configure build?</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Yes.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">what matters that you will always would want to configure it.. and you always would want to spend as little as possible time on it.. and having things easy and convenient to configure or modify. </p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">And what can be better place to configure things than smalltalk environment? :)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Seriously?  You think Sueak/Pharo is better connected to unix platform libraries than autoconf/CMake?  We can&#39;t even do symlinks properly yet.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Abstraction layer... This is what it gives to you so you don&#39;t have to deal with auto/symlinks etc by yourself..</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Perusing classes &amp; methods, or perusing files in numerous (sub)directories + requiring knowledge of makefile &amp; autoconf DSLs.. which are worst nightmare? For me the choice was obvious.. </p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">yes, you still cannot avoid some perusing.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">that is inevitable part of process, but at least you can choose where (not) to do it. </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">On 15 June 2014 23:27, gettimothy <span style="direction:ltr">&lt;<a href="mailto:gettimothy@zoho.com"><span style="text-decoration:underline;color:#1f55cc;direction:ltr">gettimothy@zoho.com</span></a>&gt;</span> wrote:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">Hi Eliot.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">I have a theory on the Pharo CMakeVMaker configH method. </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">CogUnixConfig configH</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">&quot; right now its like that &quot;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">^ &#39;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#ifndef __sq_config_h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#define __sq_config_h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">/* explicit image width */</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#define HAVE_INTERP_H 1</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">....</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">based on my work getting the oscogvm/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c... to compile.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">Working from the C source up to configuration then to Squeak....we start with the source code for sqUnixUUID.c</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#include &quot;config.h&quot;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#if defined(HAVE_SYS_UUID_H)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"># include &lt;sys/types.h&gt;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"># include &lt;sys/uuid.h&gt;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#elif defined(HAVE_UUID_UUID_H)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"># include &lt;uuid/uuid.h&gt;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#elif defined(HAVE_UUID_H)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"># include &lt;uuid.h&gt;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#else</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"># error cannot find a uuid.h to include</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#endif</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">On my platform, I needed that HAVE_UUID_H define set. </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">To do that, I modified the acinclude.m4 file to check for the &lt;uuid.h&gt; (my changes in Bold--I emailed you this previously)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_MSG_CHECKING([for UUID support uuid/uuid.h] and uuid_generate)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_TRY_COMPILE([#include &lt;uuid/uuid.h&gt;],[uuid_generate;],[</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_MSG_RESULT(yes)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_CHECK_LIB(uuid, uuid_generate, LIB_UUID=&quot;-luuid&quot;)],[</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_MSG_RESULT(no)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_MSG_CHECKING([for UUID support uuid and uuidgen] )</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_TRY_COMPILE([#include &lt;uuid.h&gt;],[uuidgen;],[</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_MSG_RESULT(yes)</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_CHECK_LIB(uuid, uuidgen, LIB_UUID=&quot;-luuid&quot; )],[</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_MSG_RESULT(no)</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>AC_PLUGIN_DISABLE</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>])</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">])</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">AC_SUBST(LIB_UUID)</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"> </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">For the source code to see it, the config.h file needs to be in place with that HAVE_UUID_H  flag*, so in Squeak, I over-ride the configH method to include that define flag:</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">configH</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">^ &#39;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>#define HAVE_UUID_H 1 </b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5"><b>#define HAVE_UUIDGEN 1</b></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">#ifndef __sq_config_h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">The CMakeVMMakerSqueak &#39;generate&#39; message to a builder dumps that config.h to the build directory.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">running the build.sh generated script invokes</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;background-color:#f5f5f5">cmake .</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323"> command which looks in the specified source/config directory to configure the GNU-Makefile to look for that source code and pairs it with the generated config.h</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">The CMake generate GNU-Make system then uses those source/build artifacts to put the output in the oscogvm/products directory.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">So, let me summarize.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">1. We know that the plugins depend on config.h</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">2. Ideally, that config.h should be incrementally build by the Squeak plugins themselves or the CMakeVMMaker configurations. How? I don&#39;t know yet. Looking at it, the UUIDPlugin class would have to contribute its configuration information.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">    this is non-trivial.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">3. So, in the meantime, CMakeVMMakerSqueak configurations are classes that encapsulate a &lt;drum roll please&gt; Configuration.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">4. It seems reasonable to make this part of the configuration setup process.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">5. I will/have documented in in the HelpBrowser HelpTopic for the system.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">My apologies for the long-winded explanation. </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">HTH.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">tty</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323;min-height:17.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Verdana;color:#232323">*I just noticed the sys/uuid in the sqUnixUUID.c code, that implies a further nesting in the .m4 file Let me know if you want me to write it for you.</p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Best regards,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Igor Stasenko.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">best,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Eliot</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Best regards,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Igor Stasenko.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">best,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Eliot</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Best regards,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Igor Stasenko.</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323;min-height:16.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">-- </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">best,</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:14.0px Arial;color:#232323">Eliot</p><div class="gmail_extra">
</div></div>