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

commits at source.squeak.org commits at source.squeak.org
Mon Jun 20 00:42:22 UTC 2016


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

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

Name: CMakeVMMakerSqueak-tty.128
Author: tty
Time: 19 June 2016, 7:48:27.621979 pm
UUID: d60fe794-87a2-4a70-88e7-2852d3eab8e5
Ancestors: CMakeVMMakerSqueak-tty.127

Writing a terse guide as I build a
 Linux64x64SqueakCogSpurConfig from scratch

Started a refactoring sweep .
Refactored compilerFlags, compilerDefinitions linker flags methods to use the redirect pattern. 

wrote tests to check new methods

consider this a stage save. I have more to do on this line of attack

Left a note to myself to add a method protocol named "customizable" or something to cue the end-user that these methods should be customized by them.

I expect the number of redirect method constructs to drastically reduce and the number of redirect methods that are directly customizable to increase.

=============== Diff against CMakeVMMakerSqueak-tty.127 ===============

Item was changed:
  ----- Method: CMakePluginVm>>template (in category 'accessing') -----
  template
  	|temp sourcesString cflags|
  	cflags:= String streamContents: [:stream | config compilerFlags asStringOn: stream delimiter: ' ' ].
  	cflags := '"' , cflags , '"'.
  	sourcesString := String streamContents: [:stream | sources asStringOn: stream delimiter: ' ' ].
  	temp := OrderedCollection new.
  	temp
  		addLast: ((CMakeHeader new)  configurationName:  config class name );
  		addLast: ((CMakeProject new)variable:  module  );
  		addLast: ((CMakeMinimumRequired new) version: '2.8.12');
  		addLast: ((CMakeInclude new) file: ((config buildDir fullName), FileDirectory slash, 'directories.cmake')) ; 
  		addLast:((CMakeAddDefinitions new) definitions: config compilerDefinitions asOrderedCollection);
  		addLast:((CMakeAddDefinitions new) definitions: config compilerFlags asOrderedCollection);
  		addLast:((CMakeAddDefinitions new) definitions: definitions); 
  "		addLast:((CMakeSet new) variable:'sources' quotedValue: sourcesString);"
  		addLast:((CMakeSet new) variable:'sources' value: sourcesString);
  		addLast:((CMakeAddLibrary new) 
  			library: module
  			type: 'SHARED' 
  			sources: (OrderedCollection with: '${sources}'));
  		addLast: ((CMakeIncludeDirectories new) dirs: includedirectories);
  		addLast:((CMakeSet new) variable: 'LIBRARY_OUTPUT_PATH' quotedValue: (config outputDir fullName));
  "		addLast:((CMakeListAppend new) list: 'LINKLIBS' elements: (config externalLibs));"
  		addLast:((CMakeTargetLinkLibraries new) target: module  items: (OrderedCollection with: '${LINKLIBS}'));
  		addLast:((CMakeSetTargetProperties new) 
  			target: module 
  			propertiesandvalues: (OrderedCollection with: 'PREFIX "" '  with: 'SUFFIX "" ' with: 'LINK_FLAGS ' , cflags)) .
  	^temp!

Item was added:
+ ----- Method: CMakeVMMakerSqueakCommonConfigTest>>testCustomizeVMPlugins (in category 'as yet unclassified') -----
+ testCustomizeVMPlugins
+ 	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig) 
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o buildTypes|
+ 					o:= configuration basicNew.							
+ 					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
+ 						ifTrue:[
+ 							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
+ 							buildTypes do:[:buildType |
+ 								o configureForBuildType: buildType.	
+ 								o initializeVMPlugins.
+ 							 	self assert:(o  vmplugins isKindOf:Collection)]]]]
+ 
+ 
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeVMMakerSqueakCommonConfigTest>>testInitializeVMPlugins (in category 'as yet unclassified') -----
+ testInitializeVMPlugins
+ 	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig) 
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o |
+ 							o:= configuration basicNew.
+ 							o initializeVMPlugins.
+ 							o excludeFromBuild not                                                     
+ 							 	ifTrue:[self assert:(o  vmplugins isKindOf:Collection)]]]
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeVMMakerSqueakRedirectMethodsTest>>testCompilerDefinitions (in category 'as yet unclassified') -----
+ testCompilerDefinitions
+ 	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig ) 
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o buildTypes|
+ 					o:= configuration basicNew.
+ 					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
+ 						ifTrue:[
+ 							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
+ 							buildTypes do:[:buildType |
+ 								o configureForBuildType: buildType.
+ 								self assert:(o  compilerDefinitions isKindOf: Collection).
+ 								self assert:(o  compilerDefinitions size > 0)]]]].
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was changed:
  ----- Method: CMakeVMMakerSqueakRedirectMethodsTest>>testCompilerFlags (in category 'as yet unclassified') -----
  testCompilerFlags
  	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig ) 
  		do:[:each | 
  			(Smalltalk at:each) 
  				allSubclassesDo:[:configuration | | o buildTypes|
  					o:= configuration basicNew.
  					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
  						ifTrue:[
  							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
  							buildTypes do:[:buildType |
  								o configureForBuildType: buildType.
  								self assert:(o  compilerFlags isKindOf: Collection).
  								self assert:(o  compilerFlags size > 0)]]]].
  
  
  
  
  
  
  
  !

Item was added:
+ ----- Method: CMakeVMMakerSqueakRedirectMethodsTest>>testLinkerFlags (in category 'as yet unclassified') -----
+ testLinkerFlags
+ 	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig ) 
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o buildTypes|
+ 					o:= configuration basicNew.
+ 					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
+ 						ifTrue:[
+ 							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
+ 							buildTypes do:[:buildType |
+ 								o configureForBuildType: buildType.
+ 								self assert:(o  linkerFlags isKindOf: Collection).
+ 								self assert:(o  linkerFlags size > 0)]]]].
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was changed:
  ----- Method: CMakeVMMakerSqueakRedirectMethodsWithArgTest>>testExtraPluginSettings (in category 'as yet unclassified') -----
  testExtraPluginSettings
  	self flag:'tty'. "Is the self shouldnt sufficient?"
  	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig ) 
  		do:[:each | 
  			(Smalltalk at:each) 
  				allSubclassesDo:[:configuration | | o buildTypes vmGenerator pluginGenerator|
  					o:= configuration basicNew.
  					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
  						ifTrue:[
  							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
  							buildTypes do:[:buildType |
  								o configureForBuildType: buildType.
+ 								o enabledebugmessages:true.			
+ 								o templates: OrderedCollection new. 																
  								vmGenerator:=CMakeVMGeneratorForSqueak new.
  								vmGenerator config: o.
  								vmGenerator output:(String new writeStream).
  								pluginGenerator := CMakePluginGeneratorForSqueak new.
  								pluginGenerator vmGenerator: vmGenerator.
  								pluginGenerator isInternal: false.
  								pluginGenerator output:(String new writeStream).
  								pluginGenerator templates: OrderedCollection new.
  								self shouldnt: [o extraPluginSettings: pluginGenerator] raise: Error]]]].
  !

Item was added:
+ ----- Method: CMakeVMMakerSqueakRedirectMethodsWithArgTest>>testSetPlatformSources (in category 'as yet unclassified') -----
+ testSetPlatformSources
+ 	#(#SqueakMacintoshConfig #SqueakUnixConfig #SqueakWindowsConfig ) 
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o buildTypes vmGenerator|
+ 					o:= configuration basicNew.
+ 					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
+ 						ifTrue:[
+ 							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
+ 							buildTypes do:[:buildType |
+ 								o configureForBuildType: buildType.
+ 								o enabledebugmessages: true.
+ 								o templates: OrderedCollection new.
+ 								o initializePlatformSources.
+ 								vmGenerator:=CMakeVMGeneratorForSqueak new.
+ 								vmGenerator config: o.
+ 								vmGenerator output:(String new writeStream).
+ 								self shouldnt: [o setPlatformSources: vmGenerator] raise: Error]]]].
+ !

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>createTheConfiguration (in category 'pages') -----
  createTheConfiguration
  	^HelpTopic
  		title:'Create the Configuration'
  		contents:
  'Within the broad outline of this tutorial, you are here: 
  4. Create your Configuration
  
  Our new Concrete Configuration must be created as a subclass of our Platform''s Abstract Base Class.
  
+ SInce I am creating a Squeak Cog Spur config for the CMakeVMMakerSqueak-Linux64X86-32BitCompatibility Platform I choose the name*:
- SInce I am creating a Squeak Cog Spur config for the CMakeVMMakerSqueak-Linux64X86-32BitCompatibility Platform I choose the name:
  
  Linux64x86w32BitSqueakCogSpurConfig.
  
- (For a discussion on naming conventions evaluate:
- HelpBrowser openOn: CMakeVMMakerSqueakOverviewHelp
- )
  
  To create it, I must subclass the Abstract Base Class for my Platform like so:
  
  Linux64x86w32BitConfigUsrLib subclass: #Linux64x86w32BitSqueakCogSpurConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: ''CMakeVMMakerSqueak-Linux64X86-32BitCompatibility''
  
  However, being lazy, I am going to copy an existing Configuration that is similar to what I want. 
  
  Today I choose Linux64x86w32BitSqueakCogV3Config from the  CMakeVMMakerSqueak-Linux64X86-32BitCompatibility Platform category
  
  I copy the class and then change its name, parent and class category to get:
  
  Linux64x86w32BitConfigUsrLib subclass: #Linux64x86w32BitSqueakCogSpurConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: ''CMakeVMMakerSqueak-Linux64X86-32BitCompatibility''
  
  
  I then query by Builder to see if it sees the new Configuration in the platform:
  
  SqueakLinux64x86w32CompatBuilder configurationsCategory
  -->  ''CMakeVMMakerSqueak-Linux64X86-32BitCompatibility''
  
  SqueakLinux64x86w32CompatBuilder  availableBuildConfigurations  
  -->  a SortedCollection(#Linux64x86w32BitSqueakCogSpurConfig #Linux64x86w32BitSqueakCogV3Config)
     "Here we see our new Configuration is visible to the Builder"
  
  SqueakLinux64x86w32CompatBuilder  unAvailableBuildConfigurations
  -->  a SortedCollection(#Linux64x86w32BitConfigUsrLib #Linux64x86w32BitConfigUsrLib32)  "Our Abstract Base Classes are not available to be built"
  
  SqueakLinux64x86w32CompatBuilder availableBuildTypesFor: #Linux64x86w32BitSqueakCogSpurConfig
  --> an OrderedCollection(#build #buildAssert) "The Configuration I copied has two Build Types coded and available."
  
  
  SqueakLinux64x86w32CompatBuilder  sourceDirectoryFor:#Linux64x86w32BitSqueakCogSpurConfig
  -->  "src"                                                        "Where the vm source code is located (we will be changing this)"
  
  My new configuration is correctly named and in the correct place. 
  
  At this point I re-run all my Tests.
  TestRunner open
   For me, all tests pass.
  
  In the next topic we cover how to hide our new Configuration from a builder. 
  
+ *For a discussion on naming conventions evaluate:
+ HelpBrowser openOn: CMakeVMMakerSqueakOverviewHelp
+ 
+ 
  '
  !

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>identifyBuilder (in category 'pages') -----
  identifyBuilder
  	^HelpTopic
  		title:'Identify Builder'
  		contents:
  'Within the broad outline of this tutorial, you are here: 
  3. What Builder to use
  
  My new Configuration will be managed by a Builder.
  
  Builders are located in the CMakeVMMakerSqueak-Builder class category.
  
  Builders are subclasses of SqueakCMakeVMMakerAbstractBuilder.
  SqueakCMakeVMMakerAbstractBuilder browseHierarchy
  
+ Builders are named* according to the Platform they manage.
- Builders are named according to the Platform they manage.
  
- (For a discussion on naming conventions evaluate:
- HelpBrowser openOn: CMakeVMMakerSqueakOverviewHelp
- )
- 
  Builders manage configurations for one Platform in one  class category.
  
- 
  My platform is Linux Linux64x86 with 32 bit compatability libs stored in /usr/lib (other linux use /usr/lib32 for this.)
  
  I suspect that the  SqueakLinux64x86w32CompatBuilder as the Builder that will manage my new configuration.
  
  I confirm this by sending it the ''configurationsCategory'' message as shown below:
  
  SqueakLinux64x86w32CompatBuilder configurationsCategory 
  -->''CMakeVMMakerSqueak-Linux64X86-32BitCompatibility''                    <---this is the correct class category for my Platform.
  
  This is correct Builder for my new Configuration. 
  
  I can query  the Builder for some more information:
  
  SqueakLinux64x86w32CompatBuilder  availableBuildConfigurations
    a SortedCollection(#Linux64x86w32BitSqueakCogV3Config)   <--A Cog V3 configuration exists. 
  
  SqueakLinux64x86w32CompatBuilder  unAvailableBuildConfigurations 
  --> a SortedCollection(#Linux64x86w32BitConfigUsrLib #Linux64x86w32BitConfigUsrLib32)
   <--these are platform specific Abstract Base Classes. Abstract Base Classes cannot be built, hence they are unavailable.
  
- SqueakLinux64x86w32CompatBuilder  buildDirectory 
- -->''cmake.build.linux64x86w32BitCompatibility''                     <--this matches my platform
  
- We will be using the SqueakLinux64x86w32CompatBuilder in tandem with Tests during Configuration development.'
  
+ We will be using the SqueakLinux64x86w32CompatBuilder in tandem with Tests during Configuration development.
+ 
+ *For a discussion on naming conventions evaluate:
+ HelpBrowser openOn: CMakeVMMakerSqueakOverviewHelp
+ 
+ '
+ 
  !

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>identifyPlatform (in category 'pages') -----
  identifyPlatform
  	^HelpTopic
  		title:'Identify Platform'
  		contents:
  ' Within the broad outline of this tutorial, you are here: 
  2. Where to place your new Configuration
  
  My target platform is 64 bit Linux on X86 with 32 bit compatibility libraries stored in /usr/lib.
  
  I identify my Platform in the existing CMakeVMMakerSqueak-xyz class categories.  
  
+ As of 2016.06.19 the class categories that correspond to target platforms are:
+ 
+ CMakeVMMakerSqueak-IA32-Bochs
+ CMakeVMMakerSqueak-IOS
+ CMakeVMMakerSqueak-Linux32ARMv6
+ CMakeVMMakerSqueak-Linux32x86
+ CMakeVMMakerSqueak-Linux64X86-32BitCompatibility
+ CMakeVMMakerSqueak-Linux64x64
+ CMakeVMMakerSqueak-MacOSPowerPC
+ CMakeVMMakerSqueak-MacOSX32x86
+ CMakeVMMakerSqueak-SunOS32x86
+ CMakeVMMakerSqueak-Win32x86
+ 
+ 
+ 
  If I wanted a configuration for MacOSX32x86, I would place my configuration in CMakeVMMakerSqueak-MacOSX32x86.
  If SunOSx3x86 then CMakeVMMakerSqueak-SunOS32x86.
  etc.
  
+ Sincy my target platform is 64 bit Linux on X86 with 32 bit compatibility libraries stored in /usr/lib. I choose
+ the class category CMakeVMMakerSqueak-Linux64X86-32BitCompatibility to contain my new configurartion
+ 
  For a discussion on naming conventions evaluate:
  HelpBrowser openOn: CMakeVMMakerSqueakOverviewHelp
  '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>identifyPlatformAbstractBaseClass (in category 'pages') -----
  identifyPlatformAbstractBaseClass
  	^HelpTopic
  		title:'Identify Abstract Base Class '
  		contents:
  'Within the broad outline of this tutorial, you are here: 
  2. Where to place your new Configuration
  
  My new configuration must be a subclass of my Platform''s Abstract Base Class. 
  
  A Platform Abstract Base Class encapsulates common platform information. 
  
  In CMakeVMMakerSqueak-Linux64X86-32BitCompatibility class category I see two Abstract Base Classes (typically there is only one). They are:
  
  Linux64x86w32BitConfigUsrLib 
  Linux64x86w32BitConfigUsrLib32
  
  The Suffixes ''UsrLib'' and ''UsrLib32'' refer to the location of the 32 bit compatablity libs. 
+ Some systems (Ubuntu?) place their 32 bit compatability libs in /usr/lib32. 
+ On my system (Slackware) they are in /usr/lib,  so I choose  Linux64x86w32BitConfigUsrLib as my Abstract Base Class
- On my system they are in /usr/lib,  so I choose  Linux64x86w32BitConfigUsrLib as my Abstract Base Class
  
  Examples of Abstract Base Classes in other class categories  include:
  
  CMakeVMMakerSqueak-BSD32x86                                -> SqueakBSD32x86Config
  CMakeVMMakerSqueak-IA32-Bochs                               -> SqueakIA32BochsConfig
  CMakeVMMakerSqueak-IOS                                           -> SqueakIOSConfig
  CMakeVMMakerSqueak-IOS                                           -> SqueakIOSConfig
  CMakeVMMakerSqueak-Linux32ARMv6                          -> Linux32ARMv6Config
  CMakeVMMakerSqueak-Linux64x64                              -> Linux64x64Config
  CMakeVMMakerSqueak-MacOSPowerPC                        -> SqueakMacOSXPowerPCConfig
  CMakeVMMakerSqueak-MacOSX32x86                          -> SqueakMacOSX32x86Config
  CMakeVMMakerSqueak-SunOS32x86                            -> SqueakSunOS32x86Config
  CMakeVMMakerSqueak-Win32x86                                 -> SqueakWin32x86Config
  
  I can identify the Abstract Base Class in several ways
  
  1. It is a  topmost class in the class heirarchy for that platform/class category
  2. It is named after its platform
  3. It answers #true to the message isAbstractBaseClass
  Linux64x86w32BitConfigUsrLib  isAbstractBaseClass 
  --> true
  
  In this workflow example I ideduce that the  AbstractBaseClass for my Platform is Linux64x86w32BitConfigUsrLib'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>initializeVMPlugins (in category 'pages') -----
  initializeVMPlugins
+ 	"This method was automatically generated. Edit it using:"
+ 	"a HelpBrowser edit: #initializeVMPlugins"
  	^HelpTopic
+ 		title: 'Initialize VM Plugins'
+ 		contents: 
- 		title:'Initialize VM Plugins'
- 		contents:
  'Within the broad outline of this tutorial, you are here: 
    8. Customizing your Configuration.
  
  VM Pluings are a type of plugin that is unique to Unix.  Their directories exist in the Cog/Platforms/unix directory
  Shown here:
  
  bash-4.2$ ls  -1d  Cog/platforms/unix/vm-*
  Cog/platforms/unix/vm-display-Quartz
  Cog/platforms/unix/vm-display-X11
  Cog/platforms/unix/vm-display-custom
  Cog/platforms/unix/vm-display-fbdev
  Cog/platforms/unix/vm-display-null
  Cog/platforms/unix/vm-sound-ALSA
  Cog/platforms/unix/vm-sound-MacOSX
  Cog/platforms/unix/vm-sound-NAS
  Cog/platforms/unix/vm-sound-OSS
  Cog/platforms/unix/vm-sound-Sun
  Cog/platforms/unix/vm-sound-custom
  Cog/platforms/unix/vm-sound-null
  Cog/platforms/unix/vm-sound-pulse
  
  
  
  ToolSet browse: CPlatformConfigForSqueak selector: #initializeVMPlugins
  
  is a hard-coded list of these VM Plugins but expressed as a list of encapsulating objects.
  These objects are just data buckets for carrying information that will be used to build them.
  
  CMakeVMPlugin browseHierarchy
  
+ On initialization, the CPlatformConfigForSqueak stores them in its vmplugins instance variable where we will customize them later.
+ !!' readStream nextChunkText!
- On initialization, the CPlatformConfgiForSqueak stores them in its vmplugins instance variable where we will customize them later.
- '!

Item was added:
+ ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>isAbstractBaseClass (in category 'pages') -----
+ isAbstractBaseClass
+ 	^HelpTopic
+ 		title:'Is Abstract Base Class'
+ 		contents:
+ 'Within the broad outline of this tutorial, you are here: 
+ 5. Interaction of the Builder and your Configuration
+ 
+ Configurations  must identify themselves as NOT being an Abstract Base Class
+ 
+ The default, inhereted from CPlatformConfigForSqueak is that a Configuration IS an Abstract Base Class.
+ 
+ CPlatformConfigForSqueak class browse
+ 
+ isAbstractBaseClass
+ 	^true
+ 	
+ If we look at our new configuration that we just copied from an existing, we see	
+ Linux64x86w32BitSqueakCogSpurConfig class browse	
+ 	
+ isAbstractBaseClass
+ 	^false
+ 	
+ 	
+ 	
+ 
+ 
+ 
+ 	^false   "build this configuration"
+ "	^true     do not build this configuration"   
+ 
+ In our case, the Builder shows us that Linux32x86SqueakCogSpurConfig is capable of being built (I had copied an existing, working Configuration):
+ 
+ SqueakLinux64x86w32CompatBuilder availableBuildConfigurations
+ --> a SortedCollection(#Linux64x86w32BitSqueakCogSpurConfig #Linux64x86w32BitSqueakCogV3Config)
+ 
+ 
+ To exclude it, override (or alter) the Configurations ''excludeFromBuild'' method
+ 
+ Linux64x86w32BitSqueakCogSpurConfig >>excludeFromBuild
+ 	"over-ride to exclude yourself from a build"
+ 	^true
+ 
+ And the Configuration is hidden from the Builder...
+ 
+ SqueakLinux64x86w32CompatBuilder availableBuildConfigurations
+ -->  a SortedCollection(#Linux64x86w32BitSqueakCogV3Config)
+ 
+ 
+ However, since I am developing locally, I need it to be visible to the Builder , so I set it as so:
+ 
+ Linux64x86w32BitSqueakCogSpurConfig >>excludeFromBuild
+ 	"over-ride to exclude yourself from a build"
+ 	^false
+ 
+ And my Builder can see it again...
+ 
+ SqueakLinux64x86w32CompatBuilder availableBuildConfigurations  
+ -->  a SortedCollection(#Linux64x86w32BitSqueakCogSpurConfig #Linux64x86w32BitSqueakCogV3Config)
+ 
+ 
+ N.B. tty. My opinion is that this is a weak way of doing this, but I have not thought through how to do this elegantly. 
+ This functionality is included with an eye towards easing automated builds for all platforms and configurations.'!

Item was added:
+ ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>isAbstractBaseClassAndExcludeFromBuild (in category 'pages') -----
+ isAbstractBaseClassAndExcludeFromBuild
+ 	^HelpTopic
+ 		title:'ExcludeFrom Build and Abstract Base Class'
+ 		contents:
+ 'Within the broad outline of this tutorial, you are here: 
+ 5. Interaction of the Builder and your Configuration
+ 
+ 
+ A bit of explanation about excludeFromBuild and isAbstractBaseClass is in order.
+ 
+ Both Builders and Tests use the truth values of these methods to determine if a Configuration should be tested or built or queried
+ 
+ The Class comment for CPlatformConfigForSqueak explains the interaction in full.
+ 
+ ClassCommentVersionsBrowser browseCommentOf:CPlatformConfigForSqueak
+ 
+ '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>pages (in category 'accessing') -----
  pages
  
  "platformSources...cogitClass...src vs vmsrc"
  	^#(
  overview 
  tests 
  identifyPlatform 
  identifyPlatformAbstractBaseClass
  identifyBuilder
  createTheConfiguration
  excludingConfigFromBuilds
+ isAbstractBaseClass
+ isAbstractBaseClassAndExcludeFromBuild
+ 
  setAvailableBuildTypes
  firstCMakeGeneration
  tackingStockOne
  cPlatformConfigForSqueak
  methodRedirectPattern
  theVMGenerator
  tackingStockTwo
  cPlatformConfigForSqueakInitialize
  initializePlatformSources
  customizePlatformSources
  initializeVMPlugins
  customizeVMPlugins
  configGenerateByTemplate
  specifyCogitClass
  
- vmsrc
  
  specifyDirectories
  dirBuildLanguageVMMM
  setGlobalOptions
  cmakePrefixPath
  cmakeIncludePath
  cmakeLibraryPath
  cmakeIncludeModules
  cmakeCFlags
  cmakeAddDefinitions
  cmakeWriteDirectoriesDotCmake
  cmakeIncludeDirectories
  preferredIncludes
  standardIncludes
  setGlobalOptionsAfterDetermineSystem
  extraVMSettings
  setCoreSources
  setPlatformSources
  setCrossSources
  setExtraSources
  cmakeSetSourceFilesProperties
  cmakeListAppendLINKLIBSelements
  cmakeAddExecutableNameOptionSource
  setExecutableOutputPath
  addVMPlugins
  generatePluginConfigs
  specifyPlugins
  processPlugins
  postBuildActions
  generateBuildScript
  fin
  )
  
  !

Item was removed:
- ----- Method: CMakeVMMakerSqueakTutorialNewConfigurationHelp class>>vmsrc (in category 'pages') -----
- vmsrc
- 	^HelpTopic
- 		title:'vmsrc'
- 		contents:
- 'Within the broad outline of this tutorial, you are here: 
- 8. Customizing your Configuration.
- 
- 
- write me.
- '!

Item was changed:
  ----- Method: CMakeVMakerConfigurationInfo>>visit: (in category 'visiting') -----
  visit: aVisitor
  	|v|
  	"I am being visited by a CMakeVMMakerSqueak configuration class. Extract its information and store it in myself"
+ 	self flag:'tty dirSource and dirBuildPlatform  an instance of an irritating difference in idioms when dealing with directory paths'. 
- 	self flag:'tty'. "why am I not storing the instances itself?does this visit stuff really make sense? I am thinking its 'lightweight'. hmmm"
  	v:= aVisitor basicNew.
  	(v class isAbstractBaseClass)
  		ifTrue:[	
  				isAbstractBaseClass := true.
  				excludeFromBuild := true]
  		ifFalse:[
  			availableBuildTypes := v availableBuildTypes.
+ 			dirBuildPlatform := v dirBuildPlatform .  "dirBuildPlatform is a String"
+ 			dirSource := v dirSource fullName.      "dirSource is a FileDirectory, so convert to string"
- 			dirBuildPlatform := v dirBuildPlatform.
  			excludeFromBuild := v excludeFromBuild.
  			isAbstractBaseClass := false]. 
  
  !

Item was changed:
  Object subclass: #CPlatformConfigForSqueak
+ 	instanceVariableNames: 'buildType cogDir generateBuild generateBuildAssert generateBuildAssertITimerHeartbeat generateBuildDebug generateBuildDebugITimerHeartbeat generateBuildDebugMultiThreaded generateBuildIHeartbeatTimer generateBuildMultiThreaded generateBuildMultiThreadedAssert generateBuildMultiThreadedDebug templates enabledebugmessages platformSources vmplugins outputDir buildDir topDir internalPlugins externalPlugins'
- 	instanceVariableNames: 'buildType cogDir generateBuild generateBuildAssert generateBuildAssertITimerHeartbeat generateBuildDebug generateBuildDebugITimerHeartbeat generateBuildDebugMultiThreaded generateBuildIHeartbeatTimer generateBuildMultiThreaded generateBuildMultiThreadedAssert generateBuildMultiThreadedDebug templates enabledebugmessages platformSources vmplugins outputDir buildDir topDir'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  CPlatformConfigForSqueak class
  	instanceVariableNames: 'isAbstractBaseClass'!
  
  !CPlatformConfigForSqueak commentStamp: 'tty 12/8/2014 11:28' prior: 0!
  A CPlatformConfigForSqueak acts as a compatability layer for Squeak and an Abstract Base Class for extended functionality required for the Squeak CMakeVMMaker use-case.
  
  I make (very) heavy use of a specific design pattern for configuring myself and remaining compatible with pharo's CMakeVMMaker.
  The entry point for that pattern is my method 'configureForBuildType: aSymbol' . Each method send in there detects my buildType and routes the send
  to the approriate method for that buildType.
  
  Subclasses of me 'must' configure themselves for each build type per that pattern. 
  However this can be very easy by just returning the base configuration.
  
  Tests are written to verify that this support infrastructure is in place.
  
  I have two important methods.
  
  excludeFromBuild and isAbstractBaseClass.
  
  excludeFromBuild 
  		is used to exclude a configuration from being built by a Builder.
  		is used to exclude a configuration from Testing.
  
  isAbstractBaseClass 
  		is used by configurations that exclude themselves from being built by a Builder BUT need to be included in 		Testing.
  
  										
  excludeFromBuild  | isAbstractBaseClass  | should build  | should test
  	T					    T                            NO                  YES
        T					    F                             NO                   NO
        F					    T                            YES                  YES
        F                                 F                            YES                  YES
  
  
  The use-case is as follows.
  
  An abstract base class contains a lot of functionality that must be implemented and tested for the system to work, but it is not meant to be compiled.
  
  concrete classes of that AbstractBase class can exclude themselves from being built by builders and by doing so are not tested.
  However, once a concrete configuration is enabled to be built, it must pass all tests.
  
  Linux32x86Config is an example of an AbstractBase class that must pass all testing, but is not buildable.
  Its subclass Linux32x86SqueakCogV3Config needs testing, but a developer can toggle 'exclude from build' to hide it from Builders or make it available to them.
  
  Tests make the decision on what configurations to test. Here are some examples.
  	(o excludeFromBuild not) & (configuration isAbstractBaseClass not)  this is a concrete [Lang][VM][MemoryManager][etc] configuration that will be built. No platform classes considered
  	(o excludeFromBuild) & (configuration isAbstractBaseClass not)         This is a concrete [Lang][VM][MemoryManager][etc] configuration that will be NOT built.
  	(o excludeFromBuild not) | (configuration isAbstractBaseClass)          concrete implementation may depend on its [OS][VMWordSize][Processor] AbstractBaseClass for platform level methods. 
  																		   example: Linux32x86Config ccBuild has the '-m32' compiler flag that is common to all builds on that platform
  	(o excludeFromBuild not) & (configuration isAbstractBaseClass)       Not allowed. [OS][VMWordSize][Processor] AbstractBaseClasses should not be built. This is a useful test in its own right.
  	(o excludeFromBuild) & (configuration isAbstractBaseClass)             These are the AbstractBaseClasses. An AbstractBaseClass should always be excluded from a build
  
  
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  tty.!
  CPlatformConfigForSqueak class
  	instanceVariableNames: 'isAbstractBaseClass'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>buildDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>buildDir (in category 'cmake directory') -----
  buildDir
  	^ buildDir ifNil: [ buildDir := ( self topDir / self buildDirName) assureExistence]. !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>buildDirName (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>buildDirName (in category 'cmake directory') -----
  buildDirName
  	buildType isNil
  		ifTrue:[^self dirBuildPlatform, FileDirectory slash, self dirBuildLanguageVMMM, FileDirectory slash, 'build']
  		ifFalse:[^self dirBuildPlatform, FileDirectory slash, self dirBuildLanguageVMMM, FileDirectory slash, buildType asString]!

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitions (in category 'cmake buildType redirects') -----
  cmakeAddDefinitions
+ 	self subclassResponsibility.
+ 		!
- 	"Route this message send to the message appropriate for my buildType "
- 	|d |
- 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
- 	d 
- 		at: #build put: [self cmakeAddDefinitionsBuild];
- 		at: #buildAssert  put: [self cmakeAddDefinitionsBuildAssert];
- 		at: #buildAssertITimerHeartbeat  put: [self cmakeAddDefinitionsBuildAssertITimerHeartbeat];
-             at:#buildDebug  put: [self cmakeAddDefinitionsBuildDebug];   
- 		at: #buildDebugITimerHeartbeat  put: [self cmakeAddDefinitionsBuildDebugITimerHeartbeat ];
- 		at: #buildITimerHeartbeat  put: [self cmakeAddDefinitionsBuildITimerHeartbeat];
- 		at: #buildMultiThreaded  put: [self cmakeAddDefinitionsBuildMultiThreaded];
- 		at: #buildMultiThreadedAssert  put: [self cmakeAddDefinitionsBuildMultiThreadedAssert];
- 		at: #buildMultiThreadedDebug   put: [self cmakeAddDefinitionsBuildMultiThreadedDebug ];
- 		at: #buildNone put:[self cmakeAddDefinitionsNoBuildType].
- 	^(d at: buildType) value!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuild (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuild
- 	 ""
- 	self subclassResponsibility!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildAssert
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildAssertITimerHeartbeat
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildDebug (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildDebug
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildDebugITimerHeartbeat
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildITimerHeartbeat
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildMultiThreaded (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildMultiThreaded
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildMultiThreadedAssert
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildMultiThreadedDebug
- 	 "override default for custom buildType. "
- 	^self cmakeAddDefinitionsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeAddDefinitionsNoBuildType (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsNoBuildType
- 	"SHOULD NOT GET HERE"
- 	self shouldNotImplement.
- !

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>cmakeCFlags (in category 'cmake buildType redirects') -----
  cmakeCFlags
+ 	self subclassResponsibility
+ !
- 	"Route this message send to the message appropriate for my buildType "
- 	|d |
- 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
- 	d 
- 		at: #build put: [self cmakeCFlagsBuild];
- 		at: #buildAssert  put: [self cmakeCFlagsBuildAssert];
- 		at: #buildAssertITimerHeartbeat  put: [self cmakeCFlagsBuildAssertITimerHeartbeat];
-             at:#buildDebug  put: [self cmakeCFlagsPathBuildDebug];   
- 		at: #buildDebugITimerHeartbeat  put: [self cmakeCFlagsBuildDebugITimerHeartbeat ];
- 		at: #buildITimerHeartbeat  put: [self cmakeCFlagsBuildITimerHeartbeat];
- 		at: #buildMultiThreaded  put: [self cmakeCFlagsBuildMultiThreaded];
- 		at: #buildMultiThreadedAssert  put: [self cmakeCFlagsBuildMultiThreadedAssert];
- 		at: #buildMultiThreadedDebug   put: [self cmakeCFlagsBuildMultiThreadedDebug ];
- 		at: #buildNone put:[self cmakeCFlagsNoBuildType].
- 	^(d at: buildType) value!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuild (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuild
- "
- convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType.
-  
- cmake --help-variable   CMAKE_C_FLAGS  
- cmake --help-variable   CMAKE_C_FLAGS_DEBUG 
- cmake --help-variable   CMAKE_C_FLAGS_RELEASE
- 
- cmake --help-variable   CMAKE_CXX_FLAGS  
- cmake --help-variable   CMAKE_CXX_FLAGS_DEBUG 
- cmake --help-variable   CMAKE_CXX_FLAGS_RELEASE
- 
- NOTE: be careful not to clobber existing flags unless you intend to.
- You can avoid that with this form:  set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}  -Wall -m32) which is created via cmake templates with
- 	templates
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS' value: '${CMAKE_CXX_FLAGS}  -Wall -m32');
- 
- 
- 
- 
- SystemNavigation default browseMethodsWhoseNamesContain: 'cmakeCFlagsBuild'
- "
- 	self subclassResponsibility.!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildAssert (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildAssert
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildAssertITimerHeartbeat
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildDebugITimerHeartbeat
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildITimerHeartbeat
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildMultiThreaded (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildMultiThreaded
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildMultiThreadedAssert
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuildMultiThreadedDebug
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsNoBuildType (in category 'cmake buildType redirects') -----
- cmakeCFlagsNoBuildType
- 	"SHOULD NOT GET HERE"
- 	self shouldNotImplement.
- !

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeCFlagsPathBuildDebug (in category 'cmake buildType redirects') -----
- cmakeCFlagsPathBuildDebug
- 	"convenience method for customizing CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG  variables based on #buildType."
- 	^self cmakeCFlagsBuild!

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesProperties (in category 'cmake buildType redirects') -----
  cmakeSetSourceFilesProperties
+ 	self subclassResponsibility
+ "
+  cmake --help-command set_source_files_properties
+ set_source_files_properties
+ ---------------------------
+ 
+ Source files can have properties that affect how they are built.
+ 
+ ::
+ 
+  set_source_files_properties([file1 [file2 [...]]]
+                              PROPERTIES prop1 value1
+                              [prop2 value2 [...]])
+ 
+ Set properties associated with source files using a key/value paired
+ list.  See properties documentation for those known to CMake.
+ Unrecognized properties are ignored.  Source file properties are
+ visible only to targets added in the same directory (CMakeLists.txt).
+ 
+ ."
+ 	
+ !
- 	"Route this message send to the message appropriate for my buildType "
- 	|d |
- 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
- 	d 
- 		at: #build put: [self cmakeSetSourceFilesPropertiesBuild];
- 		at: #buildAssert  put: [self cmakeSetSourceFilesPropertiesBuildAssert];
- 		at: #buildAssertITimerHeartbeat  put: [self cmakeSetSourceFilesPropertiesBuildAssertITimerHeartbeat];
-             at:#buildDebug  put: [self cmakeSetSourceFilesPropertiesBuildDebug];   
- 		at: #buildDebugITimerHeartbeat  put: [self cmakeSetSourceFilesPropertiesBuildDebugITimerHeartbeat ];
- 		at: #buildITimerHeartbeat  put: [self cmakeSetSourceFilesPropertiesBuildITimerHeartbeat];
- 		at: #buildMultiThreaded  put: [self cmakeSetSourceFilesPropertiesBuildMultiThreaded];
- 		at: #buildMultiThreadedAssert  put: [self cmakeSetSourceFilesPropertiesBuildMultiThreadedAssert];
- 		at: #buildMultiThreadedDebug   put: [self cmakeSetSourceFilesPropertiesBuildMultiThreadedDebug ];
- 		at: #buildNone put:[self cmakeSetSourceFilesPropertiesNoBuildType].
- 	^(d at: buildType) value!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuild (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuild
- "
-  cmake --help-command set_source_files_properties
- set_source_files_properties
- ---------------------------
- 
- Source files can have properties that affect how they are built.
- 
- ::
- 
-  set_source_files_properties([file1 [file2 [...]]]
-                              PROPERTIES prop1 value1
-                              [prop2 value2 [...]])
- 
- Set properties associated with source files using a key/value paired
- list.  See properties documentation for those known to CMake.
- Unrecognized properties are ignored.  Source file properties are
- visible only to targets added in the same directory (CMakeLists.txt).
- 
- ."
- 
- 	self subclassResponsibility.!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildAssert (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildAssert
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildAssertITimerHeartbeat
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildDebug (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildDebug
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildDebugITimerHeartbeat
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildITimerHeartbeat
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildMultiThreaded (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildMultiThreaded
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildMultiThreadedAssert
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuildMultiThreadedDebug
- 	"convenience method for cusomizing  for different buildType "
- 	^self cmakeSetSourceFilesPropertiesBuild!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>cmakeSetSourceFilesPropertiesNoBuildType (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesNoBuildType
- 	"SHOULD NOT GET HERE"
- 	self shouldNotImplement.
- !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>cogDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>cogDir (in category 'cmake directory') -----
  cogDir
    " topDir=oscogvm
      dirSource=[nsspur64src | nsspursrc |nsspurstack64src |nsspurstacksrc |spur64src |spursistasrc |spursrc | spurstack64src |spurstacksrc | src |stacksr]  Configurations customize this
      srcDir=oscogvm/dirSource
      cogDir=oscogvm/src   (needed by CMake for access to plugins source in oscogvm/src/plugins)
  "
    ^ cogDir ifNil: [ cogDir := (self src) ]
  
  !

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>compilerDefinitions (in category 'compiling') -----
  compilerDefinitions
  	"-DNDEBUG -DGNU_SOURCE...etc . cmakeAddDefinitions(buildType) replaces this"
+ 	"Route this message send to the message appropriate for my buildType "
+ 	|d |
+ 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
+ 	d 
+ 		at: #build put: [self compilerDefinitionsBuild];
+ 		at: #buildAssert  put: [self compilerDefinitionsBuildAssert]; 
+ 		at: #buildAssertITimerHeartbeat  put: [self compilerDefinitionsBuildAssertITimerHeartbeat];
+             at:#buildDebug  put: [self compilerDefinitionsBuildDebug];   
+ 		at: #buildDebugITimerHeartbeat  put: [self compilerDefinitionsBuildDebugITimerHeartbeat ];
+ 		at: #buildITimerHeartbeat  put: [self compilerDefinitionsBuildITimerHeartbeat];
+ 		at: #buildMultiThreaded  put: [self compilerDefinitionsBuildMultiThreaded];
+ 		at: #buildMultiThreadedAssert  put: [self compilerDefinitionsBuildMultiThreadedAssert];
+ 		at: #buildMultiThreadedDebug   put: [self compilerDefinitionsBuildMultiThreadedDebug ];
+ 		at: #buildNone put:[self compilerDefinitionsNoBuildType].
+ 	^(d at: buildType) value!
- 	self deprecated: 'Legacy method from pharo approach. We need different definitions for each buildType'.
- 	self	subclassResponsibility!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuild (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuild
+ 
+ 	self  subclassResponsibility.
+ 	
+ 
+ !

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildAssert
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildAssertITimerHeartbeat
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildDebug (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildDebug
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildDebugITimerHeartbeat
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildITimerHeartbeat
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildMultiThreaded (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildMultiThreaded
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildMultiThreadedAssert
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildMultiThreadedDebug
+ 	 ^self compilerDefinitionsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerDefinitionsNoBuildType (in category 'cmake buildType redirects') -----
+ compilerDefinitionsNoBuildType
+ 
+ 	self shouldNotImplement.
+ !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlags (in category 'cmake buildType redirects') -----
- ----- Method: CPlatformConfigForSqueak>>compilerFlags (in category 'compiling') -----
  compilerFlags
+ 	"Route this message send to the message appropriate for my buildType "
+ 	|d |
+ 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
+ 	d 
+ 		at: #build put: [self compilerFlagsBuild];
+ 		at: #buildAssert  put: [self compilerFlagsBuildAssert]; 
+ 		at: #buildAssertITimerHeartbeat  put: [self compilerFlagsBuildAssertITimerHeartbeat];
+             at:#buildDebug  put: [self compilerFlagsBuildDebug];   
+ 		at: #buildDebugITimerHeartbeat  put: [self compilerFlagsBuildDebugITimerHeartbeat ];
+ 		at: #buildITimerHeartbeat  put: [self compilerFlagsBuildITimerHeartbeat];
+ 		at: #buildMultiThreaded  put: [self compilerFlagsBuildMultiThreaded];
+ 		at: #buildMultiThreadedAssert  put: [self compilerFlagsBuildMultiThreadedAssert];
+ 		at: #buildMultiThreadedDebug   put: [self compilerFlagsBuildMultiThreadedDebug ];
+ 		at: #buildNone put:[self compilerFlagsNoBuildType].
+ 	^(d at: buildType) value!
- 	self deprecated:' this catchall method has been split into dedicated methods: cmakePrefixPath cmakeIncludePath 	cmakeLibraryPath	cmakeIncludeModules;    cmakeCFlags;       '. "see method ''generate'' in CMakeVMGeneratorForSqueak browse      for old call.  "
- 	self	 cmakeCFlags.
- 
- 
- "The old CMakeVMMaker loaded all kinds of stuff in compilerflags that where really pre-processor definitions etc. 
- I have factored them out in the interest of clarity and simplicity.
- "!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 
+ 	self  subclassResponsibility.
+ 	
+ 
+ "	^#('-Wall'
+ 		'-w'
+ 		'-m32'
+ 		'-msse2'
+ 		'-g3'         
+ 		'-O1'
+ 	 	'-fno-caller-saves'
+ 		'-fno-tree-pre')" 
+ !

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildAssert (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildAssert
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildAssertITimerHeartbeat
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildDebug (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildDebug
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildDebugITimerHeartbeat
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildITimerHeartbeat
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildMuliThreadedDebug (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildMuliThreadedDebug
+ 	 ^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildMultiThreaded (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildMultiThreaded
+ 	^self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildMultiThreadedAssert
+ 	^ self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
+ compilerFlagsBuildMultiThreadedDebug
+ 	^ self compilerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>compilerFlagsNoBuildType (in category 'cmake buildType redirects') -----
+ compilerFlagsNoBuildType
+ 
+ 	self shouldNotImplement.
+ !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirARMv6 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirARMv6 (in category 'cmake directory') -----
  dirARMv6
  	^'cmake.build.arm.v6'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirAndroid (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirAndroid (in category 'cmake directory') -----
  dirAndroid
  	^'Do Not Build. See Class Comment'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBSD32x86 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBSD32x86 (in category 'cmake directory') -----
  dirBSD32x86
  	^'cmake.build.bsd32x86'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuild (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuild (in category 'cmake directory') -----
  dirBuild
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #build!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildAssert (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildAssert (in category 'cmake directory') -----
  dirBuildAssert
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildAssert!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildAssertITimerHeartbeat (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildAssertITimerHeartbeat (in category 'cmake directory') -----
  dirBuildAssertITimerHeartbeat
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildAssertITimerHeartbeat!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildDebug (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildDebug (in category 'cmake directory') -----
  dirBuildDebug
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #debug!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildDebugITimerHeartbeat (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildDebugITimerHeartbeat (in category 'cmake directory') -----
  dirBuildDebugITimerHeartbeat
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #debugITimerHeartbeat!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildDebugMultiThreaded (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildDebugMultiThreaded (in category 'cmake directory') -----
  dirBuildDebugMultiThreaded
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #debugMultiThreaded!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildITimerHeartbeat (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildITimerHeartbeat (in category 'cmake directory') -----
  dirBuildITimerHeartbeat
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildITimerHeartbeat!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildLanguageVMMM (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildLanguageVMMM (in category 'cmake directory') -----
  dirBuildLanguageVMMM
  	"the directory under buildPlatformDir  example: newspeak.cog.spur. "
  	self subclassResponsibility!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreaded (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreaded (in category 'cmake directory') -----
  dirBuildMultiThreaded
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildMultiThreaded!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreadedAssert (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreadedAssert (in category 'cmake directory') -----
  dirBuildMultiThreadedAssert
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildMultiThreadedAssert!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreadedDebug (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildMultiThreadedDebug (in category 'cmake directory') -----
  dirBuildMultiThreadedDebug
  	^SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo at: #buildMultiThreadedDebug!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirBuildPlatform (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirBuildPlatform (in category 'cmake directory') -----
  dirBuildPlatform
  	"the directory for the platform. example: build.linux32x86"
  	self subclassResponsibility!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirIA32Bochs (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirIA32Bochs (in category 'cmake directory') -----
  dirIA32Bochs
  	^'cmake.build.ia32bochs'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirIOS (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirIOS (in category 'cmake directory') -----
  dirIOS
  	^'cmake.build.ios'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirLinux32Armv6 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirLinux32Armv6 (in category 'cmake directory') -----
  dirLinux32Armv6
  	^'cmake.build.linux32armv6'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirLinux32x86 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirLinux32x86 (in category 'cmake directory') -----
  dirLinux32x86
  	^'cmake.build.linux32x86'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirLinux64x64 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirLinux64x64 (in category 'cmake directory') -----
  dirLinux64x64
  	^'cmake.build.linux64x64'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirLinux64x86w32BitCompatibility (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirLinux64x86w32BitCompatibility (in category 'cmake directory') -----
  dirLinux64x86w32BitCompatibility
  	^'cmake.build.linux64x86w32BitCompatibility'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirMacOS (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirMacOS (in category 'cmake directory') -----
  dirMacOS
  	^'cmake.build.macos'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirMacOSPowerPC (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirMacOSPowerPC (in category 'cmake directory') -----
  dirMacOSPowerPC
  	^'cmake.build.macospowerpc'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirMacOSX32x86 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirMacOSX32x86 (in category 'cmake directory') -----
  dirMacOSX32x86
  	^'cmake.build.macosx32x86'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirOutput (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirOutput (in category 'cmake directory') -----
  dirOutput
  	^'cmake.products'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirPlatforms (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirPlatforms (in category 'cmake directory') -----
  dirPlatforms
  	^'platforms'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirSource (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>dirSource (in category 'cmake directory') -----
  dirSource
    "
      dirSource=[nsspur64src | nsspursrc | nsspurstack64src |nsspurstacksrc |spur64src |spursistasrc |spursrc | spurstack64src |spurstacksrc | src |stacksr]  Configurations must customize this
      srcDir=oscogvm/dirSource
      cogDir=oscogvm/src   (needed by CMake for access to plugins source in oscogvm/src/plugins)
  
  
  "
  
  
  	self subclassResponsibility
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirSunOS32x86 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirSunOS32x86 (in category 'cmake directory') -----
  dirSunOS32x86
  	^'cmake.build.sunos32x86'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>dirWin32x86 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>dirWin32x86 (in category 'cmake directory') -----
  dirWin32x86
  	^'cmake.build.win32x86'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>externalModulesDir (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>externalModulesDir (in category 'cmake directory') -----
  externalModulesDir
  	"answer the location in VM bundle, where plugins and rest of dynamic libs will be copied,
  	"
  	self subclassResponsibility!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlags (in category 'cmake buildType redirects') -----
- ----- Method: CPlatformConfigForSqueak>>linkerFlags (in category 'compiling') -----
  linkerFlags
- 	self flag:'tty'. "Does this need to be ported to the redirect design pattern with linkerFlagsBuild, linkerFlagsDebug etc?"
- "
- linkerFlags
- 	^#(	'-Wl'
-             '-z'
-             'now'
- 	   ) 
- "
  
+ 	"Route this message send to the message appropriate for my buildType "
+ 	|d |
+ 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
+ 	d 
+ 		at: #build put: [self linkerFlagsBuild];
+ 		at: #buildAssert  put: [self linkerFlagsBuildAssert]; 
+ 		at: #buildAssertITimerHeartbeat  put: [self linkerFlagsBuildAssertITimerHeartbeat];
+             at:#buildDebug  put: [self linkerFlagsBuildDebug];   
+ 		at: #buildDebugITimerHeartbeat  put: [self linkerFlagsBuildDebugITimerHeartbeat ];
+ 		at: #buildITimerHeartbeat  put: [self linkerFlagsBuildITimerHeartbeat];
+ 		at: #buildMultiThreaded  put: [self linkerFlagsBuildMultiThreaded];
+ 		at: #buildMultiThreadedAssert  put: [self linkerFlagsBuildMultiThreadedAssert];
+ 		at: #buildMultiThreadedDebug   put: [self linkerFlagsBuildMultiThreadedDebug ];
+ 		at: #buildNone put:[self linkerFlagsNoBuildType].
+ 	^(d at: buildType) value.
+ !
- 
- 	self	subclassResponsibility!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuild (in category 'cmake buildType redirects') -----
+ linkerFlagsBuild
+ "in 
+ cat usr/src/smalltalk/cogspur64/oscogvm/build.linux64x64/squeak.cog.spur/build/mvm
+ we want the LDFLAGS line here. 
+ 
+ "
+ 
+ "
+ 	^#(
+ 	'-Wl'
+ 	'-z'
+ 	'now'
+ 	)
+ 	"
+ 	self subclassResponsibility!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildAssert (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildAssert
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildAssertITimerHeartbeat (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildAssertITimerHeartbeat
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildDebug (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildDebug
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildDebugITimerHeartbeat (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildDebugITimerHeartbeat
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildITimerHeartbeat (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildITimerHeartbeat
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildMultiThreaded (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildMultiThreaded
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildMultiThreadedAssert (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildMultiThreadedAssert
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsBuildMultiThreadedDebug (in category 'cmake buildType redirects') -----
+ linkerFlagsBuildMultiThreadedDebug
+ 	^self linkerFlagsBuild!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>linkerFlagsNoBuildType (in category 'cmake buildType redirects') -----
+ linkerFlagsNoBuildType
+ 	"SHOULD NOT GET HERE"
+ 	self shouldNotImplement.
+ 
+ 
+ !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakCogSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakCogSpur (in category 'cmake directory') -----
  newspeakCogSpur
  	^'newspeak.cog.spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakCogV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakCogV3 (in category 'cmake directory') -----
  newspeakCogV3
  	^'newspeak.cog.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakSistaSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakSistaSpur (in category 'cmake directory') -----
  newspeakSistaSpur
  	^'newspeak.sista.Spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakSistaV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakSistaV3 (in category 'cmake directory') -----
  newspeakSistaV3
  	^'newspeak.sista.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakStackSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakStackSpur (in category 'cmake directory') -----
  newspeakStackSpur
  	^'newspeak.stack.spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>newspeakStackV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>newspeakStackV3 (in category 'cmake directory') -----
  newspeakStackV3
  	^'newspeak.stack.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>nsspur64src (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>nsspur64src (in category 'cmake directory') -----
  nsspur64src
    ^ (self topDir directoryNamed: 'nsspur64src')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>nsspursrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>nsspursrc (in category 'cmake directory') -----
  nsspursrc
    ^ (self topDir directoryNamed: 'nsspursrc')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>nsspurstack64src (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>nsspurstack64src (in category 'cmake directory') -----
  nsspurstack64src
    ^ (self topDir directoryNamed: 'nsspurstack64src')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>nsspurstacksrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>nsspurstacksrc (in category 'cmake directory') -----
  nsspurstacksrc
    ^ (self topDir directoryNamed: 'nsspurstacksrc')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>oscogvm (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>oscogvm (in category 'cmake directory') -----
  oscogvm
  	^'oscogvm'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>outputDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>outputDir (in category 'cmake directory') -----
  outputDir
  	"the directory where built binaries will be stored"
  	^ outputDir ifNil: [ outputDir := (self topDir / self dirOutput / self dirBuildPlatform / self dirBuildLanguageVMMM / (buildType asString)) ]	 
  
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>outputDirName (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>outputDirName (in category 'cmake directory') -----
  outputDirName
  	^ 'products'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>platformsDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>platformsDir (in category 'cmake directory') -----
  platformsDir
    ^ (self topDir directoryNamed: (self dirPlatforms) )
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>spur64src (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>spur64src (in category 'cmake directory') -----
  spur64src
    ^ (self topDir directoryNamed: 'spur64src')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>spursistasrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>spursistasrc (in category 'cmake directory') -----
  spursistasrc
    ^ (self topDir directoryNamed: 'spursistasrc')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>spursrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>spursrc (in category 'cmake directory') -----
  spursrc
    ^ (self topDir directoryNamed: 'spursrc')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>spurstack64src (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>spurstack64src (in category 'cmake directory') -----
  spurstack64src
    ^ (self topDir directoryNamed: 'spurstack64src')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>spurstacksrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>spurstacksrc (in category 'cmake directory') -----
  spurstacksrc
    ^ (self topDir directoryNamed: 'spurstacksrc')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakCogSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakCogSpur (in category 'cmake directory') -----
  squeakCogSpur
  	^'squeak.cog.spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakCogV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakCogV3 (in category 'cmake directory') -----
  squeakCogV3
  	^'squeak.cog.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakSistaSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakSistaSpur (in category 'cmake directory') -----
  squeakSistaSpur
  	^'squeak.sista.Spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakSistaV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakSistaV3 (in category 'cmake directory') -----
  squeakSistaV3
  	^'squeak.sista.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakStackSpur (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakStackSpur (in category 'cmake directory') -----
  squeakStackSpur
  	^'squeak.stack.spur'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>squeakStackV3 (in category 'cmake directory strings') -----
- ----- Method: CPlatformConfigForSqueak>>squeakStackV3 (in category 'cmake directory') -----
  squeakStackV3
  	^'squeak.stack.v3'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>src (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>src (in category 'cmake directory') -----
  src
  "where cog lives"
  
    ^ (self topDir directoryNamed: 'src')!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>srcDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>srcDir (in category 'cmake directory') -----
  srcDir
    "pharo legacy naming convention. used in some cmake scripts like 'directories.cmake'
  
   topDir=oscogvm
      dirSource=[nsspur64src | nsspursrc |nsspurstack64src |nsspurstacksrc |spur64src |spursistasrc |spursrc | spurstack64src |spurstacksrc | src |stacksr]  Configurations customize this
      srcDir=oscogvm/dirSource
      cogDir=oscogvm/src   (needed by CMake for access to plugins source in oscogvm/src/plugins)
  "
  
    ^ self dirSource
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>stacksrc (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>stacksrc (in category 'cmake directory') -----
  stacksrc
    ^ (self topDir directoryNamed: 'stacksrc' )
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>topDir (in category 'cmake directory objects') -----
- ----- Method: CPlatformConfigForSqueak>>topDir (in category 'cmake directory') -----
  topDir
    " topDir=oscogvm
      dirSource=[nsspur64src | nsspursrc |nsspurstack64src |nsspurstacksrc |spur64src |spursistasrc |spursrc | spurstack64src |spurstacksrc | src |stacksr]  Configurations customize this
      srcDir=oscogvm/dirSource
      cogDir=oscogvm/src   (needed by CMake for access to plugins source in oscogvm/src/plugins)
  "
  	^ topDir ifNil: [ topDir := FileDirectory default directoryNamed: self oscogvm ] 
  	!

Item was added:
+ ----- Method: Linux32x86Config>>linkerFlagsBuild (in category 'cmake buildType redirects') -----
+ linkerFlagsBuild
+ 	^#(	'-Wl'
+             '-z'
+             'now'
+ 	   ) 
+ !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>cmakeAddDefinitionsBuild (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuild
- 	|c d  o|
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuild')
- 	] .
- 	c := self compilerFlags asOrderedCollection.
- 	d := self compilerDefinitions asOrderedCollection.
- 	o:= OrderedCollection new.
- 	o addAllLast: c; addAllLast: d.
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitions asOrderedCollection)). "see my self flag below"
- !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>cmakeAddDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildAssert
- 	|c d  o|
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuildAssert')
- 	] .
- 	c := self compilerFlagsAssert asOrderedCollection.
- 	d := self compilerDefinitionsAssert asOrderedCollection.
- 	o:= OrderedCollection new.
- 	o addAllLast: c; addAllLast: d.
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitionsAssert asOrderedCollection)). "see my self flag below"
- !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>cmakeCFlagsBuild (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuild
- 	|cflags|
- 	self flag:'tty'. "#build should have -O2"
- 	cflags:= String streamContents: [:stream | (self compilerFlags) asStringOn: stream delimiter: ' ' ].
- 	cflags:='"', cflags, '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeCFlagsBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS' value: '${CMAKE_C_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ',cflags);		
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS' value: '${CMAKE_CXX_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ', cflags ).
- 
- 	(enabledebugmessages)  "take a peek at em"
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS=${CMAKE_C_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}')
- 	] .
- 
- 
- !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>cmakeSetSourceFilesPropertiesBuild (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuild
- 	|cflags|
- 	cflags:=String streamContents: [:stream | (self compilerFlags) asStringOn: stream 
- delimiter: ' ' ].
- 	cflags := '"' , cflags , '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeSetSourceFilesPropertiesBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${srcVMDir}/cogit.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags});
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${targetPlatform}/vm/sqUnixHeartbeat.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags}).!

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>compilerDefinitions (in category 'compiling') -----
- compilerDefinitions
- 	self deprecated: 'Legacy method from pharo approach. We need different definitions for each buildType'.
- 	^#(
- 	 '-DNDEBUG'          
-  	 '-DDEBUGVM=0'
- 	 ' -DLSB_FIRST=1'
- 	 '-D_GNU_SOURCE'
-  	 '-D_FILE_OFFSET_BITS=64'
- "	  '-DUSE_GLOBAL_STRUCT=0'"
-  	 '-DCOGMTVM=0') 
- !

Item was added:
+ ----- Method: Linux32x86SqueakCogV3Config>>compilerDefinitionsBuild (in category 'compiling') -----
+ compilerDefinitionsBuild
+ 	^#(
+ 	 '-DNDEBUG'          
+  	 '-DDEBUGVM=0'
+ 	 ' -DLSB_FIRST=1'
+ 	 '-D_GNU_SOURCE'
+  	 '-D_FILE_OFFSET_BITS=64'
+ "	  '-DUSE_GLOBAL_STRUCT=0'"
+  	 '-DCOGMTVM=0') 
+ !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>compilerFlags (in category 'compiling') -----
- compilerFlags
- 	^#("'-Wall'"
- 		'-w'
- 		'-m32'
- 		'-msse2'
- "		'-g3'                      extra debugging info"
- 		'-O1'
- "	 	'-fno-caller-saves'
- 		'-fno-tree-pre'") 
- !

Item was added:
+ ----- Method: Linux32x86SqueakCogV3Config>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 	^#("'-Wall'"
+ 		'-w'
+ 		'-m32'
+ 		'-msse2'
+ "		'-g3'                      extra debugging info"
+ 		'-O1'
+ "	 	'-fno-caller-saves'
+ 		'-fno-tree-pre'") 
+ !

Item was changed:
  ----- Method: Linux32x86SqueakCogV3Config>>excludeFromBuild (in category 'cmake') -----
  excludeFromBuild
+ 	^true   "build this configuration"
- 	^false   "build this configuration"
  "	^true"
  
  !

Item was removed:
- ----- Method: Linux32x86SqueakCogV3Config>>linkerFlags (in category 'compiling') -----
- linkerFlags
- 	^#(	'-Wl'
-             '-z'
-             'now'
- 	   ) 
- !

Item was added:
+ ----- Method: Linux32x86SqueakCogV3Config>>setPlatformSourcesBuild: (in category 'cmake buildType redirects') -----
+ setPlatformSourcesBuild:aMaker
+ 	|mysubset iwantonly|
+ 
+ 	"trim the platformSources collection .c files I want.  for  this OS/platform"
+ 	self flag:'tty. go through the Cog svn tree and see exactly what files should be included here.'.
+ 	iwantonly := #(		
+ 	'aio.c'
+ 	'debug.c'	
+ 	'osExports.c'
+ 	'sqUnixCharConv.c'
+ 	'sqUnixExternalPrims.c'
+ 	'sqUnixHeartbeat.c'
+ 	'sqUnixMain.c'
+ 	'sqUnixMemory.c'
+ 	'sqUnixThreads.c'
+ 	'sqUnixVMProfile.c'
+ 	).		
+ 	mysubset := platformSources select: [:c | 0 < (iwantonly occurrencesOf: c)]. 
+ 	platformSources := mysubset.
+ 	super setPlatformSourcesBuild:aMaker!

Item was added:
+ ----- Method: Linux64x64Config>>externalLibraries (in category 'compiling') -----
+ externalLibraries
+ 	^#(
+ 
+ 			'uuid'  ""
+ 			 'ssl'  ""
+ 			 'crypto' ""
+ 			 'm'      	"C math library"
+ 			 'dl'      "dynamic linking library"
+ 			 'pthread' "POSIX threads library"
+ 			 'SM'   "session management library for X11"
+ 			 'ICE'   "ICE is the Inter Client Exchange protocol, part of X11"
+ 			 'GL'    "libGL implements the GLX interface as well as the main OpenGL API entrypoints"
+ 			 'X11'
+ 			 'nsl'    "network services library"
+ 		)
+ 				!

Item was added:
+ ----- Method: Linux64x64Config>>linkerFlagsBuild (in category 'cmake buildType redirects') -----
+ linkerFlagsBuild
+ 	^#(	'-Wl'
+             '-z'
+             'now'
+ 	   ) 
+ !

Item was added:
+ Linux64x64Config subclass: #Linux64x64SqueakCogSpurConfig
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-Linux64x64'!

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig class>>isAbstractBaseClass (in category 'accessing') -----
+ isAbstractBaseClass
+ 	^false
+ !

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>availableBuildTypes (in category 'cmake') -----
+ 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 added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>cogitClass (in category 'source generation') -----
+ cogitClass
+ 	^ StackToRegisterMappingCogit 
+ !

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>compilerDefinitionsBuild (in category 'source generation') -----
+ compilerDefinitionsBuild
+ 	"cat oscogvm/build.linux64x64/squeak.cog.spur/build/mvm and get values from there"
+ 	^#(
+ 	 '-DNDEBUG'          
+  	 '-DDEBUGVM=0'
+ 	 ' -DLSB_FIRST=1'
+ 	 '-D_GNU_SOURCE'
+  	 '-DCOGMTVM=0') .
+ !

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>compilerFlagsBuild (in category 'source generation') -----
+ compilerFlagsBuild
+ 	"cat oscogvm/build.linux64x64/squeak.cog.spur/build/mvm and get values from there"
+ 	self flag:'tty: O1 or O2 depends on gcc version.  How can CMake set this for us?'.
+ 	^#('-g'
+ 	     '-O1'
+ 		'-msse2'
+             '-fwrapv'
+  	      '-m64') 
+ 
+ 
+ "	^#('-g'
+ 	     '-O2'
+  	      '-m64') "
+ !

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>dirBuildLanguageVMMM (in category 'cmake') -----
+ dirBuildLanguageVMMM
+ 	^self squeakCogSpur!

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>dirSource (in category 'cmake directory objects') -----
+ dirSource
+ 	^self spursrc!

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>excludeFromBuild (in category 'cmake') -----
+ excludeFromBuild
+ 	"over-ride to exclude yourself from a build or not"
+ 	^false!

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>externalLibsBuild (in category 'cmake buildType redirects') -----
+ externalLibsBuild
+ 	^self externalLibraries asOrderedCollection.
+ !

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>interpreterClass (in category 'source generation') -----
+ interpreterClass
+ 	^ CoInterpreter!

Item was added:
+ ----- Method: Linux64x64SqueakCogSpurConfig>>setPlatformSourcesBuild: (in category 'cmake buildType redirects') -----
+ setPlatformSourcesBuild:aMaker
+ 	|mysubset iwantonly|
+ 
+ 	"trim the platformSources collection .c files I want.  for  this OS/platform"
+ 	self flag:'tty. go through the Cog svn tree and see exactly what files should be included here. debug.c feels wrong'.
+ 	iwantonly := #(		
+ 	'aio.c'
+ 	'debug.c'	
+ 	'osExports.c'
+ 	'sqUnixCharConv.c'
+ 	'sqUnixExternalPrims.c'
+ 	'sqUnixHeartbeat.c'
+ 	'sqUnixMain.c'
+ 	'sqUnixMemory.c'
+ 	'sqUnixSpurMemory.c'	
+ 	'sqUnixThreads.c'
+ 	'sqUnixVMProfile.c'
+ 	).		
+ 	mysubset := platformSources select: [:c | 0 < (iwantonly occurrencesOf: c)]. 
+ 	platformSources := mysubset.
+ 	super setPlatformSourcesBuild:aMaker!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>linkerFlagsBuild (in category 'cmake buildType redirects') -----
+ linkerFlagsBuild
+ 	^#(	'-Wl'
+             '-z'
+             'now'
+ 	   ) 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>linkerFlagsBuild (in category 'cmake buildType redirects') -----
+ linkerFlagsBuild
+ 	^#(	'-Wl'
+             '-z'
+             'now'
+ 	   ) 
+ !

Item was changed:
+ ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>availableBuildTypes (in category 'cmake') -----
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>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: #( #buildAssertITimerHeartbeat #buildDebug #buildDebugITimerHeartbeat #buildITimerHeartbeat #buildMultiThreaded #buildMultiThreadedAssert #buildMultiThreadedDebug #buildNone)!

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>cmakeAddDefinitionsBuild (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuild
- 	|definitions|
- 	definitions:=#(
- 	 '-DNDEBUG'          
-  	 '-DDEBUGVM=0'
- 	 ' -DLSB_FIRST=1'
- 	 '-D_GNU_SOURCE'
-  	 '-D_FILE_OFFSET_BITS=64'
- "	  '-DUSE_GLOBAL_STRUCT=0'"
-  	 '-DCOGMTVM=0') .
- 
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuild')
- 	] .
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: definitions). 
- 
- "	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitions asOrderedCollection)). <--this was the old pharo deprecated legacy code approach that is unsuitable for the multiple buildTypes each Configuration must support"
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>cmakeAddDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildAssert
- 	|definitions|
- "copy-n-paste from /build.linux32x86/squeak.cog.v3/build.assert/mvm  file"
- 	definitions:=#(
- 	 '-DDEBUGVM=0'
-        '-D_GNU_SOURCE' 
-        '-D_FILE_OFFSET_BITS=64' 
-         '-DCOGMTVM=0'
- 	) .
- 
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuildAssert')
- 	] .
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: definitions). 
- 
- "	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitions asOrderedCollection)). <--this was the old pharo deprecated legacy code approach that is unsuitable for the multiple buildTypes each Configuration must support"
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>cmakeCFlagsBuild (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuild
- 	|cflags|
- 	self flag:'tty'. "#build should have -O2"
- 	cflags:= String streamContents: [:stream | (self compilerFlags) asStringOn: stream delimiter: ' ' ].
- 	cflags:='"', cflags, '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeCFlagsBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS' value: '${CMAKE_C_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ',cflags);		
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS' value: '${CMAKE_CXX_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ', cflags ).
- 
- 	(enabledebugmessages)  "take a peek at em"
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS=${CMAKE_C_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}')
- 	] .
- 
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>cmakeSetSourceFilesPropertiesBuild (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuild
- 	|cflags|
- 	cflags:=String streamContents: [:stream | (self compilerFlags) asStringOn: stream 
- delimiter: ' ' ].
- 	cflags := '"' , cflags , '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeSetSourceFilesPropertiesBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${srcVMDir}/cogit.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags});
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${targetPlatform}/vm/sqUnixHeartbeat.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags}).!

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>compilerDefinitions (in category 'compiling') -----
- compilerDefinitions
- 	
- 	self deprecated: 'Legacy method from pharo approach. We need different definitions for each buildType'.
- 
- 	^#(
- 	 '-DNDEBUG'          
-  	 '-DDEBUGVM=0'
- 	 ' -DLSB_FIRST=1'
- 	 '-D_GNU_SOURCE'
-  	 '-D_FILE_OFFSET_BITS=64'
- "	  '-DUSE_GLOBAL_STRUCT=0'"
-  	 '-DCOGMTVM=0') 
- !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>compilerDefinitionsBuild (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuild
+ 	^#(
+ 	 '-DNDEBUG'          
+  	 '-DDEBUGVM=0'
+ 	 ' -DLSB_FIRST=1'
+ 	 '-D_GNU_SOURCE'
+  	 '-D_FILE_OFFSET_BITS=64'
+ "	  '-DUSE_GLOBAL_STRUCT=0'"
+  	 '-DCOGMTVM=0') .
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>compilerDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuildAssert
+ 	^#(
+ 	 '-DDEBUGVM=0'
+        '-D_GNU_SOURCE' 
+        '-D_FILE_OFFSET_BITS=64' 
+         '-DCOGMTVM=0'
+ 	) .
+ 
+ !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>compilerFlags (in category 'compiling') -----
- compilerFlags
- 	^#("'-Wall'"
- 		'-w'
- 		'-m32'
- 		'-msse2'
- "		'-g3'                      extra debugging info"
- 		'-O1'
- "	 	'-fno-caller-saves'
- 		'-fno-tree-pre'") 
- !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 	^#("'-Wall'"
+ 		'-g'
+ 		'-m32'
+ 		'-msse2'
+ 		'-O1'
+ 		'-fwrapv'		
+ ) 
+ !

Item was changed:
  ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>dirSource (in category 'cmake') -----
  dirSource
+ 	^self spur64src!
- 	^self spursrc!

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>linkerFlags (in category 'compiling') -----
- linkerFlags
- 	^#(	'-Wl'
-             '-z'
-             'now'
- 	   ) 
- !

Item was changed:
  ----- Method: Linux64x86w32BitSqueakCogSpurConfig>>setPlatformSourcesBuild: (in category 'cmake buildType redirects') -----
  setPlatformSourcesBuild:aMaker
  	|mysubset iwantonly|
  
  	"trim the platformSources collection .c files I want.  for  this OS/platform"
  	self flag:'tty. go through the Cog svn tree and see exactly what files should be included here. debug.c feels wrong'.
  	iwantonly := #(		
  	'aio.c'
  	'debug.c'	
  	'osExports.c'
  	'sqUnixCharConv.c'
  	'sqUnixExternalPrims.c'
  	'sqUnixHeartbeat.c'
  	'sqUnixMain.c'
  	'sqUnixMemory.c'
  	'sqUnixSpurMemory.c'	
  	'sqUnixThreads.c'
  	'sqUnixVMProfile.c'
  	).		
+ 
  	mysubset := platformSources select: [:c | 0 < (iwantonly occurrencesOf: c)]. 
  	platformSources := mysubset.
  	super setPlatformSourcesBuild:aMaker!

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>cmakeAddDefinitionsBuild (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuild
- 	|definitions|
- 	definitions:=#(
- 	 '-DNDEBUG'          
-  	 '-DDEBUGVM=0'
- 	 ' -DLSB_FIRST=1'
- 	 '-D_GNU_SOURCE'
-  	 '-D_FILE_OFFSET_BITS=64'
- "	  '-DUSE_GLOBAL_STRUCT=0'"
-  	 '-DCOGMTVM=0') .
- 
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuild')
- 	] .
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: definitions). 
- 
- "	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitions asOrderedCollection)). <--this was the old pharo deprecated legacy code approach that is unsuitable for the multiple buildTypes each Configuration must support"
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>cmakeAddDefinitionsBuildAssert (in category 'cmake buildType redirects') -----
- cmakeAddDefinitionsBuildAssert
- 	|definitions|
- "copy-n-paste from /build.linux32x86/squeak.cog.v3/build.assert/mvm  file"
- 	definitions:=#(
- 	 '-DDEBUGVM=0'
-        '-D_GNU_SOURCE' 
-        '-D_FILE_OFFSET_BITS=64' 
-         '-DCOGMTVM=0'
- 	) .
- 
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitionsBuildAssert')
- 	] .
- 	templates
- 		addLast:((CMakeAddDefinitions new) definitions: definitions). 
- 
- "	templates
- 		addLast:((CMakeAddDefinitions new) definitions: (self compilerDefinitions asOrderedCollection)). <--this was the old pharo deprecated legacy code approach that is unsuitable for the multiple buildTypes each Configuration must support"
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>cmakeCFlagsBuild (in category 'cmake buildType redirects') -----
- cmakeCFlagsBuild
- 	|cflags|
- 	self flag:'tty'. "#build should have -O2"
- 	cflags:= String streamContents: [:stream | (self compilerFlags) asStringOn: stream delimiter: ' ' ].
- 	cflags:='"', cflags, '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeCFlagsBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS' value: '${CMAKE_C_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ',cflags);		
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS' value: '${CMAKE_CXX_FLAGS} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
- 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ', cflags ).
- 
- 	(enabledebugmessages)  "take a peek at em"
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS=${CMAKE_C_FLAGS}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}');
- 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}')
- 	] .
- 
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>cmakeSetSourceFilesPropertiesBuild (in category 'cmake buildType redirects') -----
- cmakeSetSourceFilesPropertiesBuild
- 	|cflags|
- 	cflags:=String streamContents: [:stream | (self compilerFlags) asStringOn: stream 
- delimiter: ' ' ].
- 	cflags := '"' , cflags , '"'.
- 	(enabledebugmessages)
- 		ifTrue:[	templates 
- 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeSetSourceFilesPropertiesBuild')
- 	] .
- 	templates
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${srcVMDir}/cogit.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags});
- 		addLast:((CMakeSetSourceFilesProperties new) 
- 			files: (OrderedCollection with: '${targetPlatform}/vm/sqUnixHeartbeat.c') 
- 			propertiesandvalues:{'COMPILE_FLAGS' . cflags}).!

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>compilerDefinitions (in category 'compiling') -----
- compilerDefinitions
- 	
- 	self deprecated: 'Legacy method from pharo approach. We need different definitions for each buildType'.
- 
- 	^#(
- 	 '-DNDEBUG'          
-  	 '-DDEBUGVM=0'
- 	 ' -DLSB_FIRST=1'
- 	 '-D_GNU_SOURCE'
-  	 '-D_FILE_OFFSET_BITS=64'
- "	  '-DUSE_GLOBAL_STRUCT=0'"
-  	 '-DCOGMTVM=0') 
- !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogV3Config>>compilerDefinitionsBuild (in category 'cmake buildType redirects') -----
+ compilerDefinitionsBuild
+ 	^#(
+ 	 '-DNDEBUG'          
+  	 '-DDEBUGVM=0'
+ 	 ' -DLSB_FIRST=1'
+ 	 '-D_GNU_SOURCE'
+  	 '-D_FILE_OFFSET_BITS=64'
+ "	  '-DUSE_GLOBAL_STRUCT=0'"
+  	 '-DCOGMTVM=0') .
+ !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>compilerFlags (in category 'compiling') -----
- compilerFlags
- 	^#("'-Wall'"
- 		'-w'
- 		'-m32'
- 		'-msse2'
- "		'-g3'                      extra debugging info"
- 		'-O1'
- "	 	'-fno-caller-saves'
- 		'-fno-tree-pre'") 
- !

Item was added:
+ ----- Method: Linux64x86w32BitSqueakCogV3Config>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 	^#("'-Wall'"
+ 		'-w'
+ 		'-m32'
+ 		'-msse2'
+ "		'-g3'                      extra debugging info"
+ 		'-O1'
+ "	 	'-fno-caller-saves'
+ 		'-fno-tree-pre'") 
+ !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>linkerFlags (in category 'compiling') -----
- linkerFlags
- 	^#(	'-Wl'
-             '-z'
-             'now'
- 	   ) 
- !

Item was removed:
- ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>buildDirectory (in category 'queries') -----
- buildDirectory
- 	"buildDirectory is user friendly term. dirBuildPlatform is internal naming convention. "
- 	^self dirBuildPlatform
- !

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>buildDirectoryFor: (in category 'queries') -----
+ buildDirectoryFor: aSymbol
+ 	default ifNil:[default:= self new].
+ 	^default buildDirectoryFor: aSymbol!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>sourceDirectoryFor: (in category 'queries') -----
+ sourceDirectoryFor: aSymbol
+ 	default ifNil:[default:= self new].
+ 	^default sourceDirectoryFor: aSymbol!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>buildDirectoryFor: (in category 'queries') -----
+ buildDirectoryFor: aSymbol
+ 	"answer a subset of buildTypeAndDirectoryInfo based on the buildTypes the configuration supports   "
+ 	[
+ 	((Smalltalk at: aSymbol)  category) =  (self configurationsCategory)  "verify the class is handled by this concrete builder"
+ 		ifTrue:[^self buildDirectoryFor: aSymbol inCategory: ((Smalltalk at: aSymbol)  category).]  "if so, go get its info"
+ 		ifFalse:[^self userErrorInvalidTarget: aSymbol]
+ 	] ifError:[^'buildDirectoryFor: ''', aSymbol , ''' not found' ].
+ 	^nil.!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>buildDirectoryFor:inCategory: (in category 'queries') -----
+ buildDirectoryFor: aSymbol inCategory: aCategoryName
+ 	|info |
+ 	"extract the CMakeVMakerConfigurationInfo object for a configuration and return the sourceDirectory ."
+ 	info:=(self configurationDictionary:aCategoryName) at: aSymbol ifAbsent:[^SqueakCMakeVMMakerAbstractBuilder default userErrorNoSource:aSymbol].
+ 	^info dirBuildPlatform
+ 
+ !

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>sourceDirectoryFor: (in category 'queries') -----
+ sourceDirectoryFor: aSymbol
+ 	"answer a subset of buildTypeAndDirectoryInfo based on the buildTypes the configuration supports   "
+ 	[
+ 	((Smalltalk at: aSymbol)  category) =  (self configurationsCategory)  "verify the class is handled by this concrete builder"
+ 		ifTrue:[^self sourceDirectoryFor: aSymbol inCategory: ((Smalltalk at: aSymbol)  category).]  "if so, go get its info"
+ 		ifFalse:[^self userErrorInvalidTarget: aSymbol]
+ 	] ifError:[^'sourceDirectoryFor: ''', aSymbol , ''' not found' ].
+ 	^nil.!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>sourceDirectoryFor:inCategory: (in category 'queries') -----
+ sourceDirectoryFor: aSymbol inCategory: aCategoryName
+ 	|info |
+ 	"extract the CMakeVMakerConfigurationInfo object for a configuration and return the sourceDirectory ."
+ 	info:=(self configurationDictionary:aCategoryName) at: aSymbol ifAbsent:[^SqueakCMakeVMMakerAbstractBuilder default userErrorNoSource:aSymbol].
+ 	^info dirSource
+ 
+ !

Item was removed:
- ----- Method: SqueakMacintoshConfig>>compilerFlags (in category 'compiling') -----
- compilerFlags
- 	"Macintosh Common compiler flags"
- 	self flag:'tty'. "cut-n-paste from representative pharo macOS configs"
- 	^ { 
- 		'-fmessage-length=0'. 
- 		'-Wno-trigraphs'. 
- 		'-fpascal-strings'. 
- 		'-fasm-blocks'. 
- 		'-mmacosx-version-min=10.5' }	
- !

Item was added:
+ ----- Method: SqueakMacintoshConfig>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 	"Macintosh Common compiler flags"
+ 	self flag:'tty'. "cut-n-paste from representative pharo macOS configs"
+ 	^ { 
+ 		'-fmessage-length=0'. 
+ 		'-Wno-trigraphs'. 
+ 		'-fpascal-strings'. 
+ 		'-fasm-blocks'. 
+ 		'-mmacosx-version-min=10.5' }	
+ !

Item was added:
+ ----- Method: SqueakUnixConfig>>cmakeAddDefinitions (in category 'cmake buildType redirects') -----
+ cmakeAddDefinitions
+ 	(enabledebugmessages)
+ 		ifTrue:[	templates 
+ 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeAddDefinitions')
+ 	] .
+ 	templates
+ 		addLast:((CMakeAddDefinitions new) definitions: self compilerDefinitions).  "this reroutes to self compilerDefinitionsBuild . This suggests that the cmakeAddDefinitionsBuild is redundant because compileDefinitiosn will rerroute based on buildType"
+ 
+ !

Item was added:
+ ----- Method: SqueakUnixConfig>>cmakeCFlags (in category 'cmake buildType redirects') -----
+ cmakeCFlags
+ 	|cflags|
+ 	cflags:= String streamContents: [:stream | (self compilerFlags) asStringOn: stream delimiter: ' ' ]. "buildType redirect to compilerFlagsBuildType"
+ 	cflags:='"', cflags, '"'.
+ 	(enabledebugmessages)
+ 		ifTrue:[	templates 
+ 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeCFlags')
+ 	] .
+ 	templates
+ 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS' value: '${CMAKE_C_FLAGS} ', cflags );
+ 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
+ 		addLast:((CMakeSet new) variable:'CMAKE_C_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ',cflags);		
+ 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS' value: '${CMAKE_CXX_FLAGS} ', cflags );
+ 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_RELEASE' value: '${CMAKE_CXX_FLAGS_RELEASE} ', cflags );
+ 		addLast:((CMakeSet new) variable:'CMAKE_CXX_FLAGS_DEBUG' value: '${CMAKE_CXX_FLAGS_DEBUG} ', cflags ).
+ 
+ 	(enabledebugmessages)  "take a peek at em"
+ 		ifTrue:[	templates 
+ 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}');
+ 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}');
+ 		addLast:((CMakeMessage new) message: 'CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}');
+ 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS=${CMAKE_C_FLAGS}');
+ 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}');
+ 		addLast:((CMakeMessage new) message: 'CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}')
+ 	] .
+ 
+ 
+ !

Item was added:
+ ----- Method: SqueakUnixConfig>>cmakeSetSourceFilesProperties (in category 'cmake buildType redirects') -----
+ cmakeSetSourceFilesProperties
+ 	|cflags|
+ 	self flag:'tty: this needs rethinking. It should be a standard template that has different elements injected based on buildType. This should not be a redirectPattern method'.	
+ 	cflags:=String streamContents: [:stream | (self compilerFlags) asStringOn: stream   "compilerFlags redirects based on buildType"
+ delimiter: ' ' ].
+ 	cflags := '"' , cflags , '"'.
+ 	(enabledebugmessages)
+ 		ifTrue:[	templates 
+ 		addLast:((CMakeMessage new) message: (self class name) , 'cmakeSetSourceFilesPoperties')
+ 	] .
+ 	templates
+ 		addLast:((CMakeSetSourceFilesProperties new)                                   "this should iterate over a set of sourceFiles that redirects on buildTypes instead of being hard-coded. "
+ 			files: (OrderedCollection with: '${srcVMDir}/cogit.c') 
+ 			propertiesandvalues:{'COMPILE_FLAGS' . cflags});
+ 		addLast:((CMakeSetSourceFilesProperties new) 
+ 			files: (OrderedCollection with: '${targetPlatform}/vm/sqUnixHeartbeat.c') 
+ 			propertiesandvalues:{'COMPILE_FLAGS' . cflags}).!

Item was removed:
- ----- Method: SqueakWindowsConfig>>compilerFlags (in category 'compiling') -----
- compilerFlags
- 	"omit -ggdb2 to prevent generating debug info"
- 	"Some flags explanation: 
- 	
- 	STACK_ALIGN_BYTES=16 is needed in mingw and FFI (and I suppose on other modules too).
- 	DALLOCA_LIES_SO_USE_GETSP=0 Some compilers return the stack address+4 on alloca function, 
- 	then FFI module needs to adjust that. It is NOT the case of mingw.
- 	For more information see this thread: http://forum.world.st/There-are-something-fishy-with-FFI-plugin-td4584226.html
- 	"
- 	^ {  
- 		'-march=pentium4'.
- 		'-mwindows'.
- 		'-msse2'. 
- 		'-mthreads'. 
- 		'-mwin32'.
- 		'-mno-rtd'. 
- 		'-mms-bitfields'. 
- 		'-mno-accumulate-outgoing-args ', self winVer }!

Item was added:
+ ----- Method: SqueakWindowsConfig>>compilerFlagsBuild (in category 'cmake buildType redirects') -----
+ compilerFlagsBuild
+ 	"omit -ggdb2 to prevent generating debug info"
+ 	"Some flags explanation: 
+ 	
+ 	STACK_ALIGN_BYTES=16 is needed in mingw and FFI (and I suppose on other modules too).
+ 	DALLOCA_LIES_SO_USE_GETSP=0 Some compilers return the stack address+4 on alloca function, 
+ 	then FFI module needs to adjust that. It is NOT the case of mingw.
+ 	For more information see this thread: http://forum.world.st/There-are-something-fishy-with-FFI-plugin-td4584226.html
+ 	"
+ 	^ {  
+ 		'-march=pentium4'.
+ 		'-mwindows'.
+ 		'-msse2'. 
+ 		'-mthreads'. 
+ 		'-mwin32'.
+ 		'-mno-rtd'. 
+ 		'-mms-bitfields'. 
+ 		'-mno-accumulate-outgoing-args ', self winVer }!



More information about the Vm-dev mailing list