Re: -pgmc/a/l default options, other ideas

Peter Tanski <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.all,gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
On Jan 5, 2007, at 11:54 AM, Simon Marlow wrote:
> Peter Tanski wrote:
>> On Jan 5, 2007, at 11:25 AM, Krasimir Angelov wrote:
>>> but having different fields for CL and GCC will tell to Cabal to use
>>> the cl-options field for Windows and cc-options for Linux. With
>>> cc-flavour you will force Cabal to always use CL which is  
>>> unavailable
>>> under Linux.
>>
>> I don't understand the scenario.  From what I imagined, cc-flavour
>> might specify the CL or GCC (or other) compiler and would be set
>> differently on different systems: this would be handled by the Cabal
>> 'configure' step, so the choices in the end would be
>>
>> cc-flavour:     cl      Win-GHC
>> cc-flavour:     gcc     MinGW/CygWin
>> cc-flavour:     gcc     Linux, OS X, etc.
>> ...
>>
>> Does this make sense?
>
> The problem is that we want to write Cabal packages that work both  
> with Windows and Linux, so there should be a way to have both  
> flavours of options. Eg.
>
> foo.cabal:
>    ...
>    cc-options: -DENABLE_WOOZLES
>    cl-options: /D:ENABLE_WOOZLES
>
> If you're forced to choose a ccflavour up front, you can't do this.

Good point.  There really should be both cc-options/cl-options and cc- 
flavour; Cabal should check for consistency (i.e., cc-options with cc- 
flavour = cl --> error).

> On the other hand, it's too much to expect everyone writing  
> packages to come up with all the different flavours of C compiler  
> options, so perhaps there should be automatic translation... ewww.   
> But most packages don't have any cc-options, so it's not so bad.

The Cabal 'configure' step should handle the automatic translation...  
This is part of the problem for Win-GHC, since Cabal does not itself  
support Windows (it is dependent on the 'make' system).  A possible  
solution would be to modify Cabal work with CMake and let CMake do  
the translation to make/nmake/Visual Studio project files.  An  
alternative might be to use Perforce-- we have been over this  
before.  The most aesthetic solution would be to build the capability  
right into Cabal but I simply don't have the time to take on yet  
another project like that right now.  It *would* be a relatively easy  
project, since it is almost entirely in Haskell.  (Sometime now I  
have to get GHC working commercially so I can use it to write  
programs with Haskell for money but being the perfectionist sort I  
would rather finish the job well for everybody than hack my own  
little solution!)

Cheers,
Pete
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.