[Haskell] Using -main-is with GHC 6.4/Windows

Simon Peyton-Jones simonpj at microsoft.com
Fri Mar 18 04:29:06 EST 2005


[Redirecting to GHC users, which is where GHC-specific questions belong]

| OK, it's not so bad.  If I delete the AffyDataCalc.o file before
compiling
| AffyDataCalcTest, it all works fine.
...
| Hmmm... is there something the GHC --make feature can do to force
| recompilation of the other modules previously compiled as main
| modules?  Just a thought.

We're always wary of adding too much magic!  I'll add a note to the
-main-is documentation though.

Simon


-----Original Message-----
From: haskell-bounces at haskell.org [mailto:haskell-bounces at haskell.org]
On Behalf Of Graham Klyne
Sent: 17 March 2005 15:57
To: Haskell Mailing List
Subject: [Haskell] Using -main-is with GHC 6.4/Windows

I've been trying to use the -main-is option with GHC 6.4 on Windows.  In

isolation it works fine, but it still doesn't achieve what I hoped it
would.

Consider this compilation output frgament:
[[
Compiling AffyDataCalcTest ( AffyDataCalcTest.hs, AffyDataCalcTest.o )
Linking ...
./AffyDataCalc.o(.data+0xa70):fake: multiple definition of
`ZCMain_main_srt'
AffyDataCalcTest.o(.data+0x1fc):fake: first defined here
./AffyDataCalc.o(.data+0xa78):fake: multiple definition of 
`ZCMain_main_closure'

AffyDataCalcTest.o(.data+0x204):fake: first defined here
./AffyDataCalc.o(.text+0x9158):fake: multiple definition of
`ZCMain_main_info'
AffyDataCalcTest.o(.text+0x1ff0):fake: first defined here
./AffyDataCalc.o(.text+0x9408):fake: multiple definition of
`__stginit_ZCMain'
AffyDataCalcTest.o(.text+0x20c0):fake: first defined here
]]

The module 'AffyDataCalc' contains a function called 'main', which is
the 
topo-level function of the target program I have under development.  The

module AffyDataCalcTest also has top-level function called runtest,
which, 
you guessed it, runs a test of the program functions.  It seems that the

top-level functions still interfere with each other.

[later]

OK, it's not so bad.  If I delete the AffyDataCalc.o file before
compiling 
AffyDataCalcTest, it all works fine.
[[
E:\OxfordCVS\DTGED\AffyData>ghc --make -fglasgow-exts
-iD:\Cvs\DEV\HaskellUti
C:\Dev\Haskell\Lib\HUnit;C:\Dev\Haskell\Lib\Parsec;C:\Dev\Haskell\MyLibs
\ -o
yDataCalcTest.exe -main-is AffyDataCalcTest.runtest AffyDataCalcTest
Chasing modules from: AffyDataCalcTest
Compiling ParseCSV         ( ./ParseCSV.hs, ./ParseCSV.o )
Compiling FormatCSV        ( ./FormatCSV.hs, ./FormatCSV.o )
Skipping  ListHelpers      ( D:\Cvs\DEV\HaskellUtils/ListHelpers.hs,
D:\Cvs\D
HaskellUtils/ListHelpers.o )
Compiling AffyDataCalc     ( ./AffyDataCalc.hs, ./AffyDataCalc.o )
Skipping  HUnitLang        ( C:\Dev\Haskell\Lib\HUnit/HUnitLang.lhs,
C:\Dev\H
ell\Lib\HUnit/HUnitLang.o )
Skipping  HUnitBase        ( C:\Dev\Haskell\Lib\HUnit/HUnitBase.lhs,
C:\Dev\H
ell\Lib\HUnit/HUnitBase.o )
Skipping  HUnitText        ( C:\Dev\Haskell\Lib\HUnit/HUnitText.lhs,
C:\Dev\H
ell\Lib\HUnit/HUnitText.o )
Skipping  HUnit            ( C:\Dev\Haskell\Lib\HUnit/HUnit.lhs,
C:\Dev\Haske
Lib\HUnit/HUnit.o )
Skipping  TestHelpers      ( D:\Cvs\DEV\HaskellUtils/TestHelpers.hs,
D:\Cvs\D
HaskellUtils/TestHelpers.o )
Compiling AffyDataCalcTest ( AffyDataCalcTest.hs, AffyDataCalcTest.o )
Linking ...

E:\OxfordCVS\DTGED\AffyData>affydatacalctest
Cases: 2  Tried: 0  Errors: 0  Failures: 0AffyDataCalc done.
Cases: 2  Tried: 1  Errors: 0  Failures: 0AffyDataCalc done.
Cases: 2  Tried: 2  Errors: 0  Failures: 0

E:\OxfordCVS\DTGED\AffyData>ghcc AffyDataCalc
]]
Hmmm... is there something the GHC --make feature can do to force 
recompilation of the other modules previously compiled as main 
modules?  Just a thought.

#g


------------
Graham Klyne
For email:
http://www.ninebynine.org/#Contact

_______________________________________________
Haskell mailing list
Haskell at haskell.org
http://www.haskell.org/mailman/listinfo/haskell


More information about the Glasgow-haskell-users mailing list