Rev 21986 | 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 = srcSTAMP = YES#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))# OthersOFILES0=$(wildcard $(SPKG)/*)OFILES1= INDEXOFILES-NO= R r chm data man src src-c demo Makefile.in inst check orig tests \DESCRIPTION DESCRIPTION.in INDEX TITLE index title \configure configure.ac configure.in configure.win cleanup CVS cvsOFILES3=$(foreach i, $(OFILES1), $(SPKG)/$i)OFILES2=$(foreach i, $(OFILES-NO), $(SPKG)/$i)OFILES=$(filter-out $(OFILES2),$(OFILES0))INSTFILES=$(wildcard $(SPKG)/inst/*)# src Makefile?SRCMAKE=$(wildcard $(SSPKG)/Makefile.win)all: $(DPKG)/zzzz $(DYNLIB) R $(DPKG)/demo $(DATA) mansrcsbare: $(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$(DPKG)/R/$(PKG): $(PKGRFILES)ifneq ($(strip $(PKGRFILES)),)@echo " installing R files"@$(MKDIR) -p $(DPKG)/R# $(CAT) $(PKGRFILES) | $(SED) $(SEDP) > $@@$(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# This fails if DESCRIPTION.. doesn't exist.# $(DPKG)/zzzz: $(OFILES3) $(OFILES)# On the other hand, ...zzzz is never created so$(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)ifeq ($(strip $(INSTFILES)),)-@$(CP) -r $(OFILES3) $(OFILES) $(DPKG)/else@echo " installing inst files"-@$(CP) -r $(OFILES3) inst/* $(DPKG)/endif@if test -f ${SPKG}/DESCRIPTION; then \echo " adding build stamp to DESCRIPTION" ; \(cat DESCRIPTION; echo; echo "Built: R" $(RVER)\; Win32\; `date`) \| $(SED) '/^\s*$$/d' > ${DPKG}/DESCRIPTION; \else \echo "A package must contain a DESCRIPTION file"; \exit 27; \fi$(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"@echoFORCE: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@$(CAT) $^ > $(DPKG)/man/$(PKG).Rdelse@$(ECHO) " no man files in this package"endif