The R Project SVN R

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6994 pd 1
#-*- Makefile -*-
2
RLIB=../../../library
3
DPKG=$(RLIB)/$(PKG)
4394 ripley 4
SPKG=.
13875 ripley 5
SAVE=CHECK
4394 ripley 6
 
17809 ripley 7
ifneq ($(strip $(BUILD)),CROSS)
17821 ripley 8
SPKG0 = $(shell $(RHOME)/src/gnuwin32/Rpwd.exe $(SPKG))
9
DPKG0 = $(shell $(RHOME)/src/gnuwin32/Rpwd.exe $(DPKG))
17809 ripley 10
else
17847 ripley 11
SPKG0=$(SPKG)
12
DPKG0=$(DPKG)
17809 ripley 13
endif
14
 
15
 
4394 ripley 16
ifeq ($(strip $(DLLNM)),)
17
  DLLNAME=$(PKG)
18
else
19
  DLLNAME=$(DLLNM)
20
endif
21
#this can be overwriten by the caller
22
SRC = src
23
 
24
#source directory
25
SSPKG=$(SPKG)/$(SRC)
26
 
24944 ripley 27
# src Makefile?
28
SRCMAKE=$(wildcard $(SSPKG)/Makefile.win)
24993 ripley 29
SDYNLIB=$(SSPKG)/$(DLLNAME).dll
24944 ripley 30
 
10002 ripley 31
LSOURCES=$(wildcard $(SSPKG)/*.c $(SSPKG)/*.f $(SSPKG)/*.cc \
32
	$(SSPKG)/*.cpp $(SSPKG)/*.C)
24993 ripley 33
ifeq ($(strip $(LSOURCES)),)
6098 pd 34
  LOBJS=
4394 ripley 35
else
8381 ripley 36
  LOBJS=$(foreach i, $(LSOURCES), $(basename $i).o)
4394 ripley 37
endif
38
 
39
# data
8381 ripley 40
DSOURCES=$(filter-out $(SPKG)/data/CVS, $(wildcard $(SPKG)/data/*))
4394 ripley 41
ifeq ($(strip $(DSOURCES)),)
42
  DATA= 
43
else
44
  DATA=$(DPKG)/data
45
endif
46
 
47
# R
48
PKGRFILES0=$(wildcard $(SPKG)/R/*.[RSqrs])
6135 ripley 49
RWIN32=$(wildcard $(SPKG)/R/windows/*.[Rr]) 
4394 ripley 50
ifeq ($(strip RWIN32),)
51
  PKGRFILES=$(PKGRFILES0)
52
else
6135 ripley 53
  R1 = $(foreach i,$(RWIN32), $(addprefix $(SPKG)/R/, $(notdir $i)))
9837 ripley 54
  PKGRFILES=$(filter-out $(R1), $(PKGRFILES0)) $(RWIN32)
4394 ripley 55
endif
56
 
13463 ripley 57
# demos
13488 ripley 58
PKGDEMOS0=$(wildcard $(SPKG)/demo/*)
59
PKGDEMOS=$(filter-out $(SPKG)/demo/CVS, $(PKGDEMOS0))
13463 ripley 60
 
22481 ripley 61
# exec
62
EXECFILES=$(filter-out $(SPKG)/exec/CVS, $(wildcard $(SPKG)/exec/*))
63
 
4394 ripley 64
# Others
22481 ripley 65
INSTFILES=$(filter-out $(SPKG)/inst/CVS, $(wildcard $(SPKG)/inst/*))
4394 ripley 66
 
27867 ripley 67
all:  
68
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg $(DPKG)/zzzz 
69
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg -s frontmatter
70
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg -s nmspace
71
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg Dynlib 
72
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg -s R
73
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg -s $(DPKG)/demo $(DPKG)/exec $(DPKG)/inst $(DATA)
74
	@$(MAKE) --no-print-directory -f $(RHOME)/src/gnuwin32/MakePkg -s mansrcs indices
4394 ripley 75
 
25595 ripley 76
fake: zzzfirst frontmatter nmspacefake R Rfake $(DPKG)/demo \
26830 ripley 77
  $(DPKG)/exec $(DPKG)/inst $(DATA) mansrcs indices
25573 ripley 78
 
11596 ripley 79
include $(RHOME)/src/gnuwin32/MkRules
4394 ripley 80
 
6098 pd 81
clean:
9360 ripley 82
ifeq ($(strip $(SRCMAKE)),)
24993 ripley 83
	$(RM) $(SDYNLIB) $(LOBJS) $(SSPKG)/$(DLLNAME).a  $(SSPKG)/$(DLLNAME).def $(SSPKG)/$(DLLNAME)_res.* $(SSPKG)/*.d $(SSPKG)/Makedeps
9360 ripley 84
else
85
	$(MAKE) -C $(SSPKG) RHOME=$(RHOME) -f Makefile.win clean
86
endif
9523 ripley 87
	$(RM) -rf $(SPKG)/chm $(SPKG)/check
6098 pd 88
 
22402 ripley 89
## used to build skeletal versions of packages, enough to run
90
## package tools to install them properly
24993 ripley 91
Rcode: Rcode0 Dynlib
4394 ripley 92
 
22402 ripley 93
Rcode0:
94
	@$(MKDIR) -p $(DPKG) $(DPKG)/R
95
	@$(CAT) $(PKGRFILES) > $(DPKG)/R/$(PKG)
23586 ripley 96
	@if test -f ${SPKG}/NAMESPACE; then \
97
	  $(CP) ${SPKG}/NAMESPACE $(DPKG)/NAMESPACE; \
98
	fi
22440 ripley 99
	@(cat DESCRIPTION; $(ECHO); $(ECHO) "Built: R" $(RVER)\;  \;  `date`) \
22402 ripley 100
	  | $(SED) '/^\s*$$/d' > ${DPKG}/DESCRIPTION
101
 
4394 ripley 102
$(DPKG)/R/$(PKG): $(PKGRFILES)
27781 ripley 103
ifneq ($(strip $(PKG)),base)
4394 ripley 104
ifneq ($(strip $(PKGRFILES)),)
22402 ripley 105
	@$(ECHO) "  installing R files"
25934 rgentlem 106
	@$(MKDIR) -p $(DPKG)/R
25941 ripley 107
ifeq ($(strip $(BUILD)),CROSS)
25957 ripley 108
	@$(ECHO) ".installPackageCodeFiles('"$(SPKG)"', '"$(DPKG)"')" \
27860 ripley 109
	  | R_DEFAULT_PACKAGES=tools R_OSTYPE=windows LC_COLLATE=C $(R_EXE) --vanilla --slave > /dev/null
25941 ripley 110
else
25957 ripley 111
	@$(ECHO) ".installPackageCodeFiles('"$(SPKG)"', '"$(DPKG)"')" \
112
	  | $(RHOME)/bin/rterm.exe --vanilla --slave \
27860 ripley 113
	    R_DEFAULT_PACKAGES=tools LC_COLLATE=C > /dev/null
25941 ripley 114
endif
25914 rgentlem 115
## install halts here if collater failed
27848 ripley 116
	@sh $(RHOME)/src/gnuwin32/install-save.sh $(SAVE) $(RLIB) $(PKG) $(RHOME) $(BUILD) $(R_EXE)
4394 ripley 117
else
118
	@$(ECHO) "  no R files in this package"
119
endif
27781 ripley 120
else
121
## .installPackageCodeFiles adds an unwanted .packageName
122
	@$(ECHO) "  installing R files"
123
	@$(MKDIR) -p $(DPKG)/R
124
	@$(CAT) $(PKGRFILES) > $(DPKG)/R/$(PKG)
125
endif
4394 ripley 126
 
13463 ripley 127
$(DPKG)/demo: $(PKGDEMOS)
128
ifneq ($(strip $(PKGDEMOS)),)
22402 ripley 129
	@$(ECHO) "  installing demos"
16680 ripley 130
	@$(RM) -rf $@
13463 ripley 131
	@$(MKDIR) -p $@
132
	@$(CP) $(PKGDEMOS)   $@
133
endif
134
 
22481 ripley 135
$(DPKG)/exec: $(EXECFILES)
136
ifneq ($(strip $(EXECFILES)),)
137
	@$(ECHO) "  installing exec files"
138
	@$(RM) -rf $@
139
	@$(MKDIR) -p $@
140
	@$(CP) $(EXECFILES)   $@
141
endif
4394 ripley 142
 
26830 ripley 143
$(DPKG)/inst: $(INSTFILES)
144
ifneq ($(strip $(INSTFILES)),)
145
	@$(ECHO) "  installing inst files"
146
	-@$(CP) -r inst/* $(DPKG)
26904 ripley 147
	@$(RM) -rf $(DPKG)/CVS $(DPKG)/*/CVS
26830 ripley 148
endif
22481 ripley 149
 
26830 ripley 150
 
25573 ripley 151
$(DPKG)/zzzz: zzzfirst
18581 ripley 152
	@if test -f ${SPKG}/configure.win; then \
19531 ripley 153
	  sh ${SPKG}/configure.win; \
18581 ripley 154
	else if test -f ${SPKG}/configure; then \
22402 ripley 155
	    $(ECHO) ; \
156
	    $(ECHO) "   **********************************************" ; \
157
	    $(ECHO) "   WARNING: this package has a configure script" ; \
158
	    $(ECHO) "         It probably needs manual configuration" ; \
159
	    $(ECHO) "   **********************************************" ; \
160
	    $(ECHO) ; \
18581 ripley 161
	  fi; \
17514 ripley 162
	fi
25573 ripley 163
 
164
zzzfirst:
165
ifeq ($(SPKG0),$(DPKG0))
166
	@$(ECHO)
167
	@$(ECHO) "  *** cannot install a package into its source directory ***"
168
	@$(ECHO)
169
	@exit 111
170
endif
171
	@$(ECHO)
172
	@$(ECHO) "---------- Making package $(PKG) ------------"
22512 ripley 173
	@$(MKDIR) -p $(DPKG)
25573 ripley 174
 
175
 
176
frontmatter:
177
	@$(MKDIR) -p $(DPKG)
13875 ripley 178
	@if test -f ${SPKG}/DESCRIPTION; then \
22402 ripley 179
	  $(ECHO) "  adding build stamp to DESCRIPTION"; \
21568 ripley 180
	else \
22402 ripley 181
	  $(ECHO) "A package must contain a DESCRIPTION file"; \
21568 ripley 182
	  exit 27; \
13875 ripley 183
	fi
22402 ripley 184
ifeq ($(strip $(BUILD)),CROSS)
27862 ripley 185
	@$(ECHO) ".installPackageDescription('.', '"$(DPKG)"')" | \
186
	  R_DEFAULT_PACKAGES=tools R_OSTYPE=windows $(R_EXE) --vanilla --slave > /dev/null
22402 ripley 187
else
23332 ripley 188
	@$(ECHO) ".installPackageDescription('.', '"$(DPKG)"')" | \
27580 ripley 189
	  $(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools > /dev/null
22402 ripley 190
endif
4394 ripley 191
 
25595 ripley 192
nmspace:
27580 ripley 193
ifeq ($(strip $(BUILD)),CROSS)
25580 ripley 194
	@if test -f ${SPKG}/NAMESPACE; then \
27580 ripley 195
	  $(ECHO) -n "  installing NAMESPACE file"; \
27608 ripley 196
	  if test -f ${SPKG}/NAMESPACE.windows ; then \
197
	  cat ${SPKG}/NAMESPACE ${SPKG}/NAMESPACE.windows > $(DPKG)/NAMESPACE; \
198
	  else \
199
	    $(CP) ${SPKG}/NAMESPACE $(DPKG)/NAMESPACE; \
200
          fi ; \
27580 ripley 201
	  $(ECHO) " and metadata"; \
27608 ripley 202
	  $(ECHO) ".installPackageNamespaceInfo('$(DPKG)', '$(DPKG)')" | \
27847 ripley 203
	    R_DEFAULT_PACKAGES=tools R_OSTYPE=windows $(R_EXE) --vanilla --slave > /dev/null; \
25580 ripley 204
	fi
27580 ripley 205
else
206
	@if test -f ${SPKG}/NAMESPACE; then \
207
	  $(ECHO) -n "  installing NAMESPACE file"; \
27608 ripley 208
	  if test -f ${SPKG}/NAMESPACE.windows ; then \
209
	  cat ${SPKG}/NAMESPACE ${SPKG}/NAMESPACE.windows > $(DPKG)/NAMESPACE; \
210
	  else \
211
	    $(CP) ${SPKG}/NAMESPACE $(DPKG)/NAMESPACE; \
212
          fi ; \
27580 ripley 213
	  $(ECHO) " and metadata"; \
27608 ripley 214
	  $(ECHO) ".installPackageNamespaceInfo('$(DPKG)', '$(DPKG)')" | \
27580 ripley 215
	    $(RHOME)/bin/rterm.exe R_DEFAULT_PACKAGES=tools --vanilla --slave > /dev/null; \
216
	fi
217
endif
25595 ripley 218
nmspacefake:
25580 ripley 219
	@if test -f ${SPKG}/NAMESPACE; then \
220
	  $(ECHO) "  installing NAMESPACE file"; \
221
	  $(SED) -e '/useDynLib/d' ${SPKG}/NAMESPACE > $(DPKG)/NAMESPACE; \
222
	fi
25573 ripley 223
 
25580 ripley 224
 
4394 ripley 225
$(DATA): $(DSOURCES)
22402 ripley 226
	@$(ECHO) "  installing data files"
16680 ripley 227
	@$(RM) -rf $(DATA)
11634 ripley 228
	@$(MKDIR) -p $(DATA)
229
	@$(CP) $^  $@
4394 ripley 230
 
231
 
24993 ripley 232
Dynlib: srcDynlib
233
	@if test -f $(SDYNLIB) ; then \
234
	  $(ECHO) "  installing DLL" ; \
235
	  $(MKDIR) -p $(DPKG)/libs ; \
236
	  $(CP) $(SDYNLIB) $(DPKG)/libs ; \
237
	fi
6994 pd 238
 
24993 ripley 239
srcDynlib:
240
ifeq ($(strip $(SRCMAKE)),)
241
ifneq ($(strip $(LOBJS)),)
22402 ripley 242
	@$(ECHO) "  making DLL ..."
21568 ripley 243
	@$(MAKE) --no-print-directory -C $(SSPKG) RHOME=$(RHOME) \
6994 pd 244
	  -f $(RHOME)/src/gnuwin32/MakeDll DLLNAME=$(DLLNAME)
24993 ripley 245
	@$(ECHO) "  ... DLL made"
246
endif
9360 ripley 247
else
24993 ripley 248
	@$(ECHO) "  running src/Makefile.win ..."
21568 ripley 249
	@$(MAKE) --no-print-directory -C $(SSPKG) RHOME=$(RHOME) -f Makefile.win
24993 ripley 250
	@$(ECHO) "  ... done"
9360 ripley 251
endif
4394 ripley 252
 
25573 ripley 253
# R
15416 ripley 254
AA=$(wildcard R/Makefile.win)
255
ifeq ($(AA),)
256
 R: $(DPKG)/R/$(PKG)
257
else
258
 include R/Makefile.win
259
endif
16586 ripley 260
 
25573 ripley 261
Rfake:
262
	@if test -f $(SPKG)/NAMESPACE; then \
263
	  echo ".onLoad <- function(list, pkg) NULL" >> $(DPKG)/R/$(PKG) ; \
264
	else \
265
	  echo ".First.lib <- function(lib, pkg) NULL" >> $(DPKG)/R/$(PKG) ;\
266
	fi
267
 
268
 
16697 ripley 269
MANMAIN=$(wildcard $(SPKG)/man/*.[Rr]d)
16587 ripley 270
MANWIN32=$(wildcard $(SPKG)/man/windows/*.[Rr]d) 
271
 
16697 ripley 272
mansrcs: $(DPKG)/man/$(PKG).Rd
273
 
18637 ripley 274
PKGMANFILES=$(MANMAIN) $(MANWIN32)
16697 ripley 275
$(DPKG)/man/$(PKG).Rd: $(MANMAIN) $(MANWIN32)
18637 ripley 276
ifneq ($(strip $(PKGMANFILES)),)
22402 ripley 277
	@$(ECHO) "  installing man source files"
16680 ripley 278
	@$(RM) -rf $(DPKG)/man
16587 ripley 279
	@$(MKDIR) -p $(DPKG)/man
22633 ripley 280
	@for rdfile in $^; do \
26378 murdoch 281
	  $(CAT) $${rdfile}; echo; echo '\eof'; \
22633 ripley 282
	done > $(DPKG)/man/$(PKG).Rd
18637 ripley 283
else
284
	@$(ECHO) "  no man files in this package"
285
endif
22402 ripley 286
 
287
indices:
288
	@$(ECHO) "  installing indices"
289
ifeq ($(strip $(BUILD)),CROSS)
25957 ripley 290
	@$(ECHO) ".installPackageIndices('.', '"$(DPKG)"')" | \
27860 ripley 291
	  R_DEFAULT_PACKAGES=tools LC_COLLATE=C R_OSTYPE=windows $(R_EXE) --vanilla --slave > /dev/null
22402 ripley 292
else
23332 ripley 293
	@$(ECHO) ".installPackageIndices('.', '"$(DPKG)"')" | \
27860 ripley 294
	  $(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools LC_COLLATE=C > /dev/null
22402 ripley 295
endif
22421 ripley 296
# need not have HTML installed when building packages
297
	@$(MKDIR) -p $(RHOME)/doc/html/search
298
	@$(CAT) $(RHOME)/library/*/CONTENTS > $(RHOME)/doc/html/search/index.txt	
299
	@PERL5LIB=$(RHOME)/share/perl $(PERL) \
300
	  $(RHOME)/share/perl/build-help-windows.pl -htmllists
23155 ripley 301
 
302
md5sums:
23215 ripley 303
ifneq ($(strip $(PKG)),base)
23155 ripley 304
	@$(ECHO) "  adding MD5 sums"
305
ifeq ($(strip $(BUILD)),CROSS)
25957 ripley 306
	@$(ECHO) ".installMD5sums('"$(DPKG)"')" | \
27860 ripley 307
	  R_DEFAULT_PACKAGES=tools LC_COLLATE=C R_OSTYPE=windows $(R_EXE) --vanilla --slave > /dev/null
23155 ripley 308
else
23332 ripley 309
	@$(ECHO) ".installMD5sums('"$(DPKG)"')" | \
27860 ripley 310
	  $(RHOME)/bin/rterm.exe --vanilla --slave R_DEFAULT_PACKAGES=tools LC_COLLATE=C > /dev/null
23215 ripley 311
endif
23313 ripley 312
endif