I've tried this under Windows 2000 and Windows XP.
Here's my test program: [[ -- HelloWorld.hs
-- module HelloWorld where module Main where
main :: IO () main = putStrLn "Hello, World" ]]
I switch the commented module line as needed below.
Sample output in what follows has been cut-and-pasted from a console command window into this email message.
-----
Compiling the above without a -main-is flag:
[[
D:\Cvs\DEV\HaskellRDF>ghc --make -fglasgow-exts -iC:\Dev\Haskell\Lib\HUnit;C:\De
v\Haskell\Lib\Parsec;C:\Dev\Haskell\Lib\Sort;C:\Dev\Haskell\Lib\Dfa -o HelloWorl
d.exe HelloWorld
Chasing modules from: HelloWorld
Compiling Main ( HelloWorld.hs, HelloWorld.o )
Linking ...
D:\Cvs\DEV\HaskellRDF>HelloWorld Hello, World ]]
-----
Compiling the above with -main-is Main.main:
[[
DD:\Cvs\DEV\HaskellRDF>ghc --make -fglasgow-exts -iC:\Dev\Haskell\Lib\HUnit;C:\De
v\Haskell\Lib\Parsec;C:\Dev\Haskell\Lib\Sort;C:\Dev\Haskell\Lib\Dfa -o HelloWorl
d.exe -main-is Main.main HelloWorld
Chasing modules from: HelloWorld
Compiling Main ( HelloWorld.hs, HelloWorld.o )
Linking ...
D:\Cvs\DEV\HaskellRDF>HelloWorld Hello, World ]]
-----
Compiling the above with -main-is HelloWorld.main
[[
D:\Cvs\DEV\HaskellRDF>ghc --make -fglasgow-exts -iC:\Dev\Haskell\Lib\HUnit;C:\De
v\Haskell\Lib\Parsec;C:\Dev\Haskell\Lib\Sort;C:\Dev\Haskell\Lib\Dfa -o HelloWorl
d.exe -main-is HelloWorld.main HelloWorld
Chasing modules from: HelloWorld
Compiling Main ( HelloWorld.hs, HelloWorld.o )
Linking ...
C:/DEV/ghc/ghc-6.2/libHSrts.a(Main.o)(.text+0x87):Main.c: undefined reference to
`__stginit_ZCMain'
C:/DEV/ghc/ghc-6.2/libHSrts.a(Main.o)(.text+0xa1):Main.c: undefined reference to
`ZCMain_main_closure'
]]
-----
Finally, changing the source code module name to HelloWorld:
[[
D:\Cvs\DEV\HaskellRDF>ghc --make -fglasgow-exts -iC:\Dev\Haskell\Lib\HUnit;C:\De
v\Haskell\Lib\Parsec;C:\Dev\Haskell\Lib\Sort;C:\Dev\Haskell\Lib\Dfa -o HelloWorl
d.exe -main-is HelloWorld.main HelloWorld
Chasing modules from: HelloWorld
Compiling HelloWorld ( HelloWorld.hs, HelloWorld.o )
Warning: output was redirected with -o, but no output will be generated
because there is no Main module.
]]
-----
Repeating the last case with a compiler -v option
[[
D:\Cvs\DEV\HaskellRDF>ghc -v --make -fglasgow-exts -iC:\Dev\Haskell\Lib\HUnit;C:
\Dev\Haskell\Lib\Parsec;C:\Dev\Haskell\Lib\Sort;C:\Dev\Haskell\Lib\Dfa -o HelloW
orld.exe -main-is HelloWorld.main HelloWorld 1>a.tmp
Glasgow Haskell Compiler, Version 6.2, for Haskell 98, compiled by GHC version 6
.0.1
Using package config file: C:\DEV\ghc\ghc-6.2\package.conf
Hsc static flags: -static
*** Chasing dependencies:
Chasing modules from: HelloWorld
Stable modules:
*** Compiling HelloWorld:
compile: input file HelloWorld.hs
*** Checking old interface for HelloWorld:
Compiling HelloWorld ( HelloWorld.hs, HelloWorld.o )
*** Parser:
*** Renamer/typechecker:
*** Desugar:
Result size = 10
*** Simplify:
Result size = 10
Result size = 8
Result size = 8
*** Tidy Core:
Result size = 8
*** CorePrep:
Result size = 10
*** Stg2Stg:
*** CodeGen:
*** CodeOutput:
*** Assembler
C:\DEV\ghc\ghc-6.2\gcc -B"C:\DEV\ghc\ghc-6.2\gcc-lib/" -I. -c C:\DOCUME~1\Graham
\LOCALS~1\Temp\ghc3332.s -o HelloWorld.o
*** Deleting temp files
Deleting: C:/DOCUME~1/Graham/LOCALS~1/Temp/ghc3332.s
Upsweep completely successful.
*** Deleting temp files
Deleting:
Warning: output was redirected with -o, but no output will be generated
because there is no Main module.
link(batch): upsweep (partially) failed OR
Main.main not exported; not linking.
*** Deleting temp files
Deleting:
]]
And the standard output (captured to a.tmp): [[ ==================== Packages ==================== Package {name = "data", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/data"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSdata"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["haskell98", "lang", "util"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "rts", auto = False, import_dirs = [], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2", "C:/DEV/ghc/ghc-6.2/gcc-lib"], hs_libraries = ["HSrts"], extra_libraries = ["m", "gmp", "wsock32"], include_dirs = ["C:/DEV/ghc/ghc-6.2/include", "C:/DEV/ghc/ghc-6.2/include/mingw"], c_includes = ["Stg.h"], package_deps = [], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = ["-u", "_GHCziBase_Izh_static_info", "-u", "_GHCziBase_Czh_static_info", "-u", "_GHCziFloat_Fzh_static_info", "-u", "_GHCziFloat_Dzh_static_info", "-u", "_GHCziPtr_Ptr_static_info", "-u", "_GHCziWord_Wzh_static_info", "-u", "_GHCziInt_I8zh_static_info", "-u", "_GHCziInt_I16zh_static_info", "-u", "_GHCziInt_I32zh_static_info", "-u", "_GHCziInt_I64zh_static_info", "-u", "_GHCziWord_W8zh_static_info", "-u", "_GHCziWord_W16zh_static_info", "-u", "_GHCziWord_W32zh_static_info", "-u", "_GHCziWord_W64zh_static_info", "-u", "_GHCziStable_StablePtr_static_info", "-u", "_GHCziBase_Izh_con_info", "-u", "_GHCziBase_Czh_con_info", "-u", "_GHCziFloat_Fzh_con_info", "-u", "_GHCziFloat_Dzh_con_info", "-u", "_GHCziPtr_Ptr_con_info", "-u", "_GHCziPtr_FunPtr_con_info", "-u", "_GHCziStable_StablePtr_con_info", "-u", "_GHCziBase_False_closure", "-u", "_GHCziBase_True_closure", "-u", "_GHCziPack_unpackCString_closure", "-u", "_GHCziIOBase_stackOverflow_closure", "-u", "_GHCziIOBase_heapOverflow_closure", "-u", "_GHCziIOBase_NonTermination_closure", "-u", "_GHCziIOBase_BlockedOnDeadMVar_closure", "-u", "_GHCziIOBase_Deadlock_closure", "-u", "_GHCziWeak_runFinalizzerBatch_closure", "-u", "___stginit_Prelude"], framework_dirs = [], extra_frameworks = []} Package {name = "base", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSbase1", "HSbase2", "HSbase3"], extra_libraries = ["HSbase_cbits", "wsock32", "msvcrt", "kernel32", "user32"], include_dirs = [], c_includes = ["HsBase.h"], package_deps = ["rts"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "haskell98", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HShaskell98"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "haskell-src", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HShaskell-src"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["base", "haskell98"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "network", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSnetwork"], extra_libraries = [], include_dirs = [], c_includes = ["HsNet.h"], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "parsec", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSparsec"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "QuickCheck", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSQuickCheck"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "OpenGL", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSOpenGL"], extra_libraries = ["HSOpenGL_cbits"], include_dirs = [], c_includes = ["HsOpenGL.h"], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = ["-lglu32", "-lopengl32"], framework_dirs = [], extra_frameworks = []} Package {name = "GLUT", auto = True, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSGLUT"], extra_libraries = ["HSGLUT_cbits"], include_dirs = [], c_includes = ["HsGLUT.h"], package_deps = ["base", "OpenGL"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "objectio", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/imports"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSobjectio1", "HSobjectio2", "HSobjectio3", "HSobjectio4"], extra_libraries = ["user32", "gdi32", "kernel32", "comctl32", "comdlg32", "shell32", "winmm", "winspool", "ole32"], include_dirs = [], c_includes = [], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "lang", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/lang"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSlang"], extra_libraries = ["HSlang_cbits"], include_dirs = [], c_includes = ["HsLang.h"], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "concurrent", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/concurrent"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSconcurrent"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["base"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "text", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/text"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HStext"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["lang", "parsec"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "net", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/net"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSnet"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["network"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "hssource", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/hssource"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HShssource"], extra_libraries = [], include_dirs = [], c_includes = [], package_deps = ["haskell-src"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "win32", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/win32"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSwin321", "HSwin322"], extra_libraries = ["user32", "gdi32", "winmm", "kernel32", "advapi32"], include_dirs = [], c_includes = [], package_deps = ["haskell98", "lang"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} Package {name = "util", auto = False, import_dirs = ["C:/DEV/ghc/ghc-6.2/hslibs-imports/util"], source_dirs = [], library_dirs = ["C:/DEV/ghc/ghc-6.2"], hs_libraries = ["HSutil"], extra_libraries = [], include_dirs = [], c_includes = ["HsUtil.h"], package_deps = ["lang", "concurrent", "QuickCheck"], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], framework_dirs = [], extra_frameworks = []} ]]
#g --
------------ Graham Klyne For email: http://www.ninebynine.org/#Contact
_______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell