Rev 23404 | Blame | Last modification | View Log | Download | RSS feed
#-*- Makefile -*-RLIB=../../../libraryDPKG=$(RLIB)/$(PKG)SPKG=.SAVE=CHECKifneq ($(strip $(BUILD)),CROSS)SPKG0 = $(shell $(RHOME)/src/gnuwin32/Rpwd.exe $(SPKG))DPKG0 = $(shell $(RHOME)/src/gnuwin32/Rpwd.exe $(DPKG))elseSPKG0=$(SPKG)DPKG0=$(DPKG)endififeq ($(strip $(DLLNM)),)DLLNAME=$(PKG)elseDLLNAME=$(DLLNM)endif#this can be overwriten by the callerSRC = src#source directorySSPKG=$(SPKG)/$(SRC)LSOURCES=$(wildcard $(SSPKG)/*.c $(SSPKG)/*.f $(SSPKG)/*.cc \$(SSPKG)/*.cpp $(SSPKG)/*.C)ifeq ($(strip $(LSOURCES)),)LOBJS=DYNLIB=elseLOBJS=$(foreach i, $(LSOURCES), $(basename $i).o)DYNLIB=$(DPKG)/libs/$(DLLNAME).dllendif# dataDSOURCES=$(filter-out $(SPKG)/data/CVS, $(wildcard $(SPKG)/data/*))ifeq ($(strip $(DSOURCES)),)DATA=elseDATA=$(DPKG)/dataendif# RPKGRFILES0=$(wildcard $(SPKG)/R/*.[RSqrs])RWIN32=$(wildcard $(SPKG)/R/windows/*.[Rr])ifeq ($(strip RWIN32),)PKGRFILES=$(PKGRFILES0)elseR1 = $(foreach i,$(RWIN32), $(addprefix $(SPKG)/R/, $(notdir $i)))PKGRFILES=$(filter-out $(R1), $(PKGRFILES0)) $(RWIN32)endif# demosPKGDEMOS0=$(wildcard $(SPKG)/demo/*)PKGDEMOS=$(filter-out $(SPKG)/demo/CVS, $(PKGDEMOS0))# execEXECFILES=$(filter-out $(SPKG)/exec/CVS, $(wildcard $(SPKG)/exec/*))# OthersINSTFILES=$(filter-out $(SPKG)/inst/CVS, $(wildcard $(SPKG)/inst/*))# src Makefile?SRCMAKE=$(wildcard $(SSPKG)/Makefile.win)all: $(DPKG)/zzzz $(DYNLIB) R $(DPKG)/demo $(DPKG)/exec $(DATA) mansrcs \indicesbare: $(DPKG)/zzzz R $(DPKG)/demoinclude $(RHOME)/src/gnuwin32/MkRulesclean:ifeq ($(strip $(SRCMAKE)),)$(RM) $(SSPKG)/$(DLLNAME).dll $(LOBJS) $(SSPKG)/$(DLLNAME).a $(SSPKG)/$(DLLNAME).def $(SSPKG)/$(DLLNAME)_res.* $(SSPKG)/*.d $(SSPKG)/Makedepselse$(MAKE) -C $(SSPKG) RHOME=$(RHOME) -f Makefile.win cleanendif$(RM) -rf $(SPKG)/chm $(SPKG)/check## used to build skeletal versions of packages, enough to run## package tools to install them properlyRcode: Rcode0 $(DYNLIB)Rcode0:@$(MKDIR) -p $(DPKG) $(DPKG)/R@$(CAT) $(PKGRFILES) > $(DPKG)/R/$(PKG)@if test -f ${SPKG}/NAMESPACE; then \$(CP) ${SPKG}/NAMESPACE $(DPKG)/NAMESPACE; \fi@(cat DESCRIPTION; $(ECHO); $(ECHO) "Built: R" $(RVER)\; \; `date`) \| $(SED) '/^\s*$$/d' > ${DPKG}/DESCRIPTION$(DPKG)/R/$(PKG): $(PKGRFILES)ifneq ($(strip $(PKGRFILES)),)@$(ECHO) " installing R files"@$(MKDIR) -p $(DPKG)/R@$(CAT) $(PKGRFILES) > $@@sh $(RHOME)/src/gnuwin32/install-save.sh $(SAVE) $(RLIB) $(PKG) $(RHOME)else@$(ECHO) " no R files in this package"endif$(DPKG)/demo: $(PKGDEMOS)ifneq ($(strip $(PKGDEMOS)),)@$(ECHO) " installing demos"@$(RM) -rf $@@$(MKDIR) -p $@@$(CP) $(PKGDEMOS) $@endif$(DPKG)/exec: $(EXECFILES)ifneq ($(strip $(EXECFILES)),)@$(ECHO) " installing exec files"@$(RM) -rf $@@$(MKDIR) -p $@@$(CP) $(EXECFILES) $@endif$(DPKG)/zzzz:ifeq ($(SPKG0),$(DPKG0))@$(ECHO)@$(ECHO) " *** cannot install a package into its source directory ***"@$(ECHO)@exit 111endif@$(ECHO)@$(ECHO) "---------- Making package $(PKG) ------------"@if test -f ${SPKG}/configure.win; then \sh ${SPKG}/configure.win; \else if test -f ${SPKG}/configure; then \$(ECHO) ; \$(ECHO) " **********************************************" ; \$(ECHO) " WARNING: this package has a configure script" ; \$(ECHO) " It probably needs manual configuration" ; \$(ECHO) " **********************************************" ; \$(ECHO) ; \fi; \fi@$(MKDIR) -p $(DPKG)ifneq ($(strip $(INSTFILES)),)@$(ECHO) " installing inst files"-@$(CP) -r inst/* $(DPKG)endif@if test -f ${SPKG}/DESCRIPTION; then \$(ECHO) " adding build stamp to DESCRIPTION"; \else \$(ECHO) "A package must contain a DESCRIPTION file"; \exit 27; \fi@if test -f ${SPKG}/NAMESPACE; then \$(ECHO) " installing NAMESPACE file"; \$(CP) ${SPKG}/NAMESPACE $(DPKG)/NAMESPACE; \fiifeq ($(strip $(BUILD)),CROSS)@(cat DESCRIPTION; $(ECHO); $(ECHO) "Built: R" $(RVER)\; Win32\; `date`) \| $(SED) '/^\s*$$/d' > ${DPKG}/DESCRIPTIONelse@$(ECHO) ".installPackageDescription('.', '"$(DPKG)"')" | \$(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools> /dev/nullendif$(DATA): $(DSOURCES)@$(ECHO) " installing data files"@$(RM) -rf $(DATA)@$(MKDIR) -p $(DATA)@$(CP) $^ $@$(DYNLIB): $(SSPKG)/$(DLLNAME).dll@$(MKDIR) -p $(DPKG)/libs@$(CP) $^ $@$(SSPKG)/$(DLLNAME).dll: FORCE@$(ECHO) " making DLL ..."ifeq ($(strip $(SRCMAKE)),)@$(MAKE) --no-print-directory -C $(SSPKG) RHOME=$(RHOME) \-f $(RHOME)/src/gnuwin32/MakeDll DLLNAME=$(DLLNAME)else@$(MAKE) --no-print-directory -C $(SSPKG) RHOME=$(RHOME) -f Makefile.winendif@$(ECHO) " ... DLL made"FORCE:AA=$(wildcard R/Makefile.win)ifeq ($(AA),)R: $(DPKG)/R/$(PKG)elseinclude R/Makefile.winendifMANMAIN=$(wildcard $(SPKG)/man/*.[Rr]d)MANWIN32=$(wildcard $(SPKG)/man/windows/*.[Rr]d)mansrcs: $(DPKG)/man/$(PKG).RdPKGMANFILES=$(MANMAIN) $(MANWIN32)$(DPKG)/man/$(PKG).Rd: $(MANMAIN) $(MANWIN32)ifneq ($(strip $(PKGMANFILES)),)@$(ECHO) " installing man source files"@$(RM) -rf $(DPKG)/man@$(MKDIR) -p $(DPKG)/man@for rdfile in $^; do \$(CAT) $${rdfile}; echo '\eof'; \done > $(DPKG)/man/$(PKG).Rdelse@$(ECHO) " no man files in this package"endifindices:@$(ECHO) " installing indices"ifeq ($(strip $(BUILD)),CROSS)@$(ECHO) "library(tools); .installPackageIndices('.', '"$(DPKG)"')" | \R_DEFAULT_PACKAGES=tools $(R_EXE) --vanilla --slave > /dev/nullelse@$(ECHO) ".installPackageIndices('.', '"$(DPKG)"')" | \$(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools > /dev/nullendif# need not have HTML installed when building packages@$(MKDIR) -p $(RHOME)/doc/html/search@$(CAT) $(RHOME)/library/*/CONTENTS > $(RHOME)/doc/html/search/index.txt@PERL5LIB=$(RHOME)/share/perl $(PERL) \$(RHOME)/share/perl/build-help-windows.pl -htmllistsmd5sums:ifneq ($(strip $(PKG)),base)@$(ECHO) " adding MD5 sums"ifeq ($(strip $(BUILD)),CROSS)@$(ECHO) "library(tools); .installMD5sums('"$(DPKG)"')" | \R_DEFAULT_PACKAGES=tools $(R_EXE) --vanilla --slave > /dev/nullelse@$(ECHO) ".installMD5sums('"$(DPKG)"')" | \$(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools > /dev/nullendifendif