[Vm-dev] How to link dynamic library into a Squeak plugin on Mac
Intel
Simon Holland
s.holland at open.ac.uk
Mon Aug 27 10:35:20 UTC 2007
Bert Freudenberg-2 wrote:
>
>
> On Aug 25, 2007, at 16:54 , Simon Holland wrote:
>
>>
>>
>> Can anyone point to any examples or info on how to
>> link a dynamic library into a Squeak plugin build on Mac Intel?
>>
>> None of the following work
>>
>> PLIBS=$PLIBS
>> /Users/simon/squeak/platforms/unix/plugins/PortMidiLitePlugin/i386/
>> libportmidi.dylib
>> PLIBS=$PLIBS /usr/local/lib/libportmidi.dylib
>> PLIBS=$PLIBS -dynamiclib -Wl,-single_module -Wl,-install_name,
>> /usr/local/lib/libportmidi.dylib
>> PLIBS=$PLIBS -dynamiclib -Wl,-single_module -Wl,-install_name,
>> lportmidi
>> PLIBS=$PLIBS lportmidi
>>
>> (They compile fine but fail to load)
>>
>> libportmidi.dylib is installed in /usr/lib
>> and the environment variable
>> DYLD_LIBRARY_PATH is set to /usr/local/lib
>>
>> Recasting the plugin as a command line C application,
>> and dropping the relevant dylib into the XCode window
>> works with no bother.
>>
>> Cheers
>> Simon
>
> Last time I needed to do this I started with the XCode project for
> another plugin from SVN, modified it for my plugin, and just added
> the libs to it. Don't remember the details though.
>
> - Bert -
>
>
Thanks Bert!
In case anyone should be looking for the answer at a later date, here is
how to create an external squeak plugin on intel mac that links into an
external library (e.g. a dylib or .a static library).
1/ Use xcode to make a carbon bundle project from scratch.
2/ Apart from your plugin code and your external library you will need to
add the exactly correct minimum set of (slightly edited) vm header files.
3/ The set of headers and the necessary edit has been documented in
Japanese by the Takashi Yamamiya
http://www.smalltalk.jp/Squeak-ja/archives/lists.squeakfoundation.org/squeak-ja/2004-August/001783.html
and written up in English by Gerald Leeb http://g-24.net/squeak/ode.html.
4/ If you then run a conventional unix vm/plugin macintel build for your
plugin using a plugin Makefile.inc of
PLIBS=$PLIBS -L/usr/local/lib -dynamiclib -Wl,-single_module
-Wl,-install_name, lportmidi.
(in my case, given that I was linking to portmidi and put the dylib in that
location )
then the plugin will end up in the package contents of the VM.
4a/ Instead of step 4 you can just manually drop the plugin into the package
contents of a VM of the right version number, which I assume is the normal
deployment route.
Thanks all!
Simon
--
View this message in context: http://www.nabble.com/Newbie-problem-porting-PortMidi-to-Squeak--%28Mac-Intel%29-tf4324379.html#a12344712
Sent from the Squeak vm-dev mailing list archive at Nabble.com.
More information about the Vm-dev
mailing list