[Vm-dev] VM Maker: CMakeVMMakerSqueak-tty.126.mcz

gettimothy gettimothy at zoho.com
Mon Jul 4 12:21:50 UTC 2016


Hi David Hi Holger


On thinking about this, you guys are probably right.

Unfortunately, I have no interest in that project (I would like to move on to other things)

If you take the output from  just one configuration like....

SqueakLinux64x86w32CompatBuilder 
    configureA: #Linux64x86w32BitSqueakCogSpurConfig forBuildType:#build; 
    enableMessageTracking: false;
    generateByTemplate.


It will generate cmake.build.linux64x86w32BitCompatibility  directory structure (in the oscogvm directory under your image directory)

If you then run cmake . it will generate the cmake output.

That is essentially Ian's work generated from CMakeVMMakerSqueak.


Here is my reasoning.


We want source control of the CMake artefacts
We want a quick way to create additional build trees .

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)
It may be quicker to to create new CMake artefacts in plain scripts.


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.

If not, I can continue the work on CMakeVMMakerSqueak.

There are a couple more technical issues to fix (how plugins/cmake interact ...?)
The CHIEF issue is ease of use and logic to the setup of new configurations for different platforms.


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):


NOT DONE
setGlobalOptions


IDENTIFY CONFIGURATIONS CATEGORY
CMakeVMMakerSqueak-Linux64x64

IDENTIFY ABSTRACT BASE CLASS
Linux64x64Config isAbstractBaseClass

IDENTIFY BUILDER
SqueakLinux64x64Builder configurationsCategory
SqueakLinux64x64Builder availableBuildConfigurations
SqueakLinux64x64Builder unAvailableBuildConfigurations

CREATE AND CONFIGURE THE CONFIGURATION FOR BUILDER INTERACTION
(must verify/do)
Linux64x64Config subclass: #Linux64x64SqueakCogSpurConfig
Linux64x64SqueakCogSpurConfig excludeFromBuild     ^false
Linux64x64SqueakCogSpurConfig class isAbstractBaseClass     ^false
Linux64x64SqueakCogSpurConfig >>     availableBuildTypes 


SET UP DIRECTORY PATHS FOR CMAKE OUTPUT
(must verify/do)
Linux64x64SqueakCogSpurConfig  dirBuildPlatform    ^self dirLinux64x64
Linux64x64SqueakCogSpurConfig >>dirSource     ^self spur64src
Linux64x64SqueakCogSpurConfig >>    dirBuildLanguageVMMM     ^self squeakCogSpur
Linux64x64Config  >> coreSourcesBuild

NOT DONE
setGlobalOptions


IDENTIFY CONFIGURATIONS CATEGORY
CMakeVMMakerSqueak-Linux64x64

IDENTIFY ABSTRACT BASE CLASS
Linux64x64Config isAbstractBaseClass

IDENTIFY BUILDER
SqueakLinux64x64Builder configurationsCategory
SqueakLinux64x64Builder availableBuildConfigurations
SqueakLinux64x64Builder unAvailableBuildConfigurations

CREATE AND CONFIGURE THE CONFIGURATION FOR BUILDER INTERACTION
(must verify/do)
Linux64x64Config subclass: #Linux64x64SqueakCogSpurConfig
Linux64x64SqueakCogSpurConfig excludeFromBuild     ^false
Linux64x64SqueakCogSpurConfig class isAbstractBaseClass     ^false
Linux64x64SqueakCogSpurConfig >>     availableBuildTypes 


SET UP DIRECTORY PATHS FOR CMAKE OUTPUT
(must verify/do)
Linux64x64SqueakCogSpurConfig  dirBuildPlatform    ^self dirLinux64x64
Linux64x64SqueakCogSpurConfig >>dirSource     ^self spur64src
Linux64x64SqueakCogSpurConfig >>    dirBuildLanguageVMMM     ^self squeakCogSpur
Linux64x64Config  >> coreSourcesBuild
SystemNavigation browseAllImplementorsOf: #cmakeWriteDirectoriesDotCmake:        


SET VM TYPE AND SOURCE INFORMATION
(must verify/do)
Linux64x64SqueakCogSpurConfig >>    setPlatformSourcesBuild:aMaker
Linux64x64SqueakCogSpurConfig >>    cogitClass    ^ StackToRegisterMappingCogit 
Linux64x64SqueakCogSpurConfig >>     interpreterClass    ^ CoInterpreter        


CMAKE GLOBAL OPTIONS AND NON-STANDARD LOCATIONS HINTS , OS SPECIFIC IDIOMS
(possible overrides)
x-CPlatformConfigForSqueak >> setGlobalOptionsBuild: aMaker
x-SqueakUnixConfig >>cmakePrefixPathBuild
x-SqueakUnixConfig >>cmakeIncludePathBuild
x-SqueakUnixConfig >>cmakeLibraryPathBuild
x-SqueakUnixConfig>>cmakeIncludeModulesBuild
x-SqueakUnixConfig >>extraVMSettingsBuild: aMaker



SET COMPILER FLAGS, COMPILER DEFINITIONS, LINKER FLAGS, LIBRARIES (WHAT ELSE?)
(must verify/do)
Linux64x64SqueakCogSpurConfig >> compilerFlagsBuild    
Linux64x64SqueakCogSpurConfig >> compilerDefinitionsBuild    
    
(possible overrides)    
Linux64x64SqueakCogSpurConfig >>    externalLibsBuild    ^self externalLibraries asOrderedCollection.
Linux64x64Config >> externalLibraries    (note, this is the Abstract base class, override if you wish)    
Linux64x64Config >> linkerFlagsBuild  (note this is abstract base class, override if you wish)
SqueakUnixConfig>>standardIncludesBuild
Linux64x64Config  >> preferredIncludesBuild


INCLUDE OPTIONAL CMAKE MODULES 
        
SystemNavigation browseAllImplementorsOf: #cmakeWriteDirectoriesDotCmake:        


SET VM TYPE AND SOURCE INFORMATION
(must verify/do)
Linux64x64SqueakCogSpurConfig >>    setPlatformSourcesBuild:aMaker
Linux64x64SqueakCogSpurConfig >>    cogitClass    ^ StackToRegisterMappingCogit 
Linux64x64SqueakCogSpurConfig >>     interpreterClass    ^ CoInterpreter        


CMAKE GLOBAL OPTIONS AND NON-STANDARD LOCATIONS HINTS , OS SPECIFIC IDIOMS
(possible overrides)
x-CPlatformConfigForSqueak >> setGlobalOptionsBuild: aMaker
x-SqueakUnixConfig >>cmakePrefixPathBuild
x-SqueakUnixConfig >>cmakeIncludePathBuild
x-SqueakUnixConfig >>cmakeLibraryPathBuild
x-SqueakUnixConfig>>cmakeIncludeModulesBuild
x-SqueakUnixConfig >>extraVMSettingsBuild: aMaker



SET COMPILER FLAGS, COMPILER DEFINITIONS, LINKER FLAGS, LIBRARIES (WHAT ELSE?)
(must verify/do)
Linux64x64SqueakCogSpurConfig >> compilerFlagsBuild    
Linux64x64SqueakCogSpurConfig >> compilerDefinitionsBuild    
    
(possible overrides)    
Linux64x64SqueakCogSpurConfig >>    externalLibsBuild    ^self externalLibraries asOrderedCollection.
Linux64x64Config >> externalLibraries    (note, this is the Abstract base class, override if you wish)    
Linux64x64Config >> linkerFlagsBuild  (note this is abstract base class, override if you wish)
SqueakUnixConfig>>standardIncludesBuild
Linux64x64Config  >> preferredIncludesBuild


INCLUDE OPTIONAL CMAKE MODULES 




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"?


Thoughts?







-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160704/5e9a90bd/attachment.htm


More information about the Vm-dev mailing list