xref: /trunk/main/solenv/gbuild/AllLangResTarget.mk (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1#*************************************************************************
2#
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# Copyright 2000, 2011 Oracle and/or its affiliates.
6#
7# OpenOffice.org - a multi-platform office productivity suite
8#
9# This file is part of OpenOffice.org.
10#
11# OpenOffice.org is free software: you can redistribute it and/or modify
12# it under the terms of the GNU Lesser General Public License version 3
13# only, as published by the Free Software Foundation.
14#
15# OpenOffice.org is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18# GNU Lesser General Public License version 3 for more details
19# (a copy is included in the LICENSE file that accompanied this code).
20#
21# You should have received a copy of the GNU Lesser General Public License
22# version 3 along with OpenOffice.org.  If not, see
23# <http://www.openoffice.org/license.html>
24# for a copy of the LGPLv3 License.
25#
26#*************************************************************************
27
28# SrsPartMergeTarget class
29
30gb_SrsPartMergeTarget_TRANSEXTARGET := $(call gb_Executable_get_target,transex3)
31# gb_SrsPartMergeTarget_TRANSEXPRECOMMAND is set by the platforms
32
33gb_SrsPartMergeTarget_TRANSEXCOMMAND := $(gb_SrsPartMergeTarget_TRANSEXPRECOMMAND) $(gb_SrsPartMergeTarget_TRANSEXTARGET)
34gb_SrsPartMergeTarget_SDFLOCATION := $(LOCDIR)/l10n/$(INPATH)/misc/sdf/
35gb_SrsPartMergeTarget_REPOS := $(gb_REPOS)
36
37define gb_SrsPartMergeTarget__command
38$(call gb_Output_announce,$(3),$(true),srs,1)
39$(call gb_Helper_abbreviate_dirs_native,\
40    mkdir -p $(dir $(1)) && \
41    $(gb_SrsPartMergeTarget_TRANSEXCOMMAND) \
42        -p $(firstword $(subst /, ,$(2))) \
43        -i $(3) \
44        -o $(1) \
45        -m $(SDF) \
46        -l all)
47
48endef
49
50define gb_SrsPartMergeTarget__rules
51$$(call gb_SrsPartMergeTarget_get_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY) | $$(gb_SrsPartMergeTarget_TRANSEXTARGET)
52    $$(if $$(SDF),$$(call gb_SrsPartMergeTarget__command,$$@,$$*,$$<),mkdir -p $$(dir $$@) && cp $$< $$@)
53
54endef
55
56$(foreach repo,$(gb_SrsPartMergeTarget_REPOS),$(eval $(call gb_SrsPartMergeTarget__rules,$(repo))))
57
58# SrsPartTarget class
59
60gb_SrsPartTarget_REPOS := $(gb_REPOS)
61# defined by platform
62#  gb_SrsPartTarget_RSCTARGET
63#  gb_SrsPartTarget_RSCCOMMAND
64#  gb_SrsPartTarget__command_dep
65
66define gb_SrsPartTarget__command
67$(call gb_Helper_abbreviate_dirs_native,\
68    mkdir -p $(dir $(1)) && \
69    RESPONSEFILE=`$(gb_MKTEMP)` && \
70    echo "-s \
71        $(INCLUDE) \
72        -I$(dir $(3)) \
73        $(DEFS) \
74        -fp=$(1) \
75        $(if $(MERGEDFILE),$(MERGEDFILE),$<)" > $${RESPONSEFILE} && \
76    $(gb_SrsPartTarget_RSCCOMMAND) -presponse @$${RESPONSEFILE} && \
77    rm -rf $${RESPONSEFILE})
78
79endef
80
81define gb_SrsPartTarget__rules
82$$(call gb_SrsPartTarget_get_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY) | $$(gb_SrsPartTarget_RSCTARGET)
83    $$(call gb_SrsPartTarget__command_dep,$$*,$$<)
84    $$(call gb_SrsPartTarget__command,$$@,$$*,$$<)
85
86ifeq ($(gb_FULLDEPS),$(true))
87$$(call gb_SrsPartTarget_get_dep_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY)
88    $$(call gb_Helper_abbreviate_dirs,\
89        mkdir -p $$(dir $$@) && \
90        echo '$$(call gb_SrsPartTarget_get_target,$$*) : $$(gb_Helper_PHONY)' > $$@)
91endif
92
93endef
94
95$(foreach repo,$(gb_SrsPartTarget_REPOS),$(eval $(call gb_SrsPartTarget__rules,$(repo))))
96
97ifeq ($(gb_FULLDEPS),$(true))
98$(call gb_SrsPartTarget_get_dep_target,%) :
99    $(eval $(call gb_Output_error,Unable to find resource definition file $* in repositories: $(gb_SrsPartTarget_REPOS)))
100endif
101
102
103define gb_SrsPartTarget_SrsPartTarget
104ifeq ($(strip $(gb_WITH_LANG)),)
105$(call gb_SrsPartTarget_get_target,$(1)) : MERGEDFILE :=
106else
107$(call gb_SrsPartTarget_get_target,$(1)) : MERGEDFILE := $(call gb_SrsPartMergeTarget_get_target,$(1))
108$(call gb_SrsPartTarget_get_target,$(1)) : $(call gb_SrsPartMergeTarget_get_target,$(1))
109$(call gb_SrsPartMergeTarget_get_target,$(1)) : SDF := $(realpath $(gb_SrsPartMergeTarget_SDFLOCATION)$(dir $(1))localize.sdf)
110$(call gb_SrsPartMergeTarget_get_target,$(1)) : $(realpath $(gb_SrsPartMergeTarget_SDFLOCATION)$(dir $(1))localize.sdf)
111endif
112
113endef
114
115
116# SrsTarget class
117
118gb_SrsTarget_DEFAULTDEFS := $(gb_GLOBALDEFS)
119
120.PHONY : $(call gb_SrsTarget_get_clean_target,%)
121$(call gb_SrsTarget_get_clean_target,%) :
122    $(call gb_Output_announce,$*,$(false),SRS,1)
123    -$(call gb_Helper_abbreviate_dirs,\
124        rm -f $(call gb_SrsTarget_get_target,$*) \
125            $(call gb_SrsTarget_get_dep_target,$*) \
126            $(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_target,$(part))) \
127            $(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_dep_target,$(part))) \
128            $(foreach part,$(PARTS),$(call gb_SrsPartMergeTarget_get_target,$(part))))
129
130ifeq ($(gb_FULLDEPS),$(true))
131define gb_SrsTarget__command_dep
132$(call gb_Output_announce,SRS:$(2),$(true),DEP,1)
133$(call gb_Helper_abbreviate_dirs,\
134    mkdir -p $(dir $(1)) && \
135    cat $(3) > $(1))
136endef
137endif
138
139$(call gb_SrsTarget_get_target,%) :
140    $(call gb_SrsTarget__command_dep,$(call gb_SrsTarget_get_dep_target,$*),$*,$(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_dep_target,$(part))))
141    $(call gb_Output_announce,$*,$(true),SRS,1)
142    $(call gb_Helper_abbreviate_dirs,\
143        mkdir -p $(dir $@) && \
144        cat $^ > $@)
145
146ifeq ($(gb_FULLDEPS),$(true))
147$(call gb_SrsTarget_get_dep_target,%) :
148    $(call gb_SrsTarget__command_dep,$@,$*,$^)
149endif
150
151define gb_SrsTarget_SrsTarget
152$(call gb_SrsTarget_get_target,$(1)) : DEFS := $(gb_SrsTarget_DEFAULTDEFS)
153$(call gb_SrsTarget_get_target,$(1)) : INCLUDE := $(SOLARINC)
154$(call gb_SrsTarget_get_clean_target,$(1)) : PARTS :=
155$(call gb_SrsTarget_get_target,$(1)) : PARTS :=
156ifeq ($(gb_FULLDEPS),$(true))
157ifneq ($(wildcard $(call gb_SrsTarget_get_dep_target,$(1))),)
158include $(call gb_SrsTarget_get_dep_target,$(1))
159else
160$(firstword $(MAKEFILE_LIST)) : $(call gb_SrsTarget_get_dep_target,$(1))
161endif
162endif
163
164endef
165
166define gb_SrsTarget_set_defs
167$(call gb_SrsTarget_get_target,$(1)) : DEFS := $(2)
168ifeq ($(gb_FULLDEPS),$(true))
169$(call gb_SrsTarget_get_dep_target,$(1)) : DEFS := $(2)
170endif
171
172endef
173
174define gb_SrsTarget_set_include
175$(call gb_SrsTarget_get_target,$(1)) : INCLUDE := $(2)
176ifeq ($(gb_FULLDEPS),$(true))
177$(call gb_SrsTarget_get_dep_target,$(1)) : INCLUDE := $(2)
178endif
179
180endef
181
182define gb_SrsTarget_add_file
183ifeq ($(gb_FULLDEPS),$(true))
184$(call gb_SrsTarget_get_dep_target,$(1)) : $(call gb_SrsPartTarget_get_dep_target,$(2))
185endif
186$(call gb_SrsPartTarget_SrsPartTarget,$(2))
187$(call gb_SrsTarget_get_target,$(1)) : $(call gb_SrsPartTarget_get_target,$(2))
188$(call gb_SrsTarget_get_clean_target,$(1)) : PARTS += $(2)
189$(call gb_SrsTarget_get_target,$(1)) : PARTS += $(2)
190
191endef
192
193define gb_SrsTarget_add_files
194$(foreach file,$(2),$(call gb_SrsTarget_add_file,$(1),$(file)))
195
196endef
197
198
199# ResTarget
200
201gb_ResTarget_RSCTARGET := $(gb_SrsPartTarget_RSCTARGET)
202gb_ResTarget_RSCCOMMAND := $(gb_SrsPartTarget_RSCCOMMAND)
203gb_ResTarget_DEFIMAGESLOCATION := $(SRCDIR)/default_images/
204
205$(call gb_ResTarget_get_clean_target,%) :
206    $(call gb_Output_announce,$*,$(false),RES,2)
207    $(call gb_Helper_abbreviate_dirs,\
208        rm -f $(call gb_ResTarget_get_target,$*) $(call gb_ResTarget_get_imagelist_target,$*) $(call gb_ResTarget_get_outdir_target,$*) $(call gb_ResTarget_get_outdir_imagelist_target,$*))
209
210$(call gb_ResTarget_get_target,%) : $(gb_Helper_MISCDUMMY) | $(gb_ResTarget_RSCTARGET)
211    $(call gb_Output_announce,$*,$(true),RES,2)
212    $(call gb_Helper_abbreviate_dirs_native,\
213        mkdir -p $(dir $@) $(OUTDIR)/bin \
214            $(dir $(call gb_ResTarget_get_imagelist_target,$*)) && \
215        RESPONSEFILE=`$(gb_MKTEMP)` && \
216        echo "-r -p \
217            -lg$(LANGUAGE) \
218            -fs=$@ \
219            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/$(LIBRARY)) \
220            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst/$(LANGUAGE)) \
221            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst) \
222            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res/$(LANGUAGE)) \
223            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res) \
224            -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)) \
225            -lip=$(gb_ResTarget_DEFIMAGESLOCATION)res/$(LANGUAGE) \
226            -lip=$(gb_ResTarget_DEFIMAGESLOCATION)res \
227            -subMODULE=$(dir $(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION))) \
228            -subGLOBALRES=$(gb_ResTarget_DEFIMAGESLOCATION)res \
229            -oil=$(dir $(call gb_ResTarget_get_imagelist_target,$*)) \
230            $(filter-out $(gb_Helper_MISCDUMMY),$^)" > $${RESPONSEFILE} && \
231        $(gb_ResTarget_RSCCOMMAND) @$${RESPONSEFILE} && \
232        rm -f $${RESPONSEFILE})
233
234$(call gb_ResTarget_get_outdir_target,%) :
235    $(call gb_Helper_abbreviate_dirs,\
236        $(call gb_Deliver_deliver,$<,$@) && \
237        $(call gb_Deliver_deliver,$(dir $<)/$(notdir $(ILSTTARGET)),$(ILSTTARGET)))
238
239define gb_ResTarget_ResTarget
240$(call gb_ResTarget_get_target,$(1)) : LIBRARY = $(2)
241$(call gb_ResTarget_get_target,$(1)) : LANGUAGE = $(3)
242$(call gb_ResTarget_get_target,$(1)) : RESLOCATION = $(2)
243$(call gb_AllLangResTarget_get_target,$(2)) : $(call gb_ResTarget_get_outdir_target,$(1))
244$(call gb_AllLangResTarget_get_clean_target,$(2)) : $(call gb_ResTarget_get_clean_target,$(1))
245$(call gb_ResTarget_get_imagelist_target,$(1)) : $(call gb_ResTarget_get_target,$(1))
246
247$(call gb_ResTarget_get_outdir_target,$(1)) : $(call gb_ResTarget_get_target,$(1))
248$(call gb_ResTarget_get_outdir_target,$(1)) : ILSTTARGET = $(call gb_ResTarget_get_outdir_imagelist_target,$(1))
249$(call gb_Deliver_add_deliverable,$(call gb_ResTarget_get_outdir_target,$(1)),$(call gb_ResTarget_get_target,$(1)))
250$(call gb_Deliver_add_deliverable,$(call gb_ResTarget_get_outdir_imagelist_target,$(1)),$(call gb_ResTarget_get_imagelist_target,$(1)))
251
252endef
253
254define gb_ResTarget_add_file
255$(call gb_ResTarget_get_target,$(1)) : $(2)
256
257endef
258
259define gb_ResTarget_add_one_srs
260$(call gb_ResTarget_add_file,$(1),$(call gb_SrsTarget_get_target,$(2)))
261$(call gb_ResTarget_get_clean_target,$(1)) : $(call gb_SrsTarget_get_clean_target,$(2))
262
263endef
264
265define gb_ResTarget_add_files
266$(foreach file,$(2),\
267    $(call gb_ResTarget_add_file,$(1),$(file)))
268
269endef
270
271define gb_ResTarget_add_srs
272$(foreach srs,$(2),\
273    $(call gb_ResTarget_add_one_srs,$(1),$(srs)))
274
275endef
276
277define gb_ResTarget_set_reslocation
278$(call gb_ResTarget_get_target,$(1)) : RESLOCATION = $(2)
279
280endef
281
282
283# AllLangResTarget
284
285gb_AllLangResTarget_LANGS := en-US $(filter-out en-US,$(gb_WITH_LANG))
286
287define gb_AllLangResTarget_set_langs
288gb_AllLangResTarget_LANGS := $(1)
289endef
290
291$(call gb_AllLangResTarget_get_clean_target,%) :
292    $(call gb_Helper_abbreviate_dirs,\
293        rm -f $(call gb_AllLangResTarget_get_target,$*))
294
295$(call gb_AllLangResTarget_get_target,%) :
296    $(call gb_Helper_abbreviate_dirs,\
297        mkdir -p $(dir $@) && touch $@)
298
299define gb_AllLangResTarget_AllLangResTarget
300$(foreach lang,$(gb_AllLangResTarget_LANGS),\
301    $(call gb_ResTarget_ResTarget,$(1)$(lang),$(1),$(lang)))
302$$(eval $$(call gb_Module_register_target,$(call gb_AllLangResTarget_get_target,$(1)),$(call gb_AllLangResTarget_get_clean_target,$(1))))
303
304endef
305
306define gb_AllLangResTarget_add_one_srs
307$(foreach lang,$(gb_AllLangResTarget_LANGS),\
308    $(call gb_ResTarget_add_one_srs,$(1)$(lang),$(2)))
309
310endef
311
312define gb_AllLangResTarget_add_srs
313$(foreach srs,$(2),\
314    $(call gb_AllLangResTarget_add_one_srs,$(1),$(srs)))
315
316endef
317
318define gb_AllLangResTarget_set_reslocation
319$(foreach lang,$(gb_AllLangResTarget_LANGS),\
320    $(call gb_ResTarget_set_reslocation,$(1)$(lang),$(2)))
321
322endef
323
324# vim: set noet sw=4 ts=4:
325