#-*- Makefile -*-
#
# ${R_HOME}/tests/Makefile.win

all check: test-all-basics
check-devel: check test-all-devel
check-all: check-devel test-Packages-Recommended
check-recommended: test-Packages-Recommended

# for R_PKGS_BASE
include ../src/gnuwin32/MkRules
include ../share/make/vars.mk

srcdir = .
top_srcdir = ..
top_builddir = ..
R_HOME = ..
include Makefile.common

R = $(R_HOME)/$(BINDIR)/Rterm --vanilla LC_ALL=C SRCDIR=. R_DEFAULT_PACKAGES=
R2 = $(R_HOME)/$(BINDIR)/Rterm --vanilla SRCDIR=. R_DEFAULT_PACKAGES=
R3 = $(R_HOME)/$(BINDIR)/Rcmd check
RDIFF = $(R_HOME)/$(BINDIR)/R CMD Rdiff
RVAL_IF_DIFF=0
## suppress fancy quotes for diff-ing
RDCONV = LC_ALL=C $(R_HOME)/$(BINDIR)/Rcmd Rdconv

ECHO = echo
ECHO_C = 
ECHO_N = -n
ECHO_T = 
MK = $(MAKE) -f Makefile.win
TAR = tar

## override Makefile.common
test-src-reg-1e = reg-win.R

all check test-all-basics test-all-devel: Makefile.win Makefile.common

test-system2.exe: test-system2.c

## Not run by any other target
test-System: test-system2.exe
	@$(MK) test-system.Rout

## <NOTE>
## These depend on an internet connection, and the sites being up.
## So allow this to fail: it may be slow doing so.
test-Internet:
	@$(RM) -f internet.Rout
	@$(ECHO) "running tests of Internet functions"
	-@$(MK) $(test-out-internet) RVAL_IF_DIFF=0
## </NOTE>

test-Standalone:
	@echo "testing building standalone Rmath"
	@$(MAKE) -C ../src/nmath/standalone -f Makefile.win check || exit 1


clean:
	@rm -f *.Rout *.Rout.fail \
	  Rplot* Rprof.out Rprofmem.out \
	  reg-examples-*.pdf  testCID.* \
	  reg-plot-latin1.ps reg-plot.ps \
	  reg-plot-latin1.pdf reg-plot.pdf reg-tests-*.pdf \
	  R-exts.* R-intro.R no-segfault.R R-intro.Rout \
	  p-qbeta-strict-tst.pdf
	@rm -f R-exts_res.rc Makedeps
	@rm -f FALSE* PACKAGES* .R .tex mirrors.html ./-package.Rd ex.gz
	@rm -f testit.txt testit.html testit.tex testit-Ex.R
	@rm -f ver20.txt ver20.html ver20.tex ver20-Ex.R
	@rm -Rf anRpackage myTst* myLib
	@rm -f *.tar.gz
	@rm -f keepsource.tex test-system2.exe test-system.Rout
	@$(MK) -C Examples $@
	@$(MK) -C Embedding $@
	-@rm -f *.log *.tsin *.trin
	-@rm -f df0.Rd l0.Rd m0.Rd 'integer(0)-package.Rd'

distclean: clean
	@$(MK) -C Examples $@
	@rm -Rf *.Rcheck RecPackages
	-@rm -f *.fail

install-tests:
	@for f in $(INSTFILES); do \
	  cp $(srcdir)/$${f} "$(INST_TO)"; \
	done
	@$(MAKE) -C Examples -f Makefile.win install-tests INST_TO="$(INST_TO)"
