| 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
|