Rev 81507 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
R_HOME = ../..## first time through MkRules will not exist.ifeq ($(wildcard MkRules?local),MkRules.local)include MkRules.localendifinclude MkRules.rulesinclude ../../share/make/vars.mkMK = $(MAKE) --no-print-directoryall:@$(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.winbytecode: bytecode-base bytecode-recommendedbytecode-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.winrpackages:@$(MK) -C ../library -f Makefile.win all WIN=$(WIN) EXT_LIBS="$(EXT_LIBS)"@$(MK) -C ../library -f Makefile.win docsrpackages-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)endififeq ($(wildcard MkRules?local),MkRules.local)MkRules: MkRules.local MkRules.rules@cat MkRules.local MkRules.rules > MkRuleselseMkRules: MkRules.rules@cat MkRules.rules > MkRulesendifCFLAGS = -O3 -Wall -pedantic $(EOPTS) $(LTO)FFLAGS = -O3 $(EOPTS) $(LTO)ifdef DEBUGCFLAGS += $(G_FLAG)FFLAGS += $(G_FLAG)elseDLLFLAGS += -sendifR-DLLFLAGS = -mwindowsLIBEXTRAS = -L"$(EXT_LIBS)"/lib$(R_ARCH) -lpcre2-8 -lz -lbz2 -llzmaifdef USE_ICULIBEXTRAS += -L"$(ICU_PATH)"/lib$(R_ARCH) $(ICU_LIBS)endifdllversion-RESFLAGS = -I../includeCSOURCES = \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.cOBJS = $(CSOURCES:.c=.o) dllversion.oifeq "$(WIN)" "32"OBJS += e_pow.oendifMAINLIBS = ../main/libmain.a ../appl/libappl.a ../nmath/libnmath.aEXTRALIBS = getline/gl.a ../extra/xdr/libxdr.a \../extra/intl/libintl.a ../extra/trio/libtrio.a ../extra/tzone/libtz.a \../extra/tre/libtre.aR-DLLLIBS = $(OPENMP) -L. $(FLIBS) -lRblas -L../../$(IMPDIR) -lRgraphapp \-lRiconv -lcomctl32 -lole32 -luuid -lwinmm -lversion $(LIBEXTRAS).PHONY: clean veryclean rlibs fixfiles front-ends rmodulesCPPFLAGS = -I../include -I. -I../extra -DHAVE_CONFIG_H -DR_DLL_BUILDextra-CPPFLAGS = -I../library/grDevices/srcRpwd.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.winifdef USE_IMPLIBS@$(MK) libRiconv.dll.aendif@$(MK) libRblas.dll.a@$(MK) ../../$(BINDIR)/R.dllifdef USE_IMPLIBS@$(MK) implibsendif@$(MK) Rblas@$(MK) front-ends COPYRIGHTS rmodules fixed/fixdescrlibs:$(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; \donermodules:@$(MKDIR) -p ../../modules$(R_ARCH)$(MK) -C ../modules -f Makefile.win \CFLAGS='$(CFLAGS)' FFLAGS='$(FFLAGS)'COPYRIGHTS: ../../doc/COPYRIGHTS COPYRIGHTS.wincat $^ > $@fixfiles: Rpwd.exe@$(MKDIR) -p ../../$(BINDIR)@$(MK) -C ./fixedifdef 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; \fiendiffixed/fixdesc:@sh fixed/GETDESC $(R_PKGS_BASE) translationsdllversion.o: ../include/Rversion.h## Rdll.hide has decoration which 64-bit builds lackifeq "$(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.defelseR.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.defendifR.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.defRdll: 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) $^ ../../liblibR.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.winNEWSdocs:@$(MK) -C ../../doc -f Makefile.winhtmldocs:@$(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 cleanlibRblas.dll.a: ../extra/blas/Rblas.def@$(DLLTOOL) $(DLLTOOLFLAGS) --dllname Rblas.dll \--input-def $< --output-lib $@# ===== cleaning ======## used in installer/MakefilePKGDIR = ../librarypkgclean-%:@(cd $(PKGDIR)/$*/src; rm -f *.d *.o *.dll *_res.rc Makedeps)EXTRA_DIRS = blas graphapp intl tre trio tzone xdr win_iconvcleaninstaller:-$(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 installerclean0: 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.crtclean: cleaninstaller clean0distcleaninstaller:-$(MAKE) -C installer distcleandistclean: 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 allveryclean: distclean$(RM) ../../doc/FAQ ../../doc/RESOURCES ../../doc/NEWS.rds \../../doc/html/resources.html ../../doc/html/NEWS.html \../../SVN-REVISION # not in SVN sourcescleanwin0: 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.winR_EXE = ../../$(BINDIR)/Rterm.exe --vanilla --no-echo## must come after recommendedvignettes:@$(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 -prsync-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 defaultbytecode-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.windocfiles:@$(MK) -C ../../doc/manual -f Makefile.win FAQEXTRA_PKGS=rinstaller:@$(MAKE) -C installer EXTRA_PKGS='$(EXTRA_PKGS)'@$(MAKE) -C installer cleandistribution:@$(MK) all@$(MK) cairodevices@$(MK) recommended@$(MK) vignettes@$(MK) manuals@$(MK) rinstaller@$(RM) -f ../../SVN-REVISION.bak## ============= End of maintainer targets ========================DEPS = $(CSOURCES:.c=.d)makeMakedeps: $(DEPS)@$(RM) Makedeps@cat $(DEPS) >> Makedeps-include Makedeps