#
# ${R_HOME}/src/library/Makefile

VPATH = @srcdir@
srcdir = @srcdir@
top_srcdir = @top_srcdir@

top_builddir = ../..
subdir = src/library

include $(top_builddir)/Makeconf

distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
DISTFILES = Makefile.in

SUBDIRS = profile $(R_PKGS_BASE) $(R_PKGS_STUBS) Recommended

## <NOTE>
## Need to use R CMD to ensure that R_HOME is set (or do this ourselves).
## Need to go through Rcmd rather than just call $(PERL) to ensure that
## PERL5LIB/PERLLIB are set appropriately (or do this ourselves).
## See e.g. @file{src/gnuwin32/help/Makefile}.
R_CMD_BUILD_HELP = $(top_builddir)/bin/R CMD perl $(top_srcdir)/share/perl/build-help.pl
## </NOTE>
R_CMD_BUILD_HELP_OPTS =

R_EXE = $(top_builddir)/bin/R --vanilla

all: Makefile R

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@

## beware there is a bootstrapping problem here: tools uses tools to
## dump its namespace. So it works initially, but not to update.
R:
	@$(MKINSTALLDIRS) $(top_builddir)/library
	@for pkg in profile $(R_PKGS_BASE) $(R_PKGS_STUBS); do \
	  (cd $${pkg} && $(MAKE)) || exit 1; \
	done
	@echo "installing parsed NAMESPACE files"
	@rm -f $(top_builddir)/library/tools/Meta/nsInfo.rds
	@for pkg in $(R_PKGS_BASE) ; do \
	  if test -f $(srcdir)/$${pkg}/NAMESPACE; then \
          echo ".installPackageNamespaceInfo(\"$(top_builddir)/library/$${pkg}\", \"$(top_builddir)/library/$${pkg}\")" \
	    | R_DEFAULT_PACKAGES=tools $(R_EXE) --slave > /dev/null ; \
          fi ; \
	done
	@$(INSTALL_DATA) $(top_srcdir)/doc/html/R.css \
	  $(top_builddir)/library

docs:
	@echo "building all R object docs (text, HTML, LaTeX, examples)"
	@$(MAKE) DOCS
	@$(MAKE) indices
	@touch stamp-docs
help:
	@$(MAKE) DOCS R_CMD_BUILD_HELP_OPTS="--txt"
html:
	@$(MAKE) DOCS R_CMD_BUILD_HELP_OPTS="--html"
	@$(MAKE) indices
latex:
	@$(MAKE) DOCS R_CMD_BUILD_HELP_OPTS="--latex"
examples:
	@$(MAKE) DOCS R_CMD_BUILD_HELP_OPTS="--example"

indices:
	@$(R_CMD_BUILD_HELP) --htmllists

DOCS:
	@if @NO_PERL5@; then \
	  echo "you need Perl version 5 to build the R object docs"; \
	  exit 1; \
	fi
	@for pkg in $(R_PKGS_BASE); do \
	  $(R_CMD_BUILD_HELP) $(R_CMD_BUILD_HELP_OPTS) $(srcdir)/$${pkg}; \
	  ( echo ".installPackageIndices(\"$(srcdir)/$${pkg}\","; \
	    echo " \"$(top_builddir)/library/$${pkg}\")") | \
	      R_DEFAULT_PACKAGES=tools $(R_EXE) --slave > /dev/null; \
	done; \
	cat $(top_builddir)/library/*/CONTENTS \
	  > $(top_builddir)/doc/html/search/index.txt

install: installdirs
	@echo "installing packages ..."
	@cp -r $(top_builddir)/library $(rhome) || \
	  (cd $(top_builddir)/library; \
	    $(TAR) cf - . | (cd $(rhome)/library; $(TAR) xmof -))
	@echo "  building HTML index ..."
	@$(R_CMD_BUILD_HELP) --rhome $(rhome) --htmllists
installdirs:
	@$(MKINSTALLDIRS) $(rhome)/library
install-strip:
	$(MAKE) INSTALL_PROGRAM="${INSTALL_PROGRAM} -s" install
uninstall:
	@echo "uninstalling packages ..."
	@(cd $(rhome)/library; \
	  for p in $(R_PKGS) $(R_PKGS_STUBS); do rm -rf $${p}; done)

mostlyclean: clean
clean:
	@(for d in $(SUBDIRS); do rsd="$${d} $${rsd}"; done; \
	  for d in $${rsd}; do (cd $${d} && $(MAKE) $@); done)
	-@rm -f stamp-*
distclean:
	@(for d in $(SUBDIRS); do rsd="$${d} $${rsd}"; done; \
	  for d in $${rsd}; do (cd $${d} && $(MAKE) $@); done)
	-@rm -f Makefile
maintainer-clean: distclean

TAGS info dvi check:

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