Last updated at 11:18 am UTC on 29 June 2009
This page describes the process to build CurlPlugin
Assuming that we have a working vmmaker+gcc setup to build regular squeak vm on a platform of choice here is the description of the build infrastructure:
CurlPlugin depends on libcurl which in turn has several other dependencies.
The version in use at a moment is http://www.gknw.net/mirror/curl/win32/curl-7.19.5-devel-mingw32.zip
This zip contains:
Runtime libs which (with the exception of curl.exe) go to the Squeak folder where VM recides. Another possibility is to place it into one of the system dll folders - but this can be messy as there may be other programs which use different libcurl version(s). So let us place it in the same directory where Squeak.exe and SquakFFIPrims.dll are sitting. This is a runtime dependency - it is needed to use the plugin, but does not necessary to compile it.
./bin: curl.exe. libcurl.dll libeay32.dll libidn-11.dll libssh2.dll libssl32.dll zlib1.dll
Headers which are used to compile the plugin. They are placed under the platforms/win32/plugins/CurlPlugin:
README config-win32.h curl/ libssh2_config.h
I have modified curl.h to prevent doubled inclusion of two versions of win32 socket headers on my system. The PlatformsWin32PluginsCurlPlugin.zip contains modified headers.
Static linktime libs which are being used when linking the plugin. We are interested in the *dll.a ones which represent stubs into dynamic runtime linking:
libcrypto.a libcurldll.a libidn.a libssh2.a libssl.a libz.a
libcurl.a libeay32.a libidn.dll.a libssh2dll.a libssl32.a libzdll.a
The description of the curl-7.19.5-devel-mingw32.zip has ended.
To build the plugin do (sorry, this is terse so experience in building VM is assumed):
- Create the working VMMaker setup for win32
- Get the libcurl bundle from http://www.gknw.net/mirror/curl/win32/curl-7.19.5-devel-mingw32.zip and place bin/*.dll from it directly into the Squeak-VM folder (where squeak.exe and plugin dll's are).
- Get the latest plugin source from http://www.squeaksource.com/CurlPlugin.html At the moment this is CurlPlugin-dao.22.mcz - expect changes in future.
- Get the win32 platform specific subtree for CurlPlugin and unpack it under the platform/win32/plugins. It contains headers (one of them is slightly modified by me), link-time libs and Makefile currently. Here it is: CurlPluginPlatformsWin32Plugins.zip
- Generate CurlPlugin as external plugin
- You should have collected everything at this point. Cross your fingers and compile the plugin. I'm issuing 'make CurlPlugin.dll' from windows cmd shell in platform/win32/build dir to make things fast. You may try to recompile the whole VM for a start.
- Copy the result platforms/win32/build/obj/CurlPlugin/CurlPlugin.dll into Squeak-VM folder. Open TestRunner and run CurlTests. Currently only #testApiTransfersParameters fails (initial values for some transfer statistics are wrong - probably because something has changed in new version of lubcurl C-library - I have not looked at it yet closely). The plugin should work fine nevetheless.