[Vm-dev] VM Maker: CMakeVMMaker-nice.283.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 10 20:59:37 UTC 2016


Nicolas Cellier uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-nice.283.mcz

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

Name: CMakeVMMaker-nice.283
Author: nice
Time: 10 March 2016, 9:58:43.064 pm
UUID: 638cfa96-bb41-4224-8aa4-c738240e89ad
Ancestors: CMakeVMMaker-tty.215, CMakeVMMaker-jeanbaptistearnaud.282

merge CMakeVMMaker-tty.215:

	Modified class comment in CPlatformConfig to refer to the correct repository on github instead of gittorious

=============== Diff against CMakeVMMaker-tty.215 ===============

Item was changed:
  SystemOrganization addCategory: #CMakeVMMaker!
+ SystemOrganization addCategory: #'CMakeVMMaker-Android'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Builder'!
+ SystemOrganization addCategory: #'CMakeVMMaker-FreeBSD'!
+ SystemOrganization addCategory: #'CMakeVMMaker-IOS'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Libs'!
+ SystemOrganization addCategory: #'CMakeVMMaker-MacOS'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Unix'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Windows'!
- SystemOrganization addCategory: 'CMakeVMMaker-Android'!
- SystemOrganization addCategory: 'CMakeVMMaker-FreeBSD'!
- SystemOrganization addCategory: 'CMakeVMMaker-IOS'!
- SystemOrganization addCategory: 'CMakeVMMaker-Libs'!
- SystemOrganization addCategory: 'CMakeVMMaker-MacOS'!
- SystemOrganization addCategory: 'CMakeVMMaker-Unix'!
- SystemOrganization addCategory: 'CMakeVMMaker-Windows'!

Item was changed:
  ----- Method: CMIOSFreetype2>>defineGlobalTargets (in category 'generating actions') -----
  defineGlobalTargets
  	| var |
  	var := self canonicalName , '_LIB'.
  	vmGen set: var toString: self libraryFileName.
  "
  define a library as imported one
  and make it depend from it's build target
  "
+ 
  	vmGen
  		puts: 
+ ('add_library("\{{1}\}" STATIC IMPORTED GLOBAL)
+ 	set_target_properties("\{{1}\}" PROPERTIES IMPORTED_LOCATION "\{{1}\}")
+ add_dependencies("\{{1}\}" "{2}")
+ ' format: { var. self buildTarget }
- ('add_library("{1}" STATIC IMPORTED GLOBAL)
- 	set_target_properties("{1}" PROPERTIES IMPORTED_LOCATION "{1}")
- add_dependencies("{1}" "{2}")
- ' format: { '${',var, '}' . self buildTarget }
  ).
  
  	vmGen cmd: 'add_dependencies' params:
  		vmGen moduleName , ' ' , self buildTarget!

Item was changed:
  ----- Method: CMIOSFreetype2>>includeDir (in category 'accessing') -----
  includeDir
  	"see setVariables"
  
  " `<prefix>/include/freetype2' must be in your current inclusion path "
- 
  	^ '"${thirdpartyDir}/freetype2/freetype-2.4.9/include"'!

Item was changed:
  ----- Method: CMPkgConfig>>build (in category 'generating actions') -----
  build
  	gen 
  		puts: '
  add_custom_command(OUTPUT "${pkgConfigBinary}"
+ 	COMMAND ./configure --prefix=''${installPrefix}'' CFLAGS=''-std=gnu89 -arch i386'' LDFLAGS=''-arch i386''
- 	COMMAND ./configure --prefix=''${installPrefix}'' CFLAGS=''-arch i386'' LDFLAGS=''-arch i386''
  	COMMAND make
  	COMMAND make install
  	WORKING_DIRECTORY "${libSourcesDir}"
  	DEPENDS "${unpackTarget}"
  	COMMENT "Building ${libName}"
  )
  '
  !

Item was changed:
+ ----- Method: CMThirdpartyLibrary>>archiveFileName (in category 'accessing') -----
- ----- Method: CMThirdpartyLibrary>>archiveFileName (in category 'as yet unclassified') -----
  archiveFileName
  	^ self downloadURL asUrl fileName !

Item was changed:
  ----- Method: CMThirdpartyLibrary>>defaultConfigurationFlags (in category 'settings') -----
  defaultConfigurationFlags 
  	^#(
+ 		'CFLAGS=''-arch i386'''
- 		'CFLAGS=''-arch i386''' 
  		'LDFLAGS=''-arch i386''')!

Item was changed:
  ----- Method: CMakeGenerator>>addExternalLibrary: (in category 'cmake commands') -----
  addExternalLibrary: aLibrary 
- 
  	self cmd: 'list'
  		params: 'APPEND LINKLIBS ' , aLibrary .
  		
  "	self cmd: 'target_link_libraries' 
  		params: self moduleName , ' ' , aLibrary.
  "	
  !

Item was changed:
  ----- Method: CMakeGenerator>>linkDirectories: (in category 'cmake commands') -----
  linkDirectories: aString
  	^ self cmd: 'link_directories' params: aString!

Item was changed:
  CMakeGenerator subclass: #CMakePluginGenerator
+ 	instanceVariableNames: 'plugin vmGen internal extraRules doNotGenerate externalDependencies'
- 	instanceVariableNames: 'plugin vmGen internal extraRules doNotGenerate'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMaker'!
  
  !CMakePluginGenerator commentStamp: 'Igor.Stasenko 12/25/2010 04:21' prior: 0!
  I am using for generating CMakeLists.txt (cmake config files) for specific plugin.
  The direct use of my instances is not recommended.
  Use CMakeVMGenerator and appropriate configuration to generate both VM and plugins cmake config files.!

Item was changed:
+ ----- Method: CMakePluginGenerator>>addCrossSources: (in category 'accessing') -----
- ----- Method: CMakePluginGenerator>>addCrossSources: (in category 'as yet unclassified') -----
  addCrossSources: sources
  
  	^ self addSources: sources prefixed: '${pluginCross}/'
  !

Item was added:
+ ----- Method: CMakePluginGenerator>>addExternalDependency: (in category 'accessing') -----
+ addExternalDependency: aString 
+ 	"We need to collect external dependencies to internal plugins because we need to force its 
+ 	resolve before, and if we just add teh dependency in executable some times is not enough. 
+ 	check StackIPhoneConfig>>#configureFT2Plugin: as an example"
+ 	externalDependencies := externalDependencies copyWith: aString.!

Item was changed:
+ ----- Method: CMakePluginGenerator>>addExternalLibrary: (in category 'cmake commands') -----
- ----- Method: CMakePluginGenerator>>addExternalLibrary: (in category 'as yet unclassified') -----
  addExternalLibrary: aLibrary 
+ 	self isInternal 
+ 		ifTrue: [ vmGen addExternalLibrary: aLibrary ]
+ 		ifFalse: [ super addExternalLibrary: aLibrary ].!
- 
- 	self isInternal ifTrue: [
- 		vmGen addExternalLibrary: aLibrary  
- 		]
- 	ifFalse: [ super addExternalLibrary: aLibrary ]
- !

Item was changed:
+ ----- Method: CMakePluginGenerator>>addPlatformSources: (in category 'accessing') -----
- ----- Method: CMakePluginGenerator>>addPlatformSources: (in category 'as yet unclassified') -----
  addPlatformSources: sources
  
  	^ self addSources: sources prefixed: '${pluginPlatform}/'
  !

Item was changed:
+ ----- Method: CMakePluginGenerator>>config (in category 'accessing') -----
- ----- Method: CMakePluginGenerator>>config (in category 'as yet unclassified') -----
  config
  	^ vmGen config!

Item was changed:
+ ----- Method: CMakePluginGenerator>>configurationName (in category 'accessing') -----
- ----- Method: CMakePluginGenerator>>configurationName (in category 'as yet unclassified') -----
  configurationName
  	^ vmGen configurationName!

Item was added:
+ ----- Method: CMakePluginGenerator>>externalDependencies (in category 'accessing') -----
+ externalDependencies
+ 	^ externalDependencies!

Item was changed:
+ ----- Method: CMakePluginGenerator>>generate:for:internal:extraRules: (in category 'code generation') -----
- ----- Method: CMakePluginGenerator>>generate:for:internal:extraRules: (in category 'as yet unclassified') -----
  generate: aPlugin for: aCMakeVMGenerator internal: aBoolean extraRules: aBlock
  
  	doNotGenerate := false.
  	internal := aBoolean.
  	plugin := aPlugin.
  	vmGen := aCMakeVMGenerator.
  	extraRules := aBlock.
  		
  	^ self generate!

Item was added:
+ ----- Method: CMakePluginGenerator>>initialize (in category 'initialization') -----
+ initialize 
+ 	super initialize.
+ 	externalDependencies := #().!

Item was changed:
+ ----- Method: CMakePluginGenerator>>saveFile (in category 'accessing') -----
- ----- Method: CMakePluginGenerator>>saveFile (in category 'as yet unclassified') -----
  saveFile
  	
  	| reference |
  	reference := ((vmGen config dirFrom: vmGen buildDir) / plugin moduleName) ensureDirectory; yourself.
  	(FileStream forceNewFileNamed: (reference / self outputFileName) fullName)
  		nextPutAll: (self config fixLineEndsOf: output contents);
  		close.!

Item was changed:
+ ----- Method: CMakeVMGenerator>>configurationName (in category 'accessing') -----
- ----- Method: CMakeVMGenerator>>configurationName (in category 'as yet unclassified') -----
  configurationName
  	^ config class name!

Item was changed:
  ----- Method: CMakeVMGenerator>>generate (in category 'code generation') -----
  generate
  	| intPlugins extPlugins |
  			
  	output := String new writeStream.
  	
  	config setGlobalOptions: self.
  	
  	self 
  		printHeader;
  		project: config executableName.
  
  	config setGlobalOptionsAfterDetermineSystem: self.
  
  	config setupDirectories: self.
  	
  	self message: '${CMAKE_MODULE_PATH}'.
  	self set: 'CMAKE_CONFIGURATION_TYPES' to: 'Release'.
  
  	config preferredIncludes 
  		do: [ :each | self includeDirectories: each ].
  	self includeDirectories: self includeDirs.	
  	config standardIncludes 
  		do: [:each | self includeDirectories: each ].
  
  	self addDefinitions: config compilerFlags.
  
  	config extraVMSettings: self.
  	
  	self puts: 'add_executable(' , config executableName, ' ', config executableType, ' ' , self sources , ')'.
  	
  	intPlugins := self generatePluginConfigs: config internalPlugins internal: true.
  	extPlugins := self generatePluginConfigs: config externalPlugins internal: false.
+ 
- 	
  	self processThirdpartyLibraries.
  	
  	self processPlugins:  intPlugins, extPlugins.
  
  	config setExtraTargetProperties: self.
  	
  	self cmd: 'target_link_libraries'
  		params: self moduleName , ' ${LINKLIBS}'.
  
  	config postBuildActions: self.
  	
  	self saveFile.
  	self generateBuildScript.!

Item was changed:
+ ----- Method: CMakeVMGenerator>>generatePlugin:internal:extraRules: (in category 'plugins') -----
- ----- Method: CMakeVMGenerator>>generatePlugin:internal:extraRules: (in category 'as yet unclassified') -----
  generatePlugin: aPlugin internal: aBoolean extraRules: aBlock
  	" this method called back from plugin"
  	^ CMakePluginGenerator new
  		generate: aPlugin for: self internal: aBoolean extraRules: aBlock!

Item was changed:
+ ----- Method: CMakeVMGenerator>>includeDirs (in category 'sources management') -----
- ----- Method: CMakeVMGenerator>>includeDirs (in category 'as yet unclassified') -----
  includeDirs
  
  	^ '${crossDir}/vm ${srcVMDir} ${targetPlatform}/vm ${buildDir}'.!

Item was changed:
  ----- Method: CMakeVMGenerator>>processPlugins: (in category 'processing plugins') -----
  processPlugins: pluginGenerators
+ 	| libs libDeps |
  
- 	| libs |
  	libs := OrderedCollection new.
+ 	libDeps := Dictionary new.
- 
  	pluginGenerators do: [:gen |
  		gen doNotGenerate ifFalse: [
+ 			gen isInternal 
+ 				ifTrue: [
+ 					libs add: gen plugin moduleName ]
+ 				ifFalse: [
+ 					"make main module to depend on external plugin, just to make sure it is built 
+ 					 before main module built"
+ 					self 
+ 						cmd: 'add_dependencies' 
+ 						params: config executableName, ' ' , gen plugin moduleName ].
+ 				gen externalDependencies 
+ 					ifNotEmpty: [ :deps |
+ 						libDeps 
+ 							at: gen plugin moduleName
+ 							put: (deps fold: [ :a :b | a, ' ', b ]) ].
+ 			self addSubdirectory: gen plugin moduleName ] ].
- 			gen isInternal ifTrue: [
- 				libs add:  gen plugin moduleName ]
- 			ifFalse: [
- 				"make main module to depend on external plugin, just to make sure it is built before main module built"
- 				self cmd: 'add_dependencies' params: config executableName, ' ' , gen plugin moduleName
- 				].
- 			self addSubdirectory:  gen plugin moduleName.
- 			 ].
- 		].
  
  	self cmd: 'target_link_libraries' params:  config executableName , ' ' ,
+ 		(libs inject: '' into: [:res :ea | res, ' ' , ea ]).
- 		(libs inject: '' into: [:res :ea | res, ' ' , ea ]) .
  
+ 	libDeps keysAndValuesDo: [ :moduleName :dependencies |
+ 		self 
+ 			cmd: 'add_dependencies' 
+ 			params: moduleName, ' ', dependencies ].  
+ 
+ 	self generateExportsH: libs.!
- 	self generateExportsH: libs.
- !

Item was changed:
+ ----- Method: CMakeVMGenerator>>saveFile (in category 'accessing') -----
- ----- Method: CMakeVMGenerator>>saveFile (in category 'as yet unclassified') -----
  saveFile
  	
  	config write: output contents toFile: (self outputFileName).
  	!

Item was changed:
  Object subclass: #CPlatformConfig
+ 	instanceVariableNames: 'topDir buildDir srcDir platformsDir outputDir internalPlugins externalPlugins pluginsDir externalLibs thirdpartyLibs generateForRelease'
- 	instanceVariableNames: 'topDir buildDir srcDir platformsDir outputDir internalPlugins externalPlugins pluginsDir externalLibs thirdpartyLibs'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMaker'!
  
  !CPlatformConfig commentStamp: 'tty 4/23/2014 16:30' prior: 0!
  Base class, defining some common properties and behavior for all kinds of VM build configurations. These classes are used to generate the VM sources and the CMMake files. 
  
  Notice that this configuration classes expect that you have download the "platofroms code" which is hosted here:
   https://github.com/pharo-project/pharo-vm.
  
  You can clone it using this command:  git clone https://github.com/pharo-project/pharo-vm
  
  Once that is done it should have created a directory /blessed. In order to get all the directories by default, place this image under /blessed/image 
  
  To generate a sources/build configuration use one of my subclasses with:
  <config> generate.   - to generate a build configuration
  <config> generateWithSources - to generate VMMaker sources and then build configuration.
  
  Once you do that, go to /blessed/build and execute:  cmake .    or cmake -G"MSYS Makefiles" if you are in Windows 
  
  Since some plugins require extra settings (like additional source files etc), there is two ways to add that:
  
  - add custom rules on plugin class side:
  
  PluginClass>>generateFor: aCMakeVMGenerator internal: aBoolean 
  
  	^ aCMakeVMGenerator 
  		generatePlugin: self 
  		internal: aBoolean
  		extraRules: [:maker |   ... your rules come here ... ]
  		
  - define rules by adding #configure<PluginClass>: method in config class (see my 'plugin extra rules' category)
  
  The last one is more compact and also avoids inter-package dependency, so you can load and use
  CMakeVMMaker even if some 3rd-party plugins are not loaded into image.
  
  
  Links of interest:
  
  Official Cog Website: http://www.mirandabanda.org/cog
  Official Cog Blog: http://www.mirandabanda.org/cogblog
  Cog issue tracker: http://code.google.com/p/cog
  Cog Wiki: http://code.google.com/p/cog/w/list
  Cog binaries: http://www.mirandabanda.org/files/Cog/VM
  Cog binaries in Pharo Hudson server: https://pharo-ic.lille.inria.fr/hudson/view/Cog
  Cog SVN branch: http://squeakvm.org/svn/squeak/branches/Cog
  VM mailing list: http://lists.squeakfoundation.org/mailman/listinfo/vm-dev
  VM-beginners mailing list: http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
  Guide step by step about how to build the Cog VM using CMakeVMMaker and Git: http://code.google.com/p/cog/wiki/Guide
  
  
  
  !

Item was added:
+ ----- Method: CPlatformConfig>>addThirdpartyLibraries: (in category 'thirdparty libs') -----
+ addThirdpartyLibraries: aCollection 
+ 	aCollection do: [ :each | self addThirdpartyLibrary: each ]!

Item was changed:
  ----- Method: CPlatformConfig>>addThirdpartyLibrary: (in category 'thirdparty libs') -----
  addThirdpartyLibrary: libName
  	| libs lib |
  	
  	libs := self thirdpartyLibs.
  	
  	lib :=  libs 
  		detect: [:each | each canonicalName = libName ] 
  		ifNone: [ nil ].
  		
  	lib ifNil: [ 
+ 		lib := CMThirdpartyLibrary named: libName config: self.
+ 		"add dependencies first, so thirpartyLibs collection will be naturally dependency sorted"
+ 		lib dependencies do: [:dep | self addThirdpartyLibrary: dep ].
+ 		libs add: lib ].
- 		lib := (CMThirdpartyLibrary named: libName config: self).
- 			"add dependencies first, so thirpartyLibs collection will be naturally dependency sorted"
- 			lib dependencies do: [:dep | self addThirdpartyLibrary: dep ].
- 			libs add: lib ].
  
  	^ lib!

Item was changed:
  ----- Method: CPlatformConfig>>buildScript (in category 'build script') -----
  buildScript
  	"answer the build script for building everything"
  	
  
  	^ 
+ '#!!/usr/bin/env bash
- '#!!bash
  
  cmake .
  make
  
  '!

Item was added:
+ ----- Method: CPlatformConfig>>commonCompilerFlags (in category 'compiler flags') -----
+ commonCompilerFlags
+ 	^ #()!

Item was added:
+ ----- Method: CPlatformConfig>>compilerFlags (in category 'compiler flags') -----
+ compilerFlags 
+ 	| releaseFlags |
+ 	
+ 	releaseFlags := self isGenerateForRelease 
+ 		ifTrue: [ self compilerFlagsRelease ]
+ 		ifFalse: [ self compilerFlagsDebug ].
+ 		
+ 	^ String streamContents: [ :stream |
+ 		((self commonCompilerFlags, releaseFlags) collect: #trimBoth as: Set)
+ 			asStringOn: stream 
+ 			delimiter: ' ' ]!

Item was added:
+ ----- Method: CPlatformConfig>>compilerFlagsDebug (in category 'compiler flags') -----
+ compilerFlagsDebug
+ 	^ #()!

Item was added:
+ ----- Method: CPlatformConfig>>compilerFlagsRelease (in category 'compiler flags') -----
+ compilerFlagsRelease
+ 	^ #()!

Item was added:
+ ----- Method: CPlatformConfig>>generateForDebug (in category 'accessing') -----
+ generateForDebug
+ 	generateForRelease := false!

Item was added:
+ ----- Method: CPlatformConfig>>generateForRelease (in category 'accessing') -----
+ generateForRelease
+ 	generateForRelease := true!

Item was added:
+ ----- Method: CPlatformConfig>>initialize (in category 'initialize-release') -----
+ initialize 
+ 	super initialize.
+ 	generateForRelease := true.!

Item was added:
+ ----- Method: CPlatformConfig>>isGenerateForRelease (in category 'testing') -----
+ isGenerateForRelease 
+ 	^generateForRelease!

Item was changed:
  MacOSConfig subclass: #CocoaIOSConfig
+ 	instanceVariableNames: ''
- 	instanceVariableNames: 'generateForRelease'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMaker-IOS'!
  
  !CocoaIOSConfig commentStamp: 'MarianoMartinezPeck 4/24/2011 15:34' prior: 0!
  This is an abstract class for all Mac Cocoa configurations. It is intended to share code between different concrete implementations. 
  
  Fore more information, check the class comments of all the superclasses.
  !

Item was removed:
- ----- Method: CocoaIOSConfig>>compilerFlags (in category 'accessing') -----
- compilerFlags 
- 	| releaseFlags |
- 	
- 	releaseFlags := self isGenerateForRelease 
- 		ifTrue: [ self compilerFlagsRelease ]
- 		ifFalse: [ self compilerFlagsDebug ].
- 		
- 	^String streamContents: [ :stream |
- 		(self commonCompilerFlags, releaseFlags) asSet
- 			do: [ :each | stream nextPutAll: each ]
- 			separatedBy: [ stream space ] ]!

Item was changed:
  ----- Method: CocoaIOSConfig>>compilerFlagsRelease (in category 'accessing') -----
  compilerFlagsRelease 
  	^#(
  	"'-fobjc-direct-dispatch'" 
  	'-msse3'
  	"'-msse4.1'"
  	"'-msse4.2'"
  	"'-mdynamic-no-pic'" 
  	"'-fwritable-strings'" 
  	'-Os' 
+ 	'-fvisibility=default'
- 	'-fvisibility=hidden'
  	'-funroll-loops' 
  	"'-fno-asm'" 
  	'-fasm-blocks' 
  	'-finline-functions' 
  	'-mfpmath=sse' 
  	'-fomit-frame-pointer' 
  	'-march=pentium-m' 
  	'-mtune=prescott' 
  	'-falign-functions=16'  
  	'-fno-gcse' 
- 	'-fno-cse-follow-jumps' 
  	'-std=gnu99' 
  	'-DBUILD_FOR_OSX' 
  	"'-DUSE_INLINE_MEMORY_ACCESSORS'" 
  	'-DLSB_FIRST' 
  	'-DUSE_INLINE_MEMORY_ACCESSORS' 
  	'-DHAVE_SYS_TIME_H' 
  	'-DHAVE_NANOSLEEP' 
  	'-DICC_DEBUG=0'
  	'-DICC_OPTLEVEL="speedHLO"' 
  	'-DICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION=1' 
  	'-DICC_OPT_PARALLEL=0' 
  	'-DICC_OPT_PREFETCH_INSERTION=1' 
  	'-DICC_OPT_PROVIDE_FRAME_PTR=0' 
  	'-DICC_OPT_USE_ARCH_IA32="SSE42"')!

Item was added:
+ ----- Method: CocoaIOSConfig>>configureMIDIPlugin: (in category 'plugin extra rules') -----
+ configureMIDIPlugin: maker 
+ 	"extra rules for MIDIPlugin"
+ 
+ 	maker addPlatformSources: #( 'sqMacMIDI.m')!

Item was changed:
  ----- Method: CocoaIOSConfig>>frameworks (in category 'accessing') -----
  frameworks
  	^ #(
  	Cocoa
  	Foundation
  	AudioToolbox
  	CoreAudio
  	SystemConfiguration
  	ApplicationServices
  	QuartzCore
  	OpenGL
+ 	AGL
+ 	QuickTime)!
- 	AGL)!

Item was removed:
- ----- Method: CocoaIOSConfig>>generateForDebug (in category 'accessing') -----
- generateForDebug
- 	generateForRelease := false!

Item was removed:
- ----- Method: CocoaIOSConfig>>generateForRelease (in category 'accessing') -----
- generateForRelease
- 	generateForRelease := true!

Item was removed:
- ----- Method: CocoaIOSConfig>>initialize (in category 'initialization') -----
- initialize 
- 	super initialize.
- 	self generateForRelease!

Item was removed:
- ----- Method: CocoaIOSConfig>>isGenerateForRelease (in category 'testing') -----
- isGenerateForRelease 
- 	^generateForRelease!

Item was changed:
  ----- Method: CocoaIOSConfig>>setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  	| plist precompiledHeaders |
  
  	" generated and add Info.plist file "
  	plist := self plistFile.	
  
  	(maker buildDir forceNewFileNamed: 'Info.plist') 
  		nextPutAll: plist; 
  		close.
  
  	maker 
  		addProperty: 'MACOSX_BUNDLE_INFO_PLIST' 
  		value: '${buildDir}/Info.plist'.  
  
  	maker 
  		cmd: 'set_source_files_properties' 
  		params: '${resources} PROPERTIES MACOSX_PACKAGE_LOCATION Resources'.
  			
  	precompiledHeaders := (self executableName, '_Prefix.pch').
  	(maker buildDir forceNewFileNamed: precompiledHeaders) 
  		nextPutAll: self precompiledHeaders;
  		close.
  
  	maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', precompiledHeaders.	
  
  	"maker 
  		addXCodeProperty: 'GCC_ENABLE_SSE3_EXTENSIONS' value: 'YES';  
  		addXCodeProperty: 'GCC_ENABLE_SSE41_EXTENSIONS' value: 'YES';
  		addXCodeProperty: 'GCC_ENABLE_SSE42_EXTENSIONS' value: 'YES';
  		addXCodeProperty: 'GCC_GENERATE_DEBUGGING_SYMBOLS' value: 'NO';  
  		addXCodeProperty: 'GCC_INLINES_ARE_PRIVATE_EXTERN' value: 'YES';
  		addXCodeProperty: 'GCC_UNROLL_LOOPS' value: 'YES'.	"
  	
  	"Extras"
  	maker 
  		addXCodeProperty: 'ICC_DEBUG' value: 'NO';
  		addXCodeProperty: 'ICC_OPTLEVEL' value: 'speedHLO';
  		addXCodeProperty: 'ICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION' value: 'YES';
  		addXCodeProperty: 'ICC_OPT_PARALLEL' value: 'NO';
  		addXCodeProperty: 'ICC_OPT_PREFETCH_INSERTION' value: 'YES';
  		addXCodeProperty: 'ICC_OPT_PROVIDE_FRAME_PTR' value: 'NO';
  		addXCodeProperty: 'ICC_OPT_USE_ARCH_IA32' value: 'SSE41';
+ 		addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-finline-functions -mfpmath=sse -march=pentium-m -mtune=prescott -falign-functions=16  -fno-gcse -DLSB_FIRST';
- 		addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-finline-functions -mfpmath=sse -march=pentium-m -mtune=prescott -falign-functions=16  -fno-gcse -fno-cse-follow-jumps  -DLSB_FIRST';
  		addXCodeProperty: 'PER_ARCH_CFLAGS_ppc' value: '-fast -mtune=7450 -mcpu=7450 -D_BSD_SOCKLEN_T_=int'!

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig>>commonCompilerFlags (in category 'settings') -----
  commonCompilerFlags
+ 	^super commonCompilerFlags,  #(
+ 	"CLANG >>"
+ 	'-fwrapv' "Non optimization of stackoverflow (to allow number conversions)"
+ 	'-Wno-return-type' "to avoid clang to complain about plugins that do not return properly."	
+ 	'-Qunused-arguments'
+ 	"CLANG <<"
- 	^super commonCompilerFlags, 
- 		#(
  	'-funroll-loops' 
  	'-fasm-blocks' 
  	'-fno-inline-functions' 
  	'-mfpmath=sse' 
  	'-march=pentium-m' 
  	'-mtune=prescott' 
  	'-falign-functions=16' 
  	'-fno-gcse' 
- 	'-fno-cse-follow-jumps' 
  	'-std=gnu99'
  	'-fmessage-length=0' 
  	'-fpascal-strings' 
  	'-DBUILD_FOR_OSX' 
  	"'-DUSE_INLINE_MEMORY_ACCESSORS=1' "
  	'-DLSB_FIRST' 
  	'-DHAVE_SYS_TIME_H' 
  	'-DHAVE_NANOSLEEP' 
  	'-DCOGMTVM=0' 
  	'-DUSE_GLOBAL_STRUCT=0' 
  	'-DBASE_HEADER_SIZE=4'
  	'-DENABLE_FAST_BLT')!

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig>>defaultExternalPlugins (in category 'plugins') -----
  defaultExternalPlugins 
  	^(self versionExternalPlugins),
  		#(
  		UUIDPlugin
  		FloatMathPlugin
  		AsynchFilePlugin
- 		SerialPlugin
  		Mpeg3Plugin
  		CroquetPlugin
  		JoystickTabletPlugin
- 		MIDIPlugin
  		B3DAcceleratorPlugin
  		JPEGReadWriter2Plugin 
  		JPEGReaderPlugin
  		RePlugin
  		LocalePlugin
  		ObjectiveCPlugin
  		QuicktimePlugin
  		TestOSAPlugin
  		SqueakSSLPlugin
+ 		SerialPlugin
+ 		MIDIPlugin
- 		"UnixOSProcessPlugin"
  	)!

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig>>defaultInternalPlugins (in category 'plugins') -----
  defaultInternalPlugins
  	^ #(
  		ADPCMCodecPlugin
  		BMPReadWriterPlugin 
  		BalloonEnginePlugin 
  		BitBltSimulation 
  		ClipboardExtendedPlugin
  		DSAPlugin 
  		DeflatePlugin 
  		DropPlugin 
  		FFTPlugin 
  		FilePlugin 
  		FloatArrayPlugin 
  		GeniePlugin 
  		HostWindowPlugin 
  		"JPEGReadWriter2Plugin 
  		JPEGReaderPlugin" 
+ 		KlattSynthesizerPlugin
- 		KlattSynthesizerPlugin 
  		LargeIntegersPlugin 
- 		"MacMenubarPlugin" "This plugin is not yet ported"
  		Matrix2x3Plugin 
  		MiscPrimitivePlugin 
  		"RePlugin" 
  		SecurityPlugin 
  		SocketPlugin 
  		SoundCodecPlugin 
  		SoundGenerationPlugin 
  		SoundPlugin
  		StarSqueakPlugin 
  		SurfacePlugin 
  		UnixAioPlugin
  		UnixOSProcessPlugin
  		)!

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig>>setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  	| plist |
  
  	maker addFrameworks: self frameworks.
  
  	" generated and add Info.plist file "
  	plist := self plistFile.
  
  	(FileStream forceNewFileNamed: (maker buildDir / 'Info.plist') fullName) 
  		nextPutAll: plist; 
  		close.
  
  	maker 
  		addProperty: 'MACOSX_BUNDLE_INFO_PLIST' 
  		value: '${buildDir}/Info.plist'.  
  
  	(FileStream forceNewFileNamed: (maker buildDir / self prefixHeaderFileName) fullName )
  		nextPutAll: self precompiledHeaders;
  		close.
  	maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', self prefixHeaderFileName.
  
  	maker 
+ 		addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-DLSB_FIRST -mfpmath=sse -finline-functions  -fno-gcse -mtune=prescott -march=pentium-m -falign-functions=16'.
- 		addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-DLSB_FIRST -mfpmath=sse -finline-functions  -fno-cse-follow-jumps -fno-gcse -mtune=prescott -march=pentium-m -falign-functions=16'.
  		
  	"maker 
  		addXCodeProperty: 'GCC_VERSION' value: '4.3'."
  
  	maker 
  		cmd: 'set_target_properties' 
  		params: self executableName, ' PROPERTIES COMPILE_FLAGS "-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'. 
  		
  "	maker set: 'CMAKE_C_COMPILER' to: '/usr/bin/gcc-4.2'.
  	maker set: 'CMAKE_CXX_COMPILER' to: '/usr/bin/g++-4.2'.		
  "
  	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
  	maker set: 'RUNTIME_OUTPUT_DIRECTORY' toString: self outputDir fullName.!

Item was changed:
  ----- Method: CogFamilyUnixConfig>>buildScript (in category 'build script') -----
  buildScript
  	"answer the build script for building everything"
  	
  
  	^ 
+ '#!!/usr/bin/env bash
- '#!!bash
  
  if [ !! -e vmVersionInfo.h ]; then
+ 	../scripts/extract-commit-info.sh
- 	../codegen-scripts/extract-commit-info.sh
  fi
  cmake .
  make
  
  '!

Item was removed:
- ----- Method: CogFamilyUnixConfig>>compilerFlags (in category 'compiler flags') -----
- compilerFlags
- 	^ self subclassResponsibility!

Item was changed:
  ----- Method: CogFamilyUnixConfig>>configureSoundPlugin: (in category 'plugin extra rules') -----
  configureSoundPlugin: maker 
  	"extra rules for SoundPlugin"
  	
+ 	maker addPlatformSources: #( 'sqUnixSound').
+ 	maker addExternalLibraries: #( 'asound' )!
- 	maker addPlatformSources: #( 'sqUnixSound')!

Item was added:
+ ----- Method: CogFamilyUnixConfig>>externalModulesDir (in category 'accessing') -----
+ externalModulesDir
+ 	"answer the location in VM bundle, where plugins and rest of dynamic libs will be copied,
+ 	"
+ 	^ '${outputDir}'!

Item was added:
+ ----- Method: CogFamilyUnixConfig>>setupDirectories: (in category 'utils') -----
+ setupDirectories: gen
+ 	super setupDirectories: gen.
+ 	gen set: #externalModulesDir toString: self externalModulesDir.!

Item was changed:
  ----- Method: CogFamilyWindowsConfig>>buildScript (in category 'build script') -----
  buildScript
  	"answer the build script for building everything"
  	
  
  	^ 
+ '#!!/usr/bin/env bash
- '#!!bash
  
  if [ !! -e vmVersionInfo.h ]; then
+ 	../scripts/extract-commit-info.sh
- 	../codegen-scripts/extract-commit-info.sh
  fi
  cmake -G "MSYS Makefiles" .
  make
  
  '!

Item was changed:
  ----- Method: CogFamilyWindowsConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  	"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'.
+ 		'-D_MT'.
+ 		'-msse2'. 
+ 		'-mthreads'. 
+ 		'-mwin32'.
+ 		'-mno-rtd'. 
+ 		'-mms-bitfields'. 
+ 		'-mno-accumulate-outgoing-args ', self winVer.
+ 		'-DWIN32'. 
+ 		'-DWIN32_FILE_SUPPORT'. 
+ 		'-DNO_ISNAN'.
+ 		'-DNO_SERVICE'. 
+ 		'-DNO_STD_FILE_SUPPORT'.
+ 		'-DLSB_FIRST'. 
+ 		'-DVM_NAME="', self executableName,'"'.
+ 		'-DX86 '.
+ 		'-DSTACK_ALIGN_BYTES=16'. 
+ 		'-DALLOCA_LIES_SO_USE_GETSP=0'. 
+ 		'-DENABLE_FAST_BLT ' }!
- 	^ '-march=pentium4 -mwindows -D_MT -msse2 -mthreads -mwin32 -mno-rtd -mms-bitfields -mno-accumulate-outgoing-args ', self winVer ,
- 	' -DWIN32 -DWIN32_FILE_SUPPORT -DNO_ISNAN -DNO_SERVICE -DNO_STD_FILE_SUPPORT ',
- 	'-DLSB_FIRST -DVM_NAME="', self executableName,'" -DX86 ',
- 	'-DSTACK_ALIGN_BYTES=16 -DALLOCA_LIES_SO_USE_GETSP=0 -DENABLE_FAST_BLT '!

Item was added:
+ ----- Method: CogFamilyWindowsConfig>>configureSoundPlugin: (in category 'plugin extra rules') -----
+ configureSoundPlugin: maker 
+ 	"extra rules for SoundPlugin"
+ 	
+ 	maker addPlatformSources: #( 'sqWin32Sound' )!

Item was changed:
  ----- Method: CogFreeBSDConfig>>compilerFlagsDebug (in category 'as yet unclassified') -----
  compilerFlagsDebug
  
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-msse2'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=1'. 
+ 		'-DNOEXECINFO' }!
- 	^ '-g3 -O0 -msse2 -DITIMER_HEARTBEAT=1 
- 	-DNO_VM_PROFILE=1 -DDEBUGVM=1 -DNOEXECINFO'!

Item was changed:
  ----- Method: CogFreeBSDConfig>>compilerFlagsRelease (in category 'as yet unclassified') -----
  compilerFlagsRelease
  
+ 	^ {
+ 		'-g0'. 
+ 		'-O2'. 
+ 		'-msse2'. 
+ 		'-DNDEBUG'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=0'. 
+ 		'-DNOEXECINFO' }
- 	^ '-g0 -O2 -msse2  -DNDEBUG -DITIMER_HEARTBEAT=1 
- 	-DNO_VM_PROFILE=1 -DDEBUGVM=0 -DNOEXECINFO'
  !

Item was added:
+ Object subclass: #CogMTBuilder
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMaker-Builder'!

Item was added:
+ ----- Method: CogMTBuilder class>>build (in category 'building') -----
+ build
+ " self build "
+ 	"build for platform we're currently running on"
+ 	| platform |
+ 	
+ 	platform := Smalltalk os platformName.
+ 	
+ 	platform = 'Win32' ifTrue:  [ ^ self buildWin32 ].
+ 	platform = 'Mac OS' ifTrue:  [ ^ self buildMacOSX32 ].
+ 	platform  = 'unix' ifTrue: [ ^ self buildUnix32 ].!

Item was added:
+ ----- Method: CogMTBuilder class>>buildMacOSX32 (in category 'building') -----
+ buildMacOSX32
+ 	^ self new buildMacOSX32!

Item was added:
+ ----- Method: CogMTBuilder class>>buildOnJenkins: (in category 'building') -----
+ buildOnJenkins: aPlatformName
+ 	"entry point for jenkins build jobs.
+ 	currently we use following names:
+ 		win
+ 		mac
+ 		linux
+ 	
+ 	"
+ 	
+ 	aPlatformName = 'win' ifTrue: [ ^ self buildWin32 ].
+ 	aPlatformName = 'mac' ifTrue: [ ^ self buildMacOSX32 ].
+ 	aPlatformName = 'linux' ifTrue: [ ^ self buildUnix32 ].
+ 	
+ 	self error: 'no suitable platform'!

Item was added:
+ ----- Method: CogMTBuilder class>>buildUnix32 (in category 'building') -----
+ buildUnix32
+ 	^ self new buildUnix32!

Item was added:
+ ----- Method: CogMTBuilder class>>buildWin32 (in category 'building') -----
+ buildWin32
+ 	^ self new buildWin32!

Item was added:
+ ----- Method: CogMTBuilder>>buildMacOSX32 (in category 'building') -----
+ buildMacOSX32 
+ 
+ 	CogMTCocoaIOSConfig new  
+ 		generateForRelease;
+ 		"generateForDebug;"
+ 		addExternalPlugins: #(  FT2Plugin );
+ 		addInternalPlugins: #( UnixOSProcessPlugin );
+ 		generateSources; generate.
+ !

Item was added:
+ ----- Method: CogMTBuilder>>buildUnix32 (in category 'building') -----
+ buildUnix32
+ 	
+ 	CogMTUnixConfig new
+ 		addExternalPlugins: #( FT2Plugin SqueakSSLPlugin );
+ 		addInternalPlugins: #( UnixOSProcessPlugin  );
+ 		generateSources; generate.
+ !

Item was added:
+ ----- Method: CogMTBuilder>>buildWin32 (in category 'building') -----
+ buildWin32
+ 
+ 	CogMTWindowsConfig new  
+ 
+ 		addExternalPlugins: #(  FT2Plugin SqueakSSLPlugin );
+ 		addInternalPlugins: #( Win32OSProcessPlugin );
+ 		
+ 		generateSources; generate.
+ !

Item was added:
+ ----- Method: CogMTBuilder>>initialize (in category 'initialization') -----
+ initialize
+ 
+ 	"a stupid temporary hack to workaround initialization problems"
+ 
+ 	Cogit allSubclassesDo: [ :each | each initializeWithOptions: (VMMaker new instVarNamed: 'optionsDictionary') ]!

Item was changed:
  ----- Method: CogMTFreeBSDConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  
  	"Common compiler flags
  	
  	
  	LSB_FIRST=1 means that target platform is little endian. 
  	set it to 0 for big-endian platforms
  	
  	"
  	
+ 	^ {
+ 		'-DLSB_FIRST=1'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DCOGMTVM=1' }!
- 	^ ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=1'	
- 	!

Item was changed:
  ----- Method: CogMTMacOSConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  
  	"Common compiler flags"
  	
+ 	^ { 
+ 		'-fmessage-length=0'.
+ 		'-Wno-trigraphs'. 
+ 		'-fpascal-strings'. 
+ 		'-fasm-blocks'. 
+ 		'-DCOGMTVM=1'.
+ 		'-DUSE_GLOBAL_STRUCT=0'.
+ 		'-DTARGET_API_MAC_CARBON'.
+ 		'-DHAVE_SYS_TIME_H'.
+ 		'-mmacosx-version-min=10.5' }!
- 	^ ' -fmessage-length=0 -Wno-trigraphs -fpascal-strings -fasm-blocks -DCOGMTVM=1 -DUSE_GLOBAL_STRUCT=0 -DTARGET_API_MAC_CARBON -DHAVE_SYS_TIME_H -mmacosx-version-min=10.5'	
- 	!

Item was changed:
  ----- Method: CogMTUnixConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  
  	"Common compiler flags
  	
  	
  	LSB_FIRST=1 means that target platform is little endian. 
  	set it to 0 for big-endian platforms
  	
  	"
  	
+ 	^ {
+ 		'-DLSB_FIRST=1'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DCOGMTVM=1'. 
+ 		'-m32' }!
- 	^ ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=1 -m32' 	
- 	!

Item was changed:
  ----- Method: CogMacOSConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  
  	"Common compiler flags"
  	
+ 	^ { 
+ 		'-fmessage-length=0'. 
+ 		'-Wno-trigraphs'. 
+ 		'-fpascal-strings'. 
+ 		'-fasm-blocks'. 
+ 		'-DCOGMTVM=0'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DTARGET_API_MAC_CARBON'. 
+ 		'-DBUILD_FOR_OSX'. 
+ 		'-DHAVE_SYS_TIME_H'. 
+ 		'-mmacosx-version-min=10.5' }	
+ !
- 	^ ' -fmessage-length=0 -Wno-trigraphs -fpascal-strings -fasm-blocks -DCOGMTVM=0 -DUSE_GLOBAL_STRUCT=0 -DTARGET_API_MAC_CARBON -DBUILD_FOR_OSX -DHAVE_SYS_TIME_H -mmacosx-version-min=10.5'	
- 	
- "	^ '-arch i386 -fmessage-length=0 -Wno-trigraphs -fpascal-strings -fasm-blocks -DCOGMTVM=0 -DUSE_GLOBAL_STRUCT=0 -DTARGET_API_MAC_CARBON -DHAVE_SYS_TIME_H -mmacosx-version-min=10.5'"!

Item was removed:
- ----- Method: CogMacOSConfig>>compilerFlags (in category 'compiler flags') -----
- compilerFlags
- 	"depends on config ..."
- 	^ self compilerFlagsRelease!

Item was changed:
  ----- Method: CogMacOSConfig>>compilerFlagsDebug (in category 'compiler flags') -----
  compilerFlagsDebug
  
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-Wmissing-prototypes'. 
+ 		'-Wmissing-braces'. 
+ 		'-Wparentheses'. 
+ 		'-Wunused-function'. 
+ 		'-Wunused-label'. 
+ 		'-Wunused-parameter'. 
+ 		'-Wunused-variable'. 
+ 		'-Wunused-value'. 
+ 		'-Wsign-compare'. 
+ 		'-DDEBUGVM=1'. 
+ 		'-DEXTERNALPRIMSDEBUG=1'. 
+ 		'-gdwarf-2' }!
- 	^ self commonCompilerFlags , ' -g3 -O0 -Wmissing-prototypes -Wmissing-braces -Wparentheses -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable -Wunused-value -Wsign-compare -DDEBUGVM=1 -DEXTERNALPRIMSDEBUG=1 -gdwarf-2 '!

Item was changed:
  ----- Method: CogMacOSConfig>>compilerFlagsRelease (in category 'compiler flags') -----
  compilerFlagsRelease
  " -mdynamic-no-pic "
+ 	^ {
+ 		'-gdwarf-2'. 
+ 		'-O3'. 
+ 		'-funroll-loops'. 
+ 		'-ftree-vectorize'. 
+ 		'-msse3'. 
+ 		'-DDEBUGVM=0'. 
+ 		'-DNDEBUG'. 
+ 		'-Wunused-value'. 
+ 		'-Wuninitialized'. 
+ 		'-falign-functions=16'. 
+ 		'-fno-gcse'. 
+ 		'-mtune=prescott'. 
+ 		'-march=pentium-m'. 
+ 		'-mfpmath=sse'. 
+ 		'-finline-functions'. 
+ 		'-Wall'. 
+ 		'-DUSE_INLINE_MEMORY_ACCESSORS' }!
- 	^ self commonCompilerFlags , ' -gdwarf-2 -O3 -funroll-loops -ftree-vectorize -msse3 -DDEBUGVM=0 -DNDEBUG -Wunused-value -Wuninitialized -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium-m -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS'!

Item was changed:
  ----- Method: CogMacOSDebugConfig>>compilerFlags (in category 'compiler flags') -----
  compilerFlags
+     ^ String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 
-     ^  self compilerFlagsDebug!

Item was changed:
  ----- Method: CogOnDebian64Config>>commonCompilerFlags (in category 'accessing') -----
  commonCompilerFlags 
+ 	^ super commonCompilerFlags , { '-L/usr/lib32' }!
- 	^ super commonCompilerFlags , ' -L/usr/lib32'!

Item was changed:
  ----- Method: CogUnixConfig>>commonCompilerFlags (in category 'compiler flags') -----
  commonCompilerFlags
  
  	"Common compiler flags
  	
  	
  	LSB_FIRST=1 means that target platform is little endian. 
  	set it to 0 for big-endian platforms
  	
  	"
  	
+ 	^ {
+ 		'-DLSB_FIRST=1'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DCOGMTVM=0'. 
+ 		'-m32'.
+ 		'-DENABLE_FAST_BLT ' } 	
- 	^ ' -DLSB_FIRST=1 -DUSE_GLOBAL_STRUCT=0 -DCOGMTVM=0 -m32 -DENABLE_FAST_BLT ' 	
  	!

Item was removed:
- ----- Method: CogUnixConfig>>compilerFlags (in category 'compiler flags') -----
- compilerFlags
- 	"depends on config ..."
- 	^ self commonCompilerFlags, ' ' ,self compilerFlagsRelease!

Item was changed:
  ----- Method: CogUnixConfig>>compilerFlagsDebug (in category 'compiler flags') -----
  compilerFlagsDebug
  
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-msse2'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=1' }!
- 	^ '-g3 -O0 -msse2 -D_GNU_SOURCE -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=1'
- 
- !

Item was changed:
  ----- Method: CogUnixConfig>>compilerFlagsRelease (in category 'compiler flags') -----
  compilerFlagsRelease
  "
  THIS FLAGS ARE CRASHING COMPILER 
  -fschedule-insns2 
  -fschedule-insns 
  
  THIS FLAGS ARE CRASHING VM
  -ftree-pre  
  -fcaller-saves 
  
  THIS FLAGS ARE WORKING 
  -O1 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -frerun-cse-after-loop -freorder-functions  -fsched-interblock -fsched-spec -fstrict-aliasing -fstrict-overflow  -ftree-switch-conversion -ftree-vrp
  
  THIS IS LIKE: -O2 -fno-tree-pre -fno-caller-saves 
  
  "
  
+ 	^ {
+ 		'-g0'. 
+ 		'-O2'. 
+ 		'-fno-tree-pre'. 
+ 		'-fno-caller-saves'. 
+ 		'-msse2'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DNDEBUG'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=0' }!
- 	^ '-g0 -O2 -fno-tree-pre -fno-caller-saves -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0'!

Item was changed:
  ----- Method: CogUnixDebugConfig>>compilerFlags (in category 'as yet unclassified') -----
  compilerFlags
+ 	^  String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 
- 	^  self commonCompilerFlags, ' ' ,self compilerFlagsDebug!

Item was removed:
- ----- Method: CogWindowsConfig>>compilerFlags (in category 'compiler flags') -----
- compilerFlags
- 	"depends on config ..."
- 	^ self commonCompilerFlags, ' ' , self compilerFlagsRelease!

Item was changed:
  ----- Method: CogWindowsConfig>>compilerFlagsDebug (in category 'plugins') -----
  compilerFlagsDebug
  	"Define NDEBUG for production to exclude asserts "
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-march=pentium4'. 
+ 		'-momit-leaf-frame-pointer'. 
+ 		'-maccumulate-outgoing-args'. 
+ 		'-funroll-loops'. 
+ 		'-DDEBUGVM=1' }!
- 	^ '-g3 -O0 -march=pentium4 -momit-leaf-frame-pointer -maccumulate-outgoing-args -funroll-loops  -DDEBUGVM=1'!

Item was changed:
  ----- Method: CogWindowsConfig>>compilerFlagsRelease (in category 'compiler flags') -----
  compilerFlagsRelease
  	"Define NDEBUG for production to exclude asserts "
+ 	^ {
+ 		'-g0'. 
+ 		'-O2'. 
+ 		'-march=pentium4'. 
+ 		'-momit-leaf-frame-pointer'. 
+ 		'-maccumulate-outgoing-args'. 
+ 		'-funroll-loops'.
+ 		'-DNDEBUG -DDEBUGVM=0'}!
- 	^ '-g0 -O2 -march=pentium4 -momit-leaf-frame-pointer -maccumulate-outgoing-args -funroll-loops ',
- 	'-DNDEBUG -DDEBUGVM=0'!

Item was changed:
  ----- Method: CogWindowsConfig>>defaultInternalPlugins (in category 'plugins') -----
  defaultInternalPlugins
  
  	^ #(
  	
  ADPCMCodecPlugin 
  AsynchFilePlugin
  B3DAcceleratorPlugin 
  BalloonEnginePlugin "B2DPlugin" 
  BitBltSimulation "BitBltPlugin"
  BMPReadWriterPlugin 
  CroquetPlugin 
  DeflatePlugin  "ZipPlugin"
  DropPlugin 
  DSAPlugin "DSAPrims" 
  FFTPlugin 
  FilePlugin 
  FloatArrayPlugin 
  FloatMathPlugin 
  HostWindowPlugin 
  IA32ABIPlugin "IA32ABI"
  JoystickTabletPlugin 
  JPEGReaderPlugin 
  JPEGReadWriter2Plugin 
  KlattSynthesizerPlugin "Klatt"
  LargeIntegersPlugin "LargeIntegers"
  LocalePlugin 
  Matrix2x3Plugin 
  MIDIPlugin 
  MiscPrimitivePlugin 
  Mpeg3Plugin 
  RePlugin 
  SecurityPlugin 
  SerialPlugin 
  SocketPlugin 
  SoundCodecPlugin "SoundCodecPrims"
  SoundGenerationPlugin 
+ SoundPlugin
  StarSqueakPlugin 
  SurfacePlugin 
  UUIDPlugin
  	)!

Item was changed:
  ----- Method: CogWindowsDebugConfig>>compilerFlags (in category 'as yet unclassified') -----
  compilerFlags
+ 	^ String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 	"depends on config ..."
- 	^ self commonCompilerFlags, ' ' , self compilerFlagsDebug!

Item was changed:
  ----- Method: MacOSConfig>>buildScript (in category 'build script') -----
  buildScript
  	"answer the build script for building everything"
  	
  
  	^ 
+ '#!!/usr/bin/env bash
- '#!!bash
  
  if [ !! -e vmVersionInfo.h ]; then
+ 	../scripts/extract-commit-info.sh
- 	../codegen-scripts/extract-commit-info.sh
  fi
  cmake .
  make
  make install
  
  '!

Item was added:
+ ----- Method: StackCocoaIOSConfig>>commonCompilerFlags (in category 'settings') -----
+ commonCompilerFlags 
+ 	^ super commonCompilerFlags!

Item was removed:
- ----- Method: StackCocoaIOSConfig>>compilerFlagsRelease (in category 'settings') -----
- compilerFlagsRelease 
- 	^#(
- 	'-g0' '-O0' '-DNDEBUG' '-DDEBUGVM=0'
- 	'-fomit-frame-pointer'
- 	'-fdefer-pop -fdelayed-branch -fguess-branch-probability -fcprop-registers -fif-conversion -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants'
- 	'-fthread-jumps -fcrossjumping -foptimize-sibling-calls -fcse-follow-jumps  -fcse-skip-blocks -fgcse  -fgcse-lm -fexpensive-optimizations -frerun-cse-after-loop -fcaller-saves -fpeephole2 -fschedule-insns  -fschedule-insns2 -fsched-interblock  -fsched-spec -fregmove -fstrict-aliasing -fstrict-overflow -fdelete-null-pointer-checks -freorder-blocks -freorder-functions -falign-functions -falign-jumps -falign-loops  -falign-labels -ftree-vrp -ftree-pre'
- 	'-finline-functions -funswitch-loops -fgcse-after-reload')!

Item was added:
+ ----- Method: StackCocoaIOSConfig>>setGlobalOptions: (in category 'settings') -----
+ setGlobalOptions: maker
+    super setGlobalOptions: maker.
+    maker set: 'CMAKE_C_COMPILER' to: 'clang'.
+    maker set: 'CMAKE_CXX_COMPILER' to: 'clang++'.!

Item was added:
+ StackUnixConfig subclass: #StackCrossRaspbianConfig
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMaker-Unix'!
+ 
+ !StackCrossRaspbianConfig commentStamp: '<historical>' prior: 0!
+ This is a concrete class which generates a StackVM for Raspbian (debian on RaspberryPi). But in cross compilation usage.
+ 
+ 
+ Usage: 
+ StackCrossRaspbianConfig generateWithSources
+ 
+ 
+ Fore more information, check the class comments of all the superclasses.
+ !

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>addDriver:sources:generator: (in category 'as yet unclassified') -----
+ addDriver: name sources: aSources generator: cmakeGen
+ 
+ 	| cfg srcs |
+ 	
+ 	srcs := aSources inject: '' into: [:res :each | res , ' "', each, '"' ].
+ 	cfg := cmakeGen
+ 		captureOutputDuring: [
+ 			cmakeGen printHeader;
+ 			project: name;
+ 			include: '../directories.cmake';
+ 		
+ 			message: 'Adding module: ', name;
+ 			
+ 			addDefinitions:  self compilerFlags;
+ 			addDefinitions: '-fPIC -DPIC';
+ 			set: #sources to: srcs;
+ 			cmd: 'add_library' params: name, ' SHARED ${sources}';
+ 			linkDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/lib/arm-linux-gnueabihf/';
+ 	 		includeDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/include/';
+ 			includeDirectories: '${crossDir}/plugins/FilePlugin';
+ 			includeDirectories: '${targetPlatform}/plugins/B3DAcceleratorPlugin';
+ 			includeDirectories: '${crossDir}/plugins/B3DAcceleratorPlugin';
+ 			set: 'LIBRARY_OUTPUT_PATH' toString: self outputDir;
+ 			cmd: 'set_target_properties' params: name , ' PROPERTIES PREFIX "" SUFFIX "" 
+ 			LINK_FLAGS "', self linkFlags , '"'
+ 	].
+ 	
+ 		
+ 	self write: cfg toFile: ((self buildDir / name) assureExistence / cmakeGen outputFileName) fullName.
+ 	cmakeGen addSubdirectory:  name.
+ 	!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>addDriver:sources:generator:externalLibs: (in category 'as yet unclassified') -----
+ addDriver: name sources: aSources generator: cmakeGen externalLibs: extLibs
+ 
+ 	| cfg srcs |
+ 	
+ 	srcs := aSources inject: '' into: [:res :each | res , ' "', each, '"' ].
+ 	cfg := cmakeGen
+ 		captureOutputDuring: [
+ 			cmakeGen printHeader;
+ 			project: name;
+ 			include: '../directories.cmake';
+ 		
+ 			message: 'Adding module: ', name;
+ 			
+ 			addDefinitions:  self compilerFlags;
+ 			addDefinitions: '-fPIC -DPIC';
+ 			set: #sources to: srcs;
+ 			
+ 			cmd: 'add_library' params: name, ' SHARED ${sources}'; 
+ 	 		includeDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/include';
+ 			includeDirectories: '${crossDir}/plugins/FilePlugin';
+ 			includeDirectories: '${targetPlatform}/plugins/B3DAcceleratorPlugin';
+ 			includeDirectories: '${crossDir}/plugins/B3DAcceleratorPlugin';
+ 			set: 'LIBRARY_OUTPUT_PATH' toString: self outputDir fullName;
+ 			linkDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/lib/arm-linux-gnueabihf/';
+ 		
+ 			addExternalLibraries: extLibs;
+ 			
+ 			cmd: 'target_link_libraries' params: name , ' ${LINKLIBS}';
+ 			cmd: 'set_target_properties' params: name , ' PROPERTIES PREFIX "" SUFFIX "" ' 
+ 	].
+ 	
+ 	(self buildDir / name) ensureDirectory.
+ 	self write: cfg toFile: name , '/', cmakeGen outputFileName.
+ 	cmakeGen addSubdirectory:  name.
+ 	!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>commonCompilerFlags (in category 'as yet unclassified') -----
+ commonCompilerFlags
+ 
+ 	"Common compiler flags
+ 	
+ 	
+ 	LSB_FIRST=1 means that target platform is little endian. 
+ 	set it to 0 for big-endian platforms
+ 	
+ 	"
+ 	
+ 	^ {
+ 		'-DLSB_FIRST=1'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DCOGMTVM=0' } 	
+ 	!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>compilerFlagsDebug (in category 'as yet unclassified') -----
+ compilerFlagsDebug
+ 
+ 	^ {
+ 	'-g3'.
+ 	'-O0'. 
+ 	'-D_GNU_SOURCE'. 
+ 	'-DITIMER_HEARTBEAT=1'. 
+ 	'-DNO_VM_PROFILE=1'. 
+ 	'-DDEBUGVM=1' }!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>compilerFlagsRelease (in category 'as yet unclassified') -----
+ compilerFlagsRelease
+ "
+ THIS FLAGS ARE CRASHING COMPILER 
+ -fschedule-insns2 
+ -fschedule-insns 
+ 
+ THIS FLAGS ARE CRASHING VM
+ -ftree-pre  
+ -fcaller-saves 
+ 
+ THIS FLAGS ARE WORKING 
+ -O1 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -frerun-cse-after-loop -freorder-functions  -fsched-interblock -fsched-spec -fstrict-aliasing -fstrict-overflow  -ftree-switch-conversion -ftree-vrp
+ 
+ THIS IS LIKE: -O2 -fno-tree-pre -fno-caller-saves 
+ 
+ "
+ 
+ 	^ {
+ 		'-g0'. 
+ 		'-O2'. 
+ 		'-fno-tree-pre'. 
+ 		'-fno-caller-saves'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DNDEBUG'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=0' }!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>configH (in category 'as yet unclassified') -----
+ configH
+ 	" right now its like  that "
+ 	^ '
+ #ifndef __sq_config_h
+ #define __sq_config_h
+ 
+ /* explicit image width */
+ 
+ #define	HAVE_INTERP_H 1
+ 
+ /* package options */
+ 
+ #define	USE_X11 1
+ #define	USE_X11_GLX 1
+ /* #undef	USE_QUARTZ */
+ /* #undef	USE_QUARTZ_CGL */
+ /* #undef	USE_RFB */
+ 
+ /* libraries */
+ 
+ /* #undef	HAVE_LIBX11 */
+ /* #undef	HAVE_LIBXEXT */
+ #define	HAVE_LIBDL 1
+ /* #undef	HAVE_DYLD */
+ /* #undef	HAVE_LIBFFI */
+ /* #undef	HAVE_ICONV */
+ 
+ /* #undef	USE_AUDIO_NONE */
+ /* #undef	USE_AUDIO_SUN */
+ /* #undef	USE_AUDIO_NAS */
+ /* #undef	USE_AUDIO_OSS */
+ /* #undef	USE_AUDIO_MACOSX */
+ /* #undef	OSS_DEVICE */
+ 
+ /* header files */
+ 
+ #define	HAVE_UNISTD_H 1
+ /* #undef	NEED_GETHOSTNAME_P */
+ 
+ #define	HAVE_DIRENT_H 1
+ /* #undef	HAVE_SYS_NDIR_H */
+ /* #undef	HAVE_SYS_DIR_H */
+ /* #undef	HAVE_NDIR_H */
+ #define	HAVE_DLFCN_H 1
+ #define	HAVE_ICONV_H 1
+ 
+ #define	HAVE_SYS_TIME_H 1
+ #define	TIME_WITH_SYS_TIME 1
+ 
+ /* #undef	HAVE_SYS_FILIO_H */
+ 
+ /* #undef	HAVE_SYS_AUDIOIO_H */
+ /* #undef	HAVE_SUN_AUDIOIO_H */
+ 
+ #define	HAVE_PTY_H 1
+ /* #undef	HAVE_UTIL_H */
+ /* #undef	HAVE_LIBUTIL_H */
+ #define	HAVE_STROPTS_H 1
+ 
+ #define	HAVE_GL_GL_H 1
+ /* #undef	HAVE_OPENGL_GL_H */
+ 
+ /* #undef	NEED_SUNOS_H */
+ 
+ /* system calls/library functions */
+ 
+ #define	AT_EXIT atexit
+ 
+ #define	HAVE_TZSET 1
+ 
+ #define	HAVE_OPENPTY 1
+ /* #undef	HAVE_UNIX98_PTYS */
+ 
+ #define	HAVE_SNPRINTF 1
+ /* #undef	HAVE___SNPRINTF */
+ 
+ #define	HAVE_MMAP 1
+ 
+ /* #undef	HAVE_DYLD */
+ 
+ #define	HAVE_LANGINFO_CODESET 1
+ 
+ #define	HAVE_ALLOCA 1
+ #define	HAVE_ALLOCA_H 1
+ 
+ #define	HAVE_UNSETENV 1
+ 
+ #define	HAVE_NANOSLEEP 1
+ 
+ /* widths of primitive types */
+ 
+ #define	SIZEOF_INT 4
+ #define	SIZEOF_LONG 4
+ #define	SIZEOF_LONG_LONG 8
+ #define	SIZEOF_VOID_P 4
+ 
+ /* structures */
+ 
+ #define	HAVE_TM_GMTOFF 1
+ #define	HAVE_TIMEZONE 1
+ 
+ /* typedefs */
+ 
+ /* #undef	size_t */
+ /* #undef	socklen_t */
+ 
+ #define	ENABLE_FAST_BLT 1
+ #define	squeakInt64 long long
+ 
+ /* architecture */
+ 
+ #define	OS_TYPE "unix"
+ #define __arm__ 1
+ #define __ARM_ARCH_6__ 1
+ #define	VM_HOST "arm-pc-linux-gnu"
+ #define	VM_HOST_CPU "arm"
+ /* #undef	VM_HOST_VENDOR */
+ #define	VM_HOST_OS "linux-gnu"
+ #define	VM_BUILD_STRING "Unix built on "__DATE__ " "__TIME__" Compiler: "__VERSION__
+ 
+ /* #undef	WORDS_BIGENDIAN */
+ /* #undef	DOUBLE_WORD_ALIGNMENT */
+ 
+ /* damage containment */
+ 
+ /* #undef	DARWIN */
+ 
+ #ifdef NEED_SUNOS_H
+ # include "sunos.h"
+ #endif
+ 
+ /* other configured variables */
+ 
+ #define SQ_VERSION "3.9a-7024"
+ #define VM_VERSION "3.9-7"
+ #define VM_MODULE_PREFIX ""
+ /* #undef VM_DLSYM_PREFIX */
+ #define VM_X11DIR ""
+ 
+ /* avoid dependencies on glibc2.3 */
+ 
+ #define HAVE_FEATURES_H 1
+ 
+ #if defined(HAVE_FEATURES_H)
+ # include "glibc.h"
+ #endif
+ 
+ 
+ /* used by UUID plugin: */
+ 
+ #define HAVE_UUID_H 1
+ 
+ #endif /* __sq_config_h */
+ 																																																																					
+ 																																																																				'!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>configureB3DAcceleratorPlugin: (in category 'as yet unclassified') -----
+ configureB3DAcceleratorPlugin: maker
+ 	"extra rules for B3DAcceleratorPlugin"
+ 	
+ 	super configureB3DAcceleratorPlugin: maker.
+ 	maker includeDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/include/'.!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>configureBitBltSimulation: (in category 'as yet unclassified') -----
+ configureBitBltSimulation: maker
+ 	"extra rules for BitBltSimulation"
+ 
+ 	maker includeDirectories: '${pluginCross}'.
+ 
+ 	maker addCrossSources: #(
+ 		'BitBltGeneric.c'
+ 		'BitBltDispatch.c'
+ 	).
+ 	!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>defaultExternalPlugins (in category 'as yet unclassified') -----
+ defaultExternalPlugins
+ 	^ #(
+ 		B3DAcceleratorPlugin
+ 		JPEGReaderPlugin 
+ 		JPEGReadWriter2Plugin 			
+ 		RePlugin
+ 		InternetConfigPlugin
+ 	)!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>defaultInternalPlugins (in category 'as yet unclassified') -----
+ 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: StackCrossRaspbianConfig>>executableName (in category 'as yet unclassified') -----
+ executableName
+ 	^ 'PharoS'!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>extraPluginSettings: (in category 'as yet unclassified') -----
+ extraPluginSettings: maker
+ 
+ 	maker isExternal ifTrue: [
+ 		"copy lib to results dir "
+ 		maker set: 'LIBRARY_OUTPUT_PATH' to: '${outputDir}' 
+ 	].	
+ 	
+ 	maker set: #linkFlags toString: '${linkFlags}'
+ !

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>linkFlags (in category 'as yet unclassified') -----
+ linkFlags
+ 	 ^ '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11'!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>preferredIncludes (in category 'as yet unclassified') -----
+ preferredIncludes
+ 	^ #('${CMAKE_FIND_ROOT_PATH}/usr/include/'
+ 	'${targetPlatform}/plugins/B3DAcceleratorPlugin')
+ 	!

Item was added:
+ ----- Method: StackCrossRaspbianConfig>>setExtraTargetProperties: (in category 'as yet unclassified') -----
+ setExtraTargetProperties: maker
+ 
+ 	"maker setTargetProperties: 'LINK_FLAGS ""'."
+ 		
+ 	maker puts: 'set_source_files_properties( ${srcVMDir}/cogit.c PROPERTIES 
+ 		COMPILE_FLAGS "-O1 -fno-omit-frame-pointer -momit-leaf-frame-pointer")'.
+ 		
+ 		
+ 	maker 
+ 		cmd: 'set_source_files_properties'
+ 		params: ' ${targetPlatform}/vm/sqUnixHeartbeat.c PROPERTIES 
+ 		COMPILE_FLAGS "-O1 -fno-omit-frame-pointer"'.
+ 						
+ 	maker linkDirectories: '${CMAKE_FIND_ROOT_PATH}/usr/lib/arm-linux-gnueabihf/'.
+ 	
+ 	maker addExternalLibraries: 
+ 		#(
+ 			'm'  "math lib"
+ 			'dl'  "dynamic loader"
+ 			'pthread' "posix threads" 
+ 		).
+ 		
+ 	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
+ 	self addVMDrivers: maker.!

Item was added:
+ StackCrossRaspbianConfig subclass: #StackCrossRaspbianFastBltConfig
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMaker-Unix'!
+ 
+ !StackCrossRaspbianFastBltConfig commentStamp: '<historical>' prior: 0!
+ This is a concrete class which generates a StackVM for Raspbian (debian on RaspberryPi). But in cross compilation usage.
+ 
+ 
+ Usage: 
+ StackCrossRaspbianFastBltConfig generateWithSources
+ 
+ 
+ Fore more information, check the class comments of all the superclasses.
+ !

Item was added:
+ ----- Method: StackCrossRaspbianFastBltConfig>>commonCompilerFlags (in category 'as yet unclassified') -----
+ commonCompilerFlags
+ 	^ super commonCompilerFlags, { '-DENABLE_FAST_BLT' }.!

Item was added:
+ ----- Method: StackCrossRaspbianFastBltConfig>>compilerFlagsDebug (in category 'as yet unclassified') -----
+ compilerFlagsDebug
+ 
+ 	^ {
+ 		'-g3'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=1' }!

Item was added:
+ ----- Method: StackCrossRaspbianFastBltConfig>>compilerFlagsRelease (in category 'as yet unclassified') -----
+ compilerFlagsRelease
+ "
+ THIS FLAGS ARE CRASHING COMPILER 
+ -fschedule-insns2 
+ -fschedule-insns 
+ 
+ THIS FLAGS ARE CRASHING VM
+ -ftree-pre  
+ -fcaller-saves 
+ 
+ THIS FLAGS ARE WORKING 
+ -O1 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -frerun-cse-after-loop -freorder-functions  -fsched-interblock -fsched-spec -fstrict-aliasing -fstrict-overflow  -ftree-switch-conversion -ftree-vrp
+ 
+ THIS IS LIKE: -O2 -fno-tree-pre -fno-caller-saves 
+ 
+ "
+ 
+ 	^ {
+ 		'-g0'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DNDEBUG'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=0' }!

Item was added:
+ ----- Method: StackCrossRaspbianFastBltConfig>>configH (in category 'as yet unclassified') -----
+ configH
+ 	" right now its like  that "
+ 	^ '
+ #ifndef __sq_config_h
+ #define __sq_config_h
+ 
+ /* explicit image width */
+ 
+ #define	HAVE_INTERP_H 1
+ 
+ /* package options */
+ 
+ #define	USE_X11 1
+ #define	USE_X11_GLX 1
+ /* #undef	USE_QUARTZ */
+ /* #undef	USE_QUARTZ_CGL */
+ /* #undef	USE_RFB */
+ 
+ /* libraries */
+ 
+ /* #undef	HAVE_LIBX11 */
+ /* #undef	HAVE_LIBXEXT */
+ #define	HAVE_LIBDL 1
+ /* #undef	HAVE_DYLD */
+ /* #undef	HAVE_LIBFFI */
+ /* #undef	HAVE_ICONV */
+ 
+ /* #undef	USE_AUDIO_NONE */
+ /* #undef	USE_AUDIO_SUN */
+ /* #undef	USE_AUDIO_NAS */
+ /* #undef	USE_AUDIO_OSS */
+ /* #undef	USE_AUDIO_MACOSX */
+ /* #undef	OSS_DEVICE */
+ 
+ /* header files */
+ 
+ #define	HAVE_UNISTD_H 1
+ /* #undef	NEED_GETHOSTNAME_P */
+ 
+ #define	HAVE_DIRENT_H 1
+ /* #undef	HAVE_SYS_NDIR_H */
+ /* #undef	HAVE_SYS_DIR_H */
+ /* #undef	HAVE_NDIR_H */
+ #define	HAVE_DLFCN_H 1
+ #define	HAVE_ICONV_H 1
+ 
+ #define	HAVE_SYS_TIME_H 1
+ #define	TIME_WITH_SYS_TIME 1
+ 
+ /* #undef	HAVE_SYS_FILIO_H */
+ 
+ /* #undef	HAVE_SYS_AUDIOIO_H */
+ /* #undef	HAVE_SUN_AUDIOIO_H */
+ 
+ #define	HAVE_PTY_H 1
+ /* #undef	HAVE_UTIL_H */
+ /* #undef	HAVE_LIBUTIL_H */
+ #define	HAVE_STROPTS_H 1
+ 
+ #define	HAVE_GL_GL_H 1
+ /* #undef	HAVE_OPENGL_GL_H */
+ 
+ /* #undef	NEED_SUNOS_H */
+ 
+ /* system calls/library functions */
+ 
+ #define	AT_EXIT atexit
+ 
+ #define	HAVE_TZSET 1
+ 
+ #define	HAVE_OPENPTY 1
+ /* #undef	HAVE_UNIX98_PTYS */
+ 
+ #define	HAVE_SNPRINTF 1
+ /* #undef	HAVE___SNPRINTF */
+ 
+ #define	HAVE_MMAP 1
+ 
+ /* #undef	HAVE_DYLD */
+ 
+ #define	HAVE_LANGINFO_CODESET 1
+ 
+ #define	HAVE_ALLOCA 1
+ #define	HAVE_ALLOCA_H 1
+ 
+ #define	HAVE_UNSETENV 1
+ 
+ #define	HAVE_NANOSLEEP 1
+ 
+ /* widths of primitive types */
+ 
+ #define	SIZEOF_INT 4
+ #define	SIZEOF_LONG 4
+ #define	SIZEOF_LONG_LONG 8
+ #define	SIZEOF_VOID_P 4
+ 
+ /* structures */
+ 
+ #define	HAVE_TM_GMTOFF 1
+ #define	HAVE_TIMEZONE 1
+ 
+ /* typedefs */
+ 
+ /* #undef	size_t */
+ /* #undef	socklen_t */
+ 
+ #define	ENABLE_FAST_BLT 1
+ #define	squeakInt64 long long
+ 
+ /* architecture */
+ 
+ #define	OS_TYPE "unix"
+ 
+ #define	VM_HOST "i686-pc-linux-gnu"
+ #define	VM_HOST_CPU "i686"
+ /* #undef	VM_HOST_VENDOR */
+ #define	VM_HOST_OS "linux-gnu"
+ #define	VM_BUILD_STRING "Unix built on "__DATE__ " "__TIME__" Compiler: "__VERSION__
+ 
+ /* #undef	WORDS_BIGENDIAN */
+ /* #undef	DOUBLE_WORD_ALIGNMENT */
+ 
+ /* damage containment */
+ 
+ /* #undef	DARWIN */
+ 
+ #ifdef NEED_SUNOS_H
+ # include "sunos.h"
+ #endif
+ 
+ /* other configured variables */
+ 
+ #define SQ_VERSION "3.9a-7024"
+ #define VM_VERSION "3.9-7"
+ #define VM_MODULE_PREFIX ""
+ /* #undef VM_DLSYM_PREFIX */
+ #define VM_X11DIR ""
+ 
+ /* avoid dependencies on glibc2.3 */
+ 
+ #define HAVE_FEATURES_H 1
+ 
+ #if defined(HAVE_FEATURES_H)
+ # include "glibc.h"
+ #endif
+ 
+ 
+ /* used by UUID plugin: */
+ 
+ #define HAVE_UUID_H 1
+ 
+ #endif /* __sq_config_h */
+ 																																																																					
+ 																																																																				'!

Item was added:
+ ----- Method: StackCrossRaspbianFastBltConfig>>configureBitBltSimulation: (in category 'as yet unclassified') -----
+ configureBitBltSimulation: maker
+ 	"extra rules for BitBltSimulation"
+ 
+ 	maker includeDirectories: '${pluginCross}'.
+ 	maker set: 'can_use_assembler' to: 'TRUE'.
+ 	maker cmd: 'enable_language' params: 'ASM'.
+ 	maker set: 'CMAKE_ASM_COMPILE_OBJECT' to: '"asasm -cpu 6 -I ${pluginCross} -o <OBJECT> <SOURCE>"'.
+ 	
+ 	maker addCrossSources: #(
+ 		'BitBltArm.c'
+ 		'BitBltArmSimd.c'
+ 		'BitBltDispatch.c'
+ 		'BitBltGeneric.c'
+ 		'BitBltArmLinux.c'
+ 		'BitBltArmSimdAlphaBlend.s'
+ 		'BitBltArmSimdBitLogical.s'
+ 		'BitBltArmSimdPixPaint.s'
+ 		'BitBltArmSimdSourceWord.s'
+ 	).
+ 	!

Item was changed:
  ----- Method: StackEvtUnixDebugConfig>>compilerFlags (in category 'compiler flags') -----
  compilerFlags
+ 	^ String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 
- 	^  self commonCompilerFlags, ' ' ,self compilerFlagsDebug!

Item was changed:
  ----- Method: StackIPhoneConfig>>buildScript (in category 'build script') -----
  buildScript
  	"answer the build script for building everything"
  	
  
  	^ 
+ '#!!/usr/bin/env bash
- '#!!bash
  
+ set -e 
+ 
  if [ !! -e vmVersionInfo.h ]; then
+ 	../scripts/extract-commit-info.sh
- 	../codegen-scripts/extract-commit-info.sh
  fi
+ cmake .
+ make 
+ find ../{1}/{2}.app/Contents -type f -exec mv ''\{\}'' ../{1}/{2}.app \\;
+ rm -Rf ../{1}/{2}.app/Contents
+ ' format: { self outputDirName. self executableName }!
- cmake -G Xcode .
- xcodebuild -sdk {2} -configuration Release -target {1}
- 
- ' format: {self executableName. self sdkTarget}!

Item was changed:
  ----- Method: StackIPhoneConfig>>commonCompilerFlags (in category 'settings') -----
  commonCompilerFlags
  	"Common compiler flags"
  	^{
+ 	'-arch {1}' format: { self architecture }.
+ 	"CLANG >>"
+ 	'-fwrapv'. "Non optimization of stackoverflow (to allow number conversions)"
+ 	'-Wno-return-type'. "to avoid clang to complain about plugins that do not return properly."	
+ 	'-Qunused-arguments'.
+ 	"CLANG <<"	
+ 	'-isysroot {1}' format: { self sysroot }.
- 	"'-miphoneos-version-min=4.3'. "
- 	'-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk' format: { self targetDevice. self sdkVersion}.
  	'-x objective-c'.
  	'-std=gnu99'.
  	'-falign-functions=16'.
  	'-fno-gcse'.
- 	'-fno-cse-follow-jumps'.
  	'-fvisibility=hidden'.
  	'-funroll-loops'.
  	'-finline-functions'.
  	'-mno-thumb'.
- 	'-fwrapv'.
  	'-DSTACKVM=1'.
  	'-DCOGMTVM=0'. 
  	'-DUSE_GLOBAL_STRUCT=0'. 
  	'-DBASE_HEADER_SIZE=4'.
  	'-DTARGET_OS_IS_IPHONE'.
  	'-DHAVE_UUID_GENERATE'.
- 	"'-DUSE_INLINE_MEMORY_ACCESSORS'. "
  	'-DHAVE_SYS_TIME_H'.
  	'-DLSB_FIRST'.
  	'-DHAVE_NANOSLEEP'.
+ 	'-DISQUEAK_IMAGE={1}' format: { self imageName }.
- 	'-DISQUEAK_IMAGE=', self imageName.
  	'-DISQUEAK_SOURCES=PharoV10'.
  	'-DSTACKVM'}!

Item was changed:
  ----- Method: StackIPhoneConfig>>configureFT2Plugin: (in category 'plugin extra rules') -----
  configureFT2Plugin: maker
  	"extra rules for Freetype plugin.
  	a custom rule to build freetype library"
+ 	| lib |
- 	| lib devRoot sdkRoot |
  
- 	devRoot := '/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer'
- 		format: { self targetDevice}.
- 	sdkRoot := '{1}/SDKs/{2}{3}.sdk' 
- 		format: { devRoot. self targetDevice. self sdkVersion}.
- 
  	"add freetype library into loop"
  	lib := self addThirdpartyLibrary: 'freetype2'.
+ 	lib configurationFlags: self ft2PluginConfigurationFlags.
- 	lib configurationFlags: ({
- 		'--without-zlib'.
- 		'--without-bzip2'.
-  		'--host=arm-apple-darwin'.
- 		'--enable-static=yes'. 
- 		'--enable-shared=no'.
- 		'CC={3}/usr/bin/gcc'.
- 		'CXX={3}/usr/bin/g++'.
- 		'CFLAGS=\\"-arch {1} -std=c99 -Wno-trigraphs -O2 -fwrapv -Wreturn-type -Wunused-variable -fmessage-length=0 -miphoneos-version-min=4.0 -I{2}/usr/include/libxml2 -isysroot {2}\\"'.
- 		'LDFLAGS=\\"-arch {1} -isysroot {2}\\"'}
- 		collect: [ :each | each format: { self architecture. sdkRoot. devRoot} ]).
  
  	"link plugin with freetype lib"
+ 	maker includeDirectories: lib includeDir. 
  	maker addExternalLibrary: '${thirdpartyDir}/out/lib/', lib libraryFileName.
+ 	maker addExternalDependency: 'freetype2'.
+ !
- 	maker includeDirectories: lib includeDir. !

Item was added:
+ ----- Method: StackIPhoneConfig>>ft2PluginConfigurationFlags (in category 'plugin extra rules') -----
+ ft2PluginConfigurationFlags
+ 	^ {'--without-zlib'.
+ 		'--without-bzip2'.
+ 		'--host=arm-apple-darwin'.
+ 		'--enable-static=yes'. 
+ 		'--enable-shared=no'.
+ 		'CFLAGS=\\"-arch {1} -std=c99 -Wno-trigraphs -O2 -fpascal-strings -fwrapv -Wreturn-type -Wunused-variable -fvisibility=hidden -fmessage-length=0 -miphoneos-version-min={3}  -I{2}/usr/include/libxml2 -isysroot {2}\\"'.
+ 		'LDFLAGS=\\"-arch {1} -miphoneos-version-min={3} -isysroot {2}\\"' }
+ 		collect: [ :each | 
+ 			each format: { 
+ 				self architecture. 
+ 				self sysroot. 
+ 				self sdkVersion } ]!

Item was changed:
  ----- Method: StackIPhoneConfig>>sdkVersion (in category 'accessing') -----
  sdkVersion 
+ 	^'7.0'!
- 	^'6.1'!

Item was changed:
  ----- Method: StackIPhoneConfig>>setCommonProperties: (in category 'settings') -----
  setCommonProperties: maker 
  	maker set: 'CMAKE_CROSSCOMPILING' to: 'TRUE'.
  	maker set: 'CMAKE_SYSTEM_NAME' to: 'Darwin'.
  	maker set: 'CMAKE_SYSTEM_PROCESSOR' to: 'arm'.
  
  	maker set: 'SDKVER' toString: self sdkVersion.
+ 	maker 
+ 		set: 'DEVROOT' 
+ 		toString: ('/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer'
+ 			format: { self targetDevice }).
+ 	maker 
+ 		set: 'SDKROOT' 
+ 		toString: '${DEVROOT}/SDKs/', self targetDevice,'${SDKVER}.sdk'.
- 	maker set: 'DEVROOT' toString: ('/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer'
- 		format: { self targetDevice }).
- 	maker set: 'SDKROOT' toString: '${DEVROOT}/SDKs/', self targetDevice,'${SDKVER}.sdk'.
  
  	maker set: 'CMAKE_OSX_SYSROOT' to: 'iphoneos${SDKVER}'.
  		
  	maker set: 'CMAKE_FIND_ROOT_PATH' to: '"${SDKROOT}" "${DEVROOT}"'.
  	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_PROGRAM' to: 'ONLY'.
  	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_LIBRARY' to: 'ONLY'.
  	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE' to: 'ONLY'.
  	
  	maker set: 'CMAKE_EXE_LINKER_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
  	maker set: 'CMAKE_C_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
  	maker set: 'CMAKE_CXX_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
  
  	maker addFrameworks: self frameworks.!

Item was changed:
  ----- Method: StackIPhoneConfig>>setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  	"super setExtraTargetProperties: maker."
  
  	| precompiledHeaders plist |
  	
  	precompiledHeaders := (self executableName, '_Prefix.pch').
  	(FileStream forceNewFileNamed: (maker buildDir / precompiledHeaders) fullName) 
  		nextPutAll: self precompiledHeaders;
  		close.
  	
  	maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', precompiledHeaders.
  	
  	self setCommonProperties: maker.
  
  	" generated and add Info.plist file "
  	plist := self plistFile.
  	(FileStream forceNewFileNamed: (maker buildDir / 'Info.plist') fullName) 
  		nextPutAll: plist; 
  		close.
  
  	maker addProperty: 'MACOSX_BUNDLE_INFO_PLIST' value: '${buildDir}/Info.plist'.  
  	maker 
  		cmd: 'set_target_properties' 
  		params: self executableName, ' PROPERTIES COMPILE_FLAGS "-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'. 
  
+ 	maker 
+ 		set: 'CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY' 
- 	maker set: 'CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY' 
  		toString: self codeSignIdentity.
+ 	maker 
+ 		set: 'CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY' 
- 	maker set: 'CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY' 
  		toString: self targetedDeviceFamilyAsString.
+ 	maker 
+ 		set: 'CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET' 
- 	maker set: 'CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET' 
  		to: self deploymentTargetVersion.
+ 	maker 
+ 		set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR' 
- 	maker set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR' 
  		toString: '$(BUILD_DIR)/$(CONFIGURATION)'.
+ 	maker 
+ 		set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_TEMP_DIR' 
- 	maker set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_TEMP_DIR' 
  		toString: '$(BUILD_DIR)/$(CONFIGURATION)'.
  
  	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
  	
+ 	maker puts: 'set_source_files_properties(${srcVMDir}/gcc3x-cointerp.c PROPERTIES COMPILE_FLAGS -O0)'.
+ 
+ 
- 	maker puts: 'set_source_files_properties(${srcVMDir}/gcc3x-cointerp.c PROPERTIES COMPILE_FLAGS -O0)'
  !

Item was added:
+ ----- Method: StackIPhoneConfig>>sysroot (in category 'accessing') -----
+ sysroot 
+ 	^ '/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk' 
+ 	format: { 
+ 		self targetDevice. 
+ 		self sdkVersion }!

Item was changed:
  ----- Method: StackMacOSDebugConfig>>compilerFlags (in category 'compiler flags') -----
  compilerFlags
+     ^ String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 
-     ^  self compilerFlagsDebug!

Item was added:
+ StackUnixConfig subclass: #StackRaspbianConfig
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMaker-Unix'!
+ 
+ !StackRaspbianConfig commentStamp: '<historical>' prior: 0!
+ This is a concrete class which generates a StackVM for Raspbian (debian on RaspberryPi).
+ 
+ Usage: 
+ StackRaspbianConfig generateWithSources
+ 
+ 
+ Fore more information, check the class comments of all the superclasses.
+ !

Item was added:
+ ----- Method: StackRaspbianConfig>>addDriver:sources:generator:externalLibs: (in category 'as yet unclassified') -----
+ addDriver: name sources: aSources generator: cmakeGen externalLibs: extLibs
+ 
+ 	| cfg srcs |
+ 	
+ 	srcs := aSources inject: '' into: [:res :each | res , ' "', each, '"' ].
+ 	cfg := cmakeGen
+ 		captureOutputDuring: [
+ 			cmakeGen printHeader;
+ 			project: name;
+ 			include: '../directories.cmake';
+ 		
+ 			message: 'Adding module: ', name;
+ 			
+ 			addDefinitions:  self compilerFlags;
+ 			addDefinitions: '-fPIC -DPIC';
+ 			set: #sources to: srcs;
+ 			cmd: 'add_library' params: name, ' SHARED ${sources}'; 
+ 			includeDirectories: '${crossDir}/plugins/FilePlugin';
+ 			includeDirectories: '${targetPlatform}/plugins/B3DAcceleratorPlugin';
+ 			includeDirectories: '${crossDir}/plugins/B3DAcceleratorPlugin';
+ 			set: 'LIBRARY_OUTPUT_PATH' toString: self outputDir fullName;
+ 			addExternalLibraries: extLibs;
+ 			cmd: 'target_link_libraries' params: name , ' ${LINKLIBS}';
+ 			cmd: 'set_target_properties' params: name , ' PROPERTIES PREFIX "" SUFFIX "" ' 
+ 	].
+ 	
+ 	(self buildDir / name) ensureDirectory.
+ 	self write: cfg toFile: name , '/', cmakeGen outputFileName.
+ 	cmakeGen addSubdirectory:  name.
+ 	!

Item was added:
+ ----- Method: StackRaspbianConfig>>commonCompilerFlags (in category 'as yet unclassified') -----
+ commonCompilerFlags
+ 
+ 	"Common compiler flags
+ 	
+ 	
+ 	LSB_FIRST=1 means that target platform is little endian. 
+ 	set it to 0 for big-endian platforms
+ 	
+ 	"
+ 	
+ 	^ {
+ 		'-DLSB_FIRST=1'. 
+ 		'-DUSE_GLOBAL_STRUCT=0'. 
+ 		'-DCOGMTVM=0' } !

Item was added:
+ ----- Method: StackRaspbianConfig>>compilerFlagsDebug (in category 'as yet unclassified') -----
+ compilerFlagsDebug
+ 
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=1' }!

Item was added:
+ ----- Method: StackRaspbianConfig>>compilerFlagsRelease (in category 'as yet unclassified') -----
+ compilerFlagsRelease
+ "
+ THIS FLAGS ARE CRASHING COMPILER 
+ -fschedule-insns2 
+ -fschedule-insns 
+ 
+ THIS FLAGS ARE CRASHING VM
+ -ftree-pre  
+ -fcaller-saves 
+ 
+ THIS FLAGS ARE WORKING 
+ -O1 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -frerun-cse-after-loop -freorder-functions  -fsched-interblock -fsched-spec -fstrict-aliasing -fstrict-overflow  -ftree-switch-conversion -ftree-vrp
+ 
+ THIS IS LIKE: -O2 -fno-tree-pre -fno-caller-saves 
+ 
+ "
+ 
+ 	^ {
+ 		'-g0'. 
+ 		'-O2'. 
+ 		'-fno-tree-pre'. 
+ 		'-fno-caller-saves'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DNDEBUG'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DDEBUGVM=0' }!

Item was added:
+ ----- Method: StackRaspbianConfig>>configureBitBltSimulation: (in category 'as yet unclassified') -----
+ configureBitBltSimulation: maker
+ 	"extra rules for BitBltSimulation"
+ 
+ 	maker includeDirectories: '${pluginCross}'.
+ 
+ 	maker addCrossSources: #(
+ 		'BitBltGeneric.c'
+ 		'BitBltDispatch.c'
+ 	).
+ 	!

Item was added:
+ ----- Method: StackRaspbianConfig>>defaultExternalPlugins (in category 'as yet unclassified') -----
+ defaultExternalPlugins
+ 	^ #(
+ 		B3DAcceleratorPlugin
+ 		JPEGReaderPlugin 
+ 		JPEGReadWriter2Plugin 			
+ 		RePlugin
+ 		InternetConfigPlugin
+ 	)!

Item was added:
+ ----- Method: StackRaspbianConfig>>defaultInternalPlugins (in category 'as yet unclassified') -----
+ 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: StackRaspbianConfig>>executableName (in category 'as yet unclassified') -----
+ executableName
+ 	^ 'PharoS'!

Item was added:
+ ----- Method: StackRaspbianConfig>>extraPluginSettings: (in category 'as yet unclassified') -----
+ extraPluginSettings: maker
+ 
+ 	maker isExternal ifTrue: [
+ 		"copy lib to results dir "
+ 		maker set: 'LIBRARY_OUTPUT_PATH' to: '${outputDir}' 
+ 	].	
+ 	
+ 	maker set: #linkFlags toString: '${linkFlags}'
+ !

Item was added:
+ ----- Method: StackRaspbianConfig>>linkFlags (in category 'as yet unclassified') -----
+ linkFlags
+ 	 ^ '-lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11'!

Item was added:
+ ----- Method: StackRaspbianConfig>>setExtraTargetProperties: (in category 'as yet unclassified') -----
+ setExtraTargetProperties: maker
+ 
+ 	"maker setTargetProperties: 'LINK_FLAGS ""'."
+ 		
+ 	maker puts: 'set_source_files_properties( ${srcVMDir}/cogit.c PROPERTIES 
+ 		COMPILE_FLAGS "-O1 -fno-omit-frame-pointer -momit-leaf-frame-pointer")'.
+ 		
+ 	
+ 	maker 
+ 		cmd: 'set_source_files_properties'
+ 		params: ' ${targetPlatform}/vm/sqUnixHeartbeat.c PROPERTIES 
+ 		COMPILE_FLAGS "-O1 -fno-omit-frame-pointer"'.
+ 						
+ 	
+ 	maker addExternalLibraries: 
+ 		#(
+ 			'm'  "math lib"
+ 			'dl'  "dynamic loader"
+ 			'pthread' "posix threads" 
+ 		).
+ 		
+ 	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
+ 	self addVMDrivers: maker.!

Item was added:
+ StackRaspbianConfig subclass: #StackRaspbianFastBltConfig
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMaker-Unix'!
+ 
+ !StackRaspbianFastBltConfig commentStamp: '<historical>' prior: 0!
+ http://www.cmake.org/Wiki/CMake/Assembler!

Item was added:
+ ----- Method: StackRaspbianFastBltConfig>>commonCompilerFlags (in category 'as yet unclassified') -----
+ commonCompilerFlags
+ 	^ super commonCompilerFlags, { '-DENABLE_FAST_BLT' }.!

Item was added:
+ ----- Method: StackRaspbianFastBltConfig>>configureBitBltSimulation: (in category 'as yet unclassified') -----
+ configureBitBltSimulation: maker
+ 	"extra rules for BitBltSimulation"
+ 
+ 	maker includeDirectories: '${pluginCross}'.
+ 	
+ 	maker set: 'can_use_assembler' to: 'TRUE'.
+ 	
+ 	maker addCrossSources: #(
+ 		'BitBltArm.c'
+ 		'BitBltArmSimd.c'
+ 		'BitBltDispatch.c'
+ 		'BitBltGeneric.c'
+ 		'BitBltArmLinux.c'
+ 		'BitBltArmSimdAlphaBlend.s'
+ 		'BitBltArmSimdBitLogical.s'
+ 		'BitBltArmSimdPixPaint.s'
+ 		'BitBltArmSimdSourceWord.s'
+ 	).
+ 	!

Item was added:
+ ----- Method: StackSimulatorConfig>>commonCompilerFlags (in category 'accessing') -----
+ commonCompilerFlags
+ 	^ super commonCompilerFlags, {
+ 		'-mios-simulator-version-min={1}' format: { self sdkVersion } }!

Item was added:
+ ----- Method: StackSimulatorConfig>>ft2PluginConfigurationFlags (in category 'plugin extra rules') -----
+ ft2PluginConfigurationFlags 
+ 	^ {'--without-zlib'.
+ 		'--without-bzip2'.
+ 		'--host=i386-apple-darwin'.
+ 		'--enable-static=yes'. 
+ 		'--enable-shared=no'.
+ 		'CFLAGS=\\"-arch {1} -pipe -std=c99 -Wno-trigraphs -O2 -fpascal-strings -fwrapv -Wreturn-type -Wunused-variable -fvisibility=hidden -fmessage-length=0 -mios-simulator-version-min={3}  -I{2}/usr/include/libxml2 -isysroot {2}\\"'.
+ 		'LDFLAGS=\\"-arch {1} -mios-simulator-version-min={3} -isysroot {2}\\"' }
+ 		collect: [ :each | 
+ 			each format: { 
+ 				self architecture. 
+ 				self sysroot. 
+ 				self sdkVersion } ]!

Item was added:
+ ----- Method: StackSimulatorConfig>>setCommonProperties: (in category 'settings') -----
+ setCommonProperties: maker 
+ 	maker set: 'CMAKE_CROSSCOMPILING' to: 'TRUE'.
+ 	maker set: 'CMAKE_SYSTEM_NAME' to: 'Darwin'.
+ 	maker set: 'CMAKE_SYSTEM_PROCESSOR' to: 'i386'.
+ 
+ 	maker 
+ 		set: 'SDKVER' 
+ 		toString: self sdkVersion.
+ 	maker 
+ 		set: 'DEVROOT' 
+ 		toString: ('/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer' 
+ 			format: { self targetDevice }).
+ 	maker 
+ 		set: 'SDKROOT' 
+ 		toString: ('$\{DEVROOT\}/SDKs/{1}$\{SDKVER\}.sdk' format: { self targetDevice }).
+ 
+ 	maker set: 'CMAKE_OSX_SYSROOT' to: self sysroot.
+ 		
+ 	maker set: 'CMAKE_FIND_ROOT_PATH' to: '"${SDKROOT}" "${DEVROOT}"'.
+ 	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_PROGRAM' to: 'ONLY'.
+ 	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_LIBRARY' to: 'ONLY'.
+ 	maker set: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE' to: 'ONLY'.
+ 	
+ 	maker 
+ 		set: 'CMAKE_EXE_LINKER_FLAGS' 
+ 		toString: '-mios-simulator-version-min=${SDKVER} --sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
+ 	maker 
+ 		set: 'CMAKE_C_FLAGS' 
+ 		toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
+ 	maker 
+ 		set: 'CMAKE_CXX_FLAGS' 
+ 		toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
+ 
+ 	maker addFrameworks: self frameworks.!

Item was changed:
  ----- Method: StackSimulatorConfig>>standardIncludes (in category 'source files') -----
  standardIncludes 
+ 	^super standardIncludes, {
+ 		'/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk/usr/include/'
+ 			format: { 
+ 				self targetDevice. 
+ 				self sdkVersion} }
- 	^super standardIncludes, {'/Applications/Xcode.app/Contents/Developer/Platforms/{1}.platform/Developer/SDKs/{1}{2}.sdk/usr/include/'
- 	format: { self targetDevice. self sdkVersion} }
  		 !

Item was changed:
  ----- Method: StackUnixDebugConfig>>compilerFlags (in category 'compiler flags') -----
  compilerFlags
+ 	^  String streamContents:  [ :stream |
+ 	self commonCompilerFlags asStringOn: stream delimiter: ' '. 
+ 	self compilerFlagsDebug asStringOn: stream delimiter: ' ' ]!
- 
- 	^  self commonCompilerFlags, ' ' ,self compilerFlagsDebug!

Item was changed:
  ----- Method: StackUnixDebugFixedVerSIConfig>>compilerFlagsDebug (in category 'as yet unclassified') -----
  compilerFlagsDebug
  
+ 	^ {
+ 		'-g3'. 
+ 		'-O0'. 
+ 		'-msse2'. 
+ 		'-save-temps'. 
+ 		'-D_GNU_SOURCE'. 
+ 		'-DITIMER_HEARTBEAT=1'. 
+ 		'-DNO_VM_PROFILE=1'. 
+ 		'-DCOGMTVM=0'. 
+ 		'-DDEBUGVM=1' }!
- 	^ '-g3 -O0 -msse2 -save-temps -D_GNU_SOURCE -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=1'
- 
- !



More information about the Vm-dev mailing list