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?