
Sure, e.g. -H10m sets the heap size of an executable to 10 MB.
Thanks. This does not work with hmake, however,
hmake -nhc98 -98 -H32M -ILib -PLib Main nhc98 +RTS -H32M -RTS -98 -ILib -PLib -c -o Lib/Prettier.o Lib/Prettier.lhs
It encloses the -H32M option in RTS brackets. Is there a way around?
Ok, the story is a little bit complicated here. hmake is itself a Haskell program, so if you wanted to tell it to give the compiler some extra heap, then +RTS -H32M -RTS would not work, because that would actually tell *hmake* to use 32M, not the compiler. Hence a plain -H32M as argument to hmake gives the behaviour you see, which is the most common requirement. However this leaves the problem of how to give the *final executable* a larger heap. Fortunately, the nhc98 compiler itself can accept either of the following forms: nhc98 -H32M nhc98 +CTS -H32M -CTS and so, from hmake, you must use the latter, e.g. hmake -nhc98 Main +CTS -H32M -CTS [ The +CTS -CTS brackets are named for `Compile-Time System', by analogy with the more common +RTS -RTS for `Run-Time System'. They can be used at any time to ensure that the enclosed arguments are definitely passed to the compiler proper. This is also useful for instance with the -lib argument, which might otherwise be interpreted as a linker flag. ] Regards, Malcolm