[darcs-devel] Problem building darcs 2 on WinXP

Simon Marlow simonmarhaskell at gmail.com
Mon Dec 17 15:55:20 UTC 2007


Claus Reinke wrote:
>> I've installed MinGW, MSYS (with msysDTK, autoconf and automake), GHC,
>> zlib, libcurl and OpenSSL. I can run ./configure --target=mingw and
>> compile the source, but I get this linking error:
>>
>> Linking darcs ...
>> src/win32/System/Posix.o(.text+0x550):fake: undefined reference to `SleepEx'
>> collect2: ld returned 1 exit status
>> make: *** [darcs] Error 1
> 
> it might be a case of adding -fvia-C (used to be the default
> until recently). if that is true, you might want to file a ticket
> for ghc (change in default route gives failures and unhelpful
> error messages).
> 
> also, as a naive ffi user, i'd have expected
> 
>     foreign import ccall "winbase.h SleepEx" c_SleepEx :: DWORD -> BOOL -> IO DWORD
> 
> to match the
> 
>     WINBASEAPI DWORD WINAPI SleepEx(DWORD,BOOL);
> 
> in winbase.h, rather than the current
> 
>     foreign import ccall "winbase.h SleepEx" c_SleepEx :: CULong -> CUInt -> IO CInt
> 
> but i don't know whether that is any issue at all.

Looks like it should be

foreign import stdcall "winbase.h SleepEx" c_SleepEx ...

(i.e. stdcall rather than ccall)

this would cause it to work with -fvia-C but fail with -fasm, because the C 
compiler can see the prototype.  Arguably a bug in -fvia-C, but it's been 
that way for a very long time.

Cheers,
	Simon


More information about the darcs-devel mailing list