[Top] [All Lists]

Re: [Haskell-cafe] binding to C libraries on Windows was Low Level Audio

Subject: Re: [Haskell-cafe] binding to C libraries on Windows was Low Level Audio - Writing bytes to the sound card?
From: Andrew Coppin
Date: Sun, 06 Dec 2009 13:18:59 +0000
john lask wrote:
I think there are some misapprehensions here:-

Many haskell packages binding to c libraries will compile with ghc
without problems on windows - without cygwin, without mingw/msys system.

OK, well I haven't tried building every C binding on all of Hackage, just a few of them. So far none of them have worked. (Including wxHaskell, SDL, one of the database packages, etc.) It's got to the point where I've simply given up trying. Most such packages just don't seem to work on Windows, and nobody on the mailing lists or on IRC has any clue why. (I guess because few people in the Haskell community use Windows and understand how it's supposed to work.)

Some such packages build "out of the box" on windows, like the zlib
package which contains the c source for the c zlib library. GHC is able
to compile and build this packages without any other c
compiler/libraries/unix emulators etc because ghc itself contains part
of the gcc c compiler tool chain and comes with all c standard headers,
c++ headers and c/c++ runtime libraries.

Yes, I realised long ago that GHC uses GCC and other GNU build tools. (Presumably this makes porting to Windows far easier.) More recently I realised that it also includes a surprisingly large set of header files, seemingly including the entire Win32 API, which is interesting.

is only one gotch-ya - you need to have a import library for the gcc
tool chain (thats what ghc uses) i.e. a ".a" library and not the native
windows ".LIB" import library.

They're different?? o_O

Oh. Suddenly several things seem clearer...

If you don't have ".a" import library
but have the dll then the '.a' import library be built for any dll
relativley easily.

Any idea how?

the bigest problem hamperring cleaner builds of haskell packages on
windows is the lack of any standardised scheme for the installation of
c-libraries and header files (and of course the availability of a
suitable build of the library).

Isn't one of Cabal's jobs to figure out where stuff is? Can't we get Cabal on Windows to say "hey, I need to find foo.h, you know where that is?" Or something like that?

Another problem hampering the install of haskell packages on windows is
the use of the unix autoconf build system (./configure)   - package
writters note!

Heh. I found one Wiki page once describing how to set up a Cabal package. When it started talking about how to integrate Automake, I hung my head is dispair. (I believe the page in question is fixed now. But a lot of package authors seem to assume that everybody just uses Unix of some kind...)

Haskell-Cafe mailing list

<Prev in Thread] Current Thread [Next in Thread>