srcdir = .

PC = gpc

PFLAGS = $(EXTRA_PFLAGS) -g -O3 -Wall --automake \
  --unit-path=$(srcdir) --unit-path=$(srcdir)/../rts \
  --object-path=$(srcdir) --object-path=$(srcdir)/../units \
  --executable-path=.

GREPFLAGS = `grep FLAG $$x | sed 's/(\*\ FLAG\ //' | sed 's/\ \*)//'`

MASK = *.pas

all: test

test:
	rm -f *.o *.gpm *.gpi a.out *.dat
	echo "GPC-TEST-BEGIN"; \
	echo "=========================="; \
	for x in $(srcdir)/$(MASK) ; do \
	  xb=`basename $$x`; \
	  xr=`echo "$$x" | sed -e 's/\.pas/\.run/'` ; \
	  xi=`echo "$$x" | sed -e 's/\.pas/\.in/'` ; \
	  if [ `grep -c executable-file-name $$x` -gt 0 ]; then \
	    aout="" ; \
	  else \
	    aout="-o a.out" ; \
	  fi ; \
	  rm -f a.out 2>/dev/null ; \
	  if grep -i "Program.*;" >/dev/null $$x ; then \
	    if grep WRONG >/dev/null $$x ; then \
	      $(PC) $(PFLAGS) $(GREPFLAGS) $$aout $$x 2> /dev/null ; \
	      echo -n "TEST	$$xb:	" ; \
	      if [ -f "a.out" ] ; then \
	        echo -n "failed: " ; \
	        ./a.out ; \
	      else \
	        echo "OK" ; \
	      fi ; \
	    else \
	      $(PC) $(PFLAGS) $(GREPFLAGS) $$aout $$x; \
	      echo -n "TEST	$$xb:	" ; \
	      if [ -f $$xr ]; then \
	        if [ -f $$xi ] ; then \
	          $$xr < $$xi ; \
	        else \
	          $$xr ; \
	        fi ; \
	      else \
	        if [ -f "a.out" ] ; then \
	          if [ -f $$xi ] ; then \
	            ./a.out $$x < $$xi ; \
	          else \
	            ./a.out $$x ; \
	          fi ; \
	        else \
	          echo "failed" ; \
	        fi ; \
	      fi ; \
	    fi ; \
	  fi ; \
	done; \
	echo "=========================="; \
	echo "GPC-TEST-END"
#	be sure that GPC-TEST-END starts in a new line ...

clean:
	rm -f *.dat *.BAK *.bak *.orig *.o *.gpm *.gpi *.gpc *.s gpc.out make.out \
		core a.out b.out magic fjf51 fjf141aa
