#
# ${R_HOME}/tests/Makefile

VPATH = @srcdir@
srcdir = @srcdir@
top_srcdir = @top_srcdir@

top_builddir = ..
subdir = tests

include $(top_builddir)/Makeconf

distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
test-src-strict-1 = \
	arith-true.R \
	arith.R \
	d-p-q-r-tests.R \
	eval-etc.R \
	is-things.R \
	lm-tests.R \
	primitive-funs.R \
	method-dispatch.R \
	simple-true.R
test-src-strict-auto = \
	isas-tests.R
test-src-sloppy-1 = \
	print-tests.R
test-src-sloppy-auto = \
	no-segfault.R
DISTFILES = Makefile.in README \
	$(test-src-strict-1) $(test-src-strict-1:.R=.Rout.save) \
	$(test-src-sloppy-1) $(test-src-sloppy-1:.R=.Rout.save) \
	isas-tests.Rin isas-tests.Rout.save \
	no-segfault.Rin
SUBDIRS = Examples

R = LC_ALL=C $(top_builddir)/bin/R --vanilla
RDIFF = $(top_builddir)/bin/Rdiff

test-src-strict = $(test-src-strict-1) $(test-src-strict-auto)
test-src-sloppy = $(test-src-sloppy-1) $(test-src-sloppy-auto)
test-src-auto = $(test-src-strict-auto) $(test-src-sloppy-auto)
test-src = $(test-src-strict) $(test-src-sloppy)

test-out-strict = $(test-src-strict:.R=.Rout)
test-out-sloppy = $(test-src-sloppy:.R=.Rout)
test-out = $(test-src:.R=.Rout)

.SUFFIXES:
.SUFFIXES: .R .Rin .Rout

all: Makefile test-All

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@cd $(top_builddir) && \
	  CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
	  $(SHELL) ./config.status
Makedeps: Makefile
	@(for f in $(test-src); do \
	    if test -f $(srcdir)/$${f}out.save ; then \
	      echo "$${f}out: $${f} \$$(srcdir)/$${f}out.save \$$(FORCE)"; \
	    else \
	      echo "$${f}out: $${f} \$$(FORCE)"; \
	    fi; \
	    if test -f $(srcdir)/$${f}in; then \
	      echo "$${f}: \$$(srcdir)/$${f}in stamp-R"; \
	    fi; \
	  done) >> Makefile
	@touch $@
FORCE:

.Rin.R:
	@echo "creating \`$@'"
	@$(R) < $< > /dev/null

.R.Rout:
	@rm -f $@ $@.fail
	@echo "running \`$<'"
	@$(R) < $< > $@
	@if [ -f $(srcdir)/$@.save ] ; then \
	  mv $@ $@.fail; \
	  echo @ECHO_N@ \
	    "comparing \`$@' to \`$(srcdir)/$@.save' ...@ECHO_C@"; \
	  $(RDIFF) $@.fail $(srcdir)/$@.save $(RVAL_IF_DIFF) || exit 1; \
	  mv $@.fail $@; \
	  echo "@ECHO_T@ OK"; \
	fi

test-All: Makefile
	@$(MAKE) test-Examples
	@$(MAKE) test-Specific
test-Examples:
	@(cd Examples && $(MAKE) $@)
test-Specific-strict: $(test-out-strict)
test-Specific-sloppy: $(test-out-sloppy)
test-Specific:
	@echo "updating test dependencies"
	@$(MAKE) Makedeps
	@echo "running strict specific tests"
	@$(MAKE) test-Specific-strict RVAL_IF_DIFF=1
	@echo "running sloppy specific tests"
	@$(MAKE) test-Specific-sloppy RVAL_IF_DIFF=0

# Note: we need to increase nsize (in fact, twice the default) in what
# follows to make sure we can load the base package twice.
test-undoc:
	@for p in $(R_PKGS); do \
	  echo "undocumented objects in package \`$${p}':"; \
	  nsize=`$(R) --print-nsize`; \
	  nsize=`expr 2 \* $${nsize}`; \
	  echo "undoc(\"$${p}\")" | $(R) --nsize=$${nsize} | grep "^ *\\["; \
	  echo; \
	done

$(test-out): Makefile stamp-R

stamp-R: $(top_builddir)/bin/R.bin $(top_builddir)/library/base/R/base
	@touch $@

mostlyclean: clean
clean:
	@-(cd Examples; $(MAKE) $@)
	@rm -f stamp-R Makedeps Rplot* *.Rd data
distclean: clean
	@-(cd Examples; $(MAKE) $@)
	@rm -f Makefile $(test-out) $(test-src-auto)
maintainer-clean: distclean

distdir: $(DISTFILES)
	@for f in $(DISTFILES); do \
	  test -f $(distdir)/$${f} \
	    || ln $(srcdir)/$${f} $(distdir)/$${f} 2>/dev/null \
	    || cp -p $(srcdir)/$${f} $(distdir)/$${f}; \
	done
	@for d in $(SUBDIRS); do \
	  test -d $(distdir)/$${d} \
	    || mkdir $(distdir)/$${d} \
	    || exit 1; \
	  chmod 755 $(distdir)/$${d}; \
	  (cd $${d} && $(MAKE) distdir) \
	    || exit 1; \
	done

## Automagically generated dependencies: