<!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;'>Hi David Hi Holger<br><br><br>On thinking about this, you guys are probably right.<br><br>Unfortunately, I have no interest in that project (I would like to move on to other things)<br><br>If you take the output from&nbsp; just one configuration like....<br><br>SqueakLinux64x86w32CompatBuilder <br>&nbsp;&nbsp;&nbsp; configureA: #Linux64x86w32BitSqueakCogSpurConfig forBuildType:#build; <br>&nbsp;&nbsp;&nbsp; enableMessageTracking: false;<br>&nbsp;&nbsp;&nbsp; generateByTemplate.<br><br><br>It will generate cmake.build.linux64x86w32BitCompatibility&nbsp; directory structure (in the oscogvm directory under your image directory)<br><br>If you then run cmake . it will generate the cmake output.<br><br>That is essentially Ian's work generated from CMakeVMMakerSqueak.<br><br><br>Here is my reasoning.<br><br><br>We want source control of the CMake artefacts<br>We want a quick way to create additional build trees .<br><br>With the move to GIT, the source control and distribution problems are resolved with git's branch merge etc. It is duplication to do that in Squeak (which is what the CMakeVMMakerSqueak project is)<br>It may be quicker to to create new CMake artefacts in plain scripts.<br><br><br>I think in terms of time, the experiment would prove useful to see if that is the better model for building out the CMake scripts.<br><br>If not, I can continue the work on CMakeVMMakerSqueak.<br><br>There are a couple more technical issues to fix (how plugins/cmake interact ...?)<br>The CHIEF issue is ease of use and logic to the setup of new configurations for different platforms.<br><br><br>I am currently working on a Terse Guide for setting up a configuration "quickly" and as you can see, there is significant work to it (as Holger mentioned):<br><br><br><b>NOT DONE</b><br>setGlobalOptions<br><br><br><b>IDENTIFY CONFIGURATIONS CATEGORY</b><br>CMakeVMMakerSqueak-Linux64x64<br><br><b>IDENTIFY ABSTRACT BASE CLASS</b><br>Linux64x64Config isAbstractBaseClass<br><br><b>IDENTIFY BUILDER</b><br>SqueakLinux64x64Builder configurationsCategory<br>SqueakLinux64x64Builder availableBuildConfigurations<br>SqueakLinux64x64Builder unAvailableBuildConfigurations<br><br><b>CREATE AND CONFIGURE THE CONFIGURATION FOR BUILDER INTERACTION</b><br>(must verify/do)<br>Linux64x64Config subclass: #Linux64x64SqueakCogSpurConfig<br>Linux64x64SqueakCogSpurConfig excludeFromBuild &nbsp;&nbsp;&nbsp; ^false<br>Linux64x64SqueakCogSpurConfig class isAbstractBaseClass &nbsp;&nbsp;&nbsp; ^false<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; &nbsp;availableBuildTypes <br><br><br><b>SET UP DIRECTORY PATHS FOR CMAKE OUTPUT</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig&nbsp; dirBuildPlatform&nbsp;&nbsp;&nbsp; ^self dirLinux64x64<br>Linux64x64SqueakCogSpurConfig &gt;&gt;dirSource &nbsp;&nbsp;&nbsp; ^self spur64src<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; dirBuildLanguageVMMM &nbsp;&nbsp;&nbsp; ^self squeakCogSpur<br>Linux64x64Config&nbsp; &gt;&gt; coreSourcesBuild<br><br><b>NOT DONE</b><br>setGlobalOptions<br><br><b><br>IDENTIFY CONFIGURATIONS CATEGORY</b><br>CMakeVMMakerSqueak-Linux64x64<br><b><br>IDENTIFY ABSTRACT BASE CLASS</b><br>Linux64x64Config isAbstractBaseClass<br><br><b>IDENTIFY BUILDER</b><br>SqueakLinux64x64Builder configurationsCategory<br>SqueakLinux64x64Builder availableBuildConfigurations<br>SqueakLinux64x64Builder unAvailableBuildConfigurations<br><b><br>CREATE AND CONFIGURE THE CONFIGURATION FOR BUILDER INTERACTION</b><br>(must verify/do)<br>Linux64x64Config subclass: #Linux64x64SqueakCogSpurConfig<br>Linux64x64SqueakCogSpurConfig excludeFromBuild &nbsp;&nbsp; &nbsp;^false<br>Linux64x64SqueakCogSpurConfig class isAbstractBaseClass &nbsp;&nbsp; &nbsp;^false<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp; availableBuildTypes <br><b><br><br>SET UP DIRECTORY PATHS FOR CMAKE OUTPUT</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig&nbsp; dirBuildPlatform&nbsp;&nbsp; &nbsp;^self dirLinux64x64<br>Linux64x64SqueakCogSpurConfig &gt;&gt;dirSource &nbsp;&nbsp; &nbsp;^self spur64src<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp;dirBuildLanguageVMMM &nbsp;&nbsp; &nbsp;^self squeakCogSpur<br>Linux64x64Config&nbsp; &gt;&gt; coreSourcesBuild<br>SystemNavigation browseAllImplementorsOf: #cmakeWriteDirectoriesDotCmake:&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br><br><br><b>SET VM TYPE AND SOURCE INFORMATION</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp;setPlatformSourcesBuild:aMaker<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp;cogitClass&nbsp;&nbsp; &nbsp;^ StackToRegisterMappingCogit <br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp; interpreterClass&nbsp;&nbsp; &nbsp;^ CoInterpreter&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br><br><br><b>CMAKE GLOBAL OPTIONS AND NON-STANDARD LOCATIONS HINTS , OS SPECIFIC IDIOMS</b><br>(possible overrides)<br>x-CPlatformConfigForSqueak &gt;&gt; setGlobalOptionsBuild: aMaker<br>x-SqueakUnixConfig &gt;&gt;cmakePrefixPathBuild<br>x-SqueakUnixConfig &gt;&gt;cmakeIncludePathBuild<br>x-SqueakUnixConfig &gt;&gt;cmakeLibraryPathBuild<br>x-SqueakUnixConfig&gt;&gt;cmakeIncludeModulesBuild<br>x-SqueakUnixConfig &gt;&gt;extraVMSettingsBuild: aMaker<br><br><b><br><br>SET COMPILER FLAGS, COMPILER DEFINITIONS, LINKER FLAGS, LIBRARIES (WHAT ELSE?)</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig &gt;&gt; compilerFlagsBuild&nbsp;&nbsp; &nbsp;<br>Linux64x64SqueakCogSpurConfig &gt;&gt; compilerDefinitionsBuild&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; <br>(possible overrides)&nbsp;&nbsp; &nbsp;<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp; &nbsp;externalLibsBuild&nbsp;&nbsp; &nbsp;^self externalLibraries asOrderedCollection.<br>Linux64x64Config &gt;&gt; externalLibraries&nbsp;&nbsp;&nbsp; (note, this is the Abstract base class, override if you wish)&nbsp;&nbsp; &nbsp;<br>Linux64x64Config &gt;&gt; linkerFlagsBuild&nbsp; (note this is abstract base class, override if you wish)<br>SqueakUnixConfig&gt;&gt;standardIncludesBuild<br>Linux64x64Config&nbsp; &gt;&gt; preferredIncludesBuild<br><br><br><b>INCLUDE OPTIONAL CMAKE MODULES </b><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>SystemNavigation browseAllImplementorsOf: #cmakeWriteDirectoriesDotCmake:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br><br><br><b>SET VM TYPE AND SOURCE INFORMATION</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; setPlatformSourcesBuild:aMaker<br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; cogitClass&nbsp;&nbsp;&nbsp; ^ StackToRegisterMappingCogit <br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; &nbsp;interpreterClass&nbsp;&nbsp;&nbsp; ^ CoInterpreter&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br><br><b><br>CMAKE GLOBAL OPTIONS AND NON-STANDARD LOCATIONS HINTS , OS SPECIFIC IDIOMS</b><br>(possible overrides)<br>x-CPlatformConfigForSqueak &gt;&gt; setGlobalOptionsBuild: aMaker<br>x-SqueakUnixConfig &gt;&gt;cmakePrefixPathBuild<br>x-SqueakUnixConfig &gt;&gt;cmakeIncludePathBuild<br>x-SqueakUnixConfig &gt;&gt;cmakeLibraryPathBuild<br>x-SqueakUnixConfig&gt;&gt;cmakeIncludeModulesBuild<br>x-SqueakUnixConfig &gt;&gt;extraVMSettingsBuild: aMaker<br><br><br><br><b>SET COMPILER FLAGS, COMPILER DEFINITIONS, LINKER FLAGS, LIBRARIES (WHAT ELSE?)</b><br>(must verify/do)<br>Linux64x64SqueakCogSpurConfig &gt;&gt; compilerFlagsBuild&nbsp;&nbsp;&nbsp; <br>Linux64x64SqueakCogSpurConfig &gt;&gt; compilerDefinitionsBuild&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>(possible overrides)&nbsp;&nbsp;&nbsp; <br>Linux64x64SqueakCogSpurConfig &gt;&gt;&nbsp;&nbsp;&nbsp; externalLibsBuild&nbsp;&nbsp;&nbsp; ^self externalLibraries asOrderedCollection.<br>Linux64x64Config &gt;&gt; externalLibraries&nbsp;&nbsp;&nbsp; (note, this is the Abstract base class, override if you wish)&nbsp;&nbsp;&nbsp; <br>Linux64x64Config &gt;&gt; linkerFlagsBuild&nbsp; (note this is abstract base class, override if you wish)<br>SqueakUnixConfig&gt;&gt;standardIncludesBuild<br>Linux64x64Config&nbsp; &gt;&gt; preferredIncludesBuild<br><b><br><br>INCLUDE OPTIONAL CMAKE MODULES </b><br><br><br><br><br>So, I have to ask myself---what type of work makes better sense and includes less work? Directly hacking the CMakeLists.txt themselves? or the above "terse guide"?<br><br><br>Thoughts?<br><br><br><br><br><br><br></div></body></html>