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

commits at source.squeak.org commits at source.squeak.org
Fri Dec 26 22:25:39 UTC 2014


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

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

Name: CMakeVMMakerSqueak-tty.109
Author: tty
Time: 26 December 2014, 5:25:15.96 pm
UUID: 472e679e-1009-44b7-852f-cdb93a9d8926
Ancestors: CMakeVMMakerSqueak-tty.108

Added some pages to the new configuration help.

Added Ubuntu version of Linuxx86_64 with 32 bit compat libs abstract base class.

=============== Diff against CMakeVMMakerSqueak-tty.108 ===============

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: ((CMakeMinimumRequired new) version: '3.0.0');
  		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 removed:
- ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>choosePlugins (in category 'pages') -----
- choosePlugins
- 	^HelpTopic
- 		title:'Choose Plugins'
- 		contents:
- '
- 
- '!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>compilingLinkingSetup (in category 'pages') -----
+ compilingLinkingSetup
+ 	^HelpTopic
+ 		title:'Compiling and Linking Setup'
+ 		contents:
+ 'In your concrete configuration''s ''compiling'' protocol contains the methods that you must customize for your Configuration
+ 
+ cmakeAddDefinitionsBuild
+ cmakeCFlagsBuild
+ externalLibsBuild
+ linkerFlags
+ 
+ 
+ '!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>customizePlugins (in category 'pages') -----
+ customizePlugins
+ 	^HelpTopic
+ 		title:'customize Plugins'
+ 		contents:
+ 'We can customize which plugins we want on our configuration by overriding our platform''s defaultExternalPlugins and defaultInternalPlugins methods.
+ 
+ The default set can be further customized according to buildType if desired via the externalPlugins[BuildType] and internalPlugins[BuildType] redirect pattern
+ 
+ 
+ '!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>customizeVMDrivers (in category 'pages') -----
+ customizeVMDrivers
+ 	^HelpTopic
+ 		title:'Specify VM Drivers'
+ 		contents:
+ 'The SqueakUnixConfig contains the unverisal list of VM Drivers for *nix.
+ 
+ In our concrete Configuration, we need to specify which ones we want for out build.
+ 
+ We do this by overloading the SqueakUnixConfig>>customizeVMDrivers method.
+ 
+ '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>overview (in category 'pages') -----
  overview
  	^HelpTopic
  		title:'Overview'
  		contents:
+ 'This Help Topic presents the workflow the author used in creating the  Squeak, Cog, V3 CMake configuration for a pure 32 bit Slackware 14.1 system.
- 'This Help Topic is a running commentary on how I created Squeak, Cog, V3 CMake configuration for a pure 32 bit Slackware 14.1 system.
  
  
  The steps involved should be the same for any platform.'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>pages (in category 'accessing') -----
  pages
  	^#(overview 
  tests 
  identifyPlatform 
  identifyPlatformAbstractBaseClass
  identifyBuilder
  createTheConfiguration
  excludingConfigFromBuilds
  setAvailableBuildTypes
  firstCMakeGeneration
  takingStock
+ theVMGenerator
+ reviewMethodRedirectPattern
+ setOutputDirectory
- setOutputPath
  settingPlugins
+ compilingLinkingSetup
+ customizeVMDrivers
+ customizePlugins
  aNoteOnFoo
  )!

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>reviewMethodRedirectPattern (in category 'pages') -----
+ reviewMethodRedirectPattern
+ 	^HelpTopic
+ 		title:'Review of Method Redirect Pattern'
+ 		contents:
+ 'Besides the VMGenerator>>generateByTemplate, the system relies heavily on what I call a Method Redirect Pattern.
+ 
+ If you have not read it yet, its a short read here:
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakDesignPatternsHelp
+ 
+ '
+ 
+ !

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>setOutputDirectory (in category 'pages') -----
+ setOutputDirectory
+ 	^HelpTopic
+ 		title:'Set Output Directory'
+ 		contents:
+ 'The output directory is where the finished product is placed when the compilation is successful.
+ 
+ Typically this is ''oscogvm/cmake.products/foo/
+ 
+ The topmost configuration CPlatformConfigForSqueak defines the output directory as such:
+ 
+ outputDir
+ 	"the directory where built binaries will be stored"
+ 	^ outputDir ifNil: [ outputDir := (self topDir / self dirOutput /  self dirInstall) ]	
+ 
+ which (on linux) translates to ''oscogvm/cmaike.products/(subclass resposibility))''
+ 
+ Its that (subclass responsibility) we have to customize in our new configuration.
+ 
+ The convention we use is [Language][VM][MemoryModel]
+ 
+ Since I am building a Squeak Cog V3 configuration, my method should return "squeak.cog.v3"
+ 
+ If you look at implementors of dirInstall, you will see that they typically return some pre-defined strings that are defined in the ''cmake directory'' protocol of CPlatformConfigForSqueak.
+ 
+ For my configuration you can see that I return the "^self squeakCogV3" which returns the directory name that matches the [Language][VM][Memory Model] pattern I need.
+ 
+ 
+ 
+ 
+ '!

Item was removed:
- ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>setOutputPath (in category 'pages') -----
- setOutputPath
- 	^HelpTopic
- 		title:'Set Output Path'
- 		contents:
- 'WRITE ME
- 
- '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>takingStock (in category 'pages') -----
  takingStock
  	^HelpTopic
  		title:'Where You Are Now'
  		contents:
  ' If your Concrete Builder has successfully generate the CMake tree in the correct folder structure then you are almost done.
  
  The rest of the process from here on out is tweaking the Concrete Configuration so that it generates valid CMake for your platform and buildTypes.
  
  If you have not generated CMake output at this point, go back and try until you can.
  
  At this point, please evaluate:
  HelpBrowser openOn: CMakeVMMakerSqueakDesignPatternsHelp
  
+ And read the section on the Method Redirect Pattern before continuing.
- And read the secion on the Method Redirect Pattern before continuing.
  '
  
  !

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>theVMGenerator (in category 'pages') -----
+ theVMGenerator
+ 	^HelpTopic
+ 		title:'The VM Generator'
+ 		contents:
+ 'Before we move onto setting the most common directives and flags in the Concrete Configuration, lets take a quick look at the method that actually generates the CMake files for us. You probably will not need this, but its handy to know of.
+ 
+ CMakeVMGeneratorForSqueak browse
+ 
+ Look at the generateByTemplate method and the long cascade that starts with:
+ 
+ 	config 
+ 		setGlobalOptions: self;    
+ 		cmakePrefixPath;
+ 		cmakeIncludePath;.....
+ 
+ 
+ Here you see the generator extracting CMake data from your Configuration in a straighforward order.
+ 
+ The names of the methods are a bit of a holdover from the pharo code and do not conceptually match the sections of Ian Piumarta''s CMake template. 
+ 
+ If you generate your CMake files with message tracking enabled as per below
+ 
+ SqueakLinux32x86Builder
+ 	configureA: #Linux32x86SqueakCogV3Config forBuildType:#build; 
+ 	enableMessageTracking: true;                                                 <---message tracking 
+ 	generateByTemplate.
+ 
+ 
+ You can see in your CMakeLists.txt which method is responsible for which bits of code.
+ 
+ Here we see these two lines from the VMGenerator
+ 
+ 	config 
+ 	      ....
+ 		cmakeIncludeDirectories:  self;
+ 		preferredIncludes;     
+             ....
+ 
+ tracked in the CMakeLists.txt
+ 
+   message( "Linux32x86SqueakCogV3Config includeDirs: aMaker")                                             <---message tracking message
+   include_directories(  ${crossDir}/vm ${srcVMDir} ${targetPlatform}/vm ${buildDir})                <--output of cmakeIncludeDirectories:self
+   message( "Linux32x86SqueakCogV3Config preferredIncludesBuild")                                       <--message tracking message
+   include_directories(  ${targetPlatform}/plugins/B3DAcceleratorPlugin)                                     <-- output of preferredIncludesBuild
+ 
+ '
+ 
+ !

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>setGlobalOptionsBuild: (in category 'cmake buildType redirects') -----
  setGlobalOptionsBuild: aMaker
  	"These are CMakeLists.txt commands that span all platforms. Extend me as needed.
  	SystemNavigation default browseMethodsWhoseNamesContain: 'setGlobalOptions'"
  	(enabledebugmessages)
  		ifTrue:[	templates 
  			addLast: ((CMakeMessage new) message: (self class name), '  setGlobalOptionsBuild: aMaker')
  	].
  	templates 
  		addLast: ((CMakeHeader new)  configurationName:  self class name );
  		addLast: ((CMakeProject new)variable: self executableName  );
+ 		addLast: ((CMakeMinimumRequired new) version: '2.8.12');
- 		addLast: ((CMakeMinimumRequired new) version: '3.0.0');
  		addLast: ((CMakeSet new) variable: 'CMAKE_CONFIGURATION_TYPES' value: 'Release').
  !

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>setGlobalOptionsBuildDebug: (in category 'cmake buildType redirects') -----
  setGlobalOptionsBuildDebug: aMaker
  	"SystemNavigation default browseMethodsWhoseNamesContain: 'setGlobalOptions'"
  	self flag: 'tty'. "study up on CMAKE_CONFIGURATION TYPES"
  	templates 
  		addLast: ((CMakeMessage new) message: (self class name), '  setGlobalOptionsBuild: aMaker');
  		addLast: ((CMakeHeader new)  configurationName:  self class name );
  		addLast: ((CMakeProject new)variable: self executableName  );
+ 		addLast: ((CMakeMinimumRequired new) version: '2.8.12');
- 		addLast: ((CMakeMinimumRequired new) version: '3.0.0');
  		addLast: ((CMakeMessage new) message: 'CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}');
  		addLast: ((CMakeSet new) variable: 'CMAKE_CONFIGURATION_TYPES' value: 'Debug').
  !

Item was added:
+ ----- Method: Linux32x86Config>>externalLibraries (in category 'compiling') -----
+ externalLibraries
+ 	^#(
+ 		     '-L/usr/lib'
+ 		     '-L/usr/lib/X11'
+ 			'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 removed:
- ----- Method: Linux32x86SqueakCogV3Config>>externalLibraries (in category 'compiling') -----
- externalLibraries
- 	^#(
- 		     '-L/usr/lib'
- 		     '-L/usr/lib/X11'
- 			'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 removed:
- SqueakUnixConfig subclass: #Linux64x86w32BitConfig
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
- 
- !Linux64x86w32BitConfig commentStamp: 'tty 12/8/2014 11:23' prior: 0!
- A Linux64x86w32BitConfig is an Abstract base class that provides common information for my subclasses.
- I am not meant to be built.
- 
- I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
- 
- SqueakLinux64x86w32CompatBuilder 
- 	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
- 	enableMessageTracking: true;
- 	generateByTemplate.
- 
- 
- 
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
- 
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>addVMPluginsBuild: (in category 'cmake buildType redirects') -----
- addVMPluginsBuild: aMaker
- 	|temp o|
- 	self flag:'tty'. "I am writing sub-directory CMakeLists.txt here. Should I also write the config.cmake files?"
- 	enabledebugmessages
- 		ifTrue: [templates  "this message will go to the top level CMakeLists.txt file"
- 				addLast: (CMakeMessage new message: self class name , 'addVMPluginsBuild: aMaker')].
- 	vmplugins do:[ :vmp |                    
- 		o := String new writeStream.   "each VMPlugin gets its own CMakeLists.txt file in its own directory"
- 		temp := OrderedCollection new.	
- 		temp
- 			addAllLast:((CMakePluginVm new)    "this is the CMakeCompositTemplate"
- 					config: self 
- 					definitions: (vmp compilerdefinitions)
- 					module: (vmp module)
- 					sources: (vmp sources)
- 					includedirectories: (vmp includedirectories)).
- 		temp do: [:each |  o nextPutAll: (each content); cr].
- 	((self buildDir) directoryExists: (vmp module))
- 		ifFalse:[	(self buildDir) createDirectory: (vmp module)].
- 		self write: (o contents) toFile: vmp module , FileDirectory slash , aMaker outputFileName.
- 		templates   "this will go to the top level CMakeLists.txt file"
- 			addLast: ((CMakeAddSubDirectory new) sourcedir: (vmp module)) 
- 	].
- 
- 
- 
- 
- 
- 
- 
- 
- 
- !

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

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>coreSourcesBuild (in category 'cmake buildType redirects') -----
- coreSourcesBuild
- 	"files to include from src/vm dir"
- 	^ #(
- 		'cogit.c'
- 		'gcc3x-cointerp.c'
- 		)!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>coreSourcesBuildMultiThreaded (in category 'cmake buildType redirects') -----
- coreSourcesBuildMultiThreaded
- 	"files to include from src/vm dir"
- 	^ #(
- 		'cogit.c'
- 		'cointerpmt.c'
- 		)!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>customizeCMakeVMDisplayNull (in category 'plugins') -----
- customizeCMakeVMDisplayNull
- 	|module|
- 	module := vmplugins detect: [:vmd | #CMakeVMDisplayNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
- 	module 
- 		sources: #('${targetPlatform}/vm-display-null/sqUnixDisplayNull') ;
- 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
- 		compilerflags: (self compilerFlags);
- 		externallibraries: #();
- 		linkerflags: (self linkerFlags);
- 		includedirectories:(OrderedCollection 
- 										with:'${crossDir}/plugins/FilePlugin' 
- 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
-  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
- 	self flag:'tty'. "I don't think includedirectories is correct. revisit"
- 
- 
- 
- 
- 
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>customizeCMakeVMDisplayX11 (in category 'plugins') -----
- customizeCMakeVMDisplayX11
- 	|module|
- 	module := vmplugins detect: [:vmd | #CMakeVMDisplayX11 = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
- 	module 
- 		sources: #( '${targetPlatform}/vm-display-X11/sqUnixX11' '${targetPlatform}/vm-display-X11/sqUnixMozilla' );
- 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
- 		compilerflags: (self compilerFlags);
- 		externallibraries: (self externalLibraries);
- 		linkerflags: (self linkerFlags);
- 		includedirectories:(OrderedCollection 
- 										with:'${crossDir}/plugins/FilePlugin' 
- 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
-  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>customizeCMakeVMSoundALSA (in category 'plugins') -----
- customizeCMakeVMSoundALSA
- 	|module|
- 	module := vmplugins detect: [:vmd | #CMakeVMSoundALSA = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
- 	module 
- 		sources: #( '${targetPlatform}/vm-sound-ALSA/sqUnixSoundALSA' );
- 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
- 		compilerflags: (self compilerFlags);
- 		externallibraries: (self externalLibraries);
- 		linkerflags: (self linkerFlags);
- 		includedirectories: #().
- 	!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>customizeCMakeVMSoundNull (in category 'plugins') -----
- customizeCMakeVMSoundNull
- 	|module|
- 	module := vmplugins detect: [:vmd | #CMakeVMSoundNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
- 	module 
- 		sources: #( '${targetPlatform}/vm-sound-null/sqUnixSoundNull' );
- 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
- 		compilerflags: (self compilerFlags);
- 		externallibraries: (self externalLibraries);
- 		linkerflags: (self linkerFlags);
- 		includedirectories:#()
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>customizeVMPlugins (in category 'plugins') -----
- customizeVMPlugins
- 	|mysubset iwantonly|
- 	"trim the vmdrivers ordered collection of CMakeVMDriver subclasses to only those I want. then customize them for use on this OS/platform"
- 	iwantonly :=	 #(#CMakeVMDisplayNull  #CMakeVMDisplayX11  #CMakeVMSoundALSA  #CMakeVMSoundNull ).
- 	mysubset := vmplugins select: [:vmd | 0 < (iwantonly occurrencesOf: (vmd class name) asSymbol)]. 
- 	vmplugins := mysubset.
- 	self 
- 		customizeCMakeVMDisplayNull;
- 		customizeCMakeVMDisplayX11;
- 		customizeCMakeVMSoundALSA;
- 		customizeCMakeVMSoundNull.
- 
- 
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>defaultExternalPlugins (in category 'plugins') -----
- defaultExternalPlugins
- 	^ #(
- 		B3DAcceleratorPlugin
- 		ThreadedIA32FFIPlugin "SqueakFFIPrims"
- 		"UUIDPlugin"
- 		"UnixOSProcessPlugin ?? "	
- 		JPEGReaderPlugin 
- 		JPEGReadWriter2Plugin 			
- 		RePlugin
- 		InternetConfigPlugin
- 	)
- 
- "debug"!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>defaultInternalPlugins (in category 'plugins') -----
- defaultInternalPlugins
- " took from unixbuild/bld/plugins.int"
- 	^ #(
- 		ADPCMCodecPlugin 
- 		AsynchFilePlugin 
- 		BalloonEnginePlugin "B2DPlugin" 
- 		BitBltSimulation "BitBltPlugin"
- 		BMPReadWriterPlugin 
- 		CroquetPlugin 
- 		DeflatePlugin  "ZipPlugin"
- 		DropPlugin 
- 		DSAPlugin "DSAPrims" 
- 		FFTPlugin 
- 		FileCopyPlugin 
- 		FilePlugin 
- 		FloatArrayPlugin 
- 		FloatMathPlugin 
- 		JoystickTabletPlugin 
- 		KlattSynthesizerPlugin "Klatt"
- 		LargeIntegersPlugin "LargeIntegers"
- 		Matrix2x3Plugin 
- 		MIDIPlugin 
- 		MiscPrimitivePlugin 
- 		Mpeg3Plugin  	
- 		SecurityPlugin 
- 		SerialPlugin 
- 		SocketPlugin 
- 		SoundCodecPlugin "SoundCodecPrims"
- 		SoundGenerationPlugin 
- 		SoundPlugin 
- 		StarSqueakPlugin 
- 		SurfacePlugin	
- 		LocalePlugin
- 		)!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>dirBuildPlatform (in category 'cmake') -----
- dirBuildPlatform
- 	^self dirLinux64x86w32BitCompatibility!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>excludeFromBuild (in category 'cmake') -----
- excludeFromBuild
- 	"over-ride to exclude yourself from a build or not"
- 	^true!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>executableName (in category 'cmake') -----
- executableName
- 	"AbstractBaseClass configurations are not meant to be executable"
- 	^ self vmIShouldNotBeHereExecutableName!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>externalPluginsBuild (in category 'cmake buildType redirects') -----
- externalPluginsBuild
- 	^ externalPlugins ifNil: [ externalPlugins := self defaultExternalPlugins ]!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>extraPluginSettingsBuild: (in category 'cmake buildType redirects') -----
- extraPluginSettingsBuild: aMaker
- 	aMaker isExternal 
- 		ifTrue:[aMaker templates addLast:((CMakeSet new) variable:'LIBRARY_OUTPUT_PATH' value:'${outputDir}')].
- 	aMaker templates addLast:((CMakeSet new) variable:'linkFlags' quotedValue:'${linkFlags} -m32').
- 
- 
- "	maker isExternal ifTrue: [
- 		maker set: 'LIBRARY_OUTPUT_PATH' to: '${outputDir}' 
- 	].
- 	maker set: #linkFlags toString: '${linkFlags} -m32'"!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>internalPluginsBuild (in category 'cmake buildType redirects') -----
- internalPluginsBuild
- 	^ internalPlugins ifNil: [ internalPlugins := self defaultInternalPlugins ]!

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>postBuildActionsBuild: (in category 'cmake buildType redirects') -----
- postBuildActionsBuild: aMaker
- 	"SystemNavigation default browseMethodsWhoseNamesContain: 'postBuildActionsBuild:'"
- 	(aMaker config enabledebugmessages)
- 		ifTrue:[	
- 	aMaker config templates 
- 		addLast: ((CMakeMessage new) message: (self class name), ' postBuildActionsBuild' )
- 	].
- 	aMaker config templates 
- 		addLast: ((CMakeMessage new) message: 'postBuildActionsBuild: aMaker' );
- 		addLast:((CMakeCommand new) command:'include' params:'config.cmake');                                                 "cmake --help-command include "
- 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_DUPLICATES config_vars');                      "cmake --help-command LIST"
- 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.in ""');          "cmake --help-command FILE"
- 		addLast:(CMakeAppendConfigHIn new);
- 		addLast:((CMakeCommand new) command:'CONFIGURE_FILE' params:'${CMAKE_BINARY_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h');
- 		addLast:((CMakeCommand new) command:'GET_CMAKE_PROPERTY' params:'tmp VARIABLES');
- 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_ITEM tmp tmp');
- 		addLast:((CMakeCommand new) command:'LIST' params:'SORT tmp');
- 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.status ""');
- 		addLast:(CMakeAppendConfigStatus new).
- 
- !

Item was removed:
- ----- Method: Linux64x86w32BitConfig>>preferredIncludesBuild (in category 'cmake buildType redirects') -----
- preferredIncludesBuild
- 	(enabledebugmessages)
- 		ifTrue:[	
- 	templates 
- 		addLast: ((CMakeMessage new) message: (self class name), ' preferredIncludesBuild' )
- 	].
- 	templates
- 		addLast: ((CMakeIncludeDirectories new) dirs: (OrderedCollection with: '${targetPlatform}/plugins/B3DAcceleratorPlugin')).
- 
- 	(enabledebugmessages)
- 		ifTrue:[	
- 	templates 
- 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_PATH =  ${CMAKE_INCLUDE_PATH}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_SYSTEM_INCLUDE_PATH =  ${CMAKE_SYSTEM_INCLUDE_PATH}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES = ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES =  ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_INCLUDE_CURRENT_DIR}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE =  ${CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_BEFORE}' );
- 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE}' )
- 	].!

Item was added:
+ SqueakUnixConfig subclass: #Linux64x86w32BitConfigUsrLib
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
+ 
+ !Linux64x86w32BitConfigUsrLib commentStamp: 'tty 12/26/2014 11:42' prior: 0!
+ A Linux64x86w32BitConfigUsrLib is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
+ 
+ I am a configuration for linux64x86 where the 32 bit compatibility libraries reside in /usr/lib  (example: Slackware64 14.1)
+ 
+ Some linux platforms (such as Ubuntu). store their 32 bit compat libs in /usr/lib32.  For those, use subclasses of Linux64x86w32BitConfigUsrLib32
+ 
+ 
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf[Foo]
+ 
+ SqueakLinux64x86w32CompatBuilder 
+ 	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
+ 
+ 
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>addVMPluginsBuild: (in category 'cmake buildType redirects') -----
+ addVMPluginsBuild: aMaker
+ 	|temp o|
+ 	self flag:'tty'. "I am writing sub-directory CMakeLists.txt here. Should I also write the config.cmake files?"
+ 	enabledebugmessages
+ 		ifTrue: [templates  "this message will go to the top level CMakeLists.txt file"
+ 				addLast: (CMakeMessage new message: self class name , 'addVMPluginsBuild: aMaker')].
+ 	vmplugins do:[ :vmp |                    
+ 		o := String new writeStream.   "each VMPlugin gets its own CMakeLists.txt file in its own directory"
+ 		temp := OrderedCollection new.	
+ 		temp
+ 			addAllLast:((CMakePluginVm new)    "this is the CMakeCompositTemplate"
+ 					config: self 
+ 					definitions: (vmp compilerdefinitions)
+ 					module: (vmp module)
+ 					sources: (vmp sources)
+ 					includedirectories: (vmp includedirectories)).
+ 		temp do: [:each |  o nextPutAll: (each content); cr].
+ 	((self buildDir) directoryExists: (vmp module))
+ 		ifFalse:[	(self buildDir) createDirectory: (vmp module)].
+ 		self write: (o contents) toFile: vmp module , FileDirectory slash , aMaker outputFileName.
+ 		templates   "this will go to the top level CMakeLists.txt file"
+ 			addLast: ((CMakeAddSubDirectory new) sourcedir: (vmp module)) 
+ 	].
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ !

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

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>coreSourcesBuild (in category 'cmake buildType redirects') -----
+ coreSourcesBuild
+ 	"files to include from src/vm dir"
+ 	^ #(
+ 		'cogit.c'
+ 		'gcc3x-cointerp.c'
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>coreSourcesBuildMultiThreaded (in category 'cmake buildType redirects') -----
+ coreSourcesBuildMultiThreaded
+ 	"files to include from src/vm dir"
+ 	^ #(
+ 		'cogit.c'
+ 		'cointerpmt.c'
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>customizeCMakeVMDisplayNull (in category 'plugins') -----
+ customizeCMakeVMDisplayNull
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMDisplayNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #('${targetPlatform}/vm-display-null/sqUnixDisplayNull') ;
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: #();
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:(OrderedCollection 
+ 										with:'${crossDir}/plugins/FilePlugin' 
+ 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
+  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
+ 	self flag:'tty'. "I don't think includedirectories is correct. revisit"
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>customizeCMakeVMDisplayX11 (in category 'plugins') -----
+ customizeCMakeVMDisplayX11
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMDisplayX11 = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-display-X11/sqUnixX11' '${targetPlatform}/vm-display-X11/sqUnixMozilla' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:(OrderedCollection 
+ 										with:'${crossDir}/plugins/FilePlugin' 
+ 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
+  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>customizeCMakeVMSoundALSA (in category 'plugins') -----
+ customizeCMakeVMSoundALSA
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMSoundALSA = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-sound-ALSA/sqUnixSoundALSA' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories: #().
+ 	!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>customizeCMakeVMSoundNull (in category 'plugins') -----
+ customizeCMakeVMSoundNull
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMSoundNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-sound-null/sqUnixSoundNull' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:#()
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>customizeVMPlugins (in category 'plugins') -----
+ customizeVMPlugins
+ 	|mysubset iwantonly|
+ 	"trim the vmdrivers ordered collection of CMakeVMDriver subclasses to only those I want. then customize them for use on this OS/platform"
+ 	iwantonly :=	 #(#CMakeVMDisplayNull  #CMakeVMDisplayX11  #CMakeVMSoundALSA  #CMakeVMSoundNull ).
+ 	mysubset := vmplugins select: [:vmd | 0 < (iwantonly occurrencesOf: (vmd class name) asSymbol)]. 
+ 	vmplugins := mysubset.
+ 	self 
+ 		customizeCMakeVMDisplayNull;
+ 		customizeCMakeVMDisplayX11;
+ 		customizeCMakeVMSoundALSA;
+ 		customizeCMakeVMSoundNull.
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>defaultExternalPlugins (in category 'plugins') -----
+ defaultExternalPlugins
+ 	^ #(
+ 		B3DAcceleratorPlugin
+ 		ThreadedIA32FFIPlugin "SqueakFFIPrims"
+ 		"UUIDPlugin"
+ 		"UnixOSProcessPlugin ?? "	
+ 		JPEGReaderPlugin 
+ 		JPEGReadWriter2Plugin 			
+ 		RePlugin
+ 		InternetConfigPlugin
+ 	)
+ 
+ "debug"!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>defaultInternalPlugins (in category 'plugins') -----
+ defaultInternalPlugins
+ " took from unixbuild/bld/plugins.int"
+ 	^ #(
+ 		ADPCMCodecPlugin 
+ 		AsynchFilePlugin 
+ 		BalloonEnginePlugin "B2DPlugin" 
+ 		BitBltSimulation "BitBltPlugin"
+ 		BMPReadWriterPlugin 
+ 		CroquetPlugin 
+ 		DeflatePlugin  "ZipPlugin"
+ 		DropPlugin 
+ 		DSAPlugin "DSAPrims" 
+ 		FFTPlugin 
+ 		FileCopyPlugin 
+ 		FilePlugin 
+ 		FloatArrayPlugin 
+ 		FloatMathPlugin 
+ 		JoystickTabletPlugin 
+ 		KlattSynthesizerPlugin "Klatt"
+ 		LargeIntegersPlugin "LargeIntegers"
+ 		Matrix2x3Plugin 
+ 		MIDIPlugin 
+ 		MiscPrimitivePlugin 
+ 		Mpeg3Plugin  	
+ 		SecurityPlugin 
+ 		SerialPlugin 
+ 		SocketPlugin 
+ 		SoundCodecPlugin "SoundCodecPrims"
+ 		SoundGenerationPlugin 
+ 		SoundPlugin 
+ 		StarSqueakPlugin 
+ 		SurfacePlugin	
+ 		LocalePlugin
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>dirBuildPlatform (in category 'cmake') -----
+ dirBuildPlatform
+ 	^self dirLinux64x86w32BitCompatibility!

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

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>executableName (in category 'cmake') -----
+ executableName
+ 	"AbstractBaseClass configurations are not meant to be executable"
+ 	^ self vmIShouldNotBeHereExecutableName!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>externalLibraries (in category 'compiling') -----
+ externalLibraries
+ 	^#(
+ 		     '-L/usr/lib'
+ 		     '-L/usr/lib/X11'
+ 			'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: Linux64x86w32BitConfigUsrLib>>externalPluginsBuild (in category 'cmake buildType redirects') -----
+ externalPluginsBuild
+ 	^ externalPlugins ifNil: [ externalPlugins := self defaultExternalPlugins ]!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>extraPluginSettingsBuild: (in category 'cmake buildType redirects') -----
+ extraPluginSettingsBuild: aMaker
+ 	aMaker isExternal 
+ 		ifTrue:[aMaker templates addLast:((CMakeSet new) variable:'LIBRARY_OUTPUT_PATH' value:'${outputDir}')].
+ 	aMaker templates addLast:((CMakeSet new) variable:'linkFlags' quotedValue:'${linkFlags} -m32').
+ 
+ 
+ "	maker isExternal ifTrue: [
+ 		maker set: 'LIBRARY_OUTPUT_PATH' to: '${outputDir}' 
+ 	].
+ 	maker set: #linkFlags toString: '${linkFlags} -m32'"!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>internalPluginsBuild (in category 'cmake buildType redirects') -----
+ internalPluginsBuild
+ 	^ internalPlugins ifNil: [ internalPlugins := self defaultInternalPlugins ]!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>postBuildActionsBuild: (in category 'cmake buildType redirects') -----
+ postBuildActionsBuild: aMaker
+ 	"SystemNavigation default browseMethodsWhoseNamesContain: 'postBuildActionsBuild:'"
+ 	(aMaker config enabledebugmessages)
+ 		ifTrue:[	
+ 	aMaker config templates 
+ 		addLast: ((CMakeMessage new) message: (self class name), ' postBuildActionsBuild' )
+ 	].
+ 	aMaker config templates 
+ 		addLast: ((CMakeMessage new) message: 'postBuildActionsBuild: aMaker' );
+ 		addLast:((CMakeCommand new) command:'include' params:'config.cmake');                                                 "cmake --help-command include "
+ 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_DUPLICATES config_vars');                      "cmake --help-command LIST"
+ 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.in ""');          "cmake --help-command FILE"
+ 		addLast:(CMakeAppendConfigHIn new);
+ 		addLast:((CMakeCommand new) command:'CONFIGURE_FILE' params:'${CMAKE_BINARY_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h');
+ 		addLast:((CMakeCommand new) command:'GET_CMAKE_PROPERTY' params:'tmp VARIABLES');
+ 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_ITEM tmp tmp');
+ 		addLast:((CMakeCommand new) command:'LIST' params:'SORT tmp');
+ 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.status ""');
+ 		addLast:(CMakeAppendConfigStatus new).
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib>>preferredIncludesBuild (in category 'cmake buildType redirects') -----
+ preferredIncludesBuild
+ 	(enabledebugmessages)
+ 		ifTrue:[	
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: (self class name), ' preferredIncludesBuild' )
+ 	].
+ 	templates
+ 		addLast: ((CMakeIncludeDirectories new) dirs: (OrderedCollection with: '${targetPlatform}/plugins/B3DAcceleratorPlugin')).
+ 
+ 	(enabledebugmessages)
+ 		ifTrue:[	
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_PATH =  ${CMAKE_INCLUDE_PATH}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_SYSTEM_INCLUDE_PATH =  ${CMAKE_SYSTEM_INCLUDE_PATH}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES = ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES =  ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_INCLUDE_CURRENT_DIR}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE =  ${CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_BEFORE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE}' )
+ 	].!

Item was added:
+ SqueakUnixConfig subclass: #Linux64x86w32BitConfigUsrLib32
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
+ 
+ !Linux64x86w32BitConfigUsrLib32 commentStamp: 'tty 12/26/2014 11:43' prior: 0!
+ A Linux64x86w32BitConfigUsrLib32 is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
+ 
+ I am a configuration for linux64x86 where the 32 bit compatibility libraries reside in /usr/lib32  (example: Ubuntu)
+ 
+ Some linux platforms (such as Slackware). store their 32 bit compat libs in /usr/lib  For those, use subclasses of Linux64x86w32BitConfigUsrLib
+ 
+ 
+ 
+ 
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf[Foo]
+ 
+ SqueakLinux64x86w32CompatBuilder 
+ 	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
+ 
+ 
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakHelp
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>addVMPluginsBuild: (in category 'cmake buildType redirects') -----
+ addVMPluginsBuild: aMaker
+ 	|temp o|
+ 	self flag:'tty'. "I am writing sub-directory CMakeLists.txt here. Should I also write the config.cmake files?"
+ 	enabledebugmessages
+ 		ifTrue: [templates  "this message will go to the top level CMakeLists.txt file"
+ 				addLast: (CMakeMessage new message: self class name , 'addVMPluginsBuild: aMaker')].
+ 	vmplugins do:[ :vmp |                    
+ 		o := String new writeStream.   "each VMPlugin gets its own CMakeLists.txt file in its own directory"
+ 		temp := OrderedCollection new.	
+ 		temp
+ 			addAllLast:((CMakePluginVm new)    "this is the CMakeCompositTemplate"
+ 					config: self 
+ 					definitions: (vmp compilerdefinitions)
+ 					module: (vmp module)
+ 					sources: (vmp sources)
+ 					includedirectories: (vmp includedirectories)).
+ 		temp do: [:each |  o nextPutAll: (each content); cr].
+ 	((self buildDir) directoryExists: (vmp module))
+ 		ifFalse:[	(self buildDir) createDirectory: (vmp module)].
+ 		self write: (o contents) toFile: vmp module , FileDirectory slash , aMaker outputFileName.
+ 		templates   "this will go to the top level CMakeLists.txt file"
+ 			addLast: ((CMakeAddSubDirectory new) sourcedir: (vmp module)) 
+ 	].
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ !

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

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>coreSourcesBuild (in category 'cmake buildType redirects') -----
+ coreSourcesBuild
+ 	"files to include from src/vm dir"
+ 	^ #(
+ 		'cogit.c'
+ 		'gcc3x-cointerp.c'
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>coreSourcesBuildMultiThreaded (in category 'cmake buildType redirects') -----
+ coreSourcesBuildMultiThreaded
+ 	"files to include from src/vm dir"
+ 	^ #(
+ 		'cogit.c'
+ 		'cointerpmt.c'
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>customizeCMakeVMDisplayNull (in category 'plugins') -----
+ customizeCMakeVMDisplayNull
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMDisplayNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #('${targetPlatform}/vm-display-null/sqUnixDisplayNull') ;
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: #();
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:(OrderedCollection 
+ 										with:'${crossDir}/plugins/FilePlugin' 
+ 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
+  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
+ 	self flag:'tty'. "I don't think includedirectories is correct. revisit"
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>customizeCMakeVMDisplayX11 (in category 'plugins') -----
+ customizeCMakeVMDisplayX11
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMDisplayX11 = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-display-X11/sqUnixX11' '${targetPlatform}/vm-display-X11/sqUnixMozilla' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:(OrderedCollection 
+ 										with:'${crossDir}/plugins/FilePlugin' 
+ 										with: '${targetPlatform}/plugins/B3DAcceleratorPlugin'  
+  									     with: '${crossDir}/plugins/B3DAcceleratorPlugin').
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>customizeCMakeVMSoundALSA (in category 'plugins') -----
+ customizeCMakeVMSoundALSA
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMSoundALSA = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-sound-ALSA/sqUnixSoundALSA' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories: #().
+ 	!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>customizeCMakeVMSoundNull (in category 'plugins') -----
+ customizeCMakeVMSoundNull
+ 	|module|
+ 	module := vmplugins detect: [:vmd | #CMakeVMSoundNull = ((vmd class name) asSymbol)] ifNone:[nil].  "error handling?"
+ 	module 
+ 		sources: #( '${targetPlatform}/vm-sound-null/sqUnixSoundNull' );
+ 		compilerdefinitions:(OrderedCollection with: '-fPIC' with: '-DPIC');
+ 		compilerflags: (self compilerFlags);
+ 		externallibraries: (self externalLibraries);
+ 		linkerflags: (self linkerFlags);
+ 		includedirectories:#()
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>customizeVMPlugins (in category 'plugins') -----
+ customizeVMPlugins
+ 	|mysubset iwantonly|
+ 	"trim the vmdrivers ordered collection of CMakeVMDriver subclasses to only those I want. then customize them for use on this OS/platform"
+ 	iwantonly :=	 #(#CMakeVMDisplayNull  #CMakeVMDisplayX11  #CMakeVMSoundALSA  #CMakeVMSoundNull ).
+ 	mysubset := vmplugins select: [:vmd | 0 < (iwantonly occurrencesOf: (vmd class name) asSymbol)]. 
+ 	vmplugins := mysubset.
+ 	self 
+ 		customizeCMakeVMDisplayNull;
+ 		customizeCMakeVMDisplayX11;
+ 		customizeCMakeVMSoundALSA;
+ 		customizeCMakeVMSoundNull.
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>defaultExternalPlugins (in category 'plugins') -----
+ defaultExternalPlugins
+ 	^ #(
+ 		B3DAcceleratorPlugin
+ 		ThreadedIA32FFIPlugin "SqueakFFIPrims"
+ 		"UUIDPlugin"
+ 		"UnixOSProcessPlugin ?? "	
+ 		JPEGReaderPlugin 
+ 		JPEGReadWriter2Plugin 			
+ 		RePlugin
+ 		InternetConfigPlugin
+ 	)
+ 
+ "debug"!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>defaultInternalPlugins (in category 'plugins') -----
+ defaultInternalPlugins
+ " took from unixbuild/bld/plugins.int"
+ 	^ #(
+ 		ADPCMCodecPlugin 
+ 		AsynchFilePlugin 
+ 		BalloonEnginePlugin "B2DPlugin" 
+ 		BitBltSimulation "BitBltPlugin"
+ 		BMPReadWriterPlugin 
+ 		CroquetPlugin 
+ 		DeflatePlugin  "ZipPlugin"
+ 		DropPlugin 
+ 		DSAPlugin "DSAPrims" 
+ 		FFTPlugin 
+ 		FileCopyPlugin 
+ 		FilePlugin 
+ 		FloatArrayPlugin 
+ 		FloatMathPlugin 
+ 		JoystickTabletPlugin 
+ 		KlattSynthesizerPlugin "Klatt"
+ 		LargeIntegersPlugin "LargeIntegers"
+ 		Matrix2x3Plugin 
+ 		MIDIPlugin 
+ 		MiscPrimitivePlugin 
+ 		Mpeg3Plugin  	
+ 		SecurityPlugin 
+ 		SerialPlugin 
+ 		SocketPlugin 
+ 		SoundCodecPlugin "SoundCodecPrims"
+ 		SoundGenerationPlugin 
+ 		SoundPlugin 
+ 		StarSqueakPlugin 
+ 		SurfacePlugin	
+ 		LocalePlugin
+ 		)!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>dirBuildPlatform (in category 'cmake') -----
+ dirBuildPlatform
+ 	^self dirLinux64x86w32BitCompatibility!

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

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>executableName (in category 'cmake') -----
+ executableName
+ 	"AbstractBaseClass configurations are not meant to be executable"
+ 	^ self vmIShouldNotBeHereExecutableName!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>externalPluginsBuild (in category 'cmake buildType redirects') -----
+ externalPluginsBuild
+ 	^ externalPlugins ifNil: [ externalPlugins := self defaultExternalPlugins ]!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>extraPluginSettingsBuild: (in category 'cmake buildType redirects') -----
+ extraPluginSettingsBuild: aMaker
+ 	aMaker isExternal 
+ 		ifTrue:[aMaker templates addLast:((CMakeSet new) variable:'LIBRARY_OUTPUT_PATH' value:'${outputDir}')].
+ 	aMaker templates addLast:((CMakeSet new) variable:'linkFlags' quotedValue:'${linkFlags} -m32').
+ 
+ 
+ "	maker isExternal ifTrue: [
+ 		maker set: 'LIBRARY_OUTPUT_PATH' to: '${outputDir}' 
+ 	].
+ 	maker set: #linkFlags toString: '${linkFlags} -m32'"!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>internalPluginsBuild (in category 'cmake buildType redirects') -----
+ internalPluginsBuild
+ 	^ internalPlugins ifNil: [ internalPlugins := self defaultInternalPlugins ]!

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>postBuildActionsBuild: (in category 'cmake buildType redirects') -----
+ postBuildActionsBuild: aMaker
+ 	"SystemNavigation default browseMethodsWhoseNamesContain: 'postBuildActionsBuild:'"
+ 	(aMaker config enabledebugmessages)
+ 		ifTrue:[	
+ 	aMaker config templates 
+ 		addLast: ((CMakeMessage new) message: (self class name), ' postBuildActionsBuild' )
+ 	].
+ 	aMaker config templates 
+ 		addLast: ((CMakeMessage new) message: 'postBuildActionsBuild: aMaker' );
+ 		addLast:((CMakeCommand new) command:'include' params:'config.cmake');                                                 "cmake --help-command include "
+ 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_DUPLICATES config_vars');                      "cmake --help-command LIST"
+ 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.in ""');          "cmake --help-command FILE"
+ 		addLast:(CMakeAppendConfigHIn new);
+ 		addLast:((CMakeCommand new) command:'CONFIGURE_FILE' params:'${CMAKE_BINARY_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h');
+ 		addLast:((CMakeCommand new) command:'GET_CMAKE_PROPERTY' params:'tmp VARIABLES');
+ 		addLast:((CMakeCommand new) command:'LIST' params:'REMOVE_ITEM tmp tmp');
+ 		addLast:((CMakeCommand new) command:'LIST' params:'SORT tmp');
+ 		addLast:((CMakeCommand new) command:'FILE' params:'WRITE ${CMAKE_BINARY_DIR}/config.h.status ""');
+ 		addLast:(CMakeAppendConfigStatus new).
+ 
+ !

Item was added:
+ ----- Method: Linux64x86w32BitConfigUsrLib32>>preferredIncludesBuild (in category 'cmake buildType redirects') -----
+ preferredIncludesBuild
+ 	(enabledebugmessages)
+ 		ifTrue:[	
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: (self class name), ' preferredIncludesBuild' )
+ 	].
+ 	templates
+ 		addLast: ((CMakeIncludeDirectories new) dirs: (OrderedCollection with: '${targetPlatform}/plugins/B3DAcceleratorPlugin')).
+ 
+ 	(enabledebugmessages)
+ 		ifTrue:[	
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_PATH =  ${CMAKE_INCLUDE_PATH}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_SYSTEM_INCLUDE_PATH =  ${CMAKE_SYSTEM_INCLUDE_PATH}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES = ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES =  ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE =  ${CMAKE_INCLUDE_CURRENT_DIR}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE =  ${CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_BEFORE}' );
+ 		addLast: ((CMakeMessage new) message: 'CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE =  ${CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE}' )
+ 	].!

Item was changed:
+ Linux64x86w32BitConfigUsrLib subclass: #Linux64x86w32BitSqueakCogV3Config
- Linux64x86w32BitConfig subclass: #Linux64x86w32BitSqueakCogV3Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
  
  !Linux64x86w32BitSqueakCogV3Config commentStamp: 'tty 12/8/2014 11:23' prior: 0!
  I am a configuration for 64 bit Linux with 32 Bit compatability libraries.
  I have been tested with Slackware64 14.1 which uses /usr/lib for 32 bit compatability  libs and /usr/lib64 for normal libs.
  
  If you have a machine which uses /usr/lib for 64 bit libs and /usr/lib32 for 32 bit compat libs then subclass me and modify (at least) the following methods:
  
  compilerFlags
  externalLibraries
  linkFlagsBuild
  linkerFlags
  
  
  SqueakLinux64x86w32CompatBuilder 
  	configureABuildFor: #Linux64x86w32BitSqueakCogV3Config withBuildType: #build;
  	enableMessageTracking: true;
  	generateByTemplate.
  
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  
  Getting the UUIDPlugin to compile (not work, unfortunately, but compile) required modifying oscogvm/platforms/unix/plugins/acinclude.m4.
  to read: (my Slackware system has <uuid> and uuidgen. then setting the 
  
  # -*- sh -*-
  
  AC_MSG_CHECKING([for UUID support])
  AC_TRY_COMPILE([#include <sys/uuid.h>],[uuid_generatorxyz;],[
    AC_MSG_RESULT(yes)
    AC_CHECK_LIB(uuid, uuid_generator_xyz,LIB_UUID="-luuid" )
  ],[
    AC_MSG_RESULT(no)
    AC_MSG_CHECKING([for UUID support uuid/uuid.h] and uuid_generate)
    AC_TRY_COMPILE([#include <uuid/uuid.h>],[uuid_generate;],[
      AC_MSG_RESULT(yes)
      AC_CHECK_LIB(uuid, uuid_generate, LIB_UUID="-luuid")],[
      AC_MSG_RESULT(no)
        AC_MSG_CHECKING([for UUID support uuid and uuidgen] )
        AC_TRY_COMPILE([#include <uuid.h>],[uuidgen;],[
        AC_MSG_RESULT(yes)
         AC_CHECK_LIB(uuid, uuidgen, LIB_UUID="-luuid" )],[
         AC_MSG_RESULT(no)
          AC_PLUGIN_DISABLE
     ])
   ])
  ])
  
  
  
  
  #define HAVE_UUID_H 1 
  #define HAVE_UUIDGEN 1
  
  fl;ags in my configH method
  
  !

Item was removed:
- ----- Method: Linux64x86w32BitSqueakCogV3Config>>externalLibraries (in category 'compiling') -----
- externalLibraries
- 	^#(
- 		     '-L/usr/lib'
- 		     '-L/usr/lib/X11'
- 			'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"
- 		)
- 				
- 
- !



More information about the Vm-dev mailing list