I'm on an interesting journey building a GHC cross-compiler on Windows to target iOS, using a third-party iOS toolchain for Windows (http://www.pmbaty.com/iosbuildenv/ for the curious), and I'm running into an unusual issue. Since this is a cross-compiler, this should be all stage 1, so in ghc_boot_platform.h I see what I expect: ... #define BUILD_OS "mingw32" #define HOST_OS "mingw32" #define TARGET_OS "ios" ... but ghcplatform.h shows: ... #define BUILD_OS "mingw32" #define HOST_OS "ios" ... #define TARGET_OS "ios" ... which I understand to mean that whatever's happening there is set up for the stage 2 compiler (unless there's some good magic happening here with the deriveConstants utility?). I discovered this through a pragma added at the error site: ... rts/Task.h:280:9: note: #pragma message: HOST_OS=ios rts/Task.h:287:5: error: aggregate value used where an integer was expected ... Anybody know what's going on here? Is it right (for some reason beyond my current comprehension) for ghcplatform.h to have the #defines it does? Is HOST_OS=ios correct, but rts/Task.h:280 should also check defined(ios_HOST_OS)? Thanks for the help, Alex
you may want to ask this on ghc-devs, seems to be a more general cross
compiler question than this list is able to handle
On Tue, Dec 10, 2013 at 7:08 PM, Alex Carter
I'm on an interesting journey building a GHC cross-compiler on Windows to target iOS, using a third-party iOS toolchain for Windows (http://www.pmbaty.com/iosbuildenv/ for the curious), and I'm running into an unusual issue. Since this is a cross-compiler, this should be all stage 1, so in ghc_boot_platform.h I see what I expect:
... #define BUILD_OS "mingw32" #define HOST_OS "mingw32" #define TARGET_OS "ios" ...
but ghcplatform.h shows:
... #define BUILD_OS "mingw32" #define HOST_OS "ios" ... #define TARGET_OS "ios" ...
which I understand to mean that whatever's happening there is set up for the stage 2 compiler (unless there's some good magic happening here with the deriveConstants utility?). I discovered this through a pragma added at the error site:
... rts/Task.h:280:9: note: #pragma message: HOST_OS=ios rts/Task.h:287:5: error: aggregate value used where an integer was expected ...
Anybody know what's going on here? Is it right (for some reason beyond my current comprehension) for ghcplatform.h to have the #defines it does? Is HOST_OS=ios correct, but rts/Task.h:280 should also check defined(ios_HOST_OS)?
Thanks for the help, Alex
_______________________________________________ iPhone mailing list iPhone@haskell.org http://www.haskell.org/mailman/listinfo/iphone
Yes, this is correct. ghc_boot_platform describes the platforms for the stage 1 compiler (assuming you're looking at the one in compiler/stage1). ghcplatform.h describes the platforms in use for compiled code, so the host in that case is ios. In fact ghcplatform.h shouldn't have a target platform at all - the only reason it does is for "backwards compatibility", though I don't remember exactly what goes wrong if we remove these. Cheers, Simon On 11/12/2013 00:08, Alex Carter wrote:
I'm on an interesting journey building a GHC cross-compiler on Windows to target iOS, using a third-party iOS toolchain for Windows (http://www.pmbaty.com/iosbuildenv/ for the curious), and I'm running into an unusual issue. Since this is a cross-compiler, this should be all stage 1, so in ghc_boot_platform.h I see what I expect:
... #define BUILD_OS "mingw32" #define HOST_OS "mingw32" #define TARGET_OS "ios" ...
but ghcplatform.h shows:
... #define BUILD_OS "mingw32" #define HOST_OS "ios" ... #define TARGET_OS "ios" ...
which I understand to mean that whatever's happening there is set up for the stage 2 compiler (unless there's some good magic happening here with the deriveConstants utility?). I discovered this through a pragma added at the error site:
... rts/Task.h:280:9: note: #pragma message: HOST_OS=ios rts/Task.h:287:5: error: aggregate value used where an integer was expected ...
Anybody know what's going on here? Is it right (for some reason beyond my current comprehension) for ghcplatform.h to have the #defines it does? Is HOST_OS=ios correct, but rts/Task.h:280 should also check defined(ios_HOST_OS)?
Thanks for the help, Alex
_______________________________________________ iPhone mailing list iPhone@haskell.org http://www.haskell.org/mailman/listinfo/iphone
participants (3)
-
Alex Carter -
Carter Schonwald -
Simon Marlow