-odir option changes .o and .hi names of main source file to Main.hi/o
One-liner illustrating problem:
cd /tmp/ &&
mkdir __tmp_ghc_test &&
cd __tmp_ghc_test &&
echo 'main = print 1' > foo.hs && ghc --make foo.hs -odir . &&
rm -f * &&
echo 'main = print 1' > foo.hs && ghc --make foo.hs
The output is:
[1 of 1] Compiling Main ( foo.hs, Main.o )
Linking foo ...
[1 of 1] Compiling Main ( foo.hs, foo.o )
Linking foo ...
In the first invocation we have got foo.hi/.o, but in the second Main.hi/.o.
It causes problems when user wants to write her custom Makefiles with predictable interface file names.
Or just wants to build two programs in one dir:
ghc --make foo.hs -odir .
ghc --make bar.hs -odir .
Which .o/.hi files will be used in the second case?
Thanks!
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |