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)) && \
Context
- [Libreoffice] [Proof-of-concept] Drastically speedup the offapi (and oovbaapi) build · Jan Holesovsky
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.