#1406: Commit r5034 to the flesh breaks many external libraries -------------------------+-------------------------------------------------- Reporter: eschnett | Owner: knarf@… Type: defect | Status: review Priority: critical | Milestone: ET_2013_11 Component: SimFactory | Version: development version Resolution: | Keywords: -------------------------+--------------------------------------------------
Comment (by eschnett):
When Cactus determines include dependencies, it does so by calling the compiler with certain flags. It does not call cpp directly, since this may lead to different include files -- e.g. GNU's cpp would now know what Intel-specific files icc would include. cpp needs to be called via icc, so that icc can add its -I flags.
CPPFLAGS contains the flags necessary for this preprocessing. These are mostly the -I and -D flags. CFLAGS contains only the flags necessary for compiling, e.g. -Wall or -xHost or -O2.
It seems that other libraries (e.g. GSL) interpret CPPFLAGS differently, and/or call GNU cpp even if the compiler is Intel icc.
We should use CPPFLAGS to pass the -I and -D flags. If we did not do this, and if we used CFLAGS instead, then we would need to pass CFLAGS when looking for dependencies, which could lead to warnings about unused flags.