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
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to