I believe these errors are caused by the wrong calling convention
being used in the Haskell bindings. This part in the configure script
tests the build (host) platform:
case "$host" in
*-mingw32) CALLCONV=stdcall ;;
*) CALLCONV=ccall ;;
esac
Since it doesn't test for Cygwin, you end up with the calling
convention being ccall, which leads to the linker errors because of
associated name mangling (you would also see run-time crashes if you
managed to somehow link your program).
Ah, that makes sense! And, indeed, for the archives, this workaround
fixes the issue (even when building from cygwin bash):
cabal install opengl glut --configure-option="--host=i386-unknown-mingw32"
--reinstall
Thanks, now FunWorlds can ride again!-)
I suppose we could document this on the OpenGL wiki, but even
better would be a fix to OpenGL's configure (apart from checking
the build environment (mingw) rather than the host (cygwin here), it
should ensure that the build uses exactly what configure has tested
successfully) or .cabal (allways setting the --host configure option
if on windows)?
[cc-ed to hopengl list, since this seems to be an OpenGL-specific
issue, not a general Cabal one; Cabal++ :-]
Claus
PS of course, a high-level interpretation of the linker errors, by
cabal or by ghc, would also help in such cases (linking object
code is a ghc-internal detail, we work with Haskell code!-).
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe