| #-*- 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 |
| |