1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22PRJ=..
23PRJNAME=instsetoo_native
24TARGET=util
25
26.INCLUDE:  settings.mk
27.INCLUDE: $(SOLARINCDIR)$/rtlbootstrap.mk
28
29# watch for the path delimiter
30.IF "$(GUI)"=="WNT"
31PYTHONPATH:=$(PWD)$/$(BIN);$(SOLARLIBDIR);$(SOLARLIBDIR)$/python;$(SOLARLIBDIR)$/python$/lib-dynload
32.ELSE			# "$(GUI)"=="WNT"
33PYTHONPATH:=$(PWD)$/$(BIN):$(SOLARLIBDIR):$(SOLARLIBDIR)$/python:$(SOLARLIBDIR)$/python$/lib-dynload
34.ENDIF			# "$(GUI)"=="WNT"
35.EXPORT: PYTHONPATH
36
37.IF "$(CWS_WORK_STAMP)"=="" || "$(UPDATER)"!=""
38ENABLE_DOWNLOADSETS*=TRUE
39.ENDIF			# "$(CWS_WORK_STAMP)"=="" || "$(UPDATER)"!=""
40.IF "$(FORCE_DOWNLOADSETS)"!=""
41ENABLE_DOWNLOADSETS=TRUE
42.ENDIF			# "$(FORCE_DOWNLOADSETS)"!=""
43
44.EXPORT: ENABLE_DOWNLOADSETS
45.EXPORT: LAST_MINOR
46.EXPORT: PRJ
47.EXPORT: PRJNAME
48
49.IF "$(OS)"=="LINUX"
50DONT_REMOVE_PACKAGE:=TRUE
51.EXPORT: DONT_REMOVE_PACKAGE
52.ENDIF          # "$(OS)"=="LINUX"
53
54.INCLUDE .IGNORE: $(SRC_ROOT)$/cwsname.mk
55
56SHARED_COM_SDK_PATH*:=.
57
58INSTALLDIR=$(OUT)
59
60.INCLUDE: target.mk
61
62.IF "$(FORCE2ARCHIVE)" == "TRUE"
63PKGFORMAT = archive
64.END
65.IF "$(MAKETARGETS:e)"!=""
66PKGFORMAT+=$(MAKETARGETS:e:s/.//)
67.ENDIF
68# PKGFORMAT may contain the standard package format twice at this time.
69# Provide its content with duplicates removed.
70PACKAGE_FORMATS=$(uniq $(PKGFORMAT))
71
72
73# The help target belongs after the inclusion of target.mk to not become the default target.
74help .PHONY :
75	@echo "known targets:"
76	@echo "    openoffice             builds the default installation packages for the platform"
77	@echo "    aoo_srcrelease         packs the source release package"
78	@echo "    updatepack"
79	@echo "    openofficedev          devloper snapshot"
80	@echo "    openofficewithjre"
81	@echo "    ooolanguagepack"
82	@echo "    ooodevlanguagepack"
83	@echo "    sdkoo"
84	@echo "    sdkoodev"
85	@echo
86	@echo "experimental targets:"
87	@echo "    patch-create           create a patch for updating an installed office (Windows only)"
88	@echo "    patch-apply            apply a previously created patch"
89	@echo "    patch-update-releases-xml"
90	@echo
91	@echo "Most targets (all except aoo_srcrelease and updatepack) accept suffixes"
92	@echo "    add _<language> to build a target for one language only"
93	@echo "        the default set of languages is alllangiso=$(alllangiso)"
94	@echo "    add .<package_format> to build a target for one package format only"
95	@echo "        the default set of package formats is archive and PKGFORMAT=$(PKGFORMAT)"
96
97
98LOCALPYFILES=			\
99	$(BIN)$/uno.py		\
100	$(BIN)$/unohelper.py	\
101	$(BIN)$/pythonloader.py \
102	$(BIN)$/pythonscript.py \
103	$(BIN)$/officehelper.py \
104	$(BIN)$/mailmerge.py
105
106xxxx:
107    echo $(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl --buildid $(BUILD) --arch "$(RTL_ARCH)" --os "$(RTL_OS)" --lstfile $(PRJ)$/util$/openoffice.lst --product OpenOffice --languages $(subst,$(@:s/_/ /:1)_, $(@:b)) $(PRJ)$/util$/update.xml
108
109.IF "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
110ALLTAR  : $(LOCALPYFILES)
111	@echo "No EPM: do no packaging at this stage"
112.ELSE			# "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
113.IF "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
114.IF "$(BUILD_TYPE)"=="$(BUILD_TYPE:s/ODK//)"
115ALLTAR : openoffice
116.ELSE
117ALLTAR : openoffice sdkoo_en-US
118.ENDIF
119.ELSE			# "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
120ALLTAR : updatepack
121.ENDIF			# "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
122.ENDIF			# "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
123
124
125# Independent of PKGFORMAT, always build a default-language openoffice product
126# also in archive format, so that tests that require an OOo installation (like
127# smoketestoo_native) have one available:
128#openoffice_$(defaultlangiso) : $$@.archive
129
130.IF "$(VERBOSE)"=="TRUE"
131VERBOSESWITCH=-verbose
132.ELIF "$(VERBOSE)"=="FALSE"
133VERBOSESWITCH=-quiet
134.ENDIF
135
136.IF "$(release:U)"=="T"
137RELEASE_SWITCH=-release
138$(foreach,i,$(alllangiso) openoffice_$i.msi) : prepare_release_build
139.ELSE
140RELEASE_SWITCH=
141.ENDIF
142
143prepare_release_build .PHONY:
144	@$(PERL) -w $(SOLARENV)$/bin$/release_prepare.pl 	\
145		--lst-file $(PRJ)$/util$/openoffice.lst 	\
146		--product-name Apache_OpenOffice		\
147		--output-path $(OUT) 				\
148		$(alllangiso)
149
150.IF "$(VERBOSE_INSTALLER)"=="TRUE"
151VERBOSESWITCH+=-log
152.ENDIF
153
154# New target to prepare a source release
155SRC_RELEASE_OUT_DIR=$(shell cd $(OUT) && pwd)$/AOO_SRC_Release
156
157aoo_srcrelease: $(SOLARENV)$/bin$/srcrelease.xml
158	@-$(MKDIR) $(OUT)$/AOO_SRC_Release
159	$(ANT) -f $(SOLARENV)$/bin$/srcrelease.xml -q -Dbasedir=$(SOURCE_ROOT_DIR) -Dout.dir=$(SRC_RELEASE_OUT_DIR)
160
161updatepack:
162	$(PERL) -w $(SOLARENV)$/bin$/packager.pl
163
164.IF "$(alllangiso)"!=""
165
166openoffice: $(foreach,i,$(alllangiso) openoffice_$i)
167
168openofficedev: $(foreach,i,$(alllangiso) openofficedev_$i)
169
170openofficewithjre: $(foreach,i,$(alllangiso) openofficewithjre_$i)
171
172ooolanguagepack : $(foreach,i,$(alllangiso) ooolanguagepack_$i)
173
174ooodevlanguagepack: $(foreach,i,$(alllangiso) ooodevlanguagepack_$i)
175
176sdkoo: $(foreach,i,$(alllangiso) sdkoo_$i)
177
178sdkoodev: $(foreach,i,$(alllangiso) sdkoodev_$i)
179patch-create: $(foreach,i,$(alllangiso) patch-create_$i)
180
181MSIOFFICETEMPLATESOURCE=$(PRJ)$/inc_openoffice$/windows$/msi_templates
182MSILANGPACKTEMPLATESOURCE=$(PRJ)$/inc_ooolangpack$/windows$/msi_templates
183MSISDKOOTEMPLATESOURCE=$(PRJ)$/inc_sdkoo$/windows$/msi_templates
184
185NOLOGOSPLASH:=$(BIN)$/intro.zip
186DEVNOLOGOSPLASH:=$(BIN)$/dev$/intro.zip
187MSIOFFICETEMPLATEDIR=$(MISC)$/openoffice$/msi_templates
188MSILANGPACKTEMPLATEDIR=$(MISC)$/ooolangpack$/msi_templates
189MSISDKOOTEMPLATEDIR=$(MISC)$/sdkoo$/msi_templates
190
191ADDDEPS=adddeps
192adddeps .PHONY : $(NOLOGOSPLASH) $(DEVNOLOGOSPLASH)
193
194.IF "$(OS)" == "WNT"
195adddeps : msitemplates
196.ENDIF
197
198.IF "$(LOCALPYFILES)"!=""
199local_python_files .PHONY : $(LOCALPYFILES)
200adddeps : local_python_files
201updatepack : local_python_files
202.ENDIF			# "$(LOCALPYFILES)"!=""
203
204
205$(foreach,i,$(alllangiso) openoffice_$i) : $(ADDDEPS)
206openoffice_$(defaultlangiso).archive : $(ADDDEPS)
207
208$(foreach,i,$(alllangiso) openofficedev_$i) : $(ADDDEPS)
209
210$(foreach,i,$(alllangiso) openofficewithjre_$i) : $(ADDDEPS)
211
212$(foreach,i,$(alllangiso) ooolanguagepack_$i) : $(ADDDEPS)
213
214$(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : $(ADDDEPS)
215
216$(foreach,i,$(alllangiso) sdkoo_$i) : $(ADDDEPS)
217
218$(foreach,i,$(alllangiso) sdkoodev_$i) : $(ADDDEPS)
219
220$(foreach,i,$(alllangiso) openoffice_$i) : $$@{$(PKGFORMAT:^".")}
221$(foreach,i,$(alllangiso) openofficewithjre_$i) : $$@{$(PKGFORMAT:^".")}
222$(foreach,i,$(alllangiso) openofficedev_$i) : $$@{$(PKGFORMAT:^".")}
223$(foreach,i,$(alllangiso) ooolanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
224$(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
225$(foreach,i,$(alllangiso) sdkoo_$i) : $$@{$(PKGFORMAT:^".")}
226$(foreach,i,$(alllangiso) sdkoodev_$i) : $$@{$(PKGFORMAT:^".")}
227$(foreach,i,$(alllangiso) patch-create_$i) : $$@{$(PKGFORMAT:^".")}
228
229
230# This macro makes calling the make_installer.pl script a bit easier.
231# Just add -p and -msitemplate switches.
232MAKE_INSTALLER_COMMAND=					\
233	@$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl \
234		-f $(PRJ)$/util$/openoffice.lst 	\
235		-l $(subst,$(@:s/_/ /:1)_, $(@:b)) 	\
236		-u $(OUT) 				\
237		-buildid $(BUILD) 			\
238		-msilanguage $(MISC)$/win_ulffiles	\
239		-format $(@:e:s/.//) 			\
240		$(VERBOSESWITCH)
241
242# This macro makes calling gen_update_info.pl a bit easier
243# Just add --product switches, and xml input file and redirect output.
244GEN_UPDATE_INFO_COMMAND=					\
245	@$(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl	\
246		--buildid $(BUILD)				\
247		--arch "$(RTL_ARCH)"				\
248		--os "$(RTL_OS)"				\
249		--lstfile $(PRJ)$/util$/openoffice.lst		\
250		--languages $(subst,$(@:s/_/ /:1)_, $(@:b))
251
252openoffice_%{$(PKGFORMAT:^".")} :
253	$(MAKE_INSTALLER_COMMAND) 			\
254		-p Apache_OpenOffice			\
255		-msitemplate $(MSIOFFICETEMPLATEDIR)	\
256		$(RELEASE_SWITCH)
257	$(GEN_UPDATE_INFO_COMMAND)		\
258		--product Apache_OpenOffice	\
259		$(PRJ)$/util$/update.xml	\
260		> $(MISC)/$(@:b)_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
261
262openoffice_%{.archive} :
263	$(MAKE_INSTALLER_COMMAND) 		\
264		-p Apache_OpenOffice		\
265		-msitemplate $(MSIOFFICETEMPLATEDIR)
266	$(GEN_UPDATE_INFO_COMMAND)		\
267		--product Apache_OpenOffice	\
268		$(PRJ)$/util$/update.xml	\
269		> $(MISC)/$(@:b)_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
270
271openofficewithjre_%{$(PKGFORMAT:^".")} :
272	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_wJRE -msitemplate $(MSIOFFICETEMPLATEDIR)
273
274openofficedev_%{$(PKGFORMAT:^".")} :
275	$(MAKE_INSTALLER_COMMAND)		\
276		-p Apache_OpenOffice_Dev	\
277		-msitemplate $(MSIOFFICETEMPLATEDIR)
278	$(GEN_UPDATE_INFO_COMMAND)			\
279		--product Apache_OpenOffice_Dev 	\
280		$(PRJ)$/util$/update.xml 		\
281		> $(MISC)/$(@:b)_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
282
283ooolanguagepack_%{$(PKGFORMAT:^".")} :
284	$(MAKE_INSTALLER_COMMAND)			\
285		-p Apache_OpenOffice			\
286		-msitemplate $(MSILANGPACKTEMPLATEDIR)	\
287		-languagepack
288
289ooodevlanguagepack_%{$(PKGFORMAT:^".")} :
290	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_Dev -msitemplate $(MSILANGPACKTEMPLATEDIR) -languagepack
291
292sdkoo_%{$(PKGFORMAT:^".")} :
293	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_SDK -msitemplate $(MSISDKOOTEMPLATEDIR) -dontstrip
294
295sdkoodev_%{$(PKGFORMAT:^".")} :
296	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_Dev_SDK -msitemplate $(MSISDKOOTEMPLATEDIR) -dontstrip
297
298.ELSE			# "$(alllangiso)"!=""
299openoffice:
300	@echo cannot pack nothing...
301
302.ENDIF			# "$(alllangiso)"!=""
303
304$(BIN)$/%.py : $(SOLARSHAREDBIN)$/pyuno$/%.py
305	$(COPY) $< $@
306
307$(BIN)$/intro.zip : $(SOLARCOMMONPCKDIR)$/intro.zip
308	$(COPY) $< $@
309
310$(BIN)$/dev$/intro.zip : $(SOLARCOMMONPCKDIR)$/openoffice_dev$/intro.zip
311	@-$(MKDIR) $(@:d)
312	$(COPY) $< $@
313
314
315.IF "$(OS)" == "WNT"
316$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) patch-create_$L.$P)) .PHONY :
317	@echo building $@
318	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
319		create								\
320		--product-name Apache_OpenOffice				\
321		--output-path $(OUT)						\
322		--data-path $(PRJ)$/data					\
323		--lst-file $(PRJ)$/util$/openoffice.lst				\
324		--language $(subst,$(@:s/_/ /:1)_, $(@:b))			\
325		--package-format $(@:e:s/.//)
326patch-apply .PHONY :
327	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
328		apply								\
329		--product-name Apache_OpenOffice				\
330		--output-path $(OUT)						\
331		--lst-file $(PRJ)$/util$/openoffice.lst				\
332		--language en-US						\
333		--package-format msi
334patch-update-releases-xml .PHONY:
335	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
336		update-releases-xml						\
337		--product-name Apache_OpenOffice				\
338		--output-path $(OUT)						\
339		--lst-file $(PRJ)$/util$/openoffice.lst\
340		--target-version 4.0.1
341
342$(PRJ)$/data :
343	mkdir $@
344.ELSE
345$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) patch-create_$L.$P)) .PHONY :
346	@echo "patches can only be created on Windows at the moment"
347patch-apply .PHONY :
348	@echo "patches can only be created on Windows at the moment"
349patch-update-releases-xml .PHONY:
350	@echo "patches can only be created on Windows at the moment"
351.ENDIF
352
353
354msitemplates .PHONY: msi_template_files msi_langpack_template_files msi_sdk_template_files
355
356MSI_OFFICE_TEMPLATE_FILES=		\
357	ActionTe.idt			\
358	AdminExe.idt			\
359	AdminUIS.idt			\
360	AdvtExec.idt			\
361	AppSearc.idt			\
362	Binary.idt			\
363	CheckBox.idt			\
364	Control.idt			\
365	ControlC.idt			\
366	ControlE.idt			\
367	CustomAc.idt			\
368	Dialog.idt			\
369	Error.idt			\
370	EventMap.idt			\
371	InstallE.idt			\
372	InstallU.idt			\
373	LaunchCo.idt			\
374	ListBox.idt			\
375	Property.idt			\
376	RadioBut.idt			\
377	RegLocat.idt			\
378	Signatur.idt			\
379	TextStyl.idt			\
380	UIText.idt			\
381	_Validat.idt			\
382	codes.txt			\
383	codes_broo.txt			\
384	codes_broodev.txt		\
385	codes_ooodev.txt		\
386	components.txt			\
387	upgradecode_remove_ooo.txt	\
388	Binary/Banner.bmp		\
389	Binary/Image.bmp		\
390	Binary/caution.ico		\
391	Binary/dontinstall.ico		\
392	Binary/install.ico		\
393	Binary/installfirstuse.ico	\
394	Binary/installpartial.ico	\
395	Binary/installstatemenu.ico	\
396	Binary/networkinstall.ico	\
397	Binary/newfolder.ico		\
398	Binary/openfolder.ico		\
399	Binary/setup.ico		\
400	Binary/setupcomplete.ico	\
401	Binary/setuppartial.ico		\
402	Binary/setuprepair.ico		\
403	Binary/trashcan.ico		\
404	Binary/up.ico
405
406MSI_LANGPACK_TEMPLATE_FILES=		\
407	ActionTe.idt			\
408	AdminExe.idt			\
409	AdminUIS.idt			\
410	AdvtExec.idt			\
411	Binary.idt			\
412	CheckBox.idt			\
413	Control.idt			\
414	ControlC.idt			\
415	ControlE.idt			\
416	CustomAc.idt			\
417	Dialog.idt			\
418	Error.idt			\
419	EventMap.idt			\
420	InstallE.idt			\
421	InstallU.idt			\
422	LaunchCo.idt			\
423	ListBox.idt			\
424	Property.idt			\
425	RadioBut.idt			\
426	TextStyl.idt			\
427	UIText.idt			\
428	_Validat.idt			\
429	bro_patchcodes.txt		\
430	brodev_patchcodes.txt		\
431	codes.txt			\
432	codes_broo.txt			\
433	codes_ooodev.txt		\
434	components.txt			\
435	ooo_patchcodes.txt		\
436	ooodev_patchcodes.txt		\
437	Binary/Banner.bmp
438
439MSI_SDK_TEMPLATE_FILES=			\
440	ActionTe.idt			\
441	AdminExe.idt			\
442	AdminUIS.idt			\
443	AdvtExec.idt			\
444	AppSearc.idt			\
445	Binary.idt			\
446	CheckBox.idt			\
447	Control.idt			\
448	ControlC.idt			\
449	ControlE.idt			\
450	CustomAc.idt			\
451	Dialog.idt			\
452	Error.idt			\
453	EventMap.idt			\
454	InstallE.idt			\
455	InstallU.idt			\
456	LaunchCo.idt			\
457	ListBox.idt			\
458	Property.idt			\
459	RadioBut.idt			\
460	RegLocat.idt			\
461	Signatur.idt			\
462	TextStyl.idt			\
463	UIText.idt			\
464	_Validat.idt			\
465	codes.txt			\
466	components.txt			\
467	Binary/Banner.bmp		\
468	Binary/Image.bmp		\
469	Binary/caution.ico		\
470	Binary/dontinstall.ico		\
471	Binary/install.ico		\
472	Binary/installfirstuse.ico	\
473	Binary/installpartial.ico	\
474	Binary/installstatemenu.ico	\
475	Binary/networkinstall.ico	\
476	Binary/newfolder.ico		\
477	Binary/openfolder.ico		\
478	Binary/setup.ico		\
479	Binary/setupcomplete.ico	\
480	Binary/setuppartial.ico		\
481	Binary/setuprepair.ico		\
482	Binary/trashcan.ico		\
483	Binary/up.ico
484
485msi_template_files .PHONY:					\
486	$(MSIOFFICETEMPLATEDIR)					\
487	$(MSIOFFICETEMPLATEDIR)$/Binary 			\
488	$(MSIOFFICETEMPLATEDIR)$/{$(MSI_OFFICE_TEMPLATE_FILES)}
489$(MSIOFFICETEMPLATEDIR) $(MSIOFFICETEMPLATEDIR)$/Binary :
490	-$(MKDIRHIER) $@
491$(MSIOFFICETEMPLATEDIR)$/% : $(MSIOFFICETEMPLATESOURCE)$/%
492	$(GNUCOPY) $< $@
493
494msi_langpack_template_files .PHONY :				\
495	$(MSILANGPACKTEMPLATEDIR)				\
496	$(MSILANGPACKTEMPLATEDIR)$/Binary			\
497	$(MSILANGPACKTEMPLATEDIR)$/{$(MSI_LANGPACK_TEMPLATE_FILES)}
498$(MSILANGPACKTEMPLATEDIR) $(MSILANGPACKTEMPLATEDIR)$/Binary  :
499	-$(MKDIRHIER) $@
500$(MSILANGPACKTEMPLATEDIR)$/% : $(MSILANGPACKTEMPLATESOURCE)$/%
501	$(GNUCOPY) $< $@
502
503
504msi_sdk_template_files .PHONY :					\
505	$(MSISDKOOTEMPLATEDIR)					\
506	$(MSISDKOOTEMPLATEDIR)$/Binary				\
507	$(MSISDKOOTEMPLATEDIR)$/{$(MSI_SDK_TEMPLATE_FILES)}
508$(MSISDKOOTEMPLATEDIR) $(MSISDKOOTEMPLATEDIR)$/Binary :
509	-$(MKDIRHIER) $@
510$(MSISDKOOTEMPLATEDIR)/% : $(MSISDKOOTEMPLATESOURCE)$/%
511	$(GNUCOPY) $< $@
512
513
514# Local Variables:
515# tab-width: 8
516# End:
517