[Haskell-cafe] Re: [Haskell] GHC 6.10 and OpenGL
Claus Reinke
claus.reinke at talk21.com
Tue Dec 2 14:57:46 EST 2008
> 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!-).
More information about the Haskell-Cafe
mailing list