blob: e51271375d96114ac8b939c0c8ff8d0b9a072a15 [file] [log] [blame]
#-*- Makefile -*-
#
# ${R_HOME}/src/library/Makefile
srcdir = .
top_srcdir = ../..
top_builddir = ../..
include ../gnuwin32/MkRules
include ../../share/make/vars.mk
ECHO = echo
MKINSTALLDIRS = mkdir -p
INSTALL_DATA = cp
RVER = $(shell cut -d' ' -f1 ../../VERSION | sed -n 1p)
R_EXE = $(top_builddir)/$(BINDIR)/Rterm --vanilla --slave
.SUFFIXES: .Rdts
all: R
## beware there is a bootstrapping problem here: tools uses tools to
## dump its namespace. So it works initially, but not to update.
## When base is made we need to use 'date' to set the timestamp in
## its DESCRIPTION, so we remake it before dumping the DESCRIPTION files.
## VERSION is needed to use mkdesc2 in packages base and tools.
## R_ARCH is needed for etc$(R_ARCH)/Makecomf in */src/Makefile.win
R:
@$(MKINSTALLDIRS) $(top_builddir)/library
@for pkg in base tools compiler; do \
$(MAKE) -C $${pkg} -f Makefile.win R_ARCH=$(R_ARCH) VERSION=$(RVER) \
all install-tests || exit 1; \
done
@if test -z "$(R_NO_BASE_COMPILE)"; then \
for pkg in base tools; do \
$(MAKE) -C $${pkg} -f Makefile.win mklazycomp || exit 1; \
done; \
else \
for pkg in base tools; do \
$(MAKE) -C $${pkg} -f Makefile.win Rlazy || exit 1; \
done; \
fi
@for pkg in $(R_PKGS_BASE1); do \
$(MAKE) -C $${pkg} -f Makefile.win \
R_ARCH=$(R_ARCH) EXT_LIBS="$(EXT_LIBS)" \
all install-tests || exit 1; \
done
@$(MAKE) -C translations -f Makefile.win
@(cd base && $(MAKE) -f Makefile.win mkdesc)
@$(ECHO) "tools:::.vinstall_package_descriptions_as_RDS(\"$(top_builddir)/library\", \"$(R_PKGS_BASE)\")" | \
R_DEFAULT_PACKAGES=tools LC_ALL=C $(R_EXE) > /dev/null
@$(ECHO) "installing parsed NAMESPACE files"
@rm -f $(top_builddir)/library/tools/Meta/nsInfo.rds
@$(ECHO) "tools:::.vinstall_package_namespaces_as_RDS(\"$(top_builddir)/library\", \"$(R_PKGS_BASE)\")" | \
R_DEFAULT_PACKAGES=tools LC_ALL=C $(R_EXE) > /dev/null
## do Rdobjects before metadata before help indices
docs:
@$(MAKE) -f Makefile.win Rdobjects
@$(MAKE) -f Makefile.win metadata
@$(MAKE) -f Makefile.win help-indices
ifeq ($(strip $(BUILD_HTML)),YES)
@$(MAKE) -f Makefile.win Rdfiles
endif
@touch stamp-docs
# fix the order to make best use of parallel builds
RD-TS = base.Rdts stats.Rdts utils.Rdts methods.Rdts graphics.Rdts grDevices.Rdts datasets.Rdts grid.Rdts tools.Rdts tcltk.Rdts splines.Rdts stats4.Rdts compiler.Rdts parallel.Rdts
# RD-TS = $(R_PKGS_BASE:=.Rdts)
Rd-ts: $(RD-TS)
%.Rdts:
@$(ECHO) "options(warn=1);tools:::.install_package_Rd_objects(\"$(srcdir)/$*\", \"$(top_builddir)/library/$*\")" | R_DEFAULT_PACKAGES=NULL $(R_EXE) || exit 1
@$(ECHO) -n " $*$(ECHO_C)"
Rdobjects:
@$(ECHO) -n "installing parsed Rd:"
@$(MAKE) -f Makefile.win Rd-ts
@$(ECHO)
help-indices:
@$(ECHO) -n "writing indices for package:"
@for pkg in $(R_PKGS_BASE); do \
$(ECHO) -n " $${pkg}" ; \
$(ECHO) "options(warn=1);tools:::.writePkgIndices(\"$${pkg}\", \"$(top_builddir)/library/$${pkg}\")" | R_DEFAULT_PACKAGES=utils LC_ALL=C $(R_EXE) || exit 1; \
done
@$(ECHO)
## FIXME: do this in parallel (but avoid interleaving output)
Rdfiles:
@$(ECHO) "building all R object docs"
@for pkg in $(R_PKGS_BASE); do \
$(ECHO) "tools:::.convertRdfiles(\"$(srcdir)/$${pkg}\", \"$(top_builddir)/library/$${pkg}\", silent = TRUE)" | LC_ALL=C $(R_EXE) || exit 1; \
done
vignettes:
@for pkg in grid parallel utils; do \
$(ECHO) "building/updating vignettes for package '$${pkg}' ..."; \
($(ECHO) "tools:::.install_package_vignettes(\"$(srcdir)/$${pkg}\", \"$(top_builddir)/library/$${pkg}\")") | \
R_DEFAULT_PACKAGES="utils,tools" LC_ALL=C \
R_LIBS_USER= R_LIBS_SITE= \
$(R_EXE) > /dev/null; \
done
@rm -Rf .vignettes
metadata:
@$(ECHO) "building/updating package metadata ..."
@$(ECHO) "tools:::.vinstall_package_indices(\"$(srcdir)\", \"$(top_builddir)/library\", \"$(R_PKGS_BASE)\")" | \
R_DEFAULT_PACKAGES=tools LC_ALL=C $(R_EXE) > /dev/null
clean:
@for pkg in $(R_PKGS_BASE); do \
$(MAKE) --no-print-directory -C $${pkg} \
-f Makefile.win R_ARCH=$(R_ARCH) clean-win; \
done
-@rm -f stamp-*
### ----------- targets for R-core use ----------
### These are intended to be run on an already-built R, possibly after
### editing the code in a standard package.
### Targets of the same name can be run in individual package directories.
### These do not change datasets (no R code)
### R_PKGS_BASE2 is all except datasets and methods.
### They are not currently safe for a parallel make.
## methods needs to be dumped, so is omitted here.
Rsimple:
@for pkg in $(R_PKGS_BASE2); do \
$(MAKE) -C $${pkg} -f Makefile.win Rsimple || exit 1; \
done
## Lazy-loaded, not compiled
Rlazy:
@for pkg in $(R_PKGS_BASE2) methods; do \
$(MAKE) -C $${pkg} -f Makefile.win Rlazy || exit 1; \
done
## Lazy-loaded, compiled
Rlazycomp:
@for pkg in $(R_PKGS_BASE2) methods; do \
$(MAKE) -C $${pkg} -f Makefile.win Rlazycomp || exit 1; \
done