The R Project SVN R

Rev

Rev 75228 | Rev 78249 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13931 ripley 1
# Makefile for R for Windows Installers
4606 ripley 2
 
3
include ../MkRules
53049 ripley 4
 
5
## Formerly in MkRules
6
FIND = find
7
 
30074 ripley 8
R_HOME = ../../..
9
include $(R_HOME)/share/make/vars.mk
25426 ripley 10
 
51492 ripley 11
## use this to install other packages from main library
32005 ripley 12
EXTRA_PKGS =
13
 
38480 murdoch 14
## Default display mode, 0=MDI, 1=SDI
15
MDISDI = 0
16
 
49785 ripley 17
## Default help style, 0=plain text, 1=HTML
18
HelpStyle = 1
38480 murdoch 19
 
47374 ripley 20
## Used to set Registry entries
21
Producer = R-core
22
 
53418 ripley 23
ifeq "$(WIN)" "64"
51880 ripley 24
ifneq ($(strip $(HOME32)),)
25
SUFF = win
26
else
51026 ripley 27
SUFF = win64
51880 ripley 28
endif
50939 ripley 29
else
51026 ripley 30
SUFF = win32
50939 ripley 31
endif
32
 
33028 murdoch 33
FULLVERSION=`cat ../../../VERSION`
51937 ripley 34
RPREFIX = $(shell ../../../bin$(R_ARCH)/Rscript ../fixed/rwver.R)
59848 ripley 35
LIBFILES = $(foreach i, $(R_PKGS_BASE) $(R_PKGS_RECOMMENDED) translations $(EXTRA_PKGS), $(R_HOME)/library/$i)
4606 ripley 36
 
63785 ripley 37
INFO_FILES = COPYING README
38
DOC_INFO_FILES = AUTHORS COPYING FAQ RESOURCES THANKS CHANGES \
39
  NEWS NEWS.0 NEWS.1 NEWS.2 
61819 ripley 40
GW_INFO_FILES = COPYRIGHTS README.Rterm ../../doc/manual/rw-FAQ
30054 ripley 41
 
51141 ripley 42
ETC_FILES = Rprofile.site Rconsole Rdevga rgb.txt repositories Rcmd_environ
30057 ripley 43
 
51141 ripley 44
 
53360 ripley 45
# we don't want share/{Makefile.in,java,sh} installed
66008 murdoch 46
SHARE_DIRS = R dictionaries encodings licenses make Rd texmf zoneinfo
30057 ripley 47
 
53445 ripley 48
all: $(RPREFIX)-win.exe
53433 ripley 49
msi: $(RPREFIX)-$(SUFF).msi
4985 ripley 50
 
23357 murdoch 51
imagedir:
62626 ripley 52
	$(RM) -R $(RPREFIX)
23357 murdoch 53
	$(MKDIR) $(RPREFIX)
62624 ripley 54
	$(CP) -pR $(R_HOME)/bin $(R_HOME)/modules $(RPREFIX)
30057 ripley 55
# copy base and recommended packages
23357 murdoch 56
	$(MKDIR) -p $(RPREFIX)/library
62624 ripley 57
	$(CP) -pR $(LIBFILES) $(RPREFIX)/library
30938 ripley 58
	$(RM) $(RPREFIX)/library/*/MD5
23357 murdoch 59
	$(RM) $(RPREFIX)/*/Makefile.in
51337 ripley 60
	$(MKDIR) -p $(RPREFIX)/etc$(R_ARCH)
30057 ripley 61
	$(CP) -p $(foreach i,$(ETC_FILES),$(R_HOME)/etc/$i) $(RPREFIX)/etc
67494 ripley 62
	if test -f "$(R_HOME)/etc/curl-ca-bundle.crt"; then \
63
	  $(CP) -p "$(R_HOME)/etc/curl-ca-bundle.crt" $(RPREFIX)/etc; \
64
	fi
51338 ripley 65
	$(CP) -p $(R_HOME)/etc$(R_ARCH)/Makeconf $(RPREFIX)/etc$(R_ARCH)
30057 ripley 66
# copy info and documentation files
31888 murdoch 67
	$(MKDIR) -p $(RPREFIX)/doc
68
	$(CP) -p $(R_HOME)/doc/CRAN_mirrors.csv $(RPREFIX)/doc
68786 morgan 69
	$(CP) -p $(R_HOME)/doc/BioC_mirrors.csv $(RPREFIX)/doc
64487 ripley 70
	$(MKDIR) -p $(RPREFIX)/doc/manual/images
62624 ripley 71
	$(CP) -pR $(R_HOME)/doc/html $(RPREFIX)/doc
30057 ripley 72
	$(CP) -p $(R_HOME)/doc/manual/*.html $(R_HOME)/doc/manual/*.pdf \
73
	  $(RPREFIX)/doc/manual
64487 ripley 74
	$(CP) -p $(R_HOME)/doc/manual/images/*.png $(RPREFIX)/doc/manual/images
36707 ripley 75
#	html copies of these are in doc/manual, and we don't have FAQ PDF on menus
31451 ripley 76
	$(RM) $(RPREFIX)/doc/manual/R-FAQ.pdf
33028 murdoch 77
	$(RM) $(RPREFIX)/doc/html/R-admin.html 
35833 ripley 78
	$(RM) $(RPREFIX)/doc/html/index-default.html
30057 ripley 79
#
80
	$(CP) -p $(foreach i,$(INFO_FILES),$(R_HOME)/$i) $(RPREFIX)
36707 ripley 81
	$(CP) -p $(foreach i,$(DOC_INFO_FILES),$(R_HOME)/doc/$i) $(RPREFIX)/doc
82
	$(CP) -p $(foreach i,$(GW_INFO_FILES),../$i) $(RPREFIX)/doc
50429 murdoch 83
	$(CP) -p $(RPREFIX)/doc/CHANGES $(RPREFIX)
23357 murdoch 84
	$(SED) -e s/@RWVER@/$(RPREFIX)/g \
33028 murdoch 85
	  -e s/@RVER@/$(RVER)/g \
86
	  -e "s/@FULLVERSION@/$(FULLVERSION)/g" ../README > $(RPREFIX)/README.$(RPREFIX)
36707 ripley 87
	$(SED) -e 3,5d ../README.packages > $(RPREFIX)/doc/README.packages
23357 murdoch 88
# convert docs and batch files to CRLF: might already be on Windows, though.
51492 ripley 89
	zip -q dosfiles.zip $(RPREFIX)/* $(RPREFIX)/doc/*
90
	unzip -qao dosfiles.zip
23357 murdoch 91
	$(RM) dosfiles.zip
63785 ripley 92
	$(CP) -p $(R_HOME)/doc/NEWS.pdf $(RPREFIX)/doc
52488 murdoch 93
	$(CP) -p $(R_HOME)/doc/NEWS.rds $(R_HOME)/doc/CHANGES.rds $(RPREFIX)/doc
30057 ripley 94
#
95
# files to make source packages
96
	$(MKDIR) -p $(RPREFIX)/share \
51026 ripley 97
	  $(RPREFIX)/src/library $(RPREFIX)/src/gnuwin32
70153 murdoch 98
	$(CP) $(R_HOME)/doc/html/logo.jpg $(R_HOME)/doc/html/Rlogo.svg $(RPREFIX)/doc/html
30057 ripley 99
	$(CP) $(R_HOME)/doc/KEYWORDS* $(RPREFIX)/doc
62624 ripley 100
	$(CP) -pR $(R_HOME)/include $(RPREFIX)
101
	$(CP) -pR $(foreach i,$(SHARE_DIRS),$(R_HOME)/share/$i) $(RPREFIX)/share
47698 ripley 102
# This is odd -- better to clean the copy
23357 murdoch 103
	(cd ..; $(MAKE) --no-print-directory PKGDIR=. pkgclean-windlgs)
62624 ripley 104
	$(CP) -pR ../windlgs $(RPREFIX)/src/library
70415 murdoch 105
# Edit Makeconf
70416 murdoch 106
	$(SED) -e 's!^BINPREF [?]= .*!BINPREF ?= c:/Rtools/mingw_64/bin/!' \
70415 murdoch 107
	  $(R_HOME)/etc/x64/Makeconf > $(RPREFIX)/etc/x64/Makeconf
47815 ripley 108
# test dir
109
	mkdir $(RPREFIX)/tests
110
	$(MAKE) --no-print-directory -C ../../../tests -f Makefile.win \
111
	  INST_TO=../src/gnuwin32/installer/$(RPREFIX)/tests install-tests
112
#
74046 ripley 113
	$(FIND) $(RPREFIX) -name .svn -prune -exec rm -Rf \{\} \;
44051 murdoch 114
	$(FIND) $(RPREFIX) -name \*~ -delete
24658 ripley 115
 
30938 ripley 116
md5sums:
30970 ripley 117
	@echo "adding MD5 checksums"
30938 ripley 118
	@(cd $(RPREFIX); echo "tools:::.installMD5sums(\".\")" | \
119
	  R_DEFAULT_PACKAGES=NULL LC_COLLATE=C R_OSTYPE=windows \
77228 maechler 120
	  ../../../../$(BINDIR)/Rterm.exe --vanilla --no-echo)
30938 ripley 121
 
54396 ripley 122
PDF_FILES = $(wildcard $(RPREFIX)/library/*/doc/*.pdf)
123
 
30970 ripley 124
fixups:
77228 maechler 125
	echo "make.packages.html(.Library,temp=FALSE,verbose=FALSE)" | $(RPREFIX)/$(BINDIR)/Rterm.exe --vanilla --no-echo LC_COLLATE=C
62624 ripley 126
	$(CP) -pRf $(R_HOME)/Tcl $(RPREFIX)
51492 ripley 127
	$(RM) $(RPREFIX)/Tcl*/lib/*.lib
54396 ripley 128
ifneq ($(strip $(QPDF)),)
129
	@for f in $(PDF_FILES); do \
75228 hornik 130
	  $(QPDF)/bin/qpdf $${f} tmp.pdf; \
54396 ripley 131
	  mv tmp.pdf $${f}; \
132
	done
133
endif
30970 ripley 134
 
51492 ripley 135
32bit:
53418 ripley 136
ifeq "$(WIN)" "64"
51492 ripley 137
ifneq ($(strip $(HOME32)),)
51875 ripley 138
	@echo "------------ including 32-bit files"
52548 ripley 139
	(cd "$(HOME32)"; zip -qr9X 32bit */i386 library/*/libs/i386 bin/R.exe bin/Rscript.exe)
140
	unzip -qo "$(HOME32)/32bit" -d $(RPREFIX)
141
	rm "$(HOME32)/32bit.zip"
51787 ripley 142
	mkdir -p $(RPREFIX)/Tcl
62624 ripley 143
	$(CP) -pRf "$(HOME32)/Tcl/bin" "$(HOME32)/Tcl/lib" $(RPREFIX)/Tcl
51953 ripley 144
	for f in $(R_PKGS_RECOMMENDED); do \
145
	   sed -e 's/Archs: x64/Archs: i386, x64/' \
146
             ../../../library/$${f}/DESCRIPTION \
147
             > $(RPREFIX)/library/$${f}/DESCRIPTION; \
148
	done
70415 murdoch 149
# Edit Makeconf file to default Rtools location
70416 murdoch 150
	$(SED) -e 's!^BINPREF [?]= .*!BINPREF ?= c:/Rtools/mingw_32/bin/!' \
70415 murdoch 151
	  $(HOME32)/etc/i386/Makeconf > $(RPREFIX)/etc/i386/Makeconf
51492 ripley 152
else
51875 ripley 153
	@echo "------------ not including 32-bit files"
51492 ripley 154
endif
155
endif
156
 
57436 ripley 157
extras:
158
	for f in $(DLLs32); do \
159
	  cp "$$f" $(RPREFIX)/bin/i386; \
160
	done
161
	for f in $(DLLs64); do \
162
	  cp "$$f" $(RPREFIX)/bin/x64; \
163
	done
164
 
38882 ripley 165
## for Inno Setup installer
166
 
51981 ripley 167
R.iss: JRins.R header1.iss types3264.iss types32.iss code.iss \
58424 ripley 168
   CustomMsg.iss imagedir fixups 32bit extras md5sums \
51885 ripley 169
  ../../../VERSION ../../../SVN-REVISION
170
	../../../bin$(R_ARCH)/Rscript JRins.R \
59790 ripley 171
	  $(RPREFIX) $(RPREFIX) $(MDISDI) \
68631 murdoch 172
	  $(HelpStyle) $(Producer) "$(ISDIR)"
51885 ripley 173
 
53445 ripley 174
$(RPREFIX)-win.exe: R.iss
34667 ripley 175
	"$(ISDIR)/iscc" R.iss > $(RPREFIX).log 2>&1
13263 ripley 176
 
38882 ripley 177
 
178
## for MSI installer
179
 
180
uuidgen.exe: uuidgen.o
181
	$(CC) -o $@ $< -lole32
182
 
60781 ripley 183
# currently use about 3500: allow for EXTRA_PKGS
38882 ripley 184
uuids: uuidgen.exe
60781 ripley 185
	./uuidgen 10000 > $@
38882 ripley 186
 
57436 ripley 187
files.wxs: imagedir fixups 32bit extras md5sums
53954 ripley 188
	"$(WIX3DIR)/heat" dir $(RPREFIX) -sw5150 -nologo -o $@
38882 ripley 189
 
53431 ripley 190
R.wxs: WIXins.R uuids files.wxs
53954 ripley 191
	../../../bin$(R_ARCH)/Rscript WIXins.R $(RPREFIX) $(RPREFIX) $(WIX_PERSONAL) || (rm -f $@;exit 1)
38882 ripley 192
 
53433 ripley 193
$(RPREFIX)-$(SUFF).msi: R.wxs License.rtf
53954 ripley 194
	"$(WIX3DIR)/candle" R.wxs > $(RPREFIX).log 2>&1
195
	"$(WIX3DIR)/light" -out $@ R.wixobj -dcl:high \
53438 ripley 196
	 -ext WixUIExtension -sw1076 -sval -spdb >> $(RPREFIX).log 2>&1
38882 ripley 197
 
198
 
60781 ripley 199
## too often this fails to empty directories.
21085 ripley 200
clean:
74046 ripley 201
	rm -Rf R.iss *.log R.wxs files.wxs R.wixobj uuidgen.o uuidgen.exe uuids
202
	-rm -Rf $(RPREFIX)
13263 ripley 203
 
21085 ripley 204
distclean: clean
53433 ripley 205
	rm -f R*-win*.exe R*-win*.msi
32104 ripley 206
 
207
myR:
77228 maechler 208
	echo "make.packages.html(.Library, verbose=FALSE)" | "$(IMAGEDIR)/$(BINDIR)/Rterm.exe" --vanilla --no-echo LC_COLLATE=C
32104 ripley 209
	@echo "adding MD5 checksums"
52522 ripley 210
	@(cd "$(IMAGEDIR)"; echo "tools:::.installMD5sums(\".\")" | \
32104 ripley 211
	  R_DEFAULT_PACKAGES=NULL LC_COLLATE=C R_OSTYPE=windows \
77228 maechler 212
	  "$(IMAGEDIR)/$(BINDIR)/Rterm.exe" --vanilla --no-echo)
52194 ripley 213
	../../../bin$(R_ARCH)/Rscript JRins.R \
61670 murdoch 214
	  $(RPREFIX) "$(IMAGEDIR)" $(MDISDI) \
68631 murdoch 215
	  $(HelpStyle) $(Producer) "$(ISDIR)"
32104 ripley 216
	"$(ISDIR)/iscc" R.iss > myR.log