The R Project SVN R

Rev

Rev 87890 | 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
 
51026 ripley 23
SUFF = win64
50939 ripley 24
 
33028 murdoch 25
FULLVERSION=`cat ../../../VERSION`
51937 ripley 26
RPREFIX = $(shell ../../../bin$(R_ARCH)/Rscript ../fixed/rwver.R)
59848 ripley 27
LIBFILES = $(foreach i, $(R_PKGS_BASE) $(R_PKGS_RECOMMENDED) translations $(EXTRA_PKGS), $(R_HOME)/library/$i)
4606 ripley 28
 
63785 ripley 29
INFO_FILES = COPYING README
30
DOC_INFO_FILES = AUTHORS COPYING FAQ RESOURCES THANKS CHANGES \
31
  NEWS NEWS.0 NEWS.1 NEWS.2 
61819 ripley 32
GW_INFO_FILES = COPYRIGHTS README.Rterm ../../doc/manual/rw-FAQ
30054 ripley 33
 
51141 ripley 34
ETC_FILES = Rprofile.site Rconsole Rdevga rgb.txt repositories Rcmd_environ
30057 ripley 35
 
51141 ripley 36
 
53360 ripley 37
# we don't want share/{Makefile.in,java,sh} installed
89464 smeyer 38
SHARE_DIRS = R bibliographies dictionaries encodings licenses make Rd texmf zoneinfo
30057 ripley 39
 
53445 ripley 40
all: $(RPREFIX)-win.exe
53433 ripley 41
msi: $(RPREFIX)-$(SUFF).msi
4985 ripley 42
 
87890 kalibera 43
RBUILD := $(strip $(if $(findstring Aarch64,\
44
                                    $(subst ARM64,Aarch64,$(shell file "$(R_HOME)/bin/R.exe"))),\
45
               aarch64,x86_64))
85265 kalibera 46
 
86160 kalibera 47
ifeq ($(CROSS_BUILD),)
48
  RTARGET := $(RBUILD)
49
  R_ARCH_TARGET := $(R_ARCH)
50
else
51
  R_HOME_CROSS = $(CROSS_BUILD)
87890 kalibera 52
  RTARGET := $(strip $(if $(findstring Aarch64,\
53
                                       $(subst ARM64,Aarch64,$(shell file "$(R_HOME_CROSS)/bin/R.exe"))),\
54
                       aarch64,x86_64))
86160 kalibera 55
  R_ARCH_TARGET := $(shell $(FIND) $(R_HOME_CROSS)/bin -name $R.dll | $(SED) -e  's!.*/bin\(.*\)/R.dll!\1!g')
56
endif
57
 
23357 murdoch 58
imagedir:
62626 ripley 59
	$(RM) -R $(RPREFIX)
23357 murdoch 60
	$(MKDIR) $(RPREFIX)
86160 kalibera 61
ifeq ($(R_HOME_CROSS),)
62624 ripley 62
	$(CP) -pR $(R_HOME)/bin $(R_HOME)/modules $(RPREFIX)
86160 kalibera 63
else
64
	$(CP) -pR $(R_HOME_CROSS)/bin $(R_HOME_CROSS)/modules $(RPREFIX)
65
endif
30057 ripley 66
# copy base and recommended packages
23357 murdoch 67
	$(MKDIR) -p $(RPREFIX)/library
86160 kalibera 68
ifeq ($(R_HOME_CROSS),)
62624 ripley 69
	$(CP) -pR $(LIBFILES) $(RPREFIX)/library
86160 kalibera 70
else
71
	$(CP) -pR $(LIBFILES) $(RPREFIX)/library
72
	$(RM) -rf $(RPREFIX)/library/*/libs
73
	$(CP) -pR $(R_HOME_CROSS)/library $(RPREFIX)
74
endif
30938 ripley 75
	$(RM) $(RPREFIX)/library/*/MD5
23357 murdoch 76
	$(RM) $(RPREFIX)/*/Makefile.in
86160 kalibera 77
	$(MKDIR) -p $(RPREFIX)/etc$(R_ARCH_TARGET)
30057 ripley 78
	$(CP) -p $(foreach i,$(ETC_FILES),$(R_HOME)/etc/$i) $(RPREFIX)/etc
67494 ripley 79
	if test -f "$(R_HOME)/etc/curl-ca-bundle.crt"; then \
80
	  $(CP) -p "$(R_HOME)/etc/curl-ca-bundle.crt" $(RPREFIX)/etc; \
81
	fi
86160 kalibera 82
ifeq ($(R_HOME_CROSS),)
51338 ripley 83
	$(CP) -p $(R_HOME)/etc$(R_ARCH)/Makeconf $(RPREFIX)/etc$(R_ARCH)
86160 kalibera 84
else
85
	$(CP) -p $(R_HOME_CROSS)/etc$(R_ARCH_TARGET)/Makeconf $(RPREFIX)/etc$(R_ARCH_TARGET)
86
endif
30057 ripley 87
# copy info and documentation files
31888 murdoch 88
	$(MKDIR) -p $(RPREFIX)/doc
89
	$(CP) -p $(R_HOME)/doc/CRAN_mirrors.csv $(RPREFIX)/doc
68786 morgan 90
	$(CP) -p $(R_HOME)/doc/BioC_mirrors.csv $(RPREFIX)/doc
64487 ripley 91
	$(MKDIR) -p $(RPREFIX)/doc/manual/images
62624 ripley 92
	$(CP) -pR $(R_HOME)/doc/html $(RPREFIX)/doc
30057 ripley 93
	$(CP) -p $(R_HOME)/doc/manual/*.html $(R_HOME)/doc/manual/*.pdf \
94
	  $(RPREFIX)/doc/manual
64487 ripley 95
	$(CP) -p $(R_HOME)/doc/manual/images/*.png $(RPREFIX)/doc/manual/images
36707 ripley 96
#	html copies of these are in doc/manual, and we don't have FAQ PDF on menus
31451 ripley 97
	$(RM) $(RPREFIX)/doc/manual/R-FAQ.pdf
33028 murdoch 98
	$(RM) $(RPREFIX)/doc/html/R-admin.html 
35833 ripley 99
	$(RM) $(RPREFIX)/doc/html/index-default.html
30057 ripley 100
#
101
	$(CP) -p $(foreach i,$(INFO_FILES),$(R_HOME)/$i) $(RPREFIX)
36707 ripley 102
	$(CP) -p $(foreach i,$(DOC_INFO_FILES),$(R_HOME)/doc/$i) $(RPREFIX)/doc
103
	$(CP) -p $(foreach i,$(GW_INFO_FILES),../$i) $(RPREFIX)/doc
50429 murdoch 104
	$(CP) -p $(RPREFIX)/doc/CHANGES $(RPREFIX)
23357 murdoch 105
	$(SED) -e s/@RWVER@/$(RPREFIX)/g \
33028 murdoch 106
	  -e s/@RVER@/$(RVER)/g \
107
	  -e "s/@FULLVERSION@/$(FULLVERSION)/g" ../README > $(RPREFIX)/README.$(RPREFIX)
36707 ripley 108
	$(SED) -e 3,5d ../README.packages > $(RPREFIX)/doc/README.packages
23357 murdoch 109
# convert docs and batch files to CRLF: might already be on Windows, though.
51492 ripley 110
	zip -q dosfiles.zip $(RPREFIX)/* $(RPREFIX)/doc/*
111
	unzip -qao dosfiles.zip
23357 murdoch 112
	$(RM) dosfiles.zip
63785 ripley 113
	$(CP) -p $(R_HOME)/doc/NEWS.pdf $(RPREFIX)/doc
78009 ripley 114
	$(CP) -p $(R_HOME)/doc/NEWS.rds $(R_HOME)/doc/NEWS.2.rds  $(R_HOME)/doc/NEWS.3.rds $(R_HOME)/doc/CHANGES.rds $(RPREFIX)/doc
30057 ripley 115
#
116
# files to make source packages
117
	$(MKDIR) -p $(RPREFIX)/share \
51026 ripley 118
	  $(RPREFIX)/src/library $(RPREFIX)/src/gnuwin32
70153 murdoch 119
	$(CP) $(R_HOME)/doc/html/logo.jpg $(R_HOME)/doc/html/Rlogo.svg $(RPREFIX)/doc/html
30057 ripley 120
	$(CP) $(R_HOME)/doc/KEYWORDS* $(RPREFIX)/doc
62624 ripley 121
	$(CP) -pR $(R_HOME)/include $(RPREFIX)
122
	$(CP) -pR $(foreach i,$(SHARE_DIRS),$(R_HOME)/share/$i) $(RPREFIX)/share
47698 ripley 123
# This is odd -- better to clean the copy
23357 murdoch 124
	(cd ..; $(MAKE) --no-print-directory PKGDIR=. pkgclean-windlgs)
62624 ripley 125
	$(CP) -pR ../windlgs $(RPREFIX)/src/library
85265 kalibera 126
# Edit Makeconf, Rcmd_environ, base package profile
127
	$(foreach F, \
86160 kalibera 128
	  $(RPREFIX)/etc$(R_ARCH_TARGET)/Makeconf \
85265 kalibera 129
	  $(RPREFIX)/etc/Rcmd_environ \
130
	  $(RPREFIX)/library/base/R/Rprofile, \
131
	      $(SED) -i -e 's!# INSTALLER-BUILD:!!' \
132
	                -e 's!# INSTALLER-BUILD-$(RTARGET):!!' \
133
	             $(F); \
134
	)
47815 ripley 135
# test dir
136
	mkdir $(RPREFIX)/tests
137
	$(MAKE) --no-print-directory -C ../../../tests -f Makefile.win \
138
	  INST_TO=../src/gnuwin32/installer/$(RPREFIX)/tests install-tests
139
#
74046 ripley 140
	$(FIND) $(RPREFIX) -name .svn -prune -exec rm -Rf \{\} \;
44051 murdoch 141
	$(FIND) $(RPREFIX) -name \*~ -delete
24658 ripley 142
 
85265 kalibera 143
md5sums: imagedir fixups extras
30970 ripley 144
	@echo "adding MD5 checksums"
30938 ripley 145
	@(cd $(RPREFIX); echo "tools:::.installMD5sums(\".\")" | \
146
	  R_DEFAULT_PACKAGES=NULL LC_COLLATE=C R_OSTYPE=windows \
77228 maechler 147
	  ../../../../$(BINDIR)/Rterm.exe --vanilla --no-echo)
30938 ripley 148
 
54396 ripley 149
PDF_FILES = $(wildcard $(RPREFIX)/library/*/doc/*.pdf)
150
 
85265 kalibera 151
fixups: extras
86160 kalibera 152
ifeq ($(R_HOME_CROSS),)
77228 maechler 153
	echo "make.packages.html(.Library,temp=FALSE,verbose=FALSE)" | $(RPREFIX)/$(BINDIR)/Rterm.exe --vanilla --no-echo LC_COLLATE=C
62624 ripley 154
	$(CP) -pRf $(R_HOME)/Tcl $(RPREFIX)
86160 kalibera 155
else
156
	echo "make.packages.html(\"$(RPREFIX)/library\",temp=FALSE,verbose=FALSE,docdir=\"$(RPREFIX)/doc\")" | \
157
	  $(R_HOME)/$(BINDIR)/Rterm.exe --vanilla --no-echo LC_COLLATE=C
158
	$(SED) -i -e 's!Packages in R-devel\\library!Packages in the standard library!g' \
159
	          -e 's!href="file:///C:R-devel/library/!href="../../library/!g' \
160
	          $(RPREFIX)/doc/html/packages.html
161
	$(CP) -pRf $(R_HOME_CROSS)/Tcl $(RPREFIX)
162
endif
51492 ripley 163
	$(RM) $(RPREFIX)/Tcl*/lib/*.lib
54396 ripley 164
ifneq ($(strip $(QPDF)),)
165
	@for f in $(PDF_FILES); do \
81575 kalibera 166
	  "$(QPDF)/bin/qpdf" $${f} tmp.pdf; \
54396 ripley 167
	  mv tmp.pdf $${f}; \
168
	done
169
endif
30970 ripley 170
 
85265 kalibera 171
extras: imagedir
57436 ripley 172
	for f in $(DLLs64); do \
86160 kalibera 173
	  cp "$$f" $(RPREFIX)/bin$(R_ARCH_TARGET); \
57436 ripley 174
	done
175
 
38882 ripley 176
## for Inno Setup installer
177
 
85033 kalibera 178
R.iss: JRins.R header1.iss types64.iss code.iss reg64.iss \
179
   CustomMsg.iss imagedir fixups extras md5sums \
51885 ripley 180
  ../../../VERSION ../../../SVN-REVISION
181
	../../../bin$(R_ARCH)/Rscript JRins.R \
59790 ripley 182
	  $(RPREFIX) $(RPREFIX) $(MDISDI) \
68631 murdoch 183
	  $(HelpStyle) $(Producer) "$(ISDIR)"
51885 ripley 184
 
53445 ripley 185
$(RPREFIX)-win.exe: R.iss
34667 ripley 186
	"$(ISDIR)/iscc" R.iss > $(RPREFIX).log 2>&1
13263 ripley 187
 
38882 ripley 188
 
189
## for MSI installer
190
 
191
uuidgen.exe: uuidgen.o
192
	$(CC) -o $@ $< -lole32
193
 
82363 kalibera 194
# currently use about 4200: allow for EXTRA_PKGS
38882 ripley 195
uuids: uuidgen.exe
60781 ripley 196
	./uuidgen 10000 > $@
38882 ripley 197
 
85033 kalibera 198
files.wxs: imagedir fixups extras md5sums
53954 ripley 199
	"$(WIX3DIR)/heat" dir $(RPREFIX) -sw5150 -nologo -o $@
38882 ripley 200
 
53431 ripley 201
R.wxs: WIXins.R uuids files.wxs
53954 ripley 202
	../../../bin$(R_ARCH)/Rscript WIXins.R $(RPREFIX) $(RPREFIX) $(WIX_PERSONAL) || (rm -f $@;exit 1)
38882 ripley 203
 
53433 ripley 204
$(RPREFIX)-$(SUFF).msi: R.wxs License.rtf
53954 ripley 205
	"$(WIX3DIR)/candle" R.wxs > $(RPREFIX).log 2>&1
206
	"$(WIX3DIR)/light" -out $@ R.wixobj -dcl:high \
53438 ripley 207
	 -ext WixUIExtension -sw1076 -sval -spdb >> $(RPREFIX).log 2>&1
38882 ripley 208
 
209
 
60781 ripley 210
## too often this fails to empty directories.
21085 ripley 211
clean:
74046 ripley 212
	rm -Rf R.iss *.log R.wxs files.wxs R.wixobj uuidgen.o uuidgen.exe uuids
213
	-rm -Rf $(RPREFIX)
13263 ripley 214
 
21085 ripley 215
distclean: clean
53433 ripley 216
	rm -f R*-win*.exe R*-win*.msi
32104 ripley 217
 
218
myR:
77228 maechler 219
	echo "make.packages.html(.Library, verbose=FALSE)" | "$(IMAGEDIR)/$(BINDIR)/Rterm.exe" --vanilla --no-echo LC_COLLATE=C
32104 ripley 220
	@echo "adding MD5 checksums"
52522 ripley 221
	@(cd "$(IMAGEDIR)"; echo "tools:::.installMD5sums(\".\")" | \
32104 ripley 222
	  R_DEFAULT_PACKAGES=NULL LC_COLLATE=C R_OSTYPE=windows \
77228 maechler 223
	  "$(IMAGEDIR)/$(BINDIR)/Rterm.exe" --vanilla --no-echo)
52194 ripley 224
	../../../bin$(R_ARCH)/Rscript JRins.R \
61670 murdoch 225
	  $(RPREFIX) "$(IMAGEDIR)" $(MDISDI) \
68631 murdoch 226
	  $(HelpStyle) $(Producer) "$(ISDIR)"
32104 ripley 227
	"$(ISDIR)/iscc" R.iss > myR.log