It probably is linked if you use --make, but should not be if you use an
explicit link command
ghc -o run-me A.o B.o C.o
Just omit LargeThModule.o
Hmm. Maybe this won't work, because there is a module initialisation tree, in
which each module calls the initialisation function of the modules it imports.
So probably the module that imports LargeThModule will call LargeThModule's
initialisation function, so omitting LargeThModule.o would give a link error.
I suppose you could hack around this by commenting out the body of
LargeThModule and recompiling it to make a small .o file for runtime linking,
but it would be a gross hack.
Oh, here's a thought. If you use -split-objs, the linker should drop all
non-executed code, so that will probably do what you want.
Simon
From: [email protected]
[mailto:[email protected]] On Behalf Of Jonas Almström
Duregård
Sent: 17 September 2010 21:48
To: [email protected]
Subject: Template Haskell and linking
Hi GHC users!
Does anyone know if an import that is only used by Template Haskell (i.e. not
in "actual" code) is reflected in the produced executable?
Example:
import LargeModule(thFunction)
$thfunction
...
Is LargeModule linked in the executable file? (Assume thFunction is not
referenced by the code it generates or elsewhere in the example)
Best regards
Jonas
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users