Q:

How to find out why xlC return code is non zero?

The ibm reference says that the return code of 1 is generated, when an error occurred with a severity level higher than the setting of the -qhalt compiler option. I do compile with -qhalt=s (only severe errors) and -qnomaxerr (no limit on the amount of errors). Despite I get my files successfully, compiled the xlC return code is 1, but not 0. I would live with that, but this breaks my Makefile, because make stops, when it encounters non zero error code from a compiler.
When I compile a simple int main() { return 0; } program, I get 0 return code as expected...
Here is how the problematic compilation session looks like:
bash-3.1$ xlC -O4 -qstrict -I/adaneyko/src/boost-trunk -c some.h some.cpp -qhalt=s -qnomaxerr
xlC: 1501-218 (W) file some.h contains an incorrect file suffix
bash-3.1$ echo $?
1
bash-3.1$ xlC -qversion
IBM XL C/C++ Advanced Edition for Blue Gene/P, V9.0
Version: 09.00.0000.0010

I have no idea about that 1501-218 warning and was not able to find it in the ibm reference.

A:

1501-218 (W) file some.h contains an incorrect file suffix
The warning message 1501-218 means what it says, some.h, has a file suffix of ".h" which is not a valid file suffix for an input file to the xlC command.  Presumably "some.h" is a header file that is #include from some.cpp and doesn't need to be listed on the xlC command line.

