Build system uses wrong version of include files.
The situation: I am building 6.4.1 using 6.4.1. The installed version was by a package installer. Now I want to build a source myself, since I want to see if I can change some things. After the usual stuff and doing make I obtain this error message:
utils/PrimPacked.lhs:263:0:
Warning: foreign declaration uses deprecated non-standard syntax
In file included from /tmp/ghc25249.hc:5:
/usr/local/lib/ghc-6.4.1/include/HsUnix.h: In function '__hsunix_rtldNext':
/usr/local/lib/ghc-6.4.1/include/HsUnix.h:103: error: 'RTLD_NEXT' undeclared (first use in this function)
/usr/local/lib/ghc-6.4.1/include/HsUnix.h:103: error: (Each undeclared identifier is reported only once
/usr/local/lib/ghc-6.4.1/include/HsUnix.h:103: error: for each function it appears in.)
/usr/local/lib/ghc-6.4.1/include/HsUnix.h: In function '__hsunix_rtldDefault':
/usr/local/lib/ghc-6.4.1/include/HsUnix.h:107: error: 'RTLD_DEFAULT' undeclared (first use in this function)
<<ghc: 50080464 bytes, 11 GCs, 1535164/2972296 avg/max bytes residency (2 samples), 19M in use, 0.13 INIT (0.00 elapsed), 0.51 MUT (1.45 elapsed), 0.28 GC (0.36 elapsed) :ghc>>
make[2]: *** [stage1/utils/PrimPacked.o] Error 1
make[1]: *** [all] Error 1
make: *** [build] Error 1
Having looked at it for a while and discussing the problem with Arthur van Leeuwen, we decided that the problem is that the build system uses the HsUnix.h file of the existing distribution, and not the one from the sources. The problem arises because these two files are different.