
MAKEFILES := $(wildcard */Makefile)
LIBRARIES := $(patsubst %/Makefile, %, $(MAKEFILES))

build:
	@rm -f build.out
	@for dir in $(LIBRARIES); do printf "  Building Libraries for $$dir...  "; make -C $$dir DEBUG=$(DEBUG) build >>build.out 2>&1 && printf "OK.\n" || ( printf "FAIL.\n" ; echo >>build.out "FAIL"); done
	@for dir in $(LIBRARIES); do printf "  Building Executables and Testing for $$dir...  "; make -C $$dir DEBUG=$(DEBUG) >>build.out 2>&1 && printf "PASS.\n" || ( printf "FAIL.\n" ; echo >>build.out "FAIL"); done
	@if grep -q FAIL build.out ; then echo "  Some Libraries FAIL; check build.out"; exit 20; fi
	@grep -q FAIL build.out || ( echo "  All Libraries PASS"; rm -f build.out )

clean:
	@for dir in $(LIBRARIES); do make -C $$dir clean >clean.out 2>&1; done
	@rm -f *~ clean.out build.out

