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@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to