The R Project SVN R

Rev

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

#-*- Makefile -*-
#
# ${RHOME}/src/gnuwin32/check/PkgCheck

# to be run from RHOME/src/library/$(PKG)/check or tests

include $(RHOME)/src/gnuwin32/MkRules

REXs=$(wildcard $(RLIB)/$(PKG)/R-ex/*)
ifneq ($(strip $(REXs)),)
all: run
else 
all:
endif

R = $(RHOME)/bin/Rterm --vanilla LC_ALL=C
RDIFF = $(RHOME)/bin/Rcmd Rdiff.sh

run: $(PKG)-Ex.R
    @if test -f $(PKG)-Ex.Rout ; then \
      mv $(PKG)-Ex.Rout $(PKG)-Ex.Rout.prev ; fi
    @rm -f $(PKG)-Ex.Rout.fail
    @$(ECHO) "Running examples in '$(PKG)-Ex.R' ..."
    @$(R) R_LIBS='$(RLIB);$(R_LIBS)' < $(PKG)-Ex.R > $(PKG)-Ex.Rout 2>&1 \
      || (mv  $(PKG)-Ex.Rout $(PKG)-Ex.Rout.fail && exit 1)
    @if test -f $(PKG)-Ex.Rout.prev ; then \
      mv $(PKG)-Ex.Rout $(PKG)-Ex.Rout.fail; \
      echo -n "Comparing \`$(PKG)-Ex.Rout' to \`$(PKG)-Ex.Rout.prev' ..."; \
      $(RDIFF) $(PKG)-Ex.Rout.fail $(PKG)-Ex.Rout.prev 0 || exit 1; \
      mv $(PKG)-Ex.Rout.fail $(PKG)-Ex.Rout; \
      echo "OK"; \
    fi


$(PKG)-Ex.R: $(RLIB)/$(PKG)/R-ex/* $(RHOME)/bin/massage-Examples
    @$(ECHO) "Massaging examples into '$(PKG)-Ex.R' ..."
    @if test -f $(RLIB)/$(PKG)/R-ex/Rex.zip; then \
      (cd $(RLIB)/$(PKG)/R-ex; unzip -oq Rex); \
      perl $(RHOME)/bin/massage-Examples $(PKG) $(RLIB)/$(PKG)/R-ex/*.R > $@; \
      (cd $(RLIB)/$(PKG)/R-ex; $(RM) -f *.R); \
    else \
      perl $(RHOME)/bin/massage-Examples $(PKG) $(RLIB)/$(PKG)/R-ex/*.R > $@; \
    fi

test-src-1=$(shell ls *.R 2> /dev/null)
test-src-auto=$(shell ls *.Rin 2> /dev/null | sed 's/Rin$$/R/')
test-src = $(test-src-1) $(test-src-auto)
test-out = $(test-src:.R=.Rout)

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

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

.R.Rout:
    @rm -f $@ $@.fail
    @echo "  Running \`$<'"
    @$(R) R_LIBS="$(RLIB);$(R_LIBS)" < $< > $@  2>&1 || (mv $@ $@.fail && exit 1)
    @if test -f $@.save ; then \
      mv $@ $@.fail; \
      echo -n "  Comparing \`$@' to \`$@.save' ..."; \
      $(RDIFF) $@.fail $@.save 0 || exit 1; \
      mv $@.fail $@; \
      echo "OK"; \
    fi

tests:
    @(out=$(shell echo \"$(test-out)\");\
      if test -n "$${out}"; then \
        echo "Running specific tests"; \
        rm -f *.Rout ; \
        $(MAKE) -f $(RHOME)/src/gnuwin32/check/PkgCheck $${out}; \
      fi)

clean:
    @rm -f $(test-out) $(test-src-auto) *.fail