RE: un/dosifyPath in SysTools.lhs bug?

I always configure with --with-gcc=c:/mingw/bin/gcc and everything is fine. I see that the Building Guide suggests --with-gcc=/mingw/bin/gcc which I suspect is plain wrong. Try with the path syntax I use, and see if that helps. Meanwhile I'll modify the building guide. Simon | -----Original Message----- | From: glasgow-haskell-users-admin@haskell.org [mailto:glasgow-haskell-users-admin@haskell.org] | On Behalf Of Dominic Cooney | Sent: 14 April 2003 09:38 | To: glasgow-haskell-users@haskell.org | | I'm trying to build ghc (the 5.04.3 source tarball) on Windows, but right | after the ghc-inplace is written and is used to build something, ghc fails. | If I cut and paste the command* and run it with -v, it's evident that ghc is | trying to execute /cygdrive/c/mingw/bin/gcc, which is the gcc that I | ./configured --with-gcc. | | But ghc is a mingw executable! So I think runSomething in SysTools.lhs, or | whatever calls it, might have a bug. From the comments of runSomething it is | clear that it expects a 'native' program. Anyway, the problem can be fixed | by changing: | | cmd_line = pgm ++ ... | | to: | | cmd_line = (dosifyPath pgm) ++ ... | | And dosifyPath and undosifyPath (#if defined(mingw32_HOST_OS)) have no | regard for drive letters! Shouldn't they be something like: | | unDosifyPath xs = | case (subst '\\' '/' xs) of | drive : ':' : rest -> "/cygdrive/" ++ (drive : rest) | xs' -> xs' | | dosifyPath stuff | = subst '/' '\\' real_stuff | where | -- fully convince myself that /cygdrive/ prefixes cannot | -- really appear here. | cygdrive_prefix = "/cygdrive/" | | real_stuff | | cygdrive_prefix `isPrefixOf` stuff = | case (dropList cygdrive_prefix stuff) of | drive : rest -> drive : ':' : rest | | otherwise = stuff | | That comment re: cygdrive in dosifyPath is rather ominous... but those | changes at least allow ghc-inplace to start compiling the next thing... | | The build then barfed in rts doing: | | ../../ghc/compiler/ghc-inplace -O2 -package-name rts -O -Rghc-timing -c | Exception.hc -o Exception.o | | Because Exception.hc couldn't #include "Stg.h"; it seems the GHC include | path was specified as a couple of Options instead of a single FileOption, | which meant showOptions didn't dosify it. | | Doing a quick hack in showOptions to peek at Options for the /cygdrive/ | prefix keeps the build going. What I'm wondering is: | | Is anyone building GHC on Windows, and if so, how do you do it? | | Thanks, | | Dominic Cooney | | * The command is: | | ../../ghc/compiler/ghc-inplace -optc-mno-cygwin -optc-O -optc-Wall -optc-W | -optc-Wstrict-prototypes -optc-Wmissing-prototypes | -optc-Wmissing-declarations -optc-Winline -optc-Waggregate-return | -optc-Wbad-function-cast -optc-Wcast-align -optc-I../includes -optc-I. | -optc-Iparallel -optc-DCOMPILING_RTS -optc-fomit-frame-pointer | -optc-DDLLized -O2 -package-name rts -O -Rghc-timing -hisuf dll_hi -hcsuf | dll_hc -osuf dll_o -c Main.c -o Main.dll_o | | | _______________________________________________ | Glasgow-haskell-users mailing list | Glasgow-haskell-users@haskell.org | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
participants (1)
-
Simon Peyton-Jones