CC=gcc
EXE=.exe
O=.o

SRC = \
test-vfprintf.c  \
test-vprintf.c   \
test-vsprintf.c  \
test-vsnprintf.c \
test-vfscanf.c   \
test-vscanf.c    \
test-vsscanf.c

OBJ = \
test-vfprintf${O}  \
test-vprintf${O}   \
test-vsprintf${O}  \
test-vsnprintf${O} \
test-vfscanf${O}   \
test-vscanf${O}    \
test-vsscanf${O}

PROG = \
test-vfprintf${EXE}  \
test-vprintf${EXE}   \
test-vsprintf${EXE}  \
test-vsnprintf${EXE} \
test-vfscanf${EXE}   \
test-vscanf${EXE}    \
test-vsscanf${EXE}

CHECK_ALL = \
check-vfprintf  \
check-vprintf   \
check-vsprintf  \
check-vsnprintf \
check-vfscanf   \
check-vscanf    \
check-vsscanf

all: ${PROG}

test-vfprintf${EXE}: test-vfprintf${O}
	gcc -o $@ $<
test-vprintf${EXE}: test-vprintf${O}
	gcc -o $@ $<
test-vsprintf${EXE}: test-vsprintf${O}
	gcc -o $@ $<
test-vsnprintf${EXE}: test-vsnprintf${O}
	gcc -o $@ $<
test-vfscanf${EXE}: test-vfscanf${O}
	gcc -o $@ $<
test-vscanf${EXE}: test-vscanf${O}
	gcc -o $@ $<
test-vsscanf${EXE}: test-vsscanf${O}
	gcc -o $@ $<

test-vfprintf${O}: test-vfprintf.c
	gcc -o $@ -c $<
test-vprintf${O}: test-vprintf.c
	gcc -o $@ -c $<
test-vsprintf${O}: test-vsprintf.c
	gcc -o $@ -c $<
test-vsnprintf${O}: test-vsnprintf.c
	gcc -o $@ -c $<
test-vfscanf${O}: test-vfscanf.c
	gcc -o $@ -c $<
test-vscanf${O}: test-vscanf.c
	gcc -o $@ -c $<
test-vsscanf${O}: test-vsscanf.c
	gcc -o $@ -c $<

check: ${CHECK_ALL}

check-vfprintf: test-vfprintf${EXE}
	@echo $<:
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vprintf: test-vprintf${EXE}
	@echo $<:
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vsprintf: test-vsprintf${EXE}
	@echo $<:
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vsnprintf: test-vsnprintf${EXE}
	@echo $<:
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vfscanf: test-vfscanf${EXE}
	@echo $<: Enter \<str\> \<str\> \<num\> \<num\> \(e.g. \"Tue Jan 1 2001\"\)
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vscanf: test-vscanf${EXE}
	@echo $<: Enter \<str\> \<str\> \<num\> \<num\> \(e.g. \"Tue Jan 1 2001\"\)
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

check-vsscanf: test-vsscanf${EXE}
	@echo $<:
	@if ./$< > /tmp/foo 2>&1 ; then \
	  echo "  PASSED!" ; \
	else \
	  echo "  FAILED!" ; \
	fi

.PHONY: check-vfprintf
.PHONY: check-vprintf
.PHONY: check-vsprintf
.PHONY: check-vsnprintf
.PHONY: check-vfscanf
.PHONY: check-vscanf
.PHONY: check-vsscanf

.PHONY: clean

clean:
	-rm *~
	-rm ${PROG}
	-rm ${OBJ}
	-rm error.log
