<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'><div>Hi David</div><br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div><div>There are good and valid reasons to do things differently in the various downstream <br>projects, and where possible we all hope that those various projects will contribute <br>changes back to the trunk.&nbsp;</div></div></blockquote> <br><div>Agreed. </div><div><br></div><div>CMakeVMMaker-EstebanLorenzano.213 exists on both repositories, but it looks like the pharo team decided to continue their work over on SmalltalkHub which is currently at CMakeVMMaker-jeanbaptistearnaud.282 and source.squeak.org was not kept in sync.</div><div>No big deal for now.&nbsp;</div><div><br></div><div>The motiviation for my email was that I am "this" close to having the stackVM run using CMake. It compiles just fine using cmake, and launches, but the display is not updating (I think its related to GL/B3D).</div><div>It took me 2 days to realize that the pharo image I have installed had a different CMakeVMMaker version than what I was working with on Squeak. Last night, I modified the BuildSqueak4XImage.st scripts to pull from SmalltalkHub and it loads fine and I will continue my debugging from there. I am hoping this was contributing to the problem I am having and I am trying to eliminate variables as I hunt this down.</div><div><br></div><div><br></div><div><br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div>There is a reason why Ian Piumarta (who created both the CMake build for Squeak, <br>as well as the earlier libtool build system from which the Cog build is derived) <br>organized the CMake scripts the way that he did. Any necessary CMake customizations <br>related to specific modules, such as a plugin, are defined in small "config.cmake" <br>and "build.cmake" files that are located in the same directories as their source code <br>files. If you need to make some change to the build process for a specific module, you <br>will know where to look. Changes are versioned in the same source control system <br>as their respective module source files.</div></blockquote> </div><div><br></div><div>The CMMakeVMMaker has the same organization; one CMakeLists.txt etc in the root of the build and others for the various plugins. The Smalltalk CMakeVMMaker just encapsulates and generates those artifacts. I am assuming that Ian coded his CMake stuff by hand. If not, the assumption is that he used CMakeVMMaker-EstebanLorenzano.213 (but I don't think so).</div><div><br></div><div>let me give you an overview of the process so far. I illustrate the old process and the new.</div><div><br></div><div><br></div><div><br></div><div>Here is the current/old process (for Cog):</div><br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div><div>1. Get the latest Cog tree from&nbsp; svn co http://www.squeakvm.org/svn/squeak/branches/Cog</div><div>2. cd Cog/image/ and run script to build an image</div><div>3. place that image relative to the sources&nbsp;</div><div>4. launch image and&nbsp;use VMMaker tools</div><div>5. run Gnu process on generated sources.</div><div>6. voila</div></div></blockquote> <div><br></div><div>Here is what I have in place so far:<br></div><div><br></div><div><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div><div>1. Get the latest Cog tree from&nbsp; svn co http://www.squeakvm.org/svn/squeak/branches/Cog</div><div>2. cd Cog/image/ and run script to build an image which:&nbsp;</div><div>&nbsp;2.a builds image with tools per current process.</div><div>&nbsp;2.b (additionally loads FT2Plus Toxic bypass)</div><div>&nbsp;2.c additionally load the CMakeVMMaker package from source.squeak.org (now loading from SmalltalkHub)</div><div>&nbsp;2.d Recursively copies the parent Cog source code to image_directory/oscogvm/*</div><div>&nbsp;3.e Cleans the source tree to just source by finding and deleting all GNU-Build artefacts (Makefiles, autotool stuff)</div><div>3. User launches new image with the pristine source tree underneath it.</div><div>4. Run process SqueakVMBuilder buildXYZ (same as pharo process, but squeak names) to generate the source code and&nbsp; CMake stuff in the clean source tree.</div><div>5. Run generated 'build.sh' script which invokes CMake and make.</div><div>6. voila. &nbsp;&lt;---I am here, but I am not saying 'voila' yet</div></div></blockquote>Easy-peasy. (please note, that the Cog source tree is not modified. I copy of it is--i.e. non-intrusive process on existing process)</div><div><br></div><div><br></div><div>Once the CMake files are in place in the source tree, there is no reason once the process is mature that it cannot be automated. Hopefully we will have a rollover from the Gnu-Make era to the CMake era.<br></div><div><br></div><div><br></div><div>Hopefully, I get the StackVM working today.</div><div><br></div><div><br></div><div><br></div><div>Regarding the CMakeVMMaker code. Its quite simple to understand and well designed. The only Squeak/Pharo compatability issues are in FileSystem/FileDirectory file handling and SmalltalkImage implementation.</div><div>To keep things simple, I am modifying those things directly in the existing classes, but , once I get this working I will factor those things out to a compatibility layer.&nbsp;</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div></body></html>