Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.24.mcz
==================== Summary ====================
Name: CMakeVMMakerSqueak-tty.24
Author: tty
Time: 2 June 2014, 4:48:26.39 pm
UUID: a0b14083-c36e-4bb1-8294-e4c0853b627b
Ancestors: CMakeVMMakerSqueak-tty.23
overrode write:toFile: for Squeak compatibility.
bug fix from previous iterations as my I had modified CMakeVMMaker CPlatformConf directly (my bad)
=============== Diff against CMakeVMMakerSqueak-tty.23 ===============
Item was changed:
+ ----- Method: SqueakCocoaIOSConfig>>prepareVMMaker (in category 'source generation') -----
- ----- Method: SqueakCocoaIOSConfig>>prepareVMMaker (in category 'as yet unclassified') -----
prepareVMMaker
| maker allPlugins |
"In CogVMs (in contrast to Interpreter VM) the generated sources are platform independent, therefore Cross is ok"
maker := VMMaker forPlatform: 'Cross'.
maker sourceDirectoryName: self srcDir pathName.
maker platformRootDirectoryName: self platformsDir.
allPlugins := self internalPlugins , self externalPlugins.
"touch plugins to force their source generation unconditionally"
allPlugins do: [:name | (Smalltalk globals at: name) touch ].
" Why we put all plugins as external? Because the generated sources are not different whether the plugins were defined as internal or external. VMMaker used to need this to to generate plugins.int and plugins.ext files. But since this is achieved in another way with CMakeVMMaker, there is no different at all to put all plugins as internal or as external."
maker externalModules addAll: allPlugins.
^ maker!
Item was added:
+ ----- Method: SqueakCocoaIOSConfig>>write:toFile: (in category 'directories') -----
+ write: aContents toFile: aFileName
+ "write a file to current output directory (buildDir).
+ use line end convention appropriate for config platform"
+
+ | bldDir |
+ bldDir := self buildDir.
+ bldDir isString
+ ifTrue: [ bldDir := FileDirectory directoryEntryFor: bldDir ].
+ bldDir assureExistence.
+ bldDir
+ forceNewFileNamed: aFileName
+ do: [:s | s
+ nextPutAll: (self fixLineEndsOf: aContents)]
+
+ !
Hi All,
I am not going to bother with the QVMProfileMacSupportPlugin that Pharo has and Squeak does not for the following reasons.
1. On pharo while the plugin exists in Smalltalk class, the only CMakeGenerator that uses it is broken.
2. There is no source code for this plugin in the pharo source tree.
3. In source.squeak.org VMMaker.oscog there is Qwaq-VMProfiling-eem.66 --which is not a plugin, but has both an uppercase 'Q' and a lowercase 'q'--so that tells me its robust (:
actually, its category is CogTools-VMProfiler which implies it does the job.
The pharo QVMProfileMacSupprtPlugin has one method: primitiveExecutableModulesAndOffsets and its class comment reads as such:
This class provides support for the VMProfiler on MacOS X. This support is for reading symbols from the executable. We can use the OS's nm command to list symbols in the VM executable and loaded libraries. To do this we need to know what libraries are loaded, not simply which libraries are linked against, since some libraries are loaded dynamically, and for each loaded library what the vm address relocation, if any, is for the loaded library. The primitive primitiveExecutableModulesAndOffsets returns these as an array of pairs, module name to relocation.
If somebody "really really" wants the thing, I will continue digging, but my impression is that the Cog work has bypassed the QVMProfileMacSupportPlugin.
Let me know.
tty
Hi All.
Like the ClipboardExtendedPlugin, there is existing ObjectiveCPlugin source in ./platforms/iOS/vm/src/vm/intplugins/ObjectiveCPlugin/ObjectiveCPlugin.c while the Smalltalk class is missing.
By saving Pharo's ObjectiveCPlugin from pharo to a package-cache and import into squeak, I can generate the CMakeLists.text file just fine.
Generating the source with VMMaker bombs at an inlining error that is above my head at the moment.
'InterpreterProxy>>callbackLeave: contains declaration for non-existent variable callbackID'
Please advise on how you would like me to proceed.
Class comment from the plugin follows my sig.
cheers.
tty
* Created by John M McIntosh on 9/17/08.
Some of this code was funded via a grant from the European Smalltalk User Group (ESUG)
Copyright (c) 2008 Corporate Smalltalk Consulting Ltd. All rights reserved.
MIT License
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
"This product includes software developed by Corporate Smalltalk Consulting Ltd (http://www.smalltalkconsulting.com)
and its contributors", in the same place and form as other third-party acknowledgments.
Alternately, this acknowledgment may appear in the software itself, in the same form and location as other
such third-party acknowledgments.