Hi Matúš, Bjoern,
I've found a way how to speedup the build of offapi (which is a major
problem on windows - on my box it takes about 10% of the entire build
time). The trick is simple - instead of generating the files one by
one, several .idl's are treated during one idlc call; something that has
been there before gbuildization of the module. Of course, it also
handles the case when everything is built, and just 1 .idl changes - in
that case, only that one is rebuilt.
Unfortunately I am heading for vacation, and cannot finish it before I
go - do you think anybody of you could have a look, please?
With the attached patch, the offapi/UnoApi_offapi.mk (and oovbaapi) has
to change to something like the following; this is of course only part
of that, the other rules have to be adapted the same way, but that
should be ~trivial. Second part of the problem is that idlc have to be
patched to bail out with != 0 exit value, according to the comments it
is not the case right now.
Enjoy :-)
----- 8< offapi/UnoApi_offapi.mk 8< -----
$(eval $(call
gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/accessibility,\
AccessBridge \
Accessible \
AccessibleContext \
))
$(eval $(call
gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/auth,\
SSOExceptions \
SSOManagerFactory \
SSOPasswordCache \
))
$(eval $(call
gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/awt,\
AccessibleButton \
AccessibleCheckBox \
AccessibleComboBox \
AccessibleDropDownComboBox \
AccessibleDropDownListBox \
AccessibleEdit \
AccessibleFixedText \
AccessibleIconChoiceControl \
AccessibleIconChoiceControlEntry \
AccessibleList \
AccessibleListBox \
[...more here...]
))
[...etc.]
----- 8< -----
Thank you,
Kendy
diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk
index 935c5ea..1050f6d 100644
--- a/solenv/gbuild/UnoApiTarget.mk
+++ b/solenv/gbuild/UnoApiTarget.mk
@@ -77,14 +77,24 @@ $(call gb_UnoApiTarget_get_header_target,)$(2).hdl :| $(call gb_UnoApiTarget_get
endef
define gb_UnoApiTarget_add_idlfiles_noheader
-$(foreach idl,$(2),$(call gb_UnoApiTarget_add_idlfile_noheader,$(1),$(idl)))
+$(foreach idl,$(3),$(call gb_UnoApiTarget_add_idlfile_noheader,$(1),$(2),$(idl)))
+
+$(call gb_UnoApiPartTarget_get_target,$(2)/noheader.done) : $(foreach repo,$(gb_REPOS),$(foreach idl,$(3),$(realpath $(repo)/$(2)/$(idl).idl)))
+ $$(call gb_Output_announce,$(2),$(true),IDL,2)
+ mkdir -p $(call gb_UnoApiPartTarget_get_target,$(2)) && \
+ mkdir -p $(gb_Helper_MISC) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "$(call gb_Helper_convert_native,$$(INCLUDE) $$(DEFS) -O $(call gb_UnoApiPartTarget_get_target,$(2)) -verbose -C $$?)" > $$$${RESPONSEFILE} && \
+ $(gb_UnoApiTarget_IDLCCOMMAND) @$$$${RESPONSEFILE} > /dev/null && \
+ rm -f $$$${RESPONSEFILE} && \
+ touch $$@
endef
define gb_UnoApiTarget_add_idlfile_noheader
-$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2).urd)
-$(call gb_UnoApiPartTarget_get_target,$(2).urd) : $(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(2).idl))
-gb_UnoApiTarget_IDLFILES_$(1) += $(2).idl
+$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd)
+$(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) : $(call gb_UnoApiPartTarget_get_target,$(2)/noheader.done)
+gb_UnoApiTarget_IDLFILES_$(1) += $(2)/$(3).idl
endef
@@ -165,10 +175,6 @@ mkdir -p $(dir $(1)) && \
endef
-$(call gb_UnoApiPartTarget_get_target,%) :
- $(call gb_Output_announce,$*,$(true),IDL,2)
- $(call gb_UnoApiPartTarget__command,$@,$(dir $*),$<,$?,$(INCLUDE),$(DEFS))
-
define gb_UnoApiTarget__command
mkdir -p $(dir $(1)) && \
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice