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

commits at source.squeak.org commits at source.squeak.org
Sun May 29 12:51:09 UTC 2016


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

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

Name: CMakeVMMakerSqueak-tty.117
Author: tty
Time: 9 May 2016, 4:25:46.611767 pm
UUID: 394b3acb-50cc-4183-9766-25a61433ad1b
Ancestors: CMakeVMMakerSqueak-tty.116

Step by step new configuration help steps written.
cmake .  generates a build system with some inconsistencies that I will fix next. (ie. squeak.cog.spur writes to squeak.cog.v3 directory) and I will update the help so it is correct.

processPlugins needs re-thinking.. the cmake.config file is included in CMakeLists.txt and it contains all the cmake decision code needed to generate a config.h

Should there be a config.h in each plugin directory? or should plugins inject their own config.h directives into the CMakeLists.txt directly?

Moved some of Ian's unix specific stuff down to the SqueakUnixConf .

=============== Diff against CMakeVMMakerSqueak-tty.116 ===============

Item was changed:
  ----- Method: CMakePluginGeneratorForSqueak>>configDotCameraPlugin (in category 'cmake commands') -----
  configDotCameraPlugin
  	^'PLUGIN_REQUIRE_INCLUDE(V4L2 linux/videodev2.h /usr/include)'!

Item was changed:
  ----- Method: CMakePluginGeneratorForSqueak>>configDotSocketPlugin (in category 'cmake commands') -----
  configDotSocketPlugin
  	^'	 
  PLUGIN_FIND_LIBRARY(SOCKET socket)
  PLUGIN_FIND_LIBRARY(NSL nsl)
  '!

Item was changed:
  ----- Method: CMakePluginGeneratorForSqueak>>initializeConfigDotCmakeFiles (in category 'initialize-release') -----
  initializeConfigDotCmakeFiles
+ 	"simple hard-coded Dictionary keyed by plugin name containing the contents of a Plugin's config.cmake file.
+ 	is this true? Currently we are dumping the below into the master CMakeLists.txt file. Should it be in config.cmake? 
+ 	Should each plugin have its own config.cmake in its subdirectory?
+ 	
+ 	Take a look at configDotCameraPlugin and the non-portable /usr/include therein.
+ 	
+ 	This has to be rethought and specified correctly. 
+ 	
+ 	In PostBuildActions the config.cmake file is included in the CMakeLists.txt.
+ 	
+ 	config.cmake is not from pharo, it is from the original CMake work done by Ian.
+ 	
+ 	This leads me to speculate that each plugin should write its 'config.cmake' data into the config.cmake file.
+ 	This data should be configuration commands like config_define(THIS_THAT_ETC)
+ 	
+ 	Looking at configDotB3DAcceleratorPlugin this makes sense.
+ 	
+ 	
+ 		"
- 	"simple hard-coded Dictionary keyed by plugin name containing the contents of a Plugin's config.cmake file"
  	|d|
+ 	self flag:'tty. see this method comment.'.
  	d:=Dictionary new.
  	d 
  		at: #ADPCMCodecPlugin put: self configDotCmakeEmpty;
  		at: #AioPlugin put: self configDotCmakeEmpty;
  		at: #UnixAioPlugin put: self configDotCmakeEmpty;
  		at: #B3DAcceleratorPlugin put: self configDotCmakeEmpty;
  		at: #BMPReadWriterPlugin put: self configDotCmakeEmpty;
  		at: #BalloonEngineBase put: self configDotCmakeEmpty;
  		at: #BalloonEnginePlugin put: self configDotCmakeEmpty;
  		at: #BalloonEngineSimulation put: self configDotCmakeEmpty;
  		at: #BrokenPlugin put: self configDotCmakeEmpty;
  		at: #CameraPlugin put: self configDotCmakeEmpty;
  		at: #CroquetPlugin put: self configDotCmakeEmpty;
  		at: #DSAPlugin put: self configDotCmakeEmpty;
  		at: #DropPlugin put: self configDotCmakeEmpty;
  		at: #FFIPlugin put: self configDotFilePlugin;
  		at: #FFTPlugin put: self configDotCmakeEmpty;
  		at: #FilePlugin put: self configDotFilePlugin;
  		at: #FilePluginSimulator put: self configDotCmakeEmpty;
  		at: #FloatArrayPlugin put: self configDotCmakeEmpty;
  		at: #FloatMathPlugin put: self configDotCmakeEmpty;
  		at: #FloatMathPluginSimulator put: self configDotCmakeEmpty;
  		at: #IA32ABIPlugin put: self configDotCmakeEmpty;
  		at: #IA32ABIPluginSimulator put: self configDotCmakeEmpty;
  		at: #InflatePlugin put: self configDotCmakeEmpty;
  		at: #DeflatePlugin put: self configDotCmakeEmpty;
  		at: #JPEGReaderPlugin put: self configDotCmakeEmpty;
  		at: #KlattSynthesizerPlugin put: self configDotCmakeEmpty;
  		at: #Matrix2x3Plugin put: self configDotCmakeEmpty;
  		at: #MiscPrimitivePlugin put: self configDotCmakeEmpty;
  		at: #NewsqueakIA32ABIPlugin put: self configDotCmakeEmpty;
  		at: #NewsqueakIA32ABIPluginAttic put: self configDotCmakeEmpty;
  		at: #NewsqueakIA32ABIPluginSimulator put: self configDotCmakeEmpty;
  		at: #OSProcessPlugin put: self configDotCmakeEmpty;
  		at: #UnixOSProcessPlugin put: self configDotCmakeEmpty;
  		at: #Win32OSProcessPlugin put: self configDotCmakeEmpty;
  		at: #ScratchPlugin put: self configDotCmakeEmpty;
  		at: #SecurityPlugin put: self configDotCmakeEmpty;
  		at: #SlangTestPlugin put: self configDotCmakeEmpty;
  		at: #SmartSyntaxInterpreterPlugin put: self configDotCmakeEmpty;
  		at: #AsynchFilePlugin put: self configDotCmakeEmpty;
  		at: #BitBltSimulation put: self configDotCmakeEmpty;
  		at: #BitBltSimulator put: self configDotCmakeEmpty;
  		at: #BochsIA32Plugin put: self configDotCmakeEmpty;
  		at: #ClipboardExtendedPlugin put: self configDotCmakeEmpty;
  		at: #FT2Plugin put: self configDotCmakeEmpty;
  		at: #FileCopyPlugin put: self configDotCmakeEmpty;
  		at: #GdbARMPlugin put: self configDotCmakeEmpty;
  		at: #GeniePlugin put: self configDotCmakeEmpty;
  		at: #HostWindowPlugin put: self configDotCmakeEmpty;
  		at: #IOSPlugin put: self configDotCmakeEmpty;
  		at: #ImmX11Plugin put: self configDotCmakeEmpty;
  		at: #InternetConfigPlugin put: self configDotCmakeEmpty;
  		at: #JPEGReadWriter2Plugin put: self configDotCmakeEmpty;
  		at: #JoystickTabletPlugin put: self configDotCmakeEmpty;
  		at: #LargeIntegersPlugin put: self configDotCmakeEmpty;
  		at: #LocalePlugin put: self configDotCmakeEmpty;
  		at: #MIDIPlugin put: self configDotCmakeEmpty;
  		at: #MacMenubarPlugin put: self configDotCmakeEmpty;
  		at: #Mpeg3Plugin put: self configDotCmakeEmpty;
  		at: #ObjectiveCPlugin put: self configDotCmakeEmpty;
  		at: #QuicktimePlugin put: self configDotCmakeEmpty;
  		at: #RePlugin put: self configDotCmakeEmpty;
  		at: #SerialPlugin put: self configDotCmakeEmpty;
  		at: #SocketPlugin put: self configDotCmakeEmpty;
  		at: #SoundPlugin put: self configDotCmakeEmpty;
  		at: #TestOSAPlugin put: self configDotCmakeEmpty;
  		at: #UUIDPlugin put: self configDotCmakeEmpty;
  		at: #SmartSyntaxPluginSimulator put: self configDotCmakeEmpty;
  		at: #SoundCodecPlugin put: self configDotCmakeEmpty;
  		at: #SoundGenerationPlugin put: self configDotCmakeEmpty;
  		at: #SqueakSSLPlugin put: self configDotCmakeEmpty;
  		at: #StarSqueakPlugin put: self configDotCmakeEmpty;
  		at: #SurfacePlugin put: self configDotCmakeEmpty;
  		at: #ThreadedFFIPlugin put: self configDotCmakeEmpty;
  		at: #ThreadedARMFFIPlugin put: self configDotCmakeEmpty;
  		at: #ThreadedIA32FFIPlugin put: self configDotCmakeEmpty;
  		at: #ThreadedPPCBEFFIPlugin put: self configDotCmakeEmpty;
  		at: #UnicodePlugin put: self configDotCmakeEmpty;
  		at: #VMProfileLinuxSupportPlugin put: self configDotCmakeEmpty;
  		at: #VMProfileMacSupportPlugin put: self configDotCmakeEmpty;
  		at: #WeDoPlugin put: self configDotCmakeEmpty;
  		at: #XDisplayControlPlugin put: self configDotCmakeEmpty.
  	^d.
  !

Item was changed:
  ----- Method: CMakeVMGeneratorForSqueak>>generateByTemplate (in category 'code generation') -----
  generateByTemplate
  	"attempt to move way from string based writing to  template based. Think Seaside renderOn composition"
  	| extPlugins intPlugins |
  	self flag: 'tty'. "refactor so that the cascade reflects CMake terminilogy"
  	output := String new writeStream.
  	config templates: OrderedCollection new. 
- 	self break.
  	config 
  		setGlobalOptions: self;    
  		cmakePrefixPath;
  		cmakeIncludePath;
  		cmakeLibraryPath;
  		cmakeIncludeModules;
  		cmakeCFlags;          
  		cmakeAddDefinitions;
  		cmakeWriteDirectoriesDotCmake:  self;
  		cmakeIncludeDirectories:  self;   "<---"
  		preferredIncludes;                      "<---why 3  of em?"
  		standardIncludes;                       "<---"
  		setGlobalOptionsAfterDetermineSystem: self;    
  		extraVMSettings: self;                "<--catch-all method. os/platform specific"
  		setCoreSources: self;
  		setPlatformSources: self;
  		setCrossSources: self;
  		setExtraSources;
  		cmakeSetSourceFilesProperties;
  		cmakeListAppend:'LINKLIBS' elements: (config externalLibs);
  		cmakeAddExecutableNameOptionSource: self;
  	      setExecutableOutputPath;
  		addVMPlugins: self.
  	config templates do: [:each | self puts: each content].
  	config templates: OrderedCollection new. 
  	extPlugins := self generatePluginConfigs: config internalPlugins internal: true.
  	 intPlugins := self generatePluginConfigs: config externalPlugins internal: false.
  	self processThirdpartyLibraries.                       "<--unused in Pharo code? What exactly does this do?"
  	self processPlugins:  intPlugins, extPlugins.
  	self config templates	addLast:((CMakeCommand new) command:'target_link_libraries' params:(self moduleName , ' ${LINKLIBS}')).
  "	self cmd: 'target_link_libraries'
  		params: self moduleName , ' ${LINKLIBS}'."
  	config postBuildActions: self..
  	config templates do: [:each | self puts: each content].
  	self saveFile.
  	self generateBuildScript!

Item was changed:
  ----- Method: CMakeVMGeneratorForSqueak>>processPlugins: (in category 'as yet unclassified') -----
  processPlugins: pluginGenerators
  	| libs libDeps |
+ 	self flag:'tty think this trhough. Is it redundant? answer NO. This adds plugin information to the master CMakeLists.txt file. '.
+ 	self flag: 'tty: gen configDotCMake and gen configDotCmakeEmpty should be moved out of CMakePluginGeneratorForSqueak and placed in the wrapper for the Plugin itself. (can it be?)'.
- 	self flag:'tty think this trhough. Is it redundant?'.
  	libs := OrderedCollection new.
  	libDeps := Dictionary new.
  	pluginGenerators do: [:gen |
  		gen doNotGenerate ifFalse: [
+ 			self  puts: (gen configDotCMake at: (gen plugin name) ifAbsent:[gen configDotCmakeEmpty]). "THIS COULD BE A BUG. ONLY FileCopyPlugin is returning ConfigDotFilePlugin data"
- 			self  puts: (gen configDotCMake at: (gen plugin name) ifAbsent:[gen configDotCmakeEmpty]). 
  			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 ] ].
  
  	self cmd: 'target_link_libraries' params:  config executableName , ' ' ,
  		(libs inject: '' into: [:res :ea | res, ' ' , ea ]).
  
  	libDeps keysAndValuesDo: [ :moduleName :dependencies |
  		self 
  			cmd: 'add_dependencies' 
  			params: moduleName, ' ', dependencies ].  
  
  	self generateExportsH: libs.!

Item was changed:
  ----- Method: CMakeVMGeneratorForSqueak>>processThirdpartyLibraries (in category 'as yet unclassified') -----
  processThirdpartyLibraries
  	self flag:'tty'. "This generate call must be transformed to generateByTemplateFor:"
  	config thirdpartyLibs do: [:each | 
  		each generateFor: self ]
  
  !

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>forTheImpatient (in category 'pages') -----
  forTheImpatient
  	^HelpTopic
  		title:'For the impatient'
  		contents:
+ 'Here is the TL;DR synopsis of the methods* I implemented or overrode in creating the Linux64x86w32BitSqueakCogSpurConfig.
- 'Here is the TL;DR synopsis of the methods I implemented or overrode in creating the Linux64x86w32BitSqueakCogSpurConfig.
- For a step-by-step exposition please continue to the next page.
  
+ A step-by-step exposition begins on  the next page.
+ 
+ 
- TODO: Fill this in as you go
  cmakeCFlags  
  cmakeAddDefinitions
+ cmakeIncludePath
+ cmakeLibraryPath
+ compilerFlags
+ cmakeAddDefinitions
+ preferredIncludes
+ setGlobalOptionsAfterDetermineSystem:
+ cmakeSetSourceFilesProperties
+ externalLibs
+ cmakeAddExecutableNameOptionSource:
+ customizeVMPlugins
+ specifyingPlugins
  
  
+ *If the method uses the Method Redirect Pattern then (in most instances) the method to modify will be for the buildType. ie. ''methodnameBuildType''
+ 
  '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>generatePluginConfigs (in category 'pages') -----
  generatePluginConfigs
  	^HelpTopic
  		title:'generatePluginConfigs'
  		contents:
+ 'This method iterates over a collection of InterpreterPlugin subclasses and asks each class to populate itself with some basic information and write out its own CMakeLists.txt in a directory named after the plugin name.
- 'This method iterates over a collection of InterpreterPlugin subclasses* and asks each class to populate itself with some basic information
  
+ The processing is a bit complicated, but the setup is easy.
- generateFor: aCMakeVMGenerator internal: aBoolean 
  
+ The collections of  plugin classes are stored in our Configuration. We cover that next in Specifying Plugins'!
- 	^ aCMakeVMGenerator 
- 		generatePlugin: self 
- 		internal: aBoolean
- 		extraRules: nil
- 
- Then it 
- 		
- CMakeVMGeneratorForSqueak generatePlugin: aPlugin internal: aBoolean extraRules: aBlock
- 	" this method called back from plugin"
- 	^ CMakePluginGeneratorForSqueak new
- 		generate: aPlugin for: self internal: aBoolean extraRules: aBlock		
- 		
- Which ends up at 
- 
- CMakePluginGeneratorForSqueak >> generateByTemplate		
- 		
- Here we see the familiar populating of CMakeTemplate and the writing of CMake output		
- 		
- bash-4.2$ cat ADPCMCodecPlugin/CMakeLists.txt 
-   message( "Adding internal plugin: ADPCMCodecPlugin")
-   set(pluginName "ADPCMCodecPlugin")
-   set(pluginSrc "${srcPluginsDir}/ADPCMCodecPlugin")
-   set(pluginCross "${crossDir}/plugins/ADPCMCodecPlugin")
-   set(pluginPlatform "${targetPlatform}/plugins/ADPCMCodecPlugin")
-   set(LINKLIBS )
-   add_definitions(-DSQUEAK_BUILTIN_PLUGIN)
-   list( APPEND sources  "${pluginSrc}/ADPCMCodecPlugin.c")
-   include_directories(  ${pluginSrc} ${pluginCross} ${targetPlatform}/plugins/${pluginName})
-   add_library(ADPCMCodecPlugin  STATIC   ${sources})
-   set(linkFlags "${linkFlags} -m32")
-   set_property(TARGET ADPCMCodecPlugin PROPERTY LINK_FLAGS ${linkFlags})
- 
-   IF(ADPCMCodecPlugin_dependencies)
-          ADD_DEPENDENCIES( ADPCMCodecPlugin  ${ADPCMCodecPlugin_dependencies})
-   ENDIF( ADPCMCodecPlugin_dependencies)
- 
- 
- *Where those collections of  plugin classes are stored in our Configuration. We cover that next in Specifying Plugins'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>pages (in category 'accessing') -----
  pages
  	^#(overview 
  tests 
  identifyPlatform 
  identifyPlatformAbstractBaseClass
  identifyBuilder
  createTheConfiguration
  excludingConfigFromBuilds
  setAvailableBuildTypes
  firstCMakeGeneration
  tackingStockOne
  cPlatformConfigForSqueak
  methodRedirectPattern
  theVMGenerator
  tackingStockTwo
  forTheImpatient
  setGlobalOptions
  cmakePrefixPath
  cmakeIncludePath
  cmakeLibraryPath
  cmakeIncludeModules
  cmakeCFlags
  cmakeAddDefinitions
  cmakeWriteDirectoriesDotCmake
  cmakeIncludeDirectories
  preferredIncludes
  standardIncludes
  setGlobalOptionsAfterDetermineSystem
  extraVMSettings
  setCoreSources
  setPlatformSources
  setCrossSources
  setExtraSources
  cmakeSetSourceFilesProperties
  cmakeListAppendLINKLIBSelements
  cmakeAddExecutableNameOptionSource
  setExecutableOutputPath
  addVMPlugins
  generatePluginConfigs
  specifyingPlugins
  
  processThirdpartyLibraries
  processPlugins
+ postBuildActions
  
- 
  setConfigurationDirectory
  setOutputDirectory
  compilingLinkingSetup
  customizeVMDrivers
  
  aNoteOnFoo
  )
  
  !

Item was added:
+ ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>postBuildActions (in category 'pages') -----
+ postBuildActions
+ 	^HelpTopic
+ 		title:'postBuildActions:'
+ 		contents:
+ 'postBuildActions: implements the Method Redirect pattern.
+ 
+ ToolSet browse: CPlatformConfigForSqueak selector: #postBuildActions:
+ 
+ Since the configuration is configured for buildType: #build the method redirect pattern will redirect to
+ 
+ SystemNavigation browseAllImplementorsOf: #postBuildActionsBuild:
+ 
+ We see in CPlatformConfigForSqueak that a sublcass must implement it via ''self subclassResponsibility''.
+ 
+ The platform Config SqueakUnixConfig implements this. It can be over-ridden or extended as needed.
+ 
+ We have nothing new to do here.
+ '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>processPlugins (in category 'pages') -----
  processPlugins
  ^HelpTopic
  		title:'Process Plugins'
  		contents:
  'SystemNavigation browseAllImplementorsOf: #processPlugins:
  
+ This method is inhereted from the pharo code. I do not fully understand the reasoning behind it. I expect it will be refactored or rewritten.
+ See the method comment in 
+ SystemNavigation browseAllImplementorsOf: #initializeConfigDotCmakeFiles
+ 
+ Presently it does (at least) three things.
+ 
+ First, it adds plugin information to the master CMakeLists.txt file typically the add_subdirectory(''PluginName'') cmake command.
+ 
+ Second, it adds plugin information to the master CMakeLists.txt file from the CMakePluginGeneratorForSqueak>>configDotSomePluginName group of methods
+ 
+ 
+ SystemNavigation browseAllImplementorsOf: #configDotFilePlugin
+ 
+ 
+ Third it generates the sqNamedPrims.h file reproduced below.
+ 
+ bash-4.2$ cat sqNamedPrims.h 
+ /* This is automatically generated file using CVMMaker on 9 May 2016 2:26:20.906098 pm */
+ extern sqExport vm_exports[];
+ extern sqExport os_exports[];
+ extern sqExport ADPCMCodecPlugin_exports [];
+ extern sqExport AsynchFilePlugin_exports [];
+ extern sqExport B2DPlugin_exports [];
+ extern sqExport BitBltPlugin_exports [];
+ extern sqExport BMPReadWriterPlugin_exports [];
+ extern sqExport CroquetPlugin_exports [];
+ extern sqExport ZipPlugin_exports [];
+ extern sqExport DropPlugin_exports [];
+ extern sqExport DSAPrims_exports [];
+ extern sqExport FFTPlugin_exports [];
+ extern sqExport FileCopyPlugin_exports [];
+ extern sqExport FilePlugin_exports [];
+ extern sqExport FloatArrayPlugin_exports [];
+ extern sqExport FloatMathPlugin_exports [];
+ extern sqExport JoystickTabletPlugin_exports [];
+ extern sqExport Klatt_exports [];
+ extern sqExport LargeIntegers_exports [];
+ extern sqExport Matrix2x3Plugin_exports [];
+ extern sqExport MIDIPlugin_exports [];
+ extern sqExport MiscPrimitivePlugin_exports [];
+ extern sqExport Mpeg3Plugin_exports [];
+ extern sqExport SecurityPlugin_exports [];
+ extern sqExport SerialPlugin_exports [];
+ extern sqExport SocketPlugin_exports [];
+ extern sqExport SoundCodecPrims_exports [];
+ extern sqExport SoundPlugin_exports [];
+ extern sqExport StarSqueakPlugin_exports [];
+ extern sqExport SurfacePlugin_exports [];
+ extern sqExport LocalePlugin_exports [];
+ 
+ sqExport *pluginExports[] = {
+         vm_exports,
+         os_exports,
+ ADPCMCodecPlugin_exports,
+ AsynchFilePlugin_exports,
+ B2DPlugin_exports,
+ BitBltPlugin_exports,
+ BMPReadWriterPlugin_exports,
+ CroquetPlugin_exports,
+ ZipPlugin_exports,
+ DropPlugin_exports,
+ DSAPrims_exports,
+ FFTPlugin_exports,
+ FileCopyPlugin_exports,
+ FilePlugin_exports,
+ FloatArrayPlugin_exports,
+ FloatMathPlugin_exports,
+ JoystickTabletPlugin_exports,
+ Klatt_exports,
+ LargeIntegers_exports,
+ Matrix2x3Plugin_exports,
+ MIDIPlugin_exports,
+ MiscPrimitivePlugin_exports,
+ Mpeg3Plugin_exports,
+ SecurityPlugin_exports,
+ SerialPlugin_exports,
+ SocketPlugin_exports,
+ SoundCodecPrims_exports,
+ SoundPlugin_exports,
+ StarSqueakPlugin_exports,
+ SurfacePlugin_exports,
+ LocalePlugin_exports,
+ NULL
+ 
+ 
+ 
+ 
+ '!
- write me..'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>processThirdpartyLibraries (in category 'pages') -----
  processThirdpartyLibraries
  	^HelpTopic
  		title:'Process Third Party Libraries'
  		contents:
  'SystemNavigation browseAllImplementorsOf: #processThirdpartyLibraries
  
+ I have no idea what this does. It exists in the pharo codebase. 
+ 
+ If I do figure out its utility, then the processing architecture will be similar or identical to the Plugin processing.
+ 
+ i.e. Libraries will be represented by objects which will have the responsibility of generating ''stuff''.
+ 
+ 
+ 
+ .'!
- write me..'!

Item was changed:
  ----- Method: CMakeVMMakerSqueakStepByStepNewConfigurationHelp class>>setExecutableOutputPath (in category 'pages') -----
  setExecutableOutputPath
+ 	"This method was automatically generated. Edit it using:"
+ 	"a HelpBrowser edit: #setExecutableOutputPath"
  	^HelpTopic
+ 		title: 'setExecutableOutputPath'
+ 		contents: 
- 		title:'setExecutableOutputPath'
- 		contents:
  'SystemNavigation browseAllImplementorsOf: #setExecutableOutputPath
  
   We see that this is implemtented in CPlatformConfigForSqueak.
  
  It creates a CMakeSet object and sets the ''EXECUTABLE_OUTPUT_PATH'' variable to self outputDir
  
  SystemNavigation browseAllImplementorsOf: #outputDir
  
+ Which redirects to 
- This look customizable too, but I doubt we need it.
  
+ (CPlatformConfigForSqueak basicNew) outputDirName
+ 
+ The #outputDir method is a legacy method from the pharo code. It should be factored out after the dependency on the pharo code is removed.!!' readStream nextChunkText!
- '!

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>generateByTemplate (in category 'source generation') -----
  generateByTemplate
+ 	self subclassResponsibility
+ !
- 	self 
- 		generatePluginsList;                                        "informative list of plugins for end user"
- 		generateLicense;                                             "Squeak license"
- 		generateUtilsCmake;                                       "Ian's useful CMake macros. used extensivelly."
- 		generatePluginsCmake;                                   "Ian's CMake Plugins Processing"
- 		generateVmBuildCmake;                                  "Ian's CMake Build script"
- 		generateVmConfigCmake;                               "Ian's config.cmake file used to generate gnu config.h"
- 		generateVmConfigIn;                                       "Ian's code, not sure what it does yet"
- 		generateTestDoubleWordAlignmentC;             "Ian's platform tests used in configuration"
- 		generateTestDoubleWordOrderC;
- 		generateTestLanginfoCodesetC.
- 	^ CMakeVMGeneratorForSqueak generateByTemplate: self !

Item was removed:
- ----- Method: Linux32ARMv6Config>>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' )
- 	].
- !

Item was removed:
- ----- Method: Linux32x86Config>>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: Linux64x64Config>>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: 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 removed:
- ----- 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 removed:
- ----- Method: SqueakBSD32x86Config>>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: SqueakIOSConfig>>postBuildActionsBuild: (in category 'cmake buildType redirects') -----
- postBuildActionsBuild: aMaker
- 	"N.B. tty. This code was copied from Pharo code and converted to templates. Do not assume output it is complete or correct."
- 	" override to add custom rules after all targets is defined "
- 	self write: self fixLibsTemplate toFile: 'fix_libs.cmake'.
- 	
- 	aMaker config templates
- 		addLast:((CMakeSet new) variable:#bundlePath value:  '${outputDir}/', self executableName, '.app');   "no clue what these are. tty"
- 		addLast:((CMakeSet new) variable: #pluginsRelPath value:  '@executable_path/Plugins');
- 		addLast:(CMakeIOSInstallCode new).
- 			
- "					FILE(GLOB_RECURSE bLibs /${externalModulesDir}/*.*)
- "!

Item was removed:
- ----- Method: SqueakSunOS32x86Config>>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: SqueakUnixConfig>>generateByTemplate (in category 'source generation') -----
+ generateByTemplate
+ self flag:'tty: will need this in non-unix platforms'.
+ 	self 
+ 		generatePluginsList;                                        "informative list of plugins for end user"
+ 		generateLicense;                                             "Squeak license"
+ 		generateUtilsCmake;                                       "Ian's useful CMake macros. used extensivelly."
+ 		generatePluginsCmake;                                   "Ian's CMake Plugins Processing"
+ 		generateVmBuildCmake;                                  "Ian's CMake Build script"
+ 		generateVmConfigCmake;                               "Ian's config.cmake file used to generate gnu config.h"
+ 		generateVmConfigIn;                                       "Ian's code, not sure what it does yet"
+ 		generateTestDoubleWordAlignmentC;             "Ian's platform tests used in configuration"
+ 		generateTestDoubleWordOrderC;
+ 		generateTestLanginfoCodesetC.
+ 	^ CMakeVMGeneratorForSqueak generateByTemplate: self !

Item was added:
+ ----- Method: SqueakUnixConfig>>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).
+ 
+ !



More information about the Vm-dev mailing list