default: all SHELL=/bin/bash # cc -E tries to guess by extension what to do with the file. # And it does other weird things. cpp seems to Just Work(tm), so use that for # our C# (.cs) files CSCPP=cpp # Rules for generating autodependencies on header files $(patsubst %.cs.E,%.d,$(filter %.cs.E,$(FILES))): %.d: %.cs @echo Generating dependency file $@ for $< @set -e; set -o pipefail; rm -f $@; (\ ($(CSCPP) -M -MM -MQ '$@' $(CPPFLAGS) $< && echo Makefile) \ | paste -s -d ' ' - && \ $(CSCPP) -M -MM -MQ '$<'.E $(CPPFLAGS) $< \ ) > $@ \ || (rm -f $@ && echo "Error generating dependency file." && exit 1) include $(patsubst %.cs.E,%.d,$(filter %.cs.E,$(FILES))) # Rule for actually preprocessing source files with headers %.cs.E: %.cs @rm -f $@ set -o pipefail; $(CSCPP) $(CPPFLAGS) -C -dI $< \ | expand -8 \ | sed -e 's,^#include,//#include,' \ | grep -v '^# [0-9]' \ >$@ || (rm -f $@ && exit 1)