64-bit windows version?
Peter Tanski
p.tanski at gmail.com
Tue Jun 26 09:35:23 EDT 2007
On Jun 26, 2007, at 4:59 AM, Simon Marlow wrote:
> Peter Tanski wrote:
>
>> I keep on referring to this as temporary because there are two
>> different builds here:
>> (1) the build using the old mingw-GHC, without option support for
>> CL; and,
>> (2) the build using the new Windows-native GHC.
>
> Yes. And what I'm suggesting is the following - what I've been
> suggesting all along, but we keep getting sidetracked into sub-
> discussions:
>
> - we adapt the current build system to use the native GHC. I
> really don't
> think this is hard, and it's way quicker than replacing
> significant chunks
> of the build system, as you seem to be suggesting.
I don't have to replace large chunks of the system, although I have
added several separate makefiles--an mk/msvc_tools.mk and mk/
build.mk.msvc (which configure will copy into mk/build.mk). It is
almost done (the current system, I mean)--although I do have one
detail question: Clemens Fruhwirth sent a patch to add shared library
support for all architectures, i.e., MkDLL -> MkDSO (in compiler/main/
DriverPipeline.hs). I haven't seen the patch after I did my last
pull, yesterday. So I assume it has not been applied yet. How do you
want autoconf to detect the shared library extension and libtool
support? AC_PROG_LIBTOOL does not seem to work well on OS X: OS X
libtool is Apple, not GNU (it is also a binary, not a driver-script
for libltdl); that macro failed the last time I built GMP and I had
to make shared libraries manually). This is precient because the
default build for Windows should be DLLs but I want the configuration
(at least) to mesh with the rest of the system: I wanted to add $
(libext) and $(shlibext); as it is, I vary them by a simple case in
*windows), *darwin*) or *) (unix) but this does not seem correct.
> So the result is a build system that can build a win-native GHC
> using another win-native GHC, but not necessarily build a win-
> native GHC using a mingw GHC.
I could set it up so configure could detect which GHC is available
and build using that GHC (Mingw or Windows-native). (Just add a C-
compiler string to 'ghc -v' or 'ghc --version' and grep for it.)
> I'm not against VS in particular - I'm against duplication. Build
> systems rot quickly. By all means discuss a wonderful replacement
> for the current build system -- I'm aware that the current system
> is far from perfect -- but I'm not at all convinced that it is a
> necessity for building win-native GHC.
VS is not necessary; it is aesthetic and may offer other benefits for
those who wish to hack on GHC. It would require many bits of glue
code and careful alignment of tasks so the entire build would not be
transparent to any but the most experienced VS programmers. It
would, however, be much easier to the more casual developer and it
may not be as brittle: shallow build settings, compiler settings,
source files included, a bureaucratic notion of ways, would be
available from a simple point and click. If I have time I will at
least do a prototype (base-compiler only) and see if people like it.
> I could be wrong. If I am wrong, then constructing a convincing
> argument might be difficult...
> We'll have to import new hackers who understand VS builds, because
> none of the current GHC maintainers do!
New blood! :) I'm joking--there have been forks of GHC in the past
but they generally don't last long because GHC moves too fast and
that's because the Architects are still at work. The only convincing
argument here would be a prototype that even the GHC maintainers
would be able to understand.
>> Certainly doable but it does present a conundrum: for the old GHC
>> (without builtin cl-support) the order for compilation seems to be:
>> <compile/link command> <compile/link flags> <output> <source/
>> object files> <other flags>
>> while for cl running link.exe or link.exe, it is better to put all
>> the files at the end of the command line:
>> <compile/link command> <compile/link flags> <output> <other flags>
>> <source/object files>
>
> Why is that a "conundrum"? GHC can invoke CL with the arguments in
> whatever order it likes. Sorry, but this just seems like a trivial
> detail to me.
Mingw GHC can't do that. I simply added some conditional changes to
the rules in mk/suffix.mk.
Cheers,
Pete
More information about the Glasgow-haskell-users
mailing list