The R Project SVN R

Rev

Rev 15275 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

#
# ${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-gct = \
    eval-etc.R \
    simple-true.R \
    arith-true.R \
    arith.R \
    demos.R \
    lm-tests.R \
    primitive-funs.R \
    method-dispatch.R
test-src-strict-1 = \
    $(test-src-gct) \
    d-p-q-r-tests.R
test-src-strict-auto = \
    isas-tests.R
test-src-sloppy-1 = \
    print-tests.R
test-src-sloppy-auto = \
    no-segfault.R

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

test-src-internet = internet.R
test-src-lapack = lapack.R
test-src-nafns = nafns.R
test-src-random = p-r-random-tests.R

test-src-reg-1 = \
    reg-tests-1.R reg-tests-2.R reg-IO.R reg-IO2.R reg-plot.R
test-src-reg-auto =
test-src-reg = $(test-src-reg-1) $(test-src-reg-auto)

all-basic-tests = Examples Specific
all-extra-tests = Internet Lapack Nafns Random Reg FF codoc undoc

DISTFILES = Makefile.in Makefile.win README \
    $(test-src-strict-1) $(test-src-strict-1:.R=.Rout.save) \
    $(test-src-sloppy-1) $(test-src-sloppy-1:.R=.Rout.save) \
    $(test-src-auto:.R=.Rin) isas-tests.Rout.save \
    $(test-src-internet) internet.Rout.save \
    $(test-src-lapack) \
    $(test-src-nafns) \
    $(test-src-random) p-r-random-tests.Rout.save \
    $(test-src-reg) reg-IO.Rout.save reg-IO2.Rout.save \
      reg-plot.Rout.save reg-tests-2.Rout.save \
    gct-foot.R
SUBDIRS = Examples

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

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

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

test-out-internet = $(test-src-internet:.R=.Rout)
test-out-lapack = $(test-src-lapack:.R=.Rout)
test-out-nafns = $(test-src-nafns:.R=.Rout)
test-out-random = $(test-src-random:.R=.Rout)
test-out-reg = $(test-src-reg:.R=.Rout)

test-out = $(test-src:.R=.Rout) $(test-out-gct) \
    $(test-out-internet) $(test-out-lapack) $(test-out-nafns) \
    $(test-out-random) $(test-out-reg)

.SUFFIXES:
.SUFFIXES: .R .Rin .Rout .Rout-gct

all check: Makefile test-all-basics

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) $(test-src-reg); 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

.R.Rout-gct:
    @echo "running gctorture() + \`$<'"
    @(echo '.ptime <- proc.time(); gctorture()' ; \
      cat $< $(srcdir)/gct-foot.R) | $(R) > $@
    @mv $@ $@.fail; Ro=`basename $@ .Rout-gct`.Rout; \
      if test ! -r $$Ro ; then $(MAKE) $$Ro ; fi; \
      echo @ECHO_N@ "comparing \`$@' to \`$$Ro' ...@ECHO_C@"; \
      grep -v 'gctorture()' $@.fail | $(RDIFF) - $$Ro  1 || exit 1; \
      mv $@.fail $@; \
      echo "@ECHO_T@ OK"

test-all-basics: Makefile
    @for name in $(all-basic-tests); do \
      $(MAKE) test-$${name} || exit 1; \
    done
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
    @rm -f data F.Rd c0.Rd df0.Rd l0.Rd

test-Gct: $(test-out-gct)

test-all-extras: Makefile
    @for name in $(all-extra-tests); do \
      $(MAKE) test-$${name} || exit 1; \
    done
test-Internet:
    @echo "running tests of Internet and socket functions"
    @$(MAKE) $(test-out-internet) RVAL_IF_DIFF=0
test-Lapack:
    @echo "running tests of LAPACK-based functions"
    @$(MAKE) $(test-out-lapack) RVAL_IF_DIFF=0
test-Nafns:
    @echo "running tests of NA handling functions"
    @$(MAKE) $(test-out-nafns) RVAL_IF_DIFF=0
test-Random:
    @echo "running tests of random deviate generation"
    @$(MAKE) $(test-out-random) RVAL_IF_DIFF=1
test-Reg:
    @echo "running regression tests"
    @$(MAKE) $(test-out-reg) RVAL_IF_DIFF=0
test-FF:
    @echo "checking foreign function calls"
    @for p in $(R_PKGS); do \
      out="package"; \
      echo @ECHO_N@ "$${out} \`$${p}' ...@ECHO_C@"; \
      out=`echo "checkFF(package = \"$${p}\")" | \
           $(R) -q | grep '^\..*'`; \
      if test -n "$${out}"; then \
        echo "@ECHO_T@ WARNING"; \
        echo "$${out}"; \
      else \
        echo "@ECHO_T@ OK"; \
      fi; \
    done
test-codoc:
    @echo "checking code/documentation mismatches"
    @for p in $(R_PKGS); do \
      out="package"; \
      echo @ECHO_N@ "$${out} \`$${p}' ...@ECHO_C@"; \
      out=`echo "codoc(\"$(top_srcdir)/src/library/$${p}\")" | \
           $(R) -q | sed '/^>/d; /^Using/d; /^list/d; /^ *$$/d'`; \
      if test -n "$${out}"; then \
        echo "@ECHO_T@ WARNING"; \
        echo "$${out}"; \
      else \
        echo "@ECHO_T@ OK"; \
      fi; \
    done
test-undoc:
    @echo "checking undocumented objects"
    @for p in $(R_PKGS); do \
      out="package"; \
      echo @ECHO_N@ "$${out} \`$${p}' ...@ECHO_C@"; \
      out=`echo "undoc(\"$${p}\")" | $(R) | grep '^ *\\['`; \
      if test -n "$${out}"; then \
        echo "@ECHO_T@ WARNING"; \
        echo "$${out}"; \
      else \
        echo "@ECHO_T@ OK"; \
      fi; \
    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* Rprof.out *.Rd data dumpdata.R \
      reg-plot.ps
distclean: clean
    @-(cd Examples; $(MAKE) $@)
    @rm -f Makefile $(test-out) $(test-src-auto) .RData
maintainer-clean: distclean

R install install-strip uninstall TAGS info dvi:

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: