
Hi, just to elaborate a bit. We *can* build cross compiler, and cross compile ghc with the current make based build system. I'm not certain how well packaging binary distributions of cross compiled ghc's work. I've only run into several when trying to build binary distributions for cross compilers (compiler host != compiler target). This is also where the relocatable topic came up. If the build system would build ghc in such a way that I could just take the stage1/stage2/stageN folder and relocate it into it's final place. Building binary distributions would be a simple as packaging up that folder. If we want to do some additional configuration on the install host, we could add an automake script, but it wouldn't be strictly necessary. For the case of cross compilers, I'm pretty much sure, I do want almost none of the current distrib configure script. My toolchain is locked down pretty hard, so I know the tools I *need* to use. Anything that the configure script at install time could mess up is just going to result in more issues down the line. Now as mentioned I was able to get most of the relocatable logic sorted by dropping the wrapper script, and have ghc determine it's topdir on it's own (for mac and linux) by reusing the codepaths already in place for windows. The package db *does* understand $topdir and ${pkgroot}. Again reusing the $topdir logic, present for windows, allows relocatable package databases. Now the final issue that came up is dynamic libraries, which on macOS to some degree encode their location. However at build time the layout of libraries is sufficiently different from the layout of libraries once installed. Which would require to do some additional path manipulation with the insall_name_tool at install time. To make this easier, it would be preferable to have the same layout at build time as it will be at install time. Another issue I have with the current build system is, that everything is built *in tree*. This means that a) if cleaning doesn't work properly, I might have some stale data lurking around and b) I am unable to build multiple configurations from the same source tree (or modifications thereof) without resorting to some commit/push/pull on local copies of the source tree, or wiping out the source tree for each build. Therefore, after trying to relocate build artifacts in the current build system such that build and install layouts are more similar. I hereby declare defeat. Not only would this change the way the current build system works quite a bit, it's als pretty hard to refactor the current aged build system in that way, and I believe it would result in a number of additional bugs. And finally, even if that change would make it into GHC, Hadrian would have to be adapted to it as well. I have now started trying to graft this different layout ontop of Hadrian. If this works out as I hope. I believe it would drastically simplify the installation rules as well as binary distribution rules in Hadrian. It might also provide me with some knowledge about Hadrian, and how much I like/dislike it over the current make system. Maybe this is the direction we need to take to make Hadrian a viable option for the build system. Otherwise I fear Hadrian will never make it into ghc, if the current build system keeps evolving and Hadrian fails to keep up. Ideally we'd probably have features in Hadrian that the current build system is lacking, which make Hadrian the attractive alternative. E.g. moving Hadrian to "can do X better" instead of "can also build GHC, but doesn't have all the features that the current build system has". Cheers, Moritz
On Oct 25, 2017, at 8:12 AM, Manuel M T Chakravarty
wrote: That doesn’t mean it can’t be used for cross-compilation once it is in the tree.
Am 25.10.2017 um 11:06 schrieb Brandon Allbery
: Discussion I've been seeing is Hadrian will not be ready for production use for 8.4. Pulling it in tree is scheduled for 8.4 mostly to make it easier to keep up to date with other changes and to make it easier to work on and test the various missing pieces: as I understand it, Hadrian can't yet deal with all of the various platform special cases, etc. that an actual release requires.
On Tue, Oct 24, 2017 at 8:02 PM, Manuel M T Chakravarty
wrote: Why are you saying that? I think, Moritz is right. Hadrian is supposed to be the build system for 8.4. Adding new functionality for cross-compilation to the old build system is frustrating.
Manuel
Brandon Allbery
: On Tue, Oct 24, 2017 at 5:02 AM, Moritz Angermann
wrote: However, I am now again at the point where I start hacking on the build system, while Hadrian is imminent. And this is quite depressing Realistically, while Hadrian going into the tree may be imminent, as I understand it Hadrian becoming the primary build system --- or even a viable alternative build system --- is not. It's more of a repo logistics speed bump. Just let it go for now.
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs