| 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 |
| |
| |
| cairodevices: |
| ifneq "$(CAIRO_HOME)" "" |
| @$(MK) -C ../library/grDevices/src/cairo -f Makefile.win all \ |
| WIN=$(WIN) CAIRO_HOME=$(CAIRO_HOME) |
| 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) |
| FFLAGS = -O3 $(EOPTS) |
| ifdef DEBUG |
| CFLAGS += $(G_FLAG) |
| FFLAGS += $(G_FLAG) |
| DLLFLAGS = |
| else |
| DLLFLAGS = -s |
| endif |
| |
| |
| R-DLLFLAGS = -mwindows |
| LIBEXTRAS = -L"$(EXT_LIBS)"/lib$(R_ARCH) -lpcre -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 malloc.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; \ |
| 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='$(FFLAGS)' |
| |
| 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 |
| |
| clean: cleanwin |
| @$(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 |
| |
| distclean: clean |
| @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 ../../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 |
| -$(MAKE) -C installer distclean |
| @for pkg in $(R_PKGS_BASE) translations; do \ |
| $(RM) ../library/$${pkg}/DESCRIPTION; \ |
| done |
| $(RM) ../../SVN-REVISION.bak |
| $(RM) ../../doc/manual/rw-FAQ |
| $(MAKE) -C cran clean |
| $(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 |
| |
| cleanwin: 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) |
| -$(MAKE) -C installer clean |
| |
| |
| # ===== 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 --slave |
| |
| ## 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 |
| |
| crandir: |
| ifeq "$(WIN)" "64" |
| $(MAKE) -C cran all |
| endif |
| |
| distribution: |
| @$(MK) all |
| @$(MK) cairodevices |
| @$(MK) recommended |
| @$(MK) vignettes |
| @$(MK) manuals |
| @$(MK) rinstaller |
| @$(MK) crandir |
| @$(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 ======================== |
| |
| # Dependencies: malloc.c doesn't have any |
| DEPS = $(CSOURCES:.c=.d) |
| |
| makeMakedeps: $(DEPS) |
| @$(RM) Makedeps |
| @cat $(DEPS) >> Makedeps |
| |
| -include Makedeps |