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 "    patch-check            check if patch can be created (part of patch-create)"
91	@echo
92	@echo "Most targets (all except aoo_srcrelease and updatepack) accept suffixes"
93	@echo "    add _<language> to build a target for one language only"
94	@echo "        the default set of languages is alllangiso=$(alllangiso)"
95	@echo "    add .<package_format> to build a target for one package format only"
96	@echo "        the default set of package formats is archive and PKGFORMAT=$(PKGFORMAT)"
97
98
99LOCALPYFILES=			\
100	$(BIN)$/uno.py		\
101	$(BIN)$/unohelper.py	\
102	$(BIN)$/pythonloader.py \
103	$(BIN)$/pythonscript.py \
104	$(BIN)$/officehelper.py \
105	$(BIN)$/mailmerge.py
106
107xxxx:
108    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
109
110.IF "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
111ALLTAR  : $(LOCALPYFILES)
112	@echo "No EPM: do no packaging at this stage"
113.ELSE			# "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
114.IF "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
115.IF "$(BUILD_TYPE)"=="$(BUILD_TYPE:s/ODK//)"
116ALLTAR : openoffice
117.ELSE
118ALLTAR : openoffice sdkoo_en-US
119.ENDIF
120.ELSE			# "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
121ALLTAR : updatepack
122.ENDIF			# "$(UPDATER)"=="" || "$(USE_PACKAGER)"==""
123.ENDIF			# "$(GUI)"!="WNT" && "$(EPM)"=="NO" && "$(USE_PACKAGER)"==""
124
125
126# Independent of PKGFORMAT, always build a default-language openoffice product
127# also in archive format, so that tests that require an OOo installation (like
128# smoketestoo_native) have one available:
129openoffice_$(defaultlangiso) : $$@.archive
130
131.IF "$(VERBOSE)"=="TRUE"
132VERBOSESWITCH=-verbose
133.ELIF "$(VERBOSE)"=="FALSE"
134VERBOSESWITCH=-quiet
135.ENDIF
136
137.IF "$(release:U)"=="T"
138RELEASE_SWITCH=-release
139$(foreach,i,$(alllangiso) openoffice_$i.msi) : prepare_release_build
140.ELSE
141RELEASE_SWITCH=
142.ENDIF
143
144prepare_release_build .PHONY:
145	@$(PERL) -w $(SOLARENV)$/bin$/release_prepare.pl 	\
146		--lst-file $(PRJ)$/util$/openoffice.lst 	\
147		--product-name Apache_OpenOffice		\
148		--output-path $(OUT) 				\
149		$(alllangiso)
150
151.IF "$(VERBOSE_INSTALLER)"=="TRUE"
152VERBOSESWITCH+=-log
153.ENDIF
154
155# New target to prepare a source release
156SRC_RELEASE_OUT_DIR=$(shell cd $(OUT) && pwd)$/AOO_SRC_Release
157
158aoo_srcrelease: $(SOLARENV)$/bin$/srcrelease.xml
159	@-$(MKDIR) $(OUT)$/AOO_SRC_Release
160	$(ANT) -f $(SOLARENV)$/bin$/srcrelease.xml -q -Dbasedir=$(SOURCE_ROOT_DIR) -Dout.dir=$(SRC_RELEASE_OUT_DIR)
161
162updatepack:
163	$(PERL) -w $(SOLARENV)$/bin$/packager.pl
164
165
166
167.IF "$(alllangiso)"==""
168openoffice:
169	@echo no languages specified => aborting packing
170
171.ELSE	# "$(alllangiso)"==""
172
173# The naming schema of targets is this: <target>_<language>.<package>
174# where <target> is the target base name (like openoffice or sdkoo)
175#       <language> is the language name (like en-US or fr)
176#       <package> is the package format (like archive, msi, deb, rpm, dmg)
177
178# Add dependencies of basic targets on language specific targets.
179openoffice: $(foreach,i,$(alllangiso) openoffice_$i)
180openofficedev: $(foreach,i,$(alllangiso) openofficedev_$i)
181openofficewithjre: $(foreach,i,$(alllangiso) openofficewithjre_$i)
182ooolanguagepack : $(foreach,i,$(alllangiso) ooolanguagepack_$i)
183ooodevlanguagepack: $(foreach,i,$(alllangiso) ooodevlanguagepack_$i)
184sdkoo: $(foreach,i,$(alllangiso) sdkoo_$i)
185sdkoodev: $(foreach,i,$(alllangiso) sdkoodev_$i)
186patch-create: $(foreach,i,$(alllangiso) patch-create_$i)
187
188MSIOFFICETEMPLATESOURCE=$(PRJ)$/inc_openoffice$/windows$/msi_templates
189MSILANGPACKTEMPLATESOURCE=$(PRJ)$/inc_ooolangpack$/windows$/msi_templates
190MSISDKOOTEMPLATESOURCE=$(PRJ)$/inc_sdkoo$/windows$/msi_templates
191
192NOLOGOSPLASH:=$(BIN)$/intro.zip
193DEVNOLOGOSPLASH:=$(BIN)$/dev$/intro.zip
194MSIOFFICETEMPLATEDIR=$(MISC)$/openoffice$/msi_templates
195MSILANGPACKTEMPLATEDIR=$(MISC)$/ooolangpack$/msi_templates
196MSISDKOOTEMPLATEDIR=$(MISC)$/sdkoo$/msi_templates
197
198ADDDEPS=adddeps
199adddeps .PHONY : $(NOLOGOSPLASH) $(DEVNOLOGOSPLASH)
200
201.IF "$(OS)" == "WNT"
202adddeps : msitemplates
203.ENDIF
204
205.IF "$(LOCALPYFILES)"!=""
206local_python_files .PHONY : $(LOCALPYFILES)
207adddeps : local_python_files
208updatepack : local_python_files
209.ENDIF			# "$(LOCALPYFILES)"!=""
210
211# Add dependencies on 'adddeps' where necessary.
212$(foreach,i,$(alllangiso) openoffice_$i) : adddeps
213openoffice_$(defaultlangiso).archive : adddeps
214$(foreach,i,$(alllangiso) openofficedev_$i) : adddeps
215$(foreach,i,$(alllangiso) openofficewithjre_$i) : adddeps
216$(foreach,i,$(alllangiso) ooolanguagepack_$i) : adddeps
217$(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : adddeps
218$(foreach,i,$(alllangiso) sdkoo_$i) : adddeps
219$(foreach,i,$(alllangiso) sdkoodev_$i) : adddeps
220
221# Create targets that take the package formats into account.  Together with language dependency we
222# get this transformation: target -> target_$language -> target_$language.$package
223# where $language ranges over all languages in $(alllangiso)
224# and $package ranges over all package formats in $(PKGFORMAT)
225$(foreach,i,$(alllangiso) openoffice_$i) : $$@{$(PKGFORMAT:^".")}
226$(foreach,i,$(alllangiso) openofficewithjre_$i) : $$@{$(PKGFORMAT:^".")}
227$(foreach,i,$(alllangiso) openofficedev_$i) : $$@{$(PKGFORMAT:^".")}
228$(foreach,i,$(alllangiso) ooolanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
229$(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
230$(foreach,i,$(alllangiso) sdkoo_$i) : $$@{$(PKGFORMAT:^".")}
231$(foreach,i,$(alllangiso) sdkoodev_$i) : $$@{$(PKGFORMAT:^".")}
232$(foreach,i,$(alllangiso) patch-create_$i) : $$@{$(PKGFORMAT:^".")}
233
234
235# This macro makes calling the make_installer.pl script a bit easier.
236# Just add -p and -msitemplate switches.
237MAKE_INSTALLER_COMMAND=					\
238	@$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl \
239		-f $(PRJ)$/util$/openoffice.lst 	\
240		-l $(subst,$(@:s/_/ /:1)_, $(@:b)) 	\
241		-u $(OUT) 				\
242		-buildid $(BUILD) 			\
243		-msilanguage $(MISC)$/win_ulffiles	\
244		-format $(@:e:s/.//) 			\
245		$(VERBOSESWITCH)
246
247# This macro makes calling gen_update_info.pl a bit easier
248# Just add --product switches, and xml input file and redirect output.
249GEN_UPDATE_INFO_COMMAND=					\
250	@$(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl	\
251		--buildid $(BUILD)				\
252		--arch "$(RTL_ARCH)"				\
253		--os "$(RTL_OS)"				\
254		--lstfile $(PRJ)$/util$/openoffice.lst		\
255		--languages $(subst,$(@:s/_/ /:1)_, $(@:b))
256
257#openoffice_%{$(PKGFORMAT:^".")} :
258$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) openoffice_$L.$P)) .PHONY :
259	$(MAKE_INSTALLER_COMMAND) 			\
260		-p Apache_OpenOffice			\
261		-msitemplate $(MSIOFFICETEMPLATEDIR)	\
262		$(RELEASE_SWITCH)
263	$(GEN_UPDATE_INFO_COMMAND)		\
264		--product Apache_OpenOffice	\
265		$(PRJ)$/util$/update.xml	\
266		> $(MISC)/$(@:b)_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
267
268#openofficewithjre_%{$(PKGFORMAT:^".")} :
269$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) openofficewithjre_$L.$P)) .PHONY :
270	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_wJRE -msitemplate $(MSIOFFICETEMPLATEDIR)
271
272#openofficedev_%{$(PKGFORMAT:^".")} :
273$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) openofficedev_$L.$P)) .PHONY :
274	$(MAKE_INSTALLER_COMMAND)		\
275		-p Apache_OpenOffice_Dev	\
276		-msitemplate $(MSIOFFICETEMPLATEDIR)
277	$(GEN_UPDATE_INFO_COMMAND)			\
278		--product Apache_OpenOffice_Dev 	\
279		$(PRJ)$/util$/update.xml 		\
280		> $(MISC)/$(@:b)_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
281
282#ooolanguagepack_%{$(PKGFORMAT:^".")} :
283$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) ooolanguagepack_$L.$P)) .PHONY :
284	$(MAKE_INSTALLER_COMMAND)			\
285		-p Apache_OpenOffice			\
286		-msitemplate $(MSILANGPACKTEMPLATEDIR)	\
287		-languagepack
288
289#ooodevlanguagepack_%{$(PKGFORMAT:^".")} :
290$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) ooodevlanguagepack_$L.$P)) .PHONY :
291	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_Dev -msitemplate $(MSILANGPACKTEMPLATEDIR) -languagepack
292
293#sdkoo_%{$(PKGFORMAT:^".")} :
294$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) sdkoo_$L.$P)) .PHONY :
295	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_SDK -msitemplate $(MSISDKOOTEMPLATEDIR) -dontstrip
296
297#sdkoodev_%{$(PKGFORMAT:^".")} :
298$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) sdkoodev_$L.$P)) .PHONY :
299	$(MAKE_INSTALLER_COMMAND) -p Apache_OpenOffice_Dev_SDK -msitemplate $(MSISDKOOTEMPLATEDIR) -dontstrip
300
301.ENDIF	# "$(alllangiso)"==""
302
303$(BIN)$/%.py : $(SOLARSHAREDBIN)$/pyuno$/%.py
304	$(COPY) $< $@
305
306$(BIN)$/intro.zip : $(SOLARCOMMONPCKDIR)$/intro.zip
307	$(COPY) $< $@
308
309$(BIN)$/dev$/intro.zip : $(SOLARCOMMONPCKDIR)$/openoffice_dev$/intro.zip
310	@-$(MKDIR) $(@:d)
311	$(COPY) $< $@
312
313
314.IF "$(OS)" == "WNT"
315$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) patch-create_$L.$P)) .PHONY :
316	@echo building $@
317	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
318		create								\
319		--product-name Apache_OpenOffice				\
320		--output-path $(OUT)						\
321		--data-path $(PRJ)$/data					\
322		--lst-file $(PRJ)$/util$/openoffice.lst				\
323		--language $(subst,$(@:s/_/ /:1)_, $(@:b))			\
324		--package-format $(@:e:s/.//)
325patch-apply .PHONY :
326	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
327		apply								\
328		--product-name Apache_OpenOffice				\
329		--output-path $(OUT)						\
330		--lst-file $(PRJ)$/util$/openoffice.lst				\
331		--language en-US						\
332		--package-format msi
333patch-update-releases-xml .PHONY:
334	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
335		update-releases-xml						\
336		--product-name Apache_OpenOffice				\
337		--output-path $(OUT)						\
338		--lst-file $(PRJ)$/util$/openoffice.lst\
339		--target-version 4.0.1
340$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) patch-check_$L.$P)) .PHONY :
341	@echo building $@
342	perl -I $(SOLARENV)$/bin/modules $(SOLARENV)$/bin$/patch_tool.pl	\
343		check								\
344		--product-name Apache_OpenOffice				\
345		--output-path $(OUT)						\
346		--data-path $(PRJ)$/data					\
347		--lst-file $(PRJ)$/util$/openoffice.lst				\
348		--language $(subst,$(@:s/_/ /:1)_, $(@:b))			\
349		--package-format $(@:e:s/.//)
350
351$(PRJ)$/data :
352	mkdir $@
353.ELSE
354$(foreach,P,$(PACKAGE_FORMATS) $(foreach,L,$(alllangiso) patch-create_$L.$P)) .PHONY :
355	@echo "patches can only be created on Windows at the moment"
356patch-apply .PHONY :
357	@echo "patches can only be created on Windows at the moment"
358patch-update-releases-xml .PHONY:
359	@echo "patches can only be created on Windows at the moment"
360.ENDIF
361
362
363msitemplates .PHONY: msi_template_files msi_langpack_template_files msi_sdk_template_files
364
365MSI_OFFICE_TEMPLATE_FILES=		\
366	ActionTe.idt			\
367	AdminExe.idt			\
368	AdminUIS.idt			\
369	AdvtExec.idt			\
370	AppSearc.idt			\
371	Binary.idt			\
372	CheckBox.idt			\
373	Control.idt			\
374	ControlC.idt			\
375	ControlE.idt			\
376	CustomAc.idt			\
377	Dialog.idt			\
378	Error.idt			\
379	EventMap.idt			\
380	InstallE.idt			\
381	InstallU.idt			\
382	LaunchCo.idt			\
383	ListBox.idt			\
384	Property.idt			\
385	RadioBut.idt			\
386	RegLocat.idt			\
387	Signatur.idt			\
388	TextStyl.idt			\
389	UIText.idt			\
390	_Validat.idt			\
391	codes.txt			\
392	codes_broo.txt			\
393	codes_broodev.txt		\
394	codes_ooodev.txt		\
395	components.txt			\
396	upgradecode_remove_ooo.txt	\
397	Binary/Banner.bmp		\
398	Binary/Image.bmp		\
399	Binary/caution.ico		\
400	Binary/dontinstall.ico		\
401	Binary/install.ico		\
402	Binary/installfirstuse.ico	\
403	Binary/installpartial.ico	\
404	Binary/installstatemenu.ico	\
405	Binary/networkinstall.ico	\
406	Binary/newfolder.ico		\
407	Binary/openfolder.ico		\
408	Binary/setup.ico		\
409	Binary/setupcomplete.ico	\
410	Binary/setuppartial.ico		\
411	Binary/setuprepair.ico		\
412	Binary/trashcan.ico		\
413	Binary/up.ico
414
415MSI_LANGPACK_TEMPLATE_FILES=		\
416	ActionTe.idt			\
417	AdminExe.idt			\
418	AdminUIS.idt			\
419	AdvtExec.idt			\
420	Binary.idt			\
421	CheckBox.idt			\
422	Control.idt			\
423	ControlC.idt			\
424	ControlE.idt			\
425	CustomAc.idt			\
426	Dialog.idt			\
427	Error.idt			\
428	EventMap.idt			\
429	InstallE.idt			\
430	InstallU.idt			\
431	LaunchCo.idt			\
432	ListBox.idt			\
433	Property.idt			\
434	RadioBut.idt			\
435	TextStyl.idt			\
436	UIText.idt			\
437	_Validat.idt			\
438	bro_patchcodes.txt		\
439	brodev_patchcodes.txt		\
440	codes.txt			\
441	codes_broo.txt			\
442	codes_ooodev.txt		\
443	components.txt			\
444	ooo_patchcodes.txt		\
445	ooodev_patchcodes.txt		\
446	Binary/Banner.bmp
447
448MSI_SDK_TEMPLATE_FILES=			\
449	ActionTe.idt			\
450	AdminExe.idt			\
451	AdminUIS.idt			\
452	AdvtExec.idt			\
453	AppSearc.idt			\
454	Binary.idt			\
455	CheckBox.idt			\
456	Control.idt			\
457	ControlC.idt			\
458	ControlE.idt			\
459	CustomAc.idt			\
460	Dialog.idt			\
461	Error.idt			\
462	EventMap.idt			\
463	InstallE.idt			\
464	InstallU.idt			\
465	LaunchCo.idt			\
466	ListBox.idt			\
467	Property.idt			\
468	RadioBut.idt			\
469	RegLocat.idt			\
470	Signatur.idt			\
471	TextStyl.idt			\
472	UIText.idt			\
473	_Validat.idt			\
474	codes.txt			\
475	components.txt			\
476	Binary/Banner.bmp		\
477	Binary/Image.bmp		\
478	Binary/caution.ico		\
479	Binary/dontinstall.ico		\
480	Binary/install.ico		\
481	Binary/installfirstuse.ico	\
482	Binary/installpartial.ico	\
483	Binary/installstatemenu.ico	\
484	Binary/networkinstall.ico	\
485	Binary/newfolder.ico		\
486	Binary/openfolder.ico		\
487	Binary/setup.ico		\
488	Binary/setupcomplete.ico	\
489	Binary/setuppartial.ico		\
490	Binary/setuprepair.ico		\
491	Binary/trashcan.ico		\
492	Binary/up.ico
493
494msi_template_files .PHONY:					\
495	$(MSIOFFICETEMPLATEDIR)					\
496	$(MSIOFFICETEMPLATEDIR)$/Binary 			\
497	$(MSIOFFICETEMPLATEDIR)$/{$(MSI_OFFICE_TEMPLATE_FILES)}
498$(MSIOFFICETEMPLATEDIR) $(MSIOFFICETEMPLATEDIR)$/Binary :
499	-$(MKDIRHIER) $@
500$(MSIOFFICETEMPLATEDIR)$/% : $(MSIOFFICETEMPLATESOURCE)$/%
501	$(GNUCOPY) $< $@
502
503msi_langpack_template_files .PHONY :				\
504	$(MSILANGPACKTEMPLATEDIR)				\
505	$(MSILANGPACKTEMPLATEDIR)$/Binary			\
506	$(MSILANGPACKTEMPLATEDIR)$/{$(MSI_LANGPACK_TEMPLATE_FILES)}
507$(MSILANGPACKTEMPLATEDIR) $(MSILANGPACKTEMPLATEDIR)$/Binary  :
508	-$(MKDIRHIER) $@
509$(MSILANGPACKTEMPLATEDIR)$/% : $(MSILANGPACKTEMPLATESOURCE)$/%
510	$(GNUCOPY) $< $@
511
512
513msi_sdk_template_files .PHONY :					\
514	$(MSISDKOOTEMPLATEDIR)					\
515	$(MSISDKOOTEMPLATEDIR)$/Binary				\
516	$(MSISDKOOTEMPLATEDIR)$/{$(MSI_SDK_TEMPLATE_FILES)}
517$(MSISDKOOTEMPLATEDIR) $(MSISDKOOTEMPLATEDIR)$/Binary :
518	-$(MKDIRHIER) $@
519$(MSISDKOOTEMPLATEDIR)/% : $(MSISDKOOTEMPLATESOURCE)$/%
520	$(GNUCOPY) $< $@
521
522
523# Local Variables:
524# tab-width: 8
525# End:
526