First I built all the dependancies myself from their current versions.
Also I use ActivePerl as perl interpreter.
My configure looks like this:
./configure --prefix=$MINGWPREFIX --disable-static --enable-shared --with-postgres=/mingw CFLAGS="-I$MINGWPREFIX/include/glib-2.0 -DLIBGDA_WIN32" LDFLAGS="-L$MINGWPREFIX/lib/glib-2.0" GMSGFMT=$MINGWPREFIX/bin/msgfmt MSGFMT=$MINGWPREFIX/bin/msgmerge XGETTEXT=$MINGWPREFIX/bin/xgettext
Then I make until I run into problems, address the problems and run make again.
Below are the tweaks I used to overcome individual obstacles.
* Issue: strtok_r (reentrant
version of strtok) does not exist on win32
* Solution: define it as an alias for strtok (supposed to be reentrant safe on win32):
cat >> libgda/gda-decl.h << EOF
#define strtok_r(s,d,p) strtok(s,d)
* Issue: libgda/gda-enum-types.h
is generated with extra data on comment lines
- MinGW/MSYS path before /*
- /n after */
probably a bug in glib-mkenums --fprod on glib2 for win32
* Solution: to do: find why this is generated by glib-mkenums --fprod on win32 and fix it
* Workaround: after configure change libgda/Makefile to not use --fprod
mv libgda/Makefile libgda/Makefile.bak
sed 's/--fprod \".*[^\\]\"//' libgda/Makefile.bak > libgda/Makefile
* Issue: win32/libgda_graph-3.0.la
and win32/libgda_handlers-3.0.la are zero sized
* Solution: for some reason libgda/sql-delimiter/libgda_sql_delimiter-3.0.la is generated correctly
so I just use a modified version of that (I know, it's a dirty workaround)
sed -e 's/libgda_sql_delimiter/libgda_graph/g' libgda/sql-delimiter/libgda_sql_delimiter-3.0.la > win32/libgda_graph-3.0.la
sed -e 's/libgda_sql_delimiter/libgda_handlers/g' libgda/sql-delimiter/libgda_sql_delimiter-3.0.la > win32/libgda_handlers-3.0.la
* Issue: win32/.libs/libgda_sql_delimiter-3.0.dll.a
* Solution: libgda/sql-delimiter/.libs/libgda_sql_delimiter-3.0.dll.a exists so just use that
ln -s libgda/sql-delimiter/.libs/libgda_sql_delimiter-3.0.dll.a win32/.libs/libgda_sql_delimiter-3.0.dll.a
* Issue: mkstemp does not exist
on win32 but the following files refer to it
* Solution: g_mkstemp does exist in glib2 so just use that
mv tools/gda-inspect-dict-file.c tools/gda-inspect-dict-file.c.bak
sed -e 's/mkstemp/g_mkstemp/g' tools/gda-inspect-dict-file.c.bak > tools/gda-inspect-dict-file.c
mv testing/gda-test-sql.c testing/gda-test-sql.c.bak
sed -e 's/mkstemp/g_mkstemp/g' testing/gda-test-sql.c.bak > testing/gda-test-sql.c
mv testing/gda-test-model-query.c testing/gda-test-model-query.c.bak
sed -e 's/mkstemp/g_mkstemp/g' testing/gda-test-model-query.c.bak > testing/gda-test-model-query.c
After this I can make install.
Like I said I haven't actually tested the results.
How can I run tests? I see there is a testing directory with executables. Do they need certain parameters and/or databases in order to actually run tests?
Can the solutions to the issues above be incorporated in libgda?
I'm sure at least the strtok_r and mkstemp ones are easy to fix.
The glib-mkenums --fprod issue could be a glib2 problem, I'm not sure.
Finally there are the problems with library related files in win32.
What was the goal of the win32 directory?
Can I tell the configure/make process not to use this?
One more question. I tried to get the latest SVN version and build
that, but since there is no configure I could not do this. I assume the
autoconf should generate those files but it just seems to choke.
Is there another way I could approach this?
P.S.: I'm glad I got this far. I was just about to give up since I also just compiled libdbi (see: http://libdbi.sourceforge.net/) with far less problems. But I believe libgda has a lot more to offer.