Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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


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.