I mentioned a while back that my new php extension (
dbdo) used
libgda, and that i ran into a roadblock, that libgda was not available on windows. Well, after quite a bit of work, that is finally solved.
For those not interested in the how - it's available here
libgda for windowsIMPORTANT: you must be unzip the files to C:\libgda (so the providers are in C:\libgda\providers\*.dll)Note you need the dll's from the following files
(use
http://www.gimp.org/~tml/gimp/win32/downloads.html if any of these are out of date.)
http://www.gimp.org/~tml/gimp/win32/glib-2.4.5-20040903.ziphttp://www.gimp.org/~tml/gimp/win32/libiconv-1.9.1.bin.woe32.zip http://www.gimp.org/~tml/gimp/win32/gettext-runtime-0.13.1.zip from
ftp://ftp.zlatkovic.com/pub/libxml/
ftp://ftp.zlatkovic.com/pub/libxml/libxml2-2.6.14.win32.zip
ftp://ftp.zlatkovic.com/pub/libxml/libxslt-1.1.11.win32.zip
ftp://ftp.zlatkovic.com/pub/libxml/zlib-1.2.1.win32.zipfor mysql
http://mysql.mirrors.pair.com/Downloads/MySQL-4.0/mysql-4.0.21-win-noinstall.zipfor postgres
http://www.hagander.net/pgsql/win32snap/postgres_win32_7.5_devel.zipWhile I doubt I'll ever personally use the thing, It has been quite interesting building it. After trying out a few compilers (including MSVC, dev-cpp, cygwin) I settled on using mingw and cross compiling on linux. (yes the whole thing is built on linux!), and tested under win4lin.
I did experiment using make/configure, but concluded it was far easier to script the build process in PHP (
build.php), there is also a enviroment creator (
mkenv.php) which downloads all the necessary components (may need tweaking)
Other than this, there is a little fun involved in getting the mysql backend to build. Based on the instructions on
creating a mingW mysql client, you have to follow the windows bit at the bottom, pretty much word for word..
- download the mysql libs above
- copy the libmySQL.dll to a windows machine, and run the pexports (part of the mingw distro for windows) to get the def file.
- copy the defs file to the build same folder as the original .dll
- run the dll tool eg.
/usr/src/win32mingw/mysql-4.0.21-win/bin/#
/usr/src/win32mingw/cross-tools/bin/i386-mingw32msvc-dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmySQL.a -k
- Try running the builder - you get lots of errors like
unknown symbol mysql_init@4 ..... mysql_real_connect@16 etc. - edit the defs file manually (change mysql_init to mysql_init@4 - matching the prefixes to the missing symbols
- repeat step 4.
- if you got all the right @ signs it will build very hapilly.
The other big trick that I spotted from mysql++ was that you need to add -DSYMBOL=int to the gcc lines!! - that's not mentioned anywhere!! :)
Next step is finding if anyone can add dbdo to the build scripts for snaps.php.net