R_HOME = ../..

## first time through MkRules will not exist.

ifeq ($(wildcard MkRules?local),MkRules.local)
include MkRules.local
endif

include MkRules.rules
include ../../share/make/vars.mk

MK = $(MAKE) --no-print-directory

all:
	@$(MK) MkRules
	@if test -f  ../../SVN-REVISION ; then \
	  cp ../../SVN-REVISION ../../SVN-REVISION.bak ; \
	fi
	@$(MK) rbuild
	@$(MK) -C ../library -f Makefile.win all WIN=$(WIN)
	@$(MK) -C ../library -f Makefile.win docs
	@$(MK) NEWSdocs htmldocs docfiles
	@$(MK)  -C ../../po -f Makefile.win

bytecode: bytecode-base bytecode-recommended

bytecode-base:
	@$(MK) MkRules
	@if test -f  ../../SVN-REVISION ; then \
	  cp ../../SVN-REVISION ../../SVN-REVISION.bak ; \
	fi
	@$(MK) rbuild
	@$(MK) -C ../library -f Makefile.win bytecode WIN=$(WIN)
	@$(MK) -C ../library -f Makefile.win docs
	@$(MK) NEWSdocs htmldocs docfiles
	@$(MK)  -C ../../po -f Makefile.win


rpackages:
	@$(MK) -C ../library -f Makefile.win all WIN=$(WIN) EXT_LIBS="$(EXT_LIBS)"
	@$(MK) -C ../library -f Makefile.win docs

rpackages-cross:
	@$(MK) -C ../library -f Makefile.win cross WIN=$(WIN) EXT_LIBS="$(EXT_LIBS)"


cairodevices:
ifneq "$(USE_CAIRO)" ""
	@$(MK) -C ../library/grDevices/src/cairo -f Makefile.win all \
	  WIN=$(WIN) CAIRO_LIBS=$(CAIRO_LIBS) CAIRO_CPPFLAGS=$(CAIRO_CPPFLAGS)
endif

ifeq ($(wildcard MkRules?local),MkRules.local)
MkRules: MkRules.local MkRules.rules
	@cat MkRules.local MkRules.rules > MkRules
else
MkRules: MkRules.rules
	@cat MkRules.rules > MkRules
endif

CFLAGS = -O3 -Wall -pedantic $(EOPTS) $(LTO)
FFLAGS = -O3 $(EOPTS) $(GF7OPTS) $(LTO)

ifdef DEBUG
 CFLAGS += $(G_FLAG)
 FFLAGS += $(G_FLAG)
else
 DLLFLAGS += -s
endif


R-DLLFLAGS = -mwindows
LIBEXTRAS = -L"$(EXT_LIBS)"/lib$(R_ARCH) -lpcre2-8 -lz -lbz2 -llzma
ifdef USE_ICU
LIBEXTRAS += -L"$(ICU_PATH)"/lib$(R_ARCH) $(ICU_LIBS)
endif

dllversion-RESFLAGS = -I../include
CSOURCES = \
  console.c dynload.c editor.c embeddedR.c extra.c \
  opt.c pager.c preferences.c psignal.c rhome.c rt_complete.c \
  rui.c run.c shext.c sys-win32.c system.c dos_wglob.c
OBJS = $(CSOURCES:.c=.o) dllversion.o
ifeq "$(WIN)" "32"
 OBJS += e_pow.o
endif
MAINLIBS = ../main/libmain.a ../appl/libappl.a ../nmath/libnmath.a
EXTRALIBS = getline/gl.a ../extra/xdr/libxdr.a \
   ../extra/intl/libintl.a ../extra/trio/libtrio.a ../extra/tzone/libtz.a \
   ../extra/tre/libtre.a

R-DLLLIBS = $(OPENMP) -L. $(FLIBS) -lRblas -L../../$(IMPDIR) -lRgraphapp \
  -lRiconv -lcomctl32 -lwinmm -lversion $(LIBEXTRAS)


.PHONY:  clean veryclean rlibs fixfiles front-ends rmodules


CPPFLAGS = -I../include -I. -I../extra -DHAVE_CONFIG_H -DR_DLL_BUILD
extra-CPPFLAGS = -I../library/grDevices/src

Rpwd.exe: front-ends/Rpwd.exe
	$(CP) $< $@

front-ends/Rpwd.exe:
	$(MK) -C front-ends Rpwd

## watch out: R.dll and Rblas.dll depend on each other.
rbuild:
	@$(MK) fixfiles
	@$(MK) -C ../include -f Makefile.win
	@$(MK) -C ../scripts -f Makefile.win
ifdef USE_IMPLIBS
	@$(MK) libRiconv.dll.a
endif
	@$(MK) libRblas.dll.a
	@$(MK) ../../$(BINDIR)/R.dll
ifdef USE_IMPLIBS
	@$(MK) implibs
endif
	@$(MK) Rblas
	@$(MK) front-ends COPYRIGHTS rmodules fixed/fixdesc


rlibs:
	$(MK) -C ../extra/intl CFLAGS='$(CFLAGS)' -f Makefile.win
	$(MK) -C ../appl CFLAGS='$(CFLAGS)' FFLAGS='$(FFLAGS)' -f Makefile.win
	$(MK) -C ../nmath CFLAGS='$(CFLAGS)' FFLAGS='${FFLAGS}' -f Makefile.win
	$(MK) -C ../main CFLAGS='$(CFLAGS)' FFLAGS='$(FFLAGS)' malloc-DEFS='$(malloc-DEFS)' -f Makefile.win
	$(MK) -C ./getline CFLAGS='$(CFLAGS)'
	@for ex in graphapp xdr tre trio tzone win_iconv ; do \
	  $(MK) -C ../extra/$${ex} CFLAGS='$(CFLAGS)' -f Makefile.win || exit 1; \
	done

rmodules:
	@$(MKDIR) -p ../../modules$(R_ARCH)
	$(MK) -C ../modules -f Makefile.win \
	  CFLAGS='$(CFLAGS)' FFLAGS='$(FFLAGS)'

COPYRIGHTS: ../../doc/COPYRIGHTS COPYRIGHTS.win
	cat $^ > $@


fixfiles: Rpwd.exe
	@$(MKDIR) -p ../../$(BINDIR)
	@$(MK) -C ./fixed
ifdef USE_LIBCURL
	@if test -f "$(CURL_PATH)/etc/curl-ca-bundle.crt"; then \
	  $(CP) -p "$(CURL_PATH)/etc/curl-ca-bundle.crt" ../../etc; \
	elif test -f "$(CURL_CA_BUNDLE)"; then \
	  $(CP) -p "$(CURL_CA_BUNDLE)" ../../etc/curl-ca-bundle.crt; \
	fi
endif

fixed/fixdesc:
	@sh fixed/GETDESC $(R_PKGS_BASE) translations

dllversion.o: ../include/Rversion.h

## Rdll.hide has decoration which 64-bit builds lack
ifeq "$(WIN)" "64"
R.dll: $(OBJS) $(MAINLIBS) $(EXTRALIBS)
	@$(ECHO) EXPORTS > R.def
	@$(NM) $^ | $(SED) -n  $(SYMPAT) | LC_COLLATE=C $(SORT) | \
	  uniq $(NM_FILTER) > R0.def
	@$(SED) -e's/@.*//' Rdll.hide | LC_COLLATE=C $(SORT) > R1.def
	@LC_COLLATE=C comm -23 R0.def R1.def >> R.def
	$(DLL) -shared $(DLLFLAGS) $($*-DLLFLAGS) -o $@ R.def $^ $($*-DLLLIBS) $(DLLLIBS)
	@$(RM) R.def R0.def R1.def
else
R.dll: $(OBJS) $(MAINLIBS) $(EXTRALIBS)
	@$(ECHO) EXPORTS > R.def
	@$(NM) $^ | $(SED) -n  $(SYMPAT) | LC_COLLATE=C $(SORT) | uniq > R0.def
	@LC_COLLATE=C $(SORT) Rdll.hide > R1.def
	@LC_COLLATE=C comm -23 R0.def R1.def >> R.def
	$(DLL) -shared $(DLLFLAGS) $($*-DLLFLAGS) -o $@ R.def $^ $($*-DLLLIBS) $(DLLLIBS)
	@$(RM) R.def R0.def R1.def
endif

R.exp: $(OBJS) $(MAINLIBS) $(EXTRALIBS)
	@$(ECHO) LIBRARY R.dll > R.exp
	@$(ECHO) EXPORTS >> R.exp
	@$(NM) $^ | $(SED) -n $(SYMPAT) | LC_COLLATE=C $(SORT) | \
	  uniq $(NM_FILTER) > R0.def
	@LC_COLLATE=C comm -23 R0.def Rdll.hide >> R.exp
	@$(RM) R0.def


Rdll: makeMakedeps libRblas.dll.a ../../$(BINDIR)/R.dll

../../$(BINDIR)/R.dll: FORCE
	@$(MK) fixfiles
	@$(MK) -C ../include -f Makefile.win
	@$(MK) rlibs
	@$(MK) makeMakedeps
	@$(MK) R.dll
	@$(MKDIR) -p ../../$(BINDIR)
	$(CP) R.dll ../../$(BINDIR)

FORCE:

implibs: libR.dll.a libRblas.dll.a
	@$(MKDIR) -p ../../lib
	@$(CP) $^ ../../lib

libR.dll.a: R.exp
	$(DLLTOOL) $(DLLTOOLFLAGS) $(R-DLLTOOLFLAGS) --dllname R.dll \
	  --input-def $< --output-lib $@

libRiconv.dll.a: unicode/iconv.def
	$(DLLTOOL) $(DLLTOOLFLAGS) $(R-DLLTOOLFLAGS) --dllname Riconv.dll \
	  --input-def $< --output-lib $@


front-ends:
	$(MK) -C front-ends

../extra/tre/libtre.a:
	$(MK) -C ../extra/tre -f Makefile.win

../extra/trio/libtrio.a:
	$(MK) -C ../extra/trio -f Makefile.win

NEWSdocs:
	@$(MK) -C ../../doc -f Makefile.win

htmldocs:
	@$(ECHO)
	@$(ECHO) "------ Making HTML documentation ------"
	@$(MK) -C ../../doc/manual -f Makefile.win html


#                          ===== BLAS ======

Rblas:
	@$(MK) -C ../extra/blas -f Makefile.win FFLAGS='-O2 $(EOPTS)'

Rblas-clean:
	@$(MK) -C ../extra/blas -f Makefile.win clean

libRblas.dll.a:  ../extra/blas/Rblas.def
	@$(DLLTOOL) $(DLLTOOLFLAGS) --dllname Rblas.dll \
	  --input-def $< --output-lib $@


#                          ===== cleaning ======

## used in installer/Makefile
PKGDIR = ../library
pkgclean-%:
	@(cd $(PKGDIR)/$*/src; rm -f *.d *.o *.dll *_res.rc Makedeps)

EXTRA_DIRS = blas graphapp intl tre trio tzone xdr win_iconv

cleaninstaller:
	-$(MAKE) -C installer clean

# The installer has to be cleaned first, because cleaning it depends on Rscript
#   clean0 and cleanwin0 exclude the installer
#   clean, distclean and cleanwin clean also the installer 
clean0: cleanwin0
	@$(MAKE) -C ../library -f Makefile.win clean
	$(RM) -f ../*/*.o ../*/*.a *.a ../*/*.d ../*/Makedeps fixed/fixdesc
	@for d in $(EXTRA_DIRS); do \
	  $(MAKE) -C ../extra/$${d} -f Makefile.win clean; \
	done
	-$(MK) -C ../../doc/manual -f Makefile.win distclean
	-$(MK) -C ../nmath/standalone -f Makefile.win distclean
	-$(MK) -C ../modules -f Makefile.win clean
	-$(MK) -C ../../tests -f Makefile.win clean
	-$(MK) -C ../library/Recommended -f Makefile.win clean
	$(RM) -f ../library/methods/all.R ../../etc/curl-ca-bundle.crt

clean: cleaninstaller clean0

distcleaninstaller:
	-$(MAKE) -C installer distclean 

distclean: cleaninstaller distcleaninstaller clean0
	@for d in $(EXTRA_DIRS); do \
	  $(MAKE) -C ../extra/$${d} -f Makefile.win distclean; \
	done
	@$(MAKE) -C ../../tests -f Makefile.win distclean
	$(RM) -R ../../bin ../../include ../../lib ../../library ../../modules
	$(RM) ../include/config.h ../include/iconv.h ../include/psignal.h \
	../include/Rconfig.h ../include/Rversion.h ../include/Rmath.h \
	../include/libintl.h ../include/trioremap.h
	$(RM) ../library/*/src/*.o ../library/*/src/*.a
	$(RM) ../library/*/src/*.d ../library/*/src/Makedeps
	$(RM) ../library/*/src/*.dll
	$(RM) ../library/*/src/windows/*.o ../library/*/src/windows/*.a
	$(RM) ../library/*/src/windows/*.d ../library/*/src/windows/Makedeps
	$(RM) ../library/*/src/windows/*.dll
	$(RM) -R ../library/*/check
	$(RM) ../library/*/tests/*.ps ../library/*/tests/*.pdf
	$(RM) ../library/tcltk/src/tcl$(TCL_VERSION).def \
	../library/tcltk//src/tk$(TCL_VERSION).def
	$(RM) R.exp COPYRIGHTS
	$(RM) ../../doc/html/index.html \
	../../doc/html/packages.html ../../doc/html/rwin.html \
	../../doc/html/rw-FAQ.html ../../doc/html/NEWS.html \
	../../doc/NEWS.rds ../../doc/NEWS.3.rds ../../doc/NEWS.2.rds \
	../../doc/NEWS ../../doc/NEWS.pdf \
	../../doc/CHANGES.rds ../../doc/html/CHANGES.html
	$(RM) ../../etc/Makeconf ../../etc/Rconsole ../../etc/Rdevga \
	../../etc/Rprofile.site ../../etc/rgb.txt ../../etc/Rcmd_environ \
	../../tests/*.Rout ../../tests/*.Rout.fail
	$(RM) -R ../../etc/i386 ../../etc/x64 # do both sub-archs
	$(RM) -R ../../share/zoneinfo
	$(MAKE) -C fixed distclean
	$(MAKE) -C ../include -f Makefile.win distclean
	@for pkg in $(R_PKGS_BASE) translations; do \
	  $(RM) ../library/$${pkg}/DESCRIPTION; \
	done
	$(RM) ../../SVN-REVISION.bak
	$(RM) ../../doc/manual/rw-FAQ
	$(RM) -R ../library/.vignettes # it gets left behind if there is an error
	$(RM) -R ../../share/locale # relic of earlier versions
	$(RM) MkRules Rpwd.exe # do this last of all

veryclean: distclean
	$(RM) ../../doc/FAQ ../../doc/RESOURCES ../../doc/NEWS.rds \
	  ../../doc/html/resources.html ../../doc/html/NEWS.html \
	  ../../SVN-REVISION # not in SVN sources

cleanwin0: MkRules fixfiles
	$(RM) *.o *.dll *.a *~ \#*\# .RData .Rhistory Makedeps *.d
	$(MAKE) -C ../extra/graphapp -f Makefile.win clean
	$(MAKE) -C fixed clean
	$(MAKE) -C getline clean
	$(MAKE) -C front-ends clean
	$(MAKE) -C ../library/grDevices/src/cairo -f Makefile.win clean WIN=$(WIN)

cleanwin: cleaninstaller cleanwin0


#                          ===== testing ======

check check-devel check-all check-recommended:
	@$(MK) -C ../../tests -f Makefile.win $@

#                          ===== documentation ======

pdfdocs manuals:
	@$(MK) -C ../../doc/manual -f Makefile.win clean
	@$(MK) -C ../../doc/manual -f Makefile.win

R_EXE = ../../$(BINDIR)/Rterm.exe --vanilla --no-echo

## must come after recommended
vignettes:
	@$(MK) -C ../library -f Makefile.win vignettes


## ===================== Maintainer targets ========================

RVER-PAT = $(shell version=`cut -d' ' -f1 ../../VERSION | sed -n 1p`; if test "`cut -f2 -d' ' ../../VERSION`" = "Patched"; then version=`echo $${version} | sed 's/\.[0-9]*$$//'`; echo "$${version}-patched"; else echo "$${version}"; fi)

CRANREC = cran.r-project.org::CRAN/src/contrib/$(RVER-PAT)/Recommended

## Use -c here to avoid re-downloading the same versions of files
## A recent rsync seems to need -p
rsync-recommended:
	@(cd ../library; \
	  rsync --timeout=60 -rcvpC --delete \
	    --exclude=Makefile.in --exclude=Makefile.win --exclude=.cvsignore \
	    --include=*.tar.gz --exclude=*.tgz --exclude=*.ts \
	    --exclude=".svn" $(CRANREC) . )
	@$(RM) ../library/Recommended/*.tgz
	@(cd ../library/Recommended; for i in ${R_PKGS_RECOMMENDED}; do cp -p $${i}*.tar.gz $${i}.tgz ; done)

link-recommended:
	@$(RM) ../library/Recommended/*.tgz
	@(cd ../library/Recommended; for i in ${R_PKGS_RECOMMENDED} ; do cp -p $${i}*.tar.gz $${i}.tgz ; done)


recommended:
	@$(ECHO) "--- Making recommended packages"
	@$(MK) -C ../library/Recommended -f Makefile.win

## Note that R_COMPILER_SUPPRESS_ALL is now on by default
bytecode-recommended:
	@$(ECHO) "--- Making and compiling recommended packages"
	@rm ../library/Recommended/*.ts
	@R_COMPILE_PKGS=1 R_COMPILER_SUPPRESS_ALL=1 \
	  $(MK) -C ../library/Recommended -f Makefile.win

RVER-MAJOR-MINOR = $(shell echo `cut -d'.' -f1,2 ../../VERSION`)
CRANEXT = cran.r-project.org::CRAN/bin/windows/extsoft/$(RVER-MAJOR-MINOR)/

rsync-extsoft:
	($(MKDIR) -p ../../extsoft; \
	cd ../../extsoft; \
	rsync --timeout=60 -rcvp --delete $(CRANEXT) . ) 


docfiles:
	@$(MK) -C ../../doc/manual -f Makefile.win FAQ


EXTRA_PKGS=
rinstaller:
	@$(MAKE) -C installer EXTRA_PKGS='$(EXTRA_PKGS)'
	@$(MAKE) -C installer clean

distribution:
	@$(MK) all
	@$(MK) cairodevices
	@$(MK) recommended
	@$(MK) vignettes
	@$(MK) manuals
	@$(MK) rinstaller
	@$(RM) -f ../../SVN-REVISION.bak

## Builds what is needed in a 32-bit build to copy to 64/32-bit installer
32-bit:
	@$(MK) all
	@$(MK) cairodevices
	@$(MK) recommended


## ============= End of maintainer targets ========================

DEPS = $(CSOURCES:.c=.d)

makeMakedeps: $(DEPS)
	@$(RM) Makedeps
	@cat $(DEPS) >> Makedeps

-include Makedeps
