Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker: http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.93.mcz
==================== Summary ====================
Name: CMakeVMMakerSqueak-tty.93 Author: tty Time: 27 November 2014, 10:27:39.203 am UUID: 5e3bd702-302a-41c3-880e-bc784a9d7e4c Ancestors: CMakeVMMakerSqueak-tty.92
Added a stub START HERE help class after returning to the project after several months and realizing I had forgotten everything and there was no documentation on things a newbie would need to get familiarized with creating builds.
=============== Diff against CMakeVMMakerSqueak-tty.92 ===============
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" - setDirectories: self; - cmakeIncludeDirectories: self; - preferredIncludes; - standardIncludes; - extraVMSettings: self; 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]. extPlugins := self generatePluginConfigs: config internalPlugins internal: true. intPlugins := self generatePluginConfigs: config externalPlugins internal: false. self processThirdpartyLibraries. self processPlugins: intPlugins, extPlugins. self cmd: 'target_link_libraries' params: self moduleName , ' ${LINKLIBS}'. config postBuildActions: self.. self saveFile. self generateBuildScript!
Item was changed: ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>pages (in category 'pages') ----- pages + ^#(overview prerequisites terms igorStasenkoDesign tests buildersAndConfigs plugins pthreads configDotCmake templates vmplugins)! - ^#(overview prerequisites terms igorStasenkoDesign buildersAndConfigs plugins pthreads configDotCmake templates vmdrivers)!
Item was added: + ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>tests (in category 'pages') ----- + tests + ^HelpTopic + title:'Tests' + contents: + ' + When all tests pass. This does not mean the classes are configured correctly for source,output and build directories. + + It does mean nothing structural is preventing that from being implemented. + + '!
Item was removed: - ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>vmdrivers (in category 'pages') ----- - vmdrivers - ^HelpTopic - title:'VMDrivers' - contents:' - - TODO CMakeVMMakerSqueak-VMDriver purpose, configuration and use'!
Item was added: + ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>vmplugins (in category 'pages') ----- + vmplugins + ^HelpTopic + title:'VMPlugins' + contents:' + + TODO CMakeVMMakerSqueak-VMPlugin purpose, configuration and use'!
Item was added: + ----- Method: CMakeVMMakerSqueakHelp class>>key (in category 'accessing') ----- + key + ^'CMakeVMMakerSqueakHelp'!
Item was changed: ----- Method: CMakeVMMakerSqueakHelp class>>pages (in category 'accessing') ----- pages + ^#(CMakeVMMakerSqueakStartHereHelp CMakeVMMakerSqueakDeveloperHelp CMakeVMMakerSqueakBuildersHelp CMakeVMMakerSqueakHowToCreateNewConfigurationHelp)! - ^#(CMakeVMMakerSqueakDeveloperHelp CMakeVMMakerSqueakBuildersHelp CMakeVMMakerSqueakHowToCreateNewConfigurationHelp)!
Item was added: + CMakeVMMakerSqueakHelp subclass: #CMakeVMMakerSqueakStartHereHelp + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMakerSqueak-Help'!
Item was added: + ----- Method: CMakeVMMakerSqueakStartHereHelp class>>bookName (in category 'accessing') ----- + bookName + ^'CMakeVMMaker Start Here'!
Item was added: + ----- Method: CMakeVMMakerSqueakStartHereHelp class>>pages (in category 'accessing') ----- + pages + ^#(scratch shortVersionLinuxBuild)!
Item was added: + ----- Method: CMakeVMMakerSqueakStartHereHelp class>>scratch (in category 'pages') ----- + scratch + ^HelpTopic + title: 'Start Here Scratch' + contents: + 'Goal is that a complete newbie can open this and get up and running. + + '!
Item was added: + ----- Method: CMakeVMMakerSqueakStartHereHelp class>>shortVersionLinuxBuild (in category 'pages') ----- + shortVersionLinuxBuild + ^HelpTopic + title: 'Short Version Linux Build' + contents: + 'These steps will familiarize you with the CMakeVMMaker system from a user perspective. At the end of this Help Topic you should have a working system for Linux. + Each step is an action followed by an explanation of what you are looking at. + + 1. (SqueakLinux64x86w32CompatBuilder default) browseHierarchy + + CMakeVmMakerSqueak uses Builders to build builds. + The author''s system is a 64 bit architecture with 32 bit compatability libraries installed, so he uses the SqueakLinux64x86w32CompatBuilder. + Builder. + + 2. (SqueakLinux64x86w32CompatBuilder default) browse + The Classes in the CMakeVMMakerSqueak-Builder Class Category are named with the convention "Squeak[Operating System][Architecture][Miscelaneous]Builder". + + If you are compiling on a pure 32 bit linux box, use the (SqueakLinux32x86Builder default) builder + + A pure 64 bit linux build would require the (SqueakLinux32x86_64Builder default) builder. + + The same convention holds for other operating systems (mac, windows, etc) + + 2. (SqueakLinux64x86w32CompatBuilder default) configurationsCategory inspect + + In CmakeVMMakerSqueak, Builders utilize "Configurations" to generate "builds". + Configurations are classes and are stored in specific class categories . + Open a browser and look in the "CMakeVMMakerSqueak-Linux64X86-32BitCompatibility" category and you will see the Configuration classes available for that builder. + + + + 3. (SqueakLinux64x86w32CompatBuilder default) allAvailableBuildTypes + + + do c + + '!
Item was added: + ----- Method: CPlatformConfigForSqueak>>cmakeWriteDirectoriesDotCmake: (in category 'cmake') ----- + cmakeWriteDirectoriesDotCmake: aMaker + "SystemNavigation default browseMethodsWhoseNamesContain: 'setupDirectories:'" + self subclassResponsibility!
Item was removed: - ----- Method: CPlatformConfigForSqueak>>vmdrivers (in category 'accessing') ----- - vmdrivers - ^vmdrivers!
Item was added: + ----- Method: CPlatformConfigForSqueak>>vmplugins (in category 'accessing') ----- + vmplugins + ^vmplugins!
Item was removed: - ----- Method: Linux64x86w32BitConfig>>zaddVMDriversBuild: (in category 'cmake buildType redirects') ----- - zaddVMDriversBuild: aMaker - |temp o| - "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" - o := String new writeStream. - temp := OrderedCollection new. - (enabledebugmessages) - ifTrue:[ templates - addLast:((CMakeMessage new) message: (self class name) , 'addVMDriversBuild:') - ] . - temp - " cmakeGen printHeader; - project: name; - include: '../directories.cmake';" - addLast: ((CMakeHeader new) configurationName: self class name ); - addLast: ((CMakeProject new)variable: self executableName ); - addLast: ((CMakeInclude new) file: ((self buildDirName), FileDirectory slash, 'directories.cmake')); "??" - addLast:((CMakeAddDefinitions new) definitions: self compilerFlags asOrderedCollection); - addLast:((CMakeAddDefinitions new) definitions: (OrderedCollection with:'-fPIC' with:'-DPIC' )); - addLast:((CMakeSet new) variable:'sources' quotedValue: '${targetPlatform}/vm-display-null/sqUnixDisplayNull'); - addLast:((CMakeAddLibrary new) - library: 'vm-display-null' - type: 'SHARED' - sources: #('${targetPlatform}/vm-display-null/sqUnixDisplayNull')); - addLast: ((CMakeIncludeDirectories new) - dirs: (OrderedCollection - with: #('${crossDir}/plugins/FilePlugin' '${targetPlatform}/plugins/B3DAcceleratorPlugin' '${crossDir}/plugins/B3DAcceleratorPlugin'))); - addLast:((CMakeSet new) variable: 'LIBRARY_OUTPUT_PATH' quotedValue:'self outputDir fullName'); - addLast:((CMakeListAppend new) list: 'LINKLIBS' elements: (self externalLibs)); - addLast:((CMakeTargetLinkLibraries new) target: 'vm-display-null' items: (OrderedCollection with: '${LINKLIBS}')); - addLast:((CMakeSetTargetProperties new) - target: 'vm-display-null' - propertiesandvalues: (OrderedCollection with: 'PREFIX "" ' with: 'SUFFIX "" ' with: 'LINK_FLAGS ' , (self compilerFlags))). - - temp do: [:each | o nextPutAll: (each content); cr]. - self write: (o contents) toFile: 'directories.cmake'. - (enabledebugmessages) - ifTrue:[ - templates - addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) - ]. - templates addLast: ((CMakeInclude new) file: 'directories.cmake'). - - - aMaker message: 'addVMDrivers: aMaker'. - self - addDriver: 'vm-display-null' - sources: #( - '${targetPlatform}/vm-display-null/sqUnixDisplayNull' ) - generator: aMaker - externalLibs: #(); - - addDriver: 'vm-display-X11' - sources: #( - '${targetPlatform}/vm-display-X11/sqUnixX11' - '${targetPlatform}/vm-display-X11/sqUnixMozilla' ) - generator: aMaker - externalLibs: (self externalLibs); "#( SM ICE GL X11 nsl dl); " - - addDriver: 'vm-sound-ALSA' - sources: #( - '${targetPlatform}/vm-sound-ALSA/sqUnixSoundALSA' ) - generator: aMaker - externalLibs: #(); - - addDriver: 'vm-sound-null' - sources: #( - '${targetPlatform}/vm-sound-null/sqUnixSoundNull' ) - generator: aMaker - externalLibs: #(). - !
Item was added: + ----- Method: SqueakMacintoshConfig>>cmakeWriteDirectoriesDotCmake: (in category 'cmake') ----- + cmakeWriteDirectoriesDotCmake: aMaker + |temp o| + "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" + o := String new writeStream. + temp := OrderedCollection new. + temp + addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); + addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); + addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); + addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); + addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); + addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); + addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); + addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); + addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); + addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); + addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); + addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); + addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). + temp do: [:each | o nextPutAll: (each content); cr]. + self write: (o contents) toFile: 'directories.cmake'. + (enabledebugmessages) + ifTrue:[ + templates + addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) + ]. + templates addLast: ((CMakeInclude new) file: 'directories.cmake'). + + !
Item was removed: - ----- Method: SqueakMacintoshConfig>>setDirectories: (in category 'cmake') ----- - setDirectories: aMaker - |temp o| - "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" - o := String new writeStream. - temp := OrderedCollection new. - temp - addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); - addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); - addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); - addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); - addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); - addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); - addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); - addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); - addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); - addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); - addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); - addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); - addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). - temp do: [:each | o nextPutAll: (each content); cr]. - self write: (o contents) toFile: 'directories.cmake'. - (enabledebugmessages) - ifTrue:[ - templates - addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) - ]. - templates addLast: ((CMakeInclude new) file: 'directories.cmake'). - - !
Item was added: + ----- Method: SqueakUnixConfig>>cmakeWriteDirectoriesDotCmake: (in category 'cmake') ----- + cmakeWriteDirectoriesDotCmake: aMaker + |temp o| + "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" + o := String new writeStream. + temp := OrderedCollection new. + temp + addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); + addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); + addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); + addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); + addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); + addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); + addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); + addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); + addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); + addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); + addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); + addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); + addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). + temp do: [:each | o nextPutAll: (each content); cr]. + self write: (o contents) toFile: 'directories.cmake'. + (enabledebugmessages) + ifTrue:[ + templates + addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) + ]. + templates addLast: ((CMakeInclude new) file: 'directories.cmake'). + + !
Item was removed: - ----- Method: SqueakUnixConfig>>setDirectories: (in category 'cmake') ----- - setDirectories: aMaker - |temp o| - "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" - o := String new writeStream. - temp := OrderedCollection new. - temp - addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); - addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); - addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); - addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); - addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); - addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); - addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); - addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); - addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); - addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); - addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); - addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); - addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). - temp do: [:each | o nextPutAll: (each content); cr]. - self write: (o contents) toFile: 'directories.cmake'. - (enabledebugmessages) - ifTrue:[ - templates - addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) - ]. - templates addLast: ((CMakeInclude new) file: 'directories.cmake'). - - !
Item was added: + ----- Method: SqueakWindowsConfig>>cmakeWriteDirectoriesDotCmake: (in category 'cmake') ----- + cmakeWriteDirectoriesDotCmake: aMaker + |temp o| + "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" + o := String new writeStream. + temp := OrderedCollection new. + temp + addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); + addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); + addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); + addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); + addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); + addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); + addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); + addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); + addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); + addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); + addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); + addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); + addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). + temp do: [:each | o nextPutAll: (each content); cr]. + self write: (o contents) toFile: 'directories.cmake'. + (enabledebugmessages) + ifTrue:[ + templates + addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) + ]. + templates addLast: ((CMakeInclude new) file: 'directories.cmake'). + + !
Item was removed: - ----- Method: SqueakWindowsConfig>>setDirectories: (in category 'cmake') ----- - setDirectories: aMaker - |temp o| - "We could put these inline, but other components include the directories.cmake file. So, we continue that convention" - o := String new writeStream. - temp := OrderedCollection new. - temp - addLast: ((CMakeSet new) variable: 'topDir' quotedValue: (self topDir fullName)); - addLast: ((CMakeSet new) variable: 'buildDir' quotedValue: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName])); - addLast: ((CMakeSet new) variable: 'thirdpartyDir' quotedValue: '${buildDir}/thirdParty'); - addLast: ((CMakeSet new) variable: 'platformsDir' quotedValue: (self platformsDir)); - addLast: ((CMakeSet new) variable: 'srcDir' quotedValue: (self srcDir pathName)); - addLast: ((CMakeSet new) variable: 'srcPluginsDir' quotedValue: (pluginsDir ifNil: [ '${srcDir}/plugins' ])); - addLast: ((CMakeSet new) variable: 'srcVMDir' quotedValue: '${srcDir}/vm'); - addLast: ((CMakeSet new) variable: 'platformName' quotedValue: (self platformName)); - addLast: ((CMakeSet new) variable: 'targetPlatform' quotedValue: '${platformsDir}/${platformName}'); - addLast: ((CMakeSet new) variable: 'crossDir' quotedValue: '${platformsDir}/Cross'); - addLast: ((CMakeSet new) variable: 'platformVMDir' quotedValue: '${targetPlatform}/vm}'); - addLast: ((CMakeSet new) variable: 'outputDir' quotedValue: (self outputDir fullName)); - addLast: ((CMakeSet new) variable: 'externalModulesDir' quotedValue: (self externalModulesDir)). - temp do: [:each | o nextPutAll: (each content); cr]. - self write: (o contents) toFile: 'directories.cmake'. - (enabledebugmessages) - ifTrue:[ - templates - addLast:((CMakeMessage new) message: (self class name), ' setDirectories: aMaker' ) - ]. - templates addLast: ((CMakeInclude new) file: 'directories.cmake'). - - !
vm-dev@lists.squeakfoundation.org