64-bit windows version?
Simon Marlow
simonmarhaskell at gmail.com
Mon Jun 25 05:19:53 EDT 2007
Peter Tanski wrote:
>
> On Jun 22, 2007, at 11:42 AM, Simon Marlow wrote:
>
>> Peter Tanski wrote:
>>> A bit invasive (it involves modifying the make rules so they take an
>>> object-suffix variable). Instead of the current suffix.mk:
>>> $(odir_)%.$(way_)o : %.hc
>>> it should be:
>>> $(odir_)%.$(way_)$(obj_sfx) : %.hc
>>> or some such. This may affect other builds, especially if for some
>>> reason autoconf can't determine the object-suffix for a platform,
>>> which is one reason I suggested a platform-specific settings file. I
>>> could handle this by having autoconf set the target variable, put all
>>> the windows-specific settings in a "settings.mk" file (including a
>>> suffix.mk copy) and have make include that file.
>>
>> Surely this isn't hard?
>>
>> ifeq "$(TargetOS)" "windows"
>> osuf=obj
>> else
>> osuf=o
>> endif
>>
>> and then use $(osuf) wherever necessary.
>
> Yes it is easy but now all Makefiles must be changed to use $(osuf),
> such as this line in rts/Makefile:
>
> 378: %.$(way_)o : %.cmm $(H_FILES),
>
> for what will be a (hopefully) temporary Windows build.
I bet there are only a few makefiles that explicitly refer to "o" as the
object-file suffix.
I don't understand why you see this as a temporary measure. Surely we'll need a
way to build GHC again for this platform? Unless you intend to replace the
whole build system? (which I strongly recommend *not* doing, at least not yet)
>>>> 4. modify the core packages to use Win32 calls only (no mingw)
>>> That is where a lot of preparation is going. This is *much* harder
>>> to do from mingw than from VS tools since you have to set up all the
>>> paths manually.
>>
>> I don't understand the last sentence - what paths? Perhaps I wasn't
>> clear here: I'm talking about the foreign calls made by the base
>> package and the other core packages; we can't call any functions
>> provided by the mingw C runtime, we can only call Win32 functions.
>> Similarly for the RTS. I have no idea how much needs to change here,
>> but I hope not much.
>
> To use the MS tools with the standard C libraries and include
> directories, I must either gather the environment variables separately
> and pass them to cl/link on the command line or I must manually add them
> to my system environment (i.e., modify msys.bat, or the windows
> environment) so msys will use them in its environment.
>
> The other problem is the old no-pathnames-with-spaces in Make, since
> that must be made to quote all those environment variables when passing
> them to cl. I could use the Make-trick of filling the spaces with a
> character and removing that just before quoting but that is a real hack
> and not very reliable--it breaks $(word ...).
Use GHC as your C compiler, i.e. don't invoke CL directory from make, and add
the INCLUDE/LIB directories to the RTS's package.conf.
> Altogether it is a pain to get going and barely reproducible. That is
> why I suggested simply producing .hc files and building from .hc using VS.
Doing an unregisterised build, you mean? Sounds a bit scary!
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list