srcdir = .

PC = gpc

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

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

MASK = *.pas

all: test

test: clean
	echo "GPC-TEST-BEGIN"; \
	echo "=========================="; \
	for x in $(srcdir)/$(MASK) ; do \
	  if [ -f $$x ]; then \
	    xb=`basename $$x`; \
            xx=`echo $$x | sed -e 's/\.pas//'`; \
	    xr=$$xx.run ; \
	    xi=$$xx.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 ; \
	  else \
	    echo "$$x: No such file" ; \
	  fi ; \
	done; \
	echo "=========================="; \
	echo "GPC-TEST-END"
#	be sure that GPC-TEST-END starts in a new line ...

clean:
	rm -f *.dat *.o *.gpm *.gpi *.gpc *.s \
		core a.out *.exe magic fjf51 fjf141aa

extraclean: clean
	rm -f *.BAK *.bak *.orig gpc.out make.out b.out
