Rev 25580 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
include MkRulesinclude ../../share/make/vars.mk## This is done so Rpwd.exe gets built first under a native build,## but it is not used in Makefile under a cross-build.ifneq ($(strip $(BUILD)),CROSS)ifneq ($(strip $(wildcard Rpwd.exe)),)all: Rpwd.exe rbuild rpackage rdocselseall: Rpwd.exe$(MAKE) rbuild rpackage rdocsendifelseall: Rpwd.exe rbuild rpackage rdocsendif## must be absolute and space-free pathsifneq ($(strip $(BUILD)),CROSS)RHOME = $(shell ./Rpwd.exe ../..)PKGD = $(shell ./Rpwd.exe $(PKGDIR))elseRHOME = $(shell perl pwd.pl ../..)PKGD = $(shell perl pwd.pl $(PKGDIR))endifRPREFIX = $(shell perl fixed/rwver.pl ../../VERSION)PACKAGES = $(filter-out tcltk, $(R_PKGS_BASE))RLIB = $(RHOME)/libraryPKGDIR = $(RHOME)/src/libraryOPTFLAGS=-O2 -Wall -pedantic## use FOPTFLAGS where complex*16 is used.FOPTFLAGS=-O2 -Wallifdef DEBUGOPTFLAGS+=-gFOPTFLAGS+=-gDLLFLAGS=elseDLLFLAGS=-sendififneq ($(strip $(BUILD)),CROSS)R-DLLFLAGS = -mwindows## needed for gcc-3.2.2 but not 3.2 nor 3.2.3## R-DLLFLAGS = -mwindows -Wl,--allow-multiple-definitionelseR-DLLFLAGS = -mwindowsendifR-DLLLIBS =-L. $(FLIBS) -lRblas -lcomctl32 -lversionSOURCES = $(filter-out malloc.c blas00.c,$(wildcard *.c *.f))OBJS = $(SOURCES:.c=.o)MAINLIBS = libmain.a libappl.a libmath.aEXTRALIBS = ga.a gl.a xdr.a ../extra/zlib/libz.a ../extra/pcre/libRpcre.a\../extra/bzip2/libbz2.aLIBFILES = $(foreach i, $(R_PKGS_BASE), ../../library/$i) ../../library/R.cssPKGS = $(foreach i,$(PACKAGES),pkg-$i)PKGCLEAN = $(foreach i,$(R_PKGS_BASE),pkgclean-$i)# flags to ensure that Doug Lea's malloc is used:ifdef LEA_MALLOCextra-CFLAGS+=-DLEA_MALLOCOBJS-EXTRA=malloc.oendif.PHONY: clean veryclean rlibs fixfiles front-ends rmodules# separate as Tcl/Tk headers are needed.tcl:@$(MAKE) --no-print-directory pkg-tcltkCFLAGS = $(OPTFLAGS) -I../include -I. -DHAVE_CONFIG_H -DR_DLL_BUILDFFLAGS = $(FOPTFLAGS)Rpwd.exe: front-ends/Rpwd.exe$(CP) $< $@front-ends/Rpwd.exe:$(MAKE) --no-print-directory -C front-ends Rpwd## watch out: R.dll and Rblas.dll depend on each other.rbuild: fixfiles rlibs makeMakedeps libRblas.a ../../bin/R.dll libR.a \../../bin/Rblas.dll CHTML front-ends COPYRIGHTS rmodules Rcode## used to build skeletal versions of packages, enough to run## package tools to install them properlyINITPACKAGES = base toolsRcode: fixed/fixdesc@$(ECHO) " making bootstrap versions of packages ..."@for pkg in $(INITPACKAGES); do \if ! test -f $(RHOME)/library/$${pkg}/DESCRIPTION ; then \$(ECHO) " --" $$pkg; \$(MAKE) --no-print-directory -C $(PKGDIR)/$${pkg} PKG=$${pkg} \RHOME=$(RHOME) -f $(RHOME)/src/gnuwin32/MakePkg Rcode; \fi; \done@$(ECHO) " ... done"rpackage: ../../library/R.css@$(MAKE) --no-print-directory $(PKGS)rlibs:$(MAKE) --no-print-directory -C ../appl OPTFLAGS='$(OPTFLAGS)' -f Makefile.win$(MAKE) --no-print-directory -C ../main OPTFLAGS='$(OPTFLAGS)' -f Makefile.win$(MAKE) --no-print-directory -C ../nmath OPTFLAGS='$(OPTFLAGS)' -f Makefile.win$(MAKE) --no-print-directory -C ./graphapp$(MAKE) --no-print-directory -C ./getline$(MAKE) --no-print-directory -C ../extra/xdr -f Makefile.winrmodules: libRm.a$(MAKE) --no-print-directory -C ../modules \OPTFLAGS='$(OPTFLAGS)' FOPTFLAGS='$(FOPTFLAGS)' -f Makefile.winCOPYRIGHTS: $(RHOME)/COPYRIGHTS COPYRIGHTS.wincat $^ > $@fixfiles: docfiles@$(MKDIR) -p ../../bin@$(MAKE) --no-print-directory -C ./fixedfixed/fixdesc:@sh fixed/GETDESC $(R_PKGS_BASE)dllversion.o: ../include/Rversion.hR.dll: R.a $(OBJS-EXTRA) $(MAINLIBS) $(EXTRALIBS) dllversion.oRdll: makeMakedeps libRblas.a ../../bin/R.dll../../bin/R.dll: fixfiles rlibs R.dll@$(MKDIR) -p ../../bin$(CP) R.dll ../../bin/front-ends: libR.a$(MAKE) --no-print-directory -C front-endsR.a: $(OBJS)@$(ECHO) -------- Building $@ --------$(AR) cr R.a $^$(RANLIB) R.a# R.dll exports all global symbols BUT import library (libR.a)# only (all functions) + (global vars listed in exported-vars))libR.a: R.exp$(DLLTOOL) $(DLLTOOLFLAGS) $(R-DLLTOOLFLAGS) --dllname R.dll --def R.exp --output-lib libR.aR.exp: R.exp1@(diff R.exp R.exp1 > /dev/null) || $(CP) R.exp1 R.expR.exp1: R.a $(MAINLIBS) $(EXTRALIBS) exported-vars@$(ECHO) EXPORTS > $@@$(NM) R.a $(MAINLIBS) $(EXTRALIBS) > RDefs@$(SED) -n '/^........ [T] _/s/^........ [T] _/ /p' RDefs >> $@@$(CAT) exported-vars >> $@@$(RM) RDefs# An additional import library needed for the modules that uses R.dll's malloc/.../freelibRm.a: Rm.exp$(DLLTOOL) $(DLLTOOLFLAGS) $(R-DLLTOOLFLAGS) --dllname R.dll --def Rm.exp --output-lib libRm.aRm.exp: Rm.exp1@(diff Rm.exp Rm.exp1 > /dev/null) || $(CP) Rm.exp1 Rm.expRm.exp1: $(OBJS-EXTRA)@$(ECHO) EXPORTS > $@@$(NM) $(OBJS-EXTRA) > RDefs@$(SED) -n '/^........ [T] _/s/^........ [T] _/ /p' RDefs >> $@@$(RM) RDefs../../library/R.css: ../../doc/html/R.css$(CP) $< $@../extra/zlib/libz.a:$(MAKE) --no-print-directory -C ../extra/zlib -f Makefile.win../extra/pcre/libRpcre.a:$(MAKE) --no-print-directory -C ../extra/pcre -f Makefile.win../extra/bzip2/libbz2.a:$(MAKE) --no-print-directory -C ../extra/bzip2 -f Makefile.win libbz2.ardocs:@$(ECHO)@$(ECHO) "------ Making HTML documentation ------"@$(MAKE) --no-print-directory -C ../../doc/manual -f Makefile.win html BUILD=$(BUILD)# ===== BLAS ======Rblas: ../../bin/Rblas.dllRblas-clean:$(RM) ../../bin/Rblas.dll blas00.o blas00.d blas.o cmplxblas.oRblas-DLLLIBS=-L. -lRlibRblas.a: Rblas.def$(DLLTOOL) $(DLLTOOLFLAGS) $(R-DLLTOOLFLAGS) --dllname Rblas.dll \--def Rblas.def --output-lib libRblas.aifeq ($(strip $(USE_ATLAS)),YES)../../bin/Rblas.dll: blas00.o dllversion.o@$(ECHO) -------- Building $@ --------$(DLL) -shared $(DLLFLAGS) -o $@ $^ Rblas.def -L $(ATLAS_PATH) \-L. -lR -lg2c -lf77blas -latlas## suppress lots of warnings: this is a dummyblas00.o: blas00.c$(CC) -O2 -c $< -o $@else../../bin/Rblas.dll: blas.o cmplxblas.o zgemm.o dllversion.o@$(ECHO) -------- Building $@ --------$(DLL) -shared $(DLLFLAGS) -o $@ Rblas.def $^ -L. -lRblas.o: ../appl/blas.f$(F77) $(FFLAGS) -c $< -o $@zgemm.o: ../appl/zgemm.f$(F77) $(FOPTFLAGS) -c $< -o $@cmplxblas.o: ../modules/lapack/cmplxblas.f$(F77) $(FOPTFLAGS) -c $< -o $@endif# ===== Packages ======CHTML:ifeq ($(strip $(HELP)),YES)ifeq ($(strip $(WINHELP)),CHM)$(MAKE) --no-print-directory -C ./help -f MkChmDllendififeq ($(strip $(WINHELP)),BOTH)$(MAKE) --no-print-directory -C ./help -f MkChmDllendifendifbase-HELP = ziponlymethods-HELP = ziponlynls-HELP = ziponlyts-HELP = ziponlybase-ZIPDATA = zipts-ZIPDATA = zipMASS-HELP = ziponlyMASS-ZIPDATA = zipboot-HELP = ziponlyboot-ZIPDATA = zipcluster-HELP = ziponlycluster-ZIPDATA = zipgrid-HELP = ziponlygrid-ZIPDATA = ziplattice-HELP = ziponlylattice-ZIPDATA = zipnlme-HELP = ziponlynlme-ZIPDATA = ziprpart-HELP = ziponlyrpart-ZIPDATA = zipsurvival-HELP = ziponlysurvival-ZIPDATA = zip# need special-case handling for bundle, as --auto-zip is not enableddse1-HELP = ziponlydse2-HELP = ziponlybundle-%:@$(PERL) fixed/dobundle.pl $* $(PKGD) $(RLIB)pkg-%:@$(MAKE) --no-print-directory DLLNM=$($*-DLLNM) FLIBS="$(FLIBS)" BUILD=$(BUILD) \-C $(PKGDIR)/$* PKG=$* RHOME=$(RHOME) RLIB=$(RLIB) RVER=$(RVER) \-f $(RHOME)/src/gnuwin32/MakePkg@if test -d $(RLIB)/$*/data ; then \$(MAKE) --no-print-directory $($*-ZIPDATA)data-$* ; \fiifeq ($(strip $(HELP)),YES)@$(ECHO) " installing help"@$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) $($*-HELP)help-$*ifeq ($(strip $(WINHELP)),CHM)@$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) chm-$*endififeq ($(strip $(WINHELP)),BOTH)@$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) winhlp-$* # also makes chmendifendif@$(MAKE) --no-print-directory BUILD=$(BUILD) \-C $(PKGDIR)/$* PKG=$* RHOME=$(RHOME) RLIB=$(RLIB) \-f $(RHOME)/src/gnuwin32/MakePkg md5sumspkgfake-%:@$(MAKE) --no-print-directory DLLNM=$($*-DLLNM) FLIBS="$(FLIBS)" BUILD=$(BUILD) \-C $(PKGDIR)/$* PKG=$* RHOME=$(RHOME) RLIB=$(RLIB) RVER=$(RVER) \-f $(RHOME)/src/gnuwin32/MakePkg fake@$(ECHO) " installing help"@$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) pkgfake-$*pkgclean-%:$(MAKE) --no-print-directory DLLNM=$($*-DLLNM) RHOME=$(RHOME) BUILD=$(BUILD) \-C $(PKGDIR)/$* PKG=$* -f $(RHOME)/src/gnuwin32/MakePkg cleanpkgcheck-%:@$(ECHO) -------- Testing package $* ---------@$(MKDIR) -p $(PKGDIR)/$*/check@$(MAKE) --no-print-directory -C $(PKGDIR)/$*/check PKG=$* RHOME=$(RHOME) RLIB=$(RLIB) \-f $(RHOME)/src/gnuwin32/check/PkgCheck@if test -d $(PKGDIR)/$*/tests ; then \$(MAKE) --no-print-directory -C $(PKGDIR)/$*/tests PKG=$* RHOME=$(RHOME) RLIB=$(RLIB) \-f $(RHOME)/src/gnuwin32/check/PkgCheck tests;\fiziphelp-%:$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) ziphelp-$*ziponly-%:$(MAKE) --no-print-directory -C ./help RHOME=$(RHOME) PKGDIR=$(PKGD) RLIB=$(RLIB) ziponlyhelp-$*zipdata-%:@$(ECHO) " zipping data"@(cd $(RLIB)/$*/data; \if test -f Rdata.zip ; then \unzip -qou Rdata; \fi; \$(RM) Rdata.zip filelist ; \ls -1 > filelist; \zip -rmq9X Rdata * -x filelist 00Index)data-%:@$(ECHO) " not zipping data"# ===== cleaning ======clean: cleanwin $(PKGCLEAN)$(RM) -f ../*/*.o $(WINOBJS) *.a ../*/*.d ../*/Makedeps fixed/fixdesc-$(MAKE) --no-print-directory -C ../../doc/manual -f Makefile.win distclean-$(MAKE) --no-print-directory -C ../nmath/standalone -f Makefile.win distclean-$(MAKE) --no-print-directory -C ../modules -f Makefile.win clean-$(MAKE) --no-print-directory -C ../../tests -f Makefile.win clean$(RM) -f ../library/methods/R/methodsfor p in $(R_PKGS_RECOMMENDED); do \$(RM) -rf ../library/$$p; \donedistclean veryclean: clean clean-recommended$(RM) -r ../../bin ../../lib ../../library ../../modules$(RM) ../include/config.h ../include/psignal.h \../include/Rconfig.h ../include/Rversion.h ../include/Rmath.h$(RM) ../library/*/src/*.o ../library/*/src/*.a$(RM) ../library/*/src/*.d ../library/*/src/Makedeps$(RM) ../library/*/src/*.dll$(RM) -r ../library/*/check$(RM) ../library/tcltk/src/tcl$(TCL_VERSION).def \../library/tcltk//src/tk$(TCL_VERSION).def$(RM) R.exp Rm.exp COPYRIGHTS$(RM) ../../doc/html/search/index.txt ../../doc/html/index.html \../../doc/html/packages.html ../../doc/html/rwin.html \../../doc/html/rw-FAQ.html ../../doc/html/search/SearchEngine.html$(RM) ../../etc/Rconsole ../../etc/Rdevga ../../etc/Rprofile \../../etc/rgb.txt ../../share/make/wintests.mk \../include/Platform.h ../../tests/*.Rout ../../tests/*.Rout.fail$(MAKE) -C fixed distclean-$(MAKE) -C installer distclean@for pkg in $(R_PKGS_BASE); do \$(RM) ../library/$${pkg}/DESCRIPTION; \done$(RM) rw-FAQ fixed/html/rw-FAQ.html$(RM) -r cran/index.html cran/ReadMe cran/README* cran/*.exe cran/md5sum.txt \cran/mini$(RM) Rpwd.exe # do this last of allcleanwin:$(RM) *.o *.dll *.a *~ \#*\# rw*.zip R.def R.exp1 Rm.exp1\.RData .Rhistory Makedeps *.d$(MAKE) -C graphapp clean$(MAKE) -C fixed clean$(MAKE) -C getline clean$(MAKE) -C help clean$(MAKE) -C front-ends clean$(MAKE) -C ../extra/xdr -f Makefile.win clean$(MAKE) -C ../extra/pcre -f Makefile.win distclean$(MAKE) -C ../extra/bzip2 -f Makefile.win clean$(MAKE) -C bitmap clean-$(MAKE) -C installer clean# ===== testing ======# testscheck test: pkgtests test-Basictest-Basic:-@$(MAKE) --no-print-directory -C $(RHOME)/tests -f Makefile.win clean-@$(MAKE) --no-print-directory -C $(RHOME)/tests -f Makefile.winPKGS-CHK = $(foreach i, $(PACKAGES), pkgcheck-$i)pkgtests: $(PKGS-CHK)check-devel: check-@$(MAKE) --no-print-directory -C $(RHOME)/tests -f Makefile.win $@check-all fullcheck: check-devel check-recommendedcheck-recommended:$(foreach i, $(R_PKGS_RECOMMENDED), pkgcheck-$i)# ===== documentation ======docs manuals:@$(MAKE) --no-print-directory -C $(RHOME)/doc/manual -f Makefile.win clean BUILD=$(BUILD)@$(MAKE) --no-print-directory -C $(RHOME)/doc/manual -f Makefile.win BUILD=$(BUILD)# @$(MAKE) --no-print-directory ziponly-base## ===================== Maintainer targets ========================RVER = $(shell cut -d' ' -f1 ../../VERSION | sed -n 1p)docfiles:$(MAKE) -f Makefile.docfilesbitmapdll:$(MAKE) -C bitmapCRANREC = cran.r-project.org::CRAN/src/contrib/$(RVER)/Recommendedrsync-recommended:@(cd ../library; \rsync -rvCt --delete --exclude=Makefile.in --exclude=.cvsignore \--include=*.tar.gz --exclude=*.tgz $(CRANREC) . ); \$(RM) ../library/Recommended/*.tgz; \(cd ../library/Recommended; for i in ${R_PKGS_RECOMMENDED_SOURCES} ; do cp -p $${i}*.tar.gz $${i}.tgz ; done)../library/%/DESCRIPTION: ../library/Recommended/%.tgz@$(ECHO) "---- $*"(cd ../library; rm -rf $*; tar zxf Recommended/$*.tgz; touch $@)unpack-recommended:@$(ECHO) "--- Unpacking recommended packages"@for i in ${R_PKGS_RECOMMENDED_SOURCES} ; do $(MAKE) -s --no-print-directory ../library/$$i/DESCRIPTION ; doneclean-recommended:@for i in ${R_PKGS_RECOMMENDED_SOURCES} ; do $(RM) -r ../library/$${i} ; donerecommended: unpack-recommended@$(ECHO) "--- Making recommended packages"@$(MAKE) --no-print-directory bundle-VR@for p in $(filter-out VR, $(R_PKGS_RECOMMENDED_SOURCES)); do \$(MAKE) --no-print-directory pkg-$$p; \donerinstaller:$(MAKE) -C installer$(MAKE) -C installer cleancrandir:$(MKDIR) -p cran/mini$(CP) installer/rw*.exe CHANGES cran(cd cran;\$(ECHO) 'cat(md5sum("$(RPREFIX).exe"),"*$(RPREFIX).exe")' \| $(RHOME)/bin/rterm --vanilla --slave R_DEFAULT_PACKAGES=tools >md5sum.txt)$(CP) installer/mini*.* cran/mini(cd cran/mini;\$(ECHO) 'fn <- dir(pattern="mini*"); cat(paste(md5sum(fn)," *",fn,sep=""),sep="\n")' \| $(RHOME)/bin/rterm --vanilla --slave R_DEFAULT_PACKAGES=tools >md5sum.txt)$(SED) -e s/@RWVER@/$(RPREFIX)/g \-e s/@RVER@/$(RVER)/g readme > cran/README.$(RPREFIX)$(SED) -e s/@RWVER@/$(RPREFIX)/g \-e s/@RVER@/$(RVER)/g cran/index.in > cran/index.html$(SED) -e s/@RWVER@/$(RPREFIX)/g \-e s/@RVER@/$(RVER)/g cran/ReadMe.in > cran/ReadMedistribution:$(MAKE) Rpwd.exe$(MAKE) rbuild$(MAKE) rpackage$(MAKE) rdocs$(MAKE) bitmapdll$(MAKE) tcl$(MAKE) recommended$(MAKE) docs$(MAKE) rinstaller$(MAKE) crandir## ============= End of maintainer targets ========================# DependenciesCSOURCES=$(filter-out malloc.c blas00.c,$(wildcard *.c))DEPS=$(CSOURCES:.c=.d)makeMakedeps: $(DEPS)@$(RM) Makedeps@cat $(DEPS) >> Makedeps-include Makedeps