>> My occasional problem is that make passes
>> $(CPP) $(CPPFLAGS) -M $< | $(SED) -e 'expression' > $*.d
>> to the shell and $(CPP) does not terminate normally. More often,
>> it's gcc that segfaults, and it prints an internal compiler error
>> and terminates in an orderly fashion, returning an error code to
>> make. But cpp doesn't seem to have that sort of error handling:
>> when it fails...
>>
>> - the build might just hang--probably with sed waiting for input
>> that never comes
That can only happen if cpp hangs. If cpp exits or dies in any way,
then the write side of the pipe will be closed and then sed will exit,
probably with some kind of read error.