xref: /trunk/main/solenv/gbuild/UnoApiTarget.mk (revision 8f3a2c2f)
1b63233d8Sdamjan###############################################################
2b63233d8Sdamjan#
3b63233d8Sdamjan#  Licensed to the Apache Software Foundation (ASF) under one
4b63233d8Sdamjan#  or more contributor license agreements.  See the NOTICE file
5b63233d8Sdamjan#  distributed with this work for additional information
6b63233d8Sdamjan#  regarding copyright ownership.  The ASF licenses this file
7b63233d8Sdamjan#  to you under the Apache License, Version 2.0 (the
8b63233d8Sdamjan#  "License"); you may not use this file except in compliance
9b63233d8Sdamjan#  with the License.  You may obtain a copy of the License at
10b63233d8Sdamjan#
11b63233d8Sdamjan#    http://www.apache.org/licenses/LICENSE-2.0
12b63233d8Sdamjan#
13b63233d8Sdamjan#  Unless required by applicable law or agreed to in writing,
14b63233d8Sdamjan#  software distributed under the License is distributed on an
15b63233d8Sdamjan#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b63233d8Sdamjan#  KIND, either express or implied.  See the License for the
17b63233d8Sdamjan#  specific language governing permissions and limitations
18b63233d8Sdamjan#  under the License.
19b63233d8Sdamjan#
20b63233d8Sdamjan###############################################################
21b63233d8Sdamjan
22b63233d8Sdamjan
23b63233d8Sdamjan
24b63233d8Sdamjandefine gb_UnoApiTarget_autopackage_inc
25b63233d8Sdamjan$$(eval $$(call gb_Package_Package,$(1)_inc,$$(patsubst %/empty,%,$$(call gb_UnoApiTarget_get_header_target,empty))))
26b63233d8Sdamjan$(foreach onefile,$(gb_UnoApiTarget_HPPFILES_$(1)), \
27b63233d8Sdamjan	$$(eval $$(call gb_Package_add_file,$(1)_inc,$(patsubst $(1)/%,inc/$(1)/%,$(onefile)),$(onefile))))
28b63233d8Sdamjan
29b63233d8Sdamjan$(call gb_Package_get_target,$(1)_inc) : $(call gb_UnoApiTarget_get_target,$(1))
30b63233d8Sdamjan
31b63233d8Sdamjanendef
32b63233d8Sdamjan
33b63233d8Sdamjan# TODO: make multi repo safe
34b63233d8Sdamjandefine gb_UnoApiTarget_autopackage_idl
35b63233d8Sdamjan$$(eval $$(call gb_Package_Package,$(1)_idl,$(SRCDIR)))
36b63233d8Sdamjan$(foreach onefile,$(gb_UnoApiTarget_IDLFILES_$(1)), \
37b63233d8Sdamjan	$$(eval $$(call gb_Package_add_file,$(1)_idl,$(patsubst $(1)/%,idl/%,$(onefile)),$(onefile))))
38b63233d8Sdamjan
39b63233d8Sdamjanendef
40b63233d8Sdamjan
41b63233d8Sdamjan$(call gb_UnoApiTarget_get_header_target,$(1))/% : $(call gb_UnoApiTarget_get_target,$(1))
42b63233d8Sdamjan	mkdir -p $$(dir $$@)
43b63233d8Sdamjan
44b63233d8Sdamjandefine gb_UnoApiTarget_UnoApiTarget
45b63233d8Sdamjan$$(eval $$(call gb_Module_register_target,$(call gb_UnoApiOutTarget_get_target,$(1)),$(call gb_UnoApiOutTarget_get_clean_target,$(1))))
46b63233d8Sdamjan$(call gb_UnoApiOutTarget_get_target,$(1)) : $(call gb_UnoApiTarget_get_target,$(1))
47b63233d8Sdamjan$(call gb_UnoApiOutTarget_get_clean_target,$(1)) : $(call gb_UnoApiTarget_get_clean_target,$(1))
48b63233d8Sdamjangb_UnoApiTarget_HPPFILES_$(1) :=
49b63233d8Sdamjangb_UnoApiTarget_IDLFILES_$(1) :=
50b63233d8Sdamjan
51b63233d8Sdamjan.DELETE_ON_ERROR : \
52b63233d8Sdamjan    $(call gb_UnoApiTarget_get_clean_target,$(1)) \
53b63233d8Sdamjan    $(call gb_UnoApiTarget_get_target,$(1))
54b63233d8Sdamjan
55b63233d8Sdamjanendef
56b63233d8Sdamjan
57b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfiles
58b63233d8Sdamjan$(foreach idl,$(2),$(call gb_UnoApiTarget_add_idlfile,$(1),$(idl)))
59b63233d8Sdamjan
60b63233d8Sdamjanendef
61b63233d8Sdamjan
62b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfile
63b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2).urd)
64b63233d8Sdamjan$(call gb_UnoApiPartTarget_get_target,$(2).urd) : $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(2).idl))
65b63233d8Sdamjangb_UnoApiTarget_HPPFILES_$(1) += $(2).hdl
66b63233d8Sdamjangb_UnoApiTarget_HPPFILES_$(1) += $(2).hpp
67b63233d8Sdamjangb_UnoApiTarget_IDLFILES_$(1) += $(2).idl
68b63233d8Sdamjan
69b63233d8Sdamjan$(call gb_UnoApiTarget_get_header_target,)$(2).hpp :| $(call gb_UnoApiTarget_get_target,$(1))
70b63233d8Sdamjan$(call gb_UnoApiTarget_get_header_target,)$(2).hdl :| $(call gb_UnoApiTarget_get_target,$(1))
71b63233d8Sdamjan
72b63233d8Sdamjanendef
73b63233d8Sdamjan
74b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfiles_noheader
75b63233d8Sdamjan$(foreach idl,$(2),$(call gb_UnoApiTarget_add_idlfile_noheader,$(1),$(idl)))
76b63233d8Sdamjan
77b63233d8Sdamjanendef
78b63233d8Sdamjan
79b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfile_noheader
80b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2).urd)
81b63233d8Sdamjan$(call gb_UnoApiPartTarget_get_target,$(2).urd) : $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(2).idl))
82b63233d8Sdamjangb_UnoApiTarget_IDLFILES_$(1) += $(2).idl
83b63233d8Sdamjan
84b63233d8Sdamjanendef
85b63233d8Sdamjan
86b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfiles_nohdl
87b63233d8Sdamjan$(foreach idl,$(2),$(call gb_UnoApiTarget_add_idlfile_nohdl,$(1),$(idl)))
88b63233d8Sdamjan
89b63233d8Sdamjanendef
90b63233d8Sdamjan
91b63233d8Sdamjandefine gb_UnoApiTarget_add_idlfile_nohdl
92b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2).urd)
93b63233d8Sdamjan$(call gb_UnoApiPartTarget_get_target,$(2).urd) : $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(2).idl))
94b63233d8Sdamjangb_UnoApiTarget_HPPFILES_$(1) += $(2).hpp
95b63233d8Sdamjangb_UnoApiTarget_IDLFILES_$(1) += $(2).idl
96b63233d8Sdamjan
97b63233d8Sdamjan$(call gb_UnoApiTarget_get_header_target,)$(2).hpp :| $(call gb_UnoApiTarget_get_target,$(1))
98b63233d8Sdamjan
99b63233d8Sdamjanendef
100b63233d8Sdamjan
101b63233d8Sdamjandefine gb_UnoApiTarget_add_rdbfiles
102b63233d8Sdamjan$(foreach rdb,$(2),$(call gb_UnoApiTarget_add_rdbfile,$(1),$(rdb)))
103b63233d8Sdamjan
104b63233d8Sdamjanendef
105b63233d8Sdamjan
106b63233d8Sdamjandefine gb_UnoApiTarget_add_rdbfile
107b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_DEPS += -X$(call gb_UnoApiOutTarget_get_target,$(2))
108b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : \
109b63233d8Sdamjan	$(call gb_UnoApiOutTarget_get_target,$(2)) \
110b63233d8Sdamjan	$(call gb_Package_get_target,$(2)_idl)
111b63233d8Sdamjan
112b63233d8Sdamjanendef
113b63233d8Sdamjan
114b63233d8Sdamjandefine gb_UnoApiTarget_add_merge_rdbfiles
115b63233d8Sdamjan$(foreach rdb,$(2),$(call gb_UnoApiTarget_add_merge_rdbfile,$(1),$(rdb)))
116b63233d8Sdamjan
117b63233d8Sdamjanendef
118b63233d8Sdamjan
119b63233d8Sdamjandefine gb_UnoApiTarget_add_merge_rdbfile
120b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_MERGE += $(call gb_UnoApiOutTarget_get_target,$(2))
121b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiOutTarget_get_target,$(2))
122b63233d8Sdamjan
123b63233d8Sdamjanendef
124b63233d8Sdamjan
125b63233d8Sdamjan#UNOAPI_REFERENCE_$(1) := $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(strip $(2)).rdb))
126b63233d8Sdamjandefine gb_UnoApiTarget_add_reference_rdbfile
127b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_REFERENCE := $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(strip $(2)).rdb))
128b63233d8Sdamjan
129b63233d8Sdamjanendef
130b63233d8Sdamjan
131b63233d8Sdamjandefine gb_UnoApiTarget_set_include
132b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,$(1)) : INCLUDE := $(2)
133b63233d8Sdamjan
134b63233d8Sdamjanendef
135b63233d8Sdamjan
136b63233d8Sdamjan.PHONY : $(call gb_UnoApiOutTarget_get_clean_target,%)
137b63233d8Sdamjan$(call gb_UnoApiOutTarget_get_clean_target,%) :
138b63233d8Sdamjan	$(call gb_Output_announce,$*,$(false),UNOAPI,1)
139b63233d8Sdamjan	-$(call gb_Helper_abbreviate_dirs,\
140b63233d8Sdamjan		rm -f $(call gb_UnoApiOutTarget_get_target,$*))
141b63233d8Sdamjan
142b63233d8Sdamjan.PHONY : $(call gb_UnoApiTarget_get_clean_target,%)
143b63233d8Sdamjan$(call gb_UnoApiTarget_get_clean_target,%) :
144b63233d8Sdamjan	$(call gb_Output_announce,$*,$(false),UNOAPI,1)
145b63233d8Sdamjan	-$(call gb_Helper_abbreviate_dirs,\
146b63233d8Sdamjan		rm -f $(call gb_UnoApiTarget_get_target,$*))
147b63233d8Sdamjan	-rm -rf $(call gb_UnoApiTarget_get_header_target,$*)\
148b63233d8Sdamjan			$(call gb_UnoApiPartTarget_get_target,$*)
149b63233d8Sdamjan
150b63233d8Sdamjan# idlc doesn't return error codes != 0 in case of an error, so
151b63233d8Sdamjan# check self
152b63233d8Sdamjandefine gb_UnoApiPartTarget__command
153b63233d8Sdamjanmkdir -p $(dir $(1)) && \
154b63233d8Sdamjan	mkdir -p  $(gb_Helper_MISC) && \
155b63233d8Sdamjan	RESPONSEFILE=`$(gb_MKTEMP)` && \
156b63233d8Sdamjan	echo "$(call gb_Helper_convert_native,$(5) $(6) -O $(call gb_UnoApiPartTarget_get_target,$(2)) -verbose -C $(4))" > $${RESPONSEFILE} && \
157b63233d8Sdamjan	$(gb_UnoApiTarget_IDLCCOMMAND) @$${RESPONSEFILE} > /dev/null && \
158b63233d8Sdamjan	rm -f $${RESPONSEFILE} && \
159b63233d8Sdamjan	test -f $(@)
160b63233d8Sdamjan
161b63233d8Sdamjanendef
162b63233d8Sdamjan
163b63233d8Sdamjan$(call gb_UnoApiPartTarget_get_target,%) :
164b63233d8Sdamjan	$(call gb_Output_announce,$*,$(true),IDL,2)
165b63233d8Sdamjan	$(call gb_UnoApiPartTarget__command,$@,$(dir $*),$<,$?,$(INCLUDE),$(DEFS))
166b63233d8Sdamjan
167b63233d8Sdamjan
168b63233d8Sdamjandefine gb_UnoApiTarget__command
169b63233d8Sdamjan	mkdir -p $(dir $(1)) && \
170b63233d8Sdamjan	RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),500,$(call gb_Helper_convert_native,$(1) $(4) $(5))) && \
171b63233d8Sdamjan	$(gb_UnoApiTarget_REGMERGECOMMAND) @$${RESPONSEFILE} && \
172b63233d8Sdamjan	rm -f $${RESPONSEFILE}
173b63233d8Sdamjan
174b63233d8Sdamjanendef
175b63233d8Sdamjan
176b63233d8Sdamjandefine gb_UnoApiHeaderTarget__command
177b63233d8Sdamjan$(call gb_Helper_abbreviate_dirs_native,\
178b63233d8Sdamjan	mkdir -p $(dir $(1)) && \
179b63233d8Sdamjan	mkdir -p  $(gb_Helper_MISC) && \
180*8f3a2c2fSdamjan	RESPONSEFILE=`$(gb_MKTEMP)` && \
181*8f3a2c2fSdamjan	echo " -Gc -L -BUCR -O$(call gb_UnoApiTarget_get_header_target,$*) $(7) \
182b63233d8Sdamjan		$(1) \
183*8f3a2c2fSdamjan		" > $${RESPONSEFILE} && \
184b63233d8Sdamjan	$(gb_UnoApiTarget_CPPUMAKERCOMMAND) @$${RESPONSEFILE} && \
185b63233d8Sdamjan	rm -f $${RESPONSEFILE})
186b63233d8Sdamjan
187b63233d8Sdamjanendef
188b63233d8Sdamjan
189b63233d8Sdamjan# TODO:
190b63233d8Sdamjan# - get idlc switch "-P" (generate .urd into package dir)
191b63233d8Sdamjan# - generate dependencies for included idls
192b63233d8Sdamjan# - empty $? in headertarget?
193b63233d8Sdamjan
194b63233d8Sdamjan$(call gb_UnoApiTarget_get_target,%):
195b63233d8Sdamjan	$(call gb_Output_announce,$*,$(true),RDB,3)
196b63233d8Sdamjan	$(if $(gb_UnoApiTarget_IDLFILES_$*),$(call gb_UnoApiTarget__command,$@,$*,$<,UCR,$(addprefix $(call gb_UnoApiPartTarget_get_target,),$(patsubst %.idl,%.urd,$(gb_UnoApiTarget_IDLFILES_$*)))))
197b63233d8Sdamjan	$(if $(UNOAPI_MERGE),$(call gb_UnoApiTarget__command,$@,$*,$<,/,$(UNOAPI_MERGE)))
198b63233d8Sdamjan	$(if $(UNOAPI_REFERENCE), \
199b63233d8Sdamjan		$(call gb_Output_announce,$*,$(true),RDBCHEK,4) \
200b63233d8Sdamjan	    $(gb_UnoApiTarget_REGCOMPARECOMMAND) -f -t -r1 $(call gb_Helper_convert_native,$(UNOAPI_REFERENCE)) -r2 $(call gb_Helper_convert_native,$@))
201b63233d8Sdamjan	$(if $(gb_UnoApiTarget_IDLFILES_$*), \
202b63233d8Sdamjan		$(call gb_Output_announce,$*,$(true),HPP,4) \
203b63233d8Sdamjan		$(call gb_UnoApiHeaderTarget__command,$@,$*,$<,$?,$(INCLUDE),$(DEFS),$(UNOAPI_DEPS)))
204b63233d8Sdamjan
205b63233d8Sdamjan# vim: set noet sw=4 ts=4:
206