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

commits at source.squeak.org commits at source.squeak.org
Tue Dec 9 19:41:54 UTC 2014


Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.103.mcz

==================== Summary ====================

Name: CMakeVMMakerSqueak-tty.103
Author: tty
Time: 9 December 2014, 2:42:22.857 pm
UUID: 81759a43-7ae8-4ae3-b3e2-ee7ca4467bb6
Ancestors: CMakeVMMakerSqueak-tty.102

CMakeVMMakerSqueakStartHereHelp book fleshed out, proof-read and tested.

Next up: 
1. In tandem build the CMakeVMMakerSqueakDeveloperHelp by creating a new configuration for a pure 32 bit linux system and documenting/testing the steps.

2. Try to avoid the 'if u cn rd ths u may b a prgrmr' default documentatin style.

=============== Diff against CMakeVMMakerSqueak-tty.102 ===============

Item was changed:
+ CMakeVMMakerSqueakDeveloperHelp subclass: #CMakeVMMakerSqueakBuildersHelp
- CMakeVMMakerSqueakHelp subclass: #CMakeVMMakerSqueakBuildersHelp
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Help'!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>bookName (in category 'accessing') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>bookName (in category 'as yet unclassified') -----
  bookName 
  	^'Builders'!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>buildTypes (in category 'pages') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>buildTypes (in category 'as yet unclassified') -----
  buildTypes
  	^HelpTopic
+ 		title:'Build types'
- 		title:'build types'
  		contents:
+ 'N.B. This query is dependent on the developer taking the time to maintain his Configuration correctly. If they do not, then invalid information will be conveyed.
+ For example, at the time of this writing, tty has completely dropped the ball on this. (:
- 'The purpose of this method is to present the end user with the avaiable buildTypes for a configuration category. when they invoke a Builder like so:
  
+ Configurations are built over time. There is a possibility that a particulare build type is not available for a given Configuration.
- 	SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackV3Config
  
+ For example, at the time of this writing, Linux64x86w32BitSqueakCogV3Config only has buildType #build available.
+ 
  Since builds are sometimes not available and/or under development  a developer may wish to restrict what build types are avaiable for a configurations Builder by modifying the configuration''s "availableBuilds" method.
  
+ The purpose of this method is to present the end user with the avaiable buildTypes for a configuration category. when they invoke a Builder like so:
+ 
+ 	SqueakLinux64x86w32CompatBuilder availableBuildTypesFor: #Linux64x86w32BitSqueakCogV3Config
+ 
  The default is all buildTypes: 
  	^SqueakCMakeVMMakerAbstractBuilder  default  allBuildConfigurations
  
  You can display no buildTypes with:
  	^SqueakCMakeVMMakerAbstractBuilder  default  noBuildConfigurations.
  
  or you can customize it like so:
  	^(SqueakCMakeVMMakerAbstractBuilder  default  allBuildConfigurations 
  			copyWithoutAll: #( #assertWithHeartbeatTimer #debugWithHeartbeatTimer debugMultiThreadedFFI.....etc))  
  
  
  '!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>builders (in category 'pages') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>builders (in category 'as yet unclassified') -----
  builders
  	^HelpTopic
  		title: 'Builders'
  		contents:
  '
  CMakeVMakerSqueak Builders provide a facade to CMakeVMmakerSqueak Configurations.
  
  A Builder is both a ''query'' tool and a ''build'' tool.
  
  With a  Builder, you can 
  	query its configurationsCategory''s Configurations
  	invoke a Configuration to generate CMake files or 
  	invoke a Configuration to generateSources which
  			invokes VMMaker.oscog to generate source
  
  Builders are concrete instances of the Abstract Base Class:SqueakCMakeVMMakerAbstractBuilder
  View SqueakCMakeVMMakerAbstractBuilder''s class comments for an overview of this tool.
  
  SqueakCMakeVMMakerAbstractBuilder  browseHierarchy.
  
  Information on creating your own is available via HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  '!

Item was added:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>generatingCMakeBuilds (in category 'pages') -----
+ generatingCMakeBuilds
+ 	^HelpTopic
+ 		title: 'Generating CMake Builds'
+ 		contents:
+ '
+ SqueakLinux64x86w32CompatBuilder configurationsCategory
+ SqueakLinux64x86w32CompatBuilder buildDirectory
+ SqueakLinux64x86w32CompatBuilder availableBuilds
+ SqueakLinux64x86w32CompatBuilder availableBuildTypesFor:(SqueakLinux64x86w32CompatBuilder availableBuilds at:1)
+ SqueakLinux64x86w32CompatBuilder sourceDirectoryFor:(SqueakLinux64x86w32CompatBuilder availableBuilds at:1)
+ 
+ '!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>pages (in category 'accessing') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>pages (in category 'as yet unclassified') -----
  pages
+ 	^#(builders queryingBuilders buildTypes  generatingCMakeBuilds scratch)!
- 	^#(builders queryingBuilders buildTypes  scratch)!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>queryingBuilders (in category 'pages') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>queryingBuilders (in category 'as yet unclassified') -----
  queryingBuilders
  	^HelpTopic
  		title: 'Querying Builders'
  		contents:
  '
+ You query Builders for Configuration information for a specifi platform.
  
- Below are some queries avaiable via various Builders in the CMakeVMMakerSqueak package:
- SqueakCMakeVMMakerAbstractBuilder  reset                                     "reset internal state of the Abstract Builder"
- SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:false    "buildable configurations"
- SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:true.    "edit that configs ''excludeFromBuild'' method to change"
- SqueakCMakeVMMakerAbstractBuilder availableBuildTypes
- SqueakCMakeVMMakerAbstractBuilder  reset                                     "reset internal state of the Abstract Builder"
- 
- 
- SqueakAndroidBuilder configurationsCategory
- SqueakAndroidBuilder  buildDirectory
- SqueakAndroidBuilder  availableBuilds
- SqueakAndroidBuilder  availableBuildTypesFor:(SqueakAndroidBuilder availableBuilds at:1)
- SqueakAndroidBuilder  sourceDirectoryFor:(SqueakAndroidBuilder availableBuilds at:1)
- 
- SqueakBSDx86Builder configurationsCategory
- SqueakBSDx86Builder buildDirectory
- SqueakBSDx86Builder availableBuilds
- SqueakBSDx86Builder availableBuildTypesFor:(SqueakBSDx86Builder availableBuilds at:1)
- SqueakBSDx86Builder sourceDirectoryFor:(SqueakBSDx86Builder availableBuilds at:1)
- 
- SqueakIA32BochsBuilder configurationsCategory
- SqueakIA32BochsBuilder buildDirectory
- SqueakIA32BochsBuilder availableBuilds
- SqueakIA32BochsBuilder availableBuildTypesFor:(SqueakIA32BochsBuilder availableBuilds at:1)
- SqueakIA32BochsBuilder sourceDirectoryFor:(SqueakIA32BochsBuilder availableBuilds at:1)
- 
- SqueakIOSBuilder configurationsCategory
- SqueakIOSBuilder buildDirectory
- SqueakIOSBuilder availableBuilds
- SqueakIOSBuilder availableBuildTypesFor:(SqueakIOSBuilder availableBuilds at:1)
- SqueakIOSBuilder sourceDirectoryFor:(SqueakIOSBuilder availableBuilds at:1)
- 
- SqueakLinux32ARMv6Builder configurationsCategory
- SqueakLinux32ARMv6Builder buildDirectory
- SqueakLinux32ARMv6Builder availableBuilds
- SqueakLinux32ARMv6Builder availableBuildTypesFor:(SqueakLinux32ARMv6Builder availableBuilds at:1)
- SqueakLinux32ARMv6Builder sourceDirectoryFor:(SqueakLinux32ARMv6Builder availableBuilds at:1)
- 
- 
- SqueakLinux32x86Builder configurationsCategory
- SqueakLinux32x86Builder buildDirectory
- SqueakLinux32x86Builder availableBuilds
- SqueakLinux32x86Builder availableBuildTypesFor:(SqueakLinux32x86Builder availableBuilds at:1)
- SqueakLinux32x86Builder sourceDirectoryFor:(SqueakLinux32x86Builder availableBuilds at:1)
- 
- SqueakLinux32x86_64Builder configurationsCategory
- SqueakLinux32x86_64Builder SqueakLinux32x86_64Builder
- SqueakLinux32x86_64Builder SqueakLinux32x86_64Builder
- SqueakLinux32x86_64Builder availableBuildTypesFor:(SqueakLinux32x86_64Builder availableBuilds at:1)
- SqueakLinux32x86_64Builder sourceDirectoryFor:(SqueakLinux32x86_64Builder availableBuilds at:1)
- 
  SqueakLinux64x86w32CompatBuilder configurationsCategory
  SqueakLinux64x86w32CompatBuilder buildDirectory
  SqueakLinux64x86w32CompatBuilder availableBuilds
  SqueakLinux64x86w32CompatBuilder availableBuildTypesFor:(SqueakLinux64x86w32CompatBuilder availableBuilds at:1)
  SqueakLinux64x86w32CompatBuilder sourceDirectoryFor:(SqueakLinux64x86w32CompatBuilder availableBuilds at:1)
  
- SqueakMacOSBuilder configurationsCategory
- SqueakMacOSBuilder buildDirectory
- SqueakMacOSBuilder availableBuilds
- SqueakMacOSBuilder availableBuildTypesFor:(SqueakMacOSBuilder availableBuilds at:1)
- SqueakMacOSBuilder sourceDirectoryFor:(SqueakMacOSBuilder availableBuilds at:1)
- 
- SqueakMacOSPowerPCBuilder configurationsCategory
- SqueakMacOSPowerPCBuilder buildDirectory
- SqueakMacOSPowerPCBuilder availableBuilds
- SqueakMacOSPowerPCBuilder availableBuildTypesFor:(SqueakMacOSPowerPCBuilder availableBuilds at:1)
- SqueakMacOSPowerPCBuilder sourceDirectoryFor:(SqueakMacOSPowerPCBuilder availableBuilds at:1)
- 
- SqueakMacOSX32x86Builder configurationsCategory
- SqueakMacOSX32x86Builder buildDirectory
- SqueakMacOSX32x86Builder availableBuilds
- SqueakMacOSX32x86Builder availableBuildTypesFor:(SqueakMacOSX32x86Builder availableBuilds at:1)
- SqueakMacOSX32x86Builder sourceDirectoryFor:(SqueakMacOSX32x86Builder availableBuilds at:1)
- 
- SqueakSunOS32x86Builder configurationsCategory
- SqueakSunOS32x86Builder buildDirectory
- SqueakSunOS32x86Builder availableBuilds
- SqueakSunOS32x86Builder availableBuildTypesFor:(SqueakSunOS32x86Builder availableBuilds at:1)
- SqueakSunOS32x86Builder sourceDirectoryFor:(SqueakSunOS32x86Builder availableBuilds at:1)
- 
- SqueakWin32x86Builder configurationsCategory
- SqueakWin32x86Builder buildDirectory
- SqueakWin32x86Builder availableBuilds
- SqueakWin32x86Builder availableBuildTypesFor:(SqueakWin32x86Builder availableBuilds at:1)
- SqueakWin32x86Builder sourceDirectoryFor:(SqueakWin32x86Builder availableBuilds at:1)
- 
- 
  '!

Item was changed:
+ ----- Method: CMakeVMMakerSqueakBuildersHelp class>>scratch (in category 'pages') -----
- ----- Method: CMakeVMMakerSqueakBuildersHelp class>>scratch (in category 'as yet unclassified') -----
  scratch
  	^HelpTopic
  		title: 'Scratch Notes To Be Organized'
  		contents:
  '
  HEADS UP!! You can ''print it'' in the examples below
  -------------------------Using CMakeVMMakerSqueak-------------------------
  These instructions are duplicated in SqueakCMakeVMMakerAbstractBuilder class comments.
  
  
  The easiest way to use this tool is to utilize one of the concrete Builders in category CMakeVMMakerSqueak-Builder.
  
  With a builder, you can query it for information and then invoke it to generate configurations and or source.
  
  Printing or inspecting the following lines will give you a flavor of a typical work-flow.
  
  
  -------------Buildable/non-buildable configurations---------
  SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:false    "buildable configurations"
  SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:true.    "edit that configs ''excludeFromBuild'' method to change"
  SqueakCMakeVMMakerAbstractBuilder availableBuildTypes
  
  -------------------------Querying Builders---------------
  SqueakLinux32X86Builder configurationsCategory 
  SqueakLinux32X86Builder buildDirectory 
  SqueakLinux32X86Builder availableBuilds	 
  SqueakLinux32X86Builder availableBuildTypesFor:(SqueakLinux32X86Builder availableBuilds at:1)
  SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackSpurConfig
  SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackV3Config
  SqueakLinux32X86Builder sourceDirectoryFor:(SqueakLinux32X86Builder availableBuilds at:1)
  
  -------------------------Invoking Builders-------------------------
  SqueakCMakeVMMakerAbstractBuilder reset
  SqueakCMakeVMMakerAbstractBuilder availableBuildTypes a SortedCollection(#build #buildAssert #buildAssertITimerHeartbeat #buildDebug #buildDebugITimerHeartbeat #buildDebugMultiThreaded #buildITimerHeartbeat #buildMultiThreaded #buildMultiThreadedAssert #buildMultiThreadedDebug)
  
  [SqueakCMakeVMMakerAbstractBuilder availableBuildTypes do: [:type | 
  	SqueakLinux32X86Builder
  		configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: type;	
  		generate   ]] on: ProvideAnswerNotification do: [:ex | ex resume:true]
  
  
  "generate only CMake config files"
  SqueakLinux32X86Builder 
  	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #buildAssertITimerHeartbeat;
  	generate   
  
  "generate configurations and invoke VMMaker to generate source code"
  SqueakLinux32X86Builder 
  	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #buildAssertITimerHeartbeat;
  	generateSources  ;
  	generate.
  
  -------------------------Compiling Instructions-------------------------
  open a terminal and go to the configurations build directory for that configuration. (SqueakLinux32X86Builder buildDirectory)
  change into the build type subdirectory (build, build.assert, build.debug...etc)
  source build.sh will run ''cmake. make'' 
  executable is placed in  /products folder.  (SqueakLinux32X86Builder ouputDirectory)
  
  
  ----------------------Editing/Constructing Configurations--------------
  
  Configurations are organized by category:  OperatingSystem, VM Word Size, Processor . (i.e MacOSX32x86 configurations reside in CMakeVMMakerSqueak-MacOSX32x86a)
  For a OperatingSystem,VM Word Size, Processor, configurations are then organized by Language.VM.MemoryManafger (newswpeak.stack.v3, squeak.sista.spur. squeak.cog.spur, etc)
  
  IF an existing configuratin exists, you may edit or subclass it. For a Builder to see it, it must remain in the category.
  
  The flag excludeFromBuild determines wether the builder will build it or not. This flag is set to exclude configurations that are just placeholders.
  
  If you have a special case for an existing [OS][WordSize][Processor].[lang][vm][mm] configuration just subclass it and provide customizations.
  
  TODO: Provide typical customizations and how to implement them
  
  internal/external plugins?
  compiler flags?
  includes?
  
  
  
  
  ----------------------Improvements needed-------------------------
  
  The CMakeVMMakerSqueak package has some design hacks because it extends 
  the pharo CMakeVMMaker package without modifying that code base.
  Therefore, things that should have been done by introducing squeak sub-classes in the pharo source tree could not be done.
  
  The biggest design ''quirk'' is the use of the Trait TCPlatformConfigForSqueak to enforce a pseudo abstract base class mechanism.
  The other design ''quirk'' are the overrides of methods in CPlatformConfig in pharo''s package of incompatible methods. (see protocol squeak-compatibility)
  Because of the existing inheritance tree, the overrides could not happen in one squeak compatibility class, but are implemented
  in several subclasses of CPlatformConfig.
  
  The Squeak Builders implementation also differs significantly from the pharo implementation.
  The pharo code''s ''configForDebug/configForReleaase'' has been expanded to support the squeak build needs.
  
  
  '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>pages (in category 'pages') -----
  pages
+ 	^#(overview prerequisites  terms igorStasenkoDesign  tests buildersAndConfigs plugins pthreads configDotCmake templates vmplugins CMakeVMMakerSqueakBuildersHelp CMakeVMMakerSqueakHowToCreateNewConfigurationHelp)!
- 	^#(overview prerequisites  terms igorStasenkoDesign  tests buildersAndConfigs plugins pthreads configDotCmake templates vmplugins)!

Item was changed:
  ----- Method: CMakeVMMakerSqueakHelp class>>bookName (in category 'accessing') -----
  bookName
+ 	^'CMakeVMMakerSqueak'!
- 	^'CMakeVMMaker on Squeak'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakHelp class>>pages (in category 'accessing') -----
  pages
+ 	^#(CMakeVMMakerSqueakStartHereHelp CMakeVMMakerSqueakDeveloperHelp )!
- 	^#(CMakeVMMakerSqueakStartHereHelp CMakeVMMakerSqueakDeveloperHelp CMakeVMMakerSqueakBuildersHelp CMakeVMMakerSqueakHowToCreateNewConfigurationHelp)!

Item was changed:
+ CMakeVMMakerSqueakDeveloperHelp subclass: #CMakeVMMakerSqueakHowToCreateNewConfigurationHelp
- CMakeVMMakerSqueakHelp subclass: #CMakeVMMakerSqueakHowToCreateNewConfigurationHelp
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Help'!
  
  !CMakeVMMakerSqueakHowToCreateNewConfigurationHelp commentStamp: 'tty 6/16/2014 12:19' prior: 0!
  A CMakeVMMakerSqueakNewConfigurationStepByStepHelp itemizes the steps needed to create a new build configuration.
  
  HelpBrowser openOn: CMakeVMMakerSqueakNewConfigurationStepByStepHelp!

Item was changed:
+ CMakeVMMakerSqueakDeveloperHelp subclass: #CMakeVMMakerSqueakStartHereHelp
- CMakeVMMakerSqueakHelp subclass: #CMakeVMMakerSqueakStartHereHelp
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Help'!
  
  !CMakeVMMakerSqueakStartHereHelp commentStamp: 'tty 11/28/2014 10:27' prior: 0!
  A CMakeVMMakerSqueakStartHereHelp provides examples of usage for newbies.
  
  
  !

Item was added:
+ ----- Method: CMakeVMMakerSqueakStartHereHelp class>>exampleWorkFlow (in category 'pages') -----
+ exampleWorkFlow
+ 	^HelpTopic
+ 		title: 'Example Workflow'
+ 		contents:
+ 'I want to build a Cog VM for Squeak with the V3 memory model. on a SlackwareLinux64 with 32 bit Compatability libs platform.  
+ 
+ To do this, I ...
+ 
+ 1. Choose the Builder for my platform.  
+ 2. Choose the Configuration I need for my [Platform][Language][VM][Memory Model] 
+ 3. Choose a Build Type for the Configuration. 
+ 4. Write the CMake output.
+ 
+ So, here we go.
+ 
+ I choose the appropriate Builder from the CMakeVMMakerSqueak-Builder category for my platform; in my case it is the SqueakLinux64x86w32CompatBuilder.
+ SqueakLinux64x86w32CompatBuilder browse.
+ 
+ I can query the Builder for available Configurations and BuildTypes for that Configuration and where it will put its output by sending the following messages: (presented here with output from my system below the message send)
+ 
+ SqueakLinux64x86w32CompatBuilder availableBuildConfigurations.  
+ --> a SortedCollection(#Linux64x86w32BitSqueakCogV3Config)
+ 
+ SqueakLinux64x86w32CompatBuilder allBuildTypes.  
+ --> an OrderedCollection(#build #buildAssert #buildAssertITimerHeartbeat #buildDebug #buildDebugITimerHeartbeat #buildITimerHeartbeat #buildMultiThreaded #buildMultiThreadedAssert #buildMultiThreadedDebug #buildNone)
+ 
+ SqueakLinux64x86w32CompatBuilder availableBuildTypesFor:(SqueakLinux64x86w32CompatBuilder availableBuildConfigurations at:1).
+ --> an OrderedCollection(#build)
+ 
+ SqueakLinux64x86w32CompatBuilder buildDirectory 
+ -->  ''cmake.build.linux32_64x86''
+ 
+ The availableBuildConfigurations message shows I have a Linux64x86w32BitSqueakCogV3Config available.  (As additional Configurations and their buildTypes are added to the system they will show up in these queries). 
+ 
+ 
+ The allBuildTypes message shows the universe of possible build types:  
+ --> an OrderedCollection(#build #buildAssert #buildAssertITimerHeartbeat #buildDebug #buildDebugITimerHeartbeat #buildITimerHeartbeat #buildMultiThreaded #buildMultiThreadedAssert #buildMultiThreadedDebug #buildNone)
+ 
+ Out of the universe of allBuildTypes, The availableBuildTypes message shows me that (at the time of this writing) the Linux64x86w32BitSqueakCogV3Config only supports one build type:
+ -->  an OrderedCollection(#build)
+ 
+ Now that I know what is possible, I  instruct the Builder to ask the Linux64x86w32BitSqueakCogV3Config Configuration to configure itself for the buildType: #build ,  enable trace messages in the CMake files to make troubleshooting easier and generate the CMake build tree: 
+ 
+ SqueakLinux64x86w32CompatBuilder 
+ 	configureA: #Linux32x86SqueakCogV3Config forBuildType: #build;   
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
+ 
+ (FYI the above provides no user feedback)
+ 
+ The Linux32x86SqueakCogV3Config writes itself to a directory that matches its [cmake.Platform]/[Language].[VM].[MemoryModel]/[BuildType]
+ 
+ On my system that is:
+ 
+ /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.[Platform]/[Language].[VM].[MemoryModel]/build
+ i.e.
+ /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.build.linux32_64x86/squeak.cog.v3/build
+ 
+ I open a terminal and navigate to that directory:
+ 
+ cd /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.build.linux32_64x86/squeak.cog.v3/build
+ 
+ I run the commands in the generated ''build.sh'' file.  (I have had some wierd issues with running it directly, so I just run the commands therein)
+ bash-4.2$ cat build.sh 
+ #!!/usr/bin/env bash
+ export CC=gcc
+ export CXX=g++
+ cmake .
+ make
+ 
+ If things work, you will have a working VM in the products directory on my system I see:
+ 
+ bash-4.2$ ls /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.products/squeak.cog.v3/
+ cog  vm-display-X11  vm-display-null  vm-sound-ALSA  vm-sound-null
+ 
+ I test the VM
+ 
+ bash-4.2$ cd /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.products/squeak.cog.v3/
+ 
+ bash-4.2$ ./cog -version
+ . #1 Tue Dec  9 13:17:50 EST 2014 gcc 4.8.2 [Production VM]
+ CoInterpreter VMMaker.oscog-eem.973 uuid: 1c182b73-874c-48f7-a4f4-61255efdc565 Dec  9 2014
+ StackToRegisterMappingCogit VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef Dec  9 2014
+ VM: r3164 http://www.squeakvm.org/svn/squeak/branches/Cog Date: 2014-12-06 20:38:11 -0500
+ Plugins: r3131 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
+ Linux flipper 3.10.17 #2 SMP Wed Oct 23 16:34:38 CDT 2013 x86_64 AMD Phenom(tm) II X4 965 Processor AuthenticAMD GNU/Linux
+ plugin path: /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.products/squeak.cog.v3/ [default: /home/tty/usr/src/smalltalk/CMake.oscog/cogVMMaker/oscogvm/cmake.products/squeak.cog.v3/]
+ 
+ And, that''s about it.'!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStartHereHelp class>>overview (in category 'pages') -----
+ overview
+ 	^HelpTopic
+ 		title: 'Overview'
+ 		contents:
+ 'CMakeVMMakerSqueak is a collection of tools for generating CMake files. The high-level workflow is:
+ 
+ 1. Instruct  CMakeVMMakerSqueak to generate CMake build directories and CMake configuration files.
+ 
+ 2. Invoke the  ''cmake'' command at the top level of the generated cmake build tree
+ 
+ 3. CMake configures and outputs the build system files for that platform.
+ 
+ 4. The user invokes the native build system.
+ 
+ 5. A VM is produced under a ~/...../''cmake.platforms'' subdirectory.
+ 
+ The ''Example Workflow'' page in this Help book provides an example of the above workflow with minimal explanation.
+ 
+ In-depth explanations of the system(s), tools and how to use them, see the ''CMakeVMMaker Developer Guide'''!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStartHereHelp class>>pages (in category 'accessing') -----
  pages
+ 	^#(overview requirements exampleWorkFlow)!
- 	^#(scratch shortVersionLinuxBuild)!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStartHereHelp class>>requirements (in category 'pages') -----
+ requirements
+ 	^HelpTopic
+ 		title: 'Requirements'
+ 		contents:
+ 'CMakeVMakerSqueak (as of 2014.12.09) depends on the Pharo package CMakeVMMaker. A (possibly out-of-sync) Monticello version is available at:
+ 
+ MCHttpRepository
+ 	location: ''http://source.squeak.org/VMMaker''
+ 	user: ''''
+ 	password: ''''
+ 
+ CMakeVMMakerSqueak is available at:
+ 
+ MCHttpRepository
+ 	location: ''http://source.squeak.org/VMMaker''
+ 	user: ''''
+ 	password: ''''
+ 
+ CMake is available from http://www.cmake.org. The version of CMake used as of 2014.12.09 is 2.8.12  
+ 
+ CMake provides a cmake_minimum_required(..) command, so newer versions should be ok.
+ 
+ The Example Workflow is presented on a GNU Linux system with the standard development tools. Macintosh and Windows dev tools will differ.'!

Item was removed:
- ----- Method: CMakeVMMakerSqueakStartHereHelp class>>scratch (in category 'pages') -----
- scratch
- 	^HelpTopic
- 		title: 'Start Here Scratch'
- 		contents:
- 'Goal is that a complete newbie can open this and get up and running.
- 
- '!

Item was removed:
- ----- Method: CMakeVMMakerSqueakStartHereHelp class>>shortVersionLinuxBuild (in category 'pages') -----
- shortVersionLinuxBuild
- 	^HelpTopic
- 		title: 'Short  Version Linux Build'
- 		contents:
- '1. ---Query the Builder for available configurations and build types---
- SqueakLinux32x86Builder configurationsCategory.
- SqueakLinux32x86Builder availableBuildConfigurations.
- SqueakLinux32x86Builder availableBuildTypesFor:(SqueakLinux32x86Builder availableBuildConfigurations at:1). "Replace at:1 as neccessary"
- 
- 
- 2.---Direct the Builder to invoke a Configuration for a specific build type---
- SqueakLinux32x86Builder
- 	configureA: #Linux32x86SqueakCogV3Config forBuildType:#build;   
- 	enableMessageTracking: false;
- 	generateByTemplate.
- 
- 3.---Direct the Builder to ask the configuration for where it puts its build files---
- SqueakLinux32x86Builder buildDirectory 
- 
- 4.---Open an X-terminal and cd to the above directory and kick off the cmake-build---
- cd (some directory)/Contents/Resources/oscogvm/cmake.build.linux32.x86/squeak.cog.v3/build/
- ./build.sh
- 
- 5.---view your build---
- cd (some directory)/Contents/Resources/oscogvm/products/(FIX ME TTY)
- '!

Item was changed:
  ----- Method: Linux64x86w32BitConfig>>availableBuildTypes (in category 'cmake') -----
  availableBuildTypes
+  	 ^SqueakCMakeVMMakerAbstractBuilder  default  noBuildTypes
+ "
- 	 ^SqueakCMakeVMMakerAbstractBuilder  default  allBuildTypes
- "	subclasses should use
  
+ subclasses should use
+ 
+   ^super allBuildTypes copyWithoutAll: #( #assertWithHeartbeatTimer #debugWithHeartbeatTimer debugMultiThreadedFFI.....etc))   "
-   ^super availableBuildTypes copyWithoutAll: #( #assertWithHeartbeatTimer #debugWithHeartbeatTimer debugMultiThreadedFFI.....etc))   "
  	
  !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogV3Config>>availableBuildTypes (in category 'as yet unclassified') -----
+ availableBuildTypes 
+ "2.14.12.09 only buildType implemented is #build so I remove #build from the below OrderedCollection."
+ 	^SqueakCMakeVMMakerAbstractBuilder  default  allBuildTypes copyWithoutAll: #( #buildAssert #buildAssertITimerHeartbeat #buildDebug #buildDebugITimerHeartbeat #buildITimerHeartbeat #buildMultiThreaded #buildMultiThreadedAssert #buildMultiThreadedDebug #buildNone)!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakBSDx86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakBSDx86Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakBSDx86Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  Object subclass: #SqueakCMakeVMMakerAbstractBuilder
  	instanceVariableNames: 'buildTypeAndDirectoryInfo config'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!
  
+ !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 12/9/2014 12:41' prior: 0!
- !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 12/8/2014 10:42' prior: 0!
  I am an abstract base class for various CMakeVMMakerSqueak builders.
  
  I am a singleton.
  I am a facade to the various Squeak[Platform][WordSize][VM][MemoryManager]Config classes
  I provide facilities to query my configurations.
  I use the Visitor pattern in collecting information about my configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  
  
- 
  !
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!

Item was changed:
  ----- Method: SqueakCMakeVMMakerAbstractBuilder>>configureA:forBuildType: (in category 'building') -----
  configureA: configSymbol forBuildType: typeSymbol
  	| i |
  	self flag:'tty'. "excludeFromBuild returning True does not exit gracefully"
  	"Do some sanity checks, then set the internal state of a Configuration for a particular build type. "
  	[
  	((Smalltalk at: configSymbol)  category) =  (self configurationsCategory)  "verify the class is handled by this concrete builder"
  		ifTrue:[	
  				config := (Smalltalk at: configSymbol) new.                              "verify this config can handle this build type."
  				config excludeFromBuild                                                         "has a developer excluded this build manually?"
  					ifTrue:[^self userErrorConfigMarkedAsExcludeFromBuild: configSymbol].   
  				i:=config availableBuildTypes indexOf:typeSymbol                                    
  						ifAbsent:[^self userErrorInvalidBuildType: typeSymbol "this config does not support this build type"
  										forConfiguration: configSymbol 
  										hasTypes: config availableBuildTypes].
  				(config configureForBuildType: typeSymbol) value.                             "config configure yourself"
  				^self]
  		ifFalse:[^self userErrorInvalidTarget: configSymbol]
  	] ifError:[^'error configureABuildFor: ''', configSymbol].
  
  	^nil.
  	
  
  	!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakIA32BochsBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakIA32BochsBuilder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakIA32BochsBuilder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.!
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
- !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakIOSBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakIOSBuilder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakIOSBuilder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32ARMv6Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux32ARMv6Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakLinux32ARMv6Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux32x86Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakLinux32x86Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.!
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
- !

Item was removed:
- SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32x86_64Builder
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'CMakeVMMakerSqueak-Builder'!
- 
- !SqueakLinux32x86_64Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- I am a facade.
- 
- I query, and invoke CMakeVMMakerSqueak configurations.
- 
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
- !

Item was removed:
- ----- Method: SqueakLinux32x86_64Builder>>configurationsCategory (in category 'queries') -----
- configurationsCategory
- 	^'CMakeVMMakerSqueak-LinuxX86-64'!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux64x86w32CompatBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux64x86w32CompatBuilder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakLinux64x86w32CompatBuilder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
  
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was added:
+ SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinuxX86_64Builder
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-Builder'!
+ 
+ !SqueakLinuxX86_64Builder commentStamp: 'tty 12/9/2014 12:41' prior: 0!
+ I am a facade.
+ 
+ I query, and invoke CMakeVMMakerSqueak configurations.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
+ !

Item was added:
+ ----- Method: SqueakLinuxX86_64Builder>>configurationsCategory (in category 'queries') -----
+ configurationsCategory
+ 	^'CMakeVMMakerSqueak-LinuxX86-64'!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakMacOSPowerPCBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakMacOSPowerPCBuilder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakMacOSPowerPCBuilder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.!
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
- !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakMacOSX32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakMacOSX32x86Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakMacOSX32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakSunOS32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakSunOS32x86Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakSunOS32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakWin32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakWin32x86Builder commentStamp: 'tty 12/9/2014 12:42' prior: 0!
- !SqueakWin32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  
  
  
  
  !



More information about the Vm-dev mailing list