Kaydet (Commit) b23bb8e0 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

fdo#53009: Compile extension help in gbuild

...as had been done in the old build system (solenv/inc/extension_helplink.mk).
Especially for bundled extensions, this removes the need to compile the help
data per user on first start.

gb_Extension_add_helpfile(s) replaces gb_Extension_localize_help, and takes care
of all the steps (localization, compilation, inclusion in .oxt), even for the
en-US data (which was handled with additional gb_Extension_add_file calls
before).

Change-Id: Ie4bab66d3cad2b713780a23bf2606ca56cfff37f
üst 0e1e5905
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# Version: MPL 1.1 / GPLv3+ / LGPLv3+
#
......@@ -39,11 +40,9 @@ $(eval $(call gb_Extension_add_file,nlpsolver,locale/NLPSolverStatusDialog_en_US
$(eval $(call gb_Extension_localize_properties,nlpsolver,locale/NLPSolverCommon_en_US.properties,$(SRCDIR)/nlpsolver/src/locale/NLPSolverCommon_en_US.properties))
$(eval $(call gb_Extension_localize_properties,nlpsolver,locale/NLPSolverStatusDialog_en_US.properties,$(SRCDIR)/nlpsolver/src/locale/NLPSolverStatusDialog_en_US.properties))
$(eval $(call gb_Extension_add_file,nlpsolver,help/en-US/com.sun.star.comp.Calc.NLPSolver/Options.xhp, \
$(SRCDIR)/nlpsolver/help/en/com.sun.star.comp.Calc.NLPSolver/Options.xhp))
$(eval $(call gb_Extension_add_file,nlpsolver,help/en-US/com.sun.star.comp.Calc.NLPSolver/Usage.xhp, \
$(SRCDIR)/nlpsolver/help/en/com.sun.star.comp.Calc.NLPSolver/Usage.xhp))
$(eval $(call gb_Extension_localize_help,nlpsolver,help/lang/com.sun.star.comp.Calc.NLPSolver/Options.xhp, \
$(SRCDIR)/nlpsolver/help/en/com.sun.star.comp.Calc.NLPSolver/Options.xhp))
$(eval $(call gb_Extension_localize_help,nlpsolver,help/lang/com.sun.star.comp.Calc.NLPSolver/Usage.xhp, \
$(SRCDIR)/nlpsolver/help/en/com.sun.star.comp.Calc.NLPSolver/Usage.xhp))
$(eval $(call gb_Extension_add_helpfiles,nlpsolver,$(SRCDIR)/nlpsolver/help/en, \
com.sun.star.comp.Calc.NLPSolver/Options.xhp \
com.sun.star.comp.Calc.NLPSolver/Usage.xhp \
))
# vim: set noet sw=4 ts=4:
......@@ -141,10 +141,6 @@ $(eval $(call gb_Extension_add_files,presenter-screen,registry/data/org/openoffi
$(call gb_XcuDataTarget_get_target,sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu) \
))
$(eval $(call gb_Extension_add_files,presenter-screen,help/en-US/com.sun.PresenterScreen-$(sdext_PLATFORM),\
$(WORKDIR)/CustomTarget/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp \
))
$(eval $(call gb_Extension_localize_help,presenter-screen,help/lang/com.sun.PresenterScreen-$(sdext_PLATFORM)/presenter.xhp,$(WORKDIR)/CustomTarget/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp))
$(eval $(call gb_Extension_add_helpfile,presenter-screen,$(WORKDIR)/CustomTarget/sdext/source/presenter/help/en-US,com.sun.PresenterScreen-$(sdext_PLATFORM)/presenter.xhp,com.sun.PresenterScreen/presenter.xhp))
# vim:set shiftwidth=4 softtabstop=4 expandtab:
......@@ -93,9 +93,26 @@ $(call gb_ExtensionTarget_localize_properties,$(1),$(2),$(3))
endef
# localize extension help
define gb_Extension_localize_help
$(call gb_ExtensionTarget_localize_help,$(1),$(2),$(3))
# add an .xhp help file, to be localized and compiled
# $(1): extension identifier
# $(2): absolute path prefix of en-US source file without $(3) (resp. $(4))
# suffix
# $(3): relative path of (target) .xhp file (e.g.,
# com.sun.wiki-publisher/wiki.xhp)
# $(4): optional relative path of source .xhp file, when it differs from $(3)
# (i.e., if $(4) is empty the en-US source file is $(2)/$(3), otherwise it
# is $(2)/$(4))
define gb_Extension_add_helpfile
$(call gb_ExtensionTarget_add_helpfile,$(1),$(2),$(3),$(4))
endef
# add a list of .xhp help files, to be localized and compiled
# $(1): extension identifier
# $(2): absolute path prefix of en-US source files without $(3) suffixes
# $(3): list of relative paths of .xhp files (see gb_Extension_add_helpfile)
define gb_Extension_add_helpfiles
$(call gb_ExtensionTarget_add_helpfiles,$(1),$(2),$(3))
endef
......
......@@ -42,7 +42,8 @@ gb_ExtensionTarget_HELPEXTARGET := $(call gb_Executable_get_target_for_build,hel
gb_ExtensionTarget_HELPEXCOMMAND := \
$(gb_Helper_set_ld_path) $(gb_ExtensionTarget_HELPEXTARGET)
# does not contain en-US because it is special cased in gb_ExtensionTarget_ExtensionTarget
gb_ExtensionTarget_LANGS := $(filter-out en-US,$(gb_WITH_LANG))
gb_ExtensionTarget_TRANS_LANGS := $(filter-out en-US,$(gb_WITH_LANG))
gb_ExtensionTarget_ALL_LANGS := en-US $(gb_ExtensionTarget_TRANS_LANGS)
# Substitute platform or copy if no platform has been set
define gb_ExtensionTarget__subst_platform
......@@ -55,6 +56,9 @@ $(if $(PLATFORM),\
cp -f $(1) $(2))
endef
$(call gb_ExtensionTarget_get_workdir,%)/.dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
# remove extension directory in workdir and oxt file in workdir
$(call gb_ExtensionTarget_get_clean_target,%) :
$(call gb_Output_announce,$*,$(false),OXT,3)
......@@ -93,11 +97,11 @@ $(call gb_ExtensionTarget_get_target,%) : \
$(call gb_ExtensionTarget__subst_platform,$(call gb_ExtensionTarget_get_workdir,$*)/description.xml,$(call gb_ExtensionTarget_get_rootdir,$*)/description.xml) && \
$(call gb_ExtensionTarget__subst_platform,$(LOCATION)/manifest.xml,$(call gb_ExtensionTarget_get_rootdir,$*)/META-INF/manifest.xml) && \
$(if $(LICENSE),cp -f $(LICENSE) $(call gb_ExtensionTarget_get_rootdir,$*)/registration &&) \
$(if $(and $(gb_WITH_LANG),$(DESCRIPTION)),cp $(foreach lang,$(gb_ExtensionTarget_LANGS),$(call gb_ExtensionTarget_get_workdir,$*)/description-$(lang).txt) $(call gb_ExtensionTarget_get_rootdir,$*) &&) \
$(if $(and $(gb_WITH_LANG),$(DESCRIPTION)),cp $(foreach lang,$(gb_ExtensionTarget_TRANS_LANGS),$(call gb_ExtensionTarget_get_workdir,$*)/description-$(lang).txt) $(call gb_ExtensionTarget_get_rootdir,$*) &&) \
cd $(call gb_ExtensionTarget_get_rootdir,$*) && \
$(gb_ExtensionTarget_ZIPCOMMAND) -rX --filesync \
$(call gb_ExtensionTarget_get_target,$*) \
$(FILES))
$(sort $(FILES)))
# set file list and location of manifest and description files
# register target and clean target
......@@ -116,6 +120,8 @@ $(call gb_ExtensionTarget_get_target,$(1)) : SDF := $(gb_SDFLOCATION)/$(2)/local
$(call gb_ExtensionTarget_get_workdir,$(1))/description.xml : $$(SDF)
endif
$(foreach lang,$(gb_ExtensionTarget_ALL_LANGS), \
$(call gb_ExtensionTarget__compile_help_onelang,$(1),$(lang)))
endef
# Set platform.
......@@ -139,7 +145,7 @@ define gb_ExtensionTarget_use_default_description
$(call gb_ExtensionTarget_add_file,$(1),description-en-US.txt,$(SRCDIR)/$(2)/description-en-US.txt)
$(call gb_ExtensionTarget_get_target,$(1)) : DESCRIPTION := $(true)
ifneq ($(strip $(gb_WITH_LANG)),)
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(foreach lang,$(gb_ExtensionTarget_LANGS),description-$(lang).txt)
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(foreach lang,$(gb_ExtensionTarget_TRANS_LANGS),description-$(lang).txt)
endif
endef
......@@ -196,7 +202,7 @@ endef
define gb_ExtensionTarget_localize_properties
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(2)
ifneq ($(strip $(gb_WITH_LANG)),)
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(foreach lang,$(subst -,_,$(gb_ExtensionTarget_LANGS)),$(subst en_US,$(lang),$(2)))
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(foreach lang,$(subst -,_,$(gb_ExtensionTarget_TRANS_LANGS)),$(subst en_US,$(lang),$(2)))
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(dir $(3)))localize.sdf
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $$(SDF)
endif
......@@ -210,27 +216,113 @@ $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(3) \
endef
# localize extension help
define gb_ExtensionTarget_localize_help
ifneq ($(strip $(gb_WITH_LANG)),)
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(foreach lang,$(gb_ExtensionTarget_LANGS),$(subst lang,$(lang),$(2)))
$(foreach lang,$(gb_ExtensionTarget_LANGS),$(call gb_ExtensionTarget_localize_help_onelang,$(1),$(subst lang,$(lang),$(2)),$(3),$(lang)))
endif
# add an .xhp help file, to be localized and compiled
# $(1): extension identifier
# $(2): absolute path prefix of en-US source file without $(3) (resp. $(4))
# suffix
# $(3): relative path of (target) .xhp file (e.g.,
# com.sun.wiki-publisher/wiki.xhp)
# $(4): optional relative path of source .xhp file, when it differs from $(3)
# (i.e., if $(4) is empty the en-US source file is $(2)/$(3), otherwise it
# is $(2)/$(4))
define gb_ExtensionTarget_add_helpfile
$(foreach lang,$(gb_ExtensionTarget_ALL_LANGS), \
$(call gb_ExtensionTarget__localize_helpfile_onelang,$(1),$(2),$(3),$(4),$(lang)) \
$(call gb_ExtensionTarget__add_compiled_help_dependency_onelang,$(1),$(lang)))
endef
# add a list of .xhp help files, to be localized and compiled
# $(1): extension identifier
# $(2): absolute path prefix of en-US source files without $(3) suffixes
# $(3): list of relative paths of .xhp files (see
# gb_ExtensionTarget_add_helpfile)
define gb_ExtensionTarget_add_helpfiles
$(foreach helpfile,$(3), \
$(call gb_ExtensionTarget_add_helpfile,$(1),$(2),$(helpfile),))
endef
define gb_ExtensionTarget_localize_help_onelang
$(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2)
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(subst $(WORKDIR)/CustomTarget,,$(dir $(3))))localize.sdf
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $$(SDF)
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(gb_ExtensionTarget_HELPEXTARGET)
$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(3)
$$(call gb_Output_announce,$(2),$(true),XHP,3)
mkdir -p $$(dir $$@) && \
$(gb_ExtensionTarget_HELPEXCOMMAND) -i $$< -o $$@ -l $(4) -m $$(SDF)
# localize one .xhp help file for one language; the result is stored as
# help/$(4)/$(3) in the extension's workdir; as a special case, if $(4) is
# "en-US", the source file is just copied, not passed through helpex
# $(1): extension identifier
# $(2): absolute path prefix of en-US source file without $(3) (resp. $(4))
# suffix
# $(3): relative path of (target) .xhp file (see
# gb_ExtensionTarget_add_helpfile)
# $(4): optional relative path of source .xhp file (see
# gb_ExtensionTarget_add_helpfile)
# $(5): language
define gb_ExtensionTarget__localize_helpfile_onelang
$(call gb_ExtensionTarget_get_rootdir,$(1))/help/$(5).done : HELPFILES += $(3)
$(call gb_ExtensionTarget_get_rootdir,$(1))/help/$(5).done : \
$(call gb_ExtensionTarget_get_workdir,$(1))/help/$(5)/$(3)
$(call gb_ExtensionTarget_get_workdir,$(1))/help/$(5)/$(3) : \
SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(subst $(WORKDIR)/CustomTarget,,$(2)/$(dir $(or $(4),$(3)))))localize.sdf
$(call gb_ExtensionTarget_get_workdir,$(1))/help/$(5)/$(3) : $$(SDF)
$(call gb_ExtensionTarget_get_workdir,$(1))/help/$(5)/$(3) : \
$(if $(filter-out en-US,$(5)),$(gb_ExtensionTarget_HELPEXTARGET)) | \
$(call gb_ExtensionTarget_get_workdir,$(1))/help/.dir
$(call gb_ExtensionTarget_get_workdir,$(1))/help/$(5)/$(3) : \
$(2)/$(or $(4),$(3))
$$(call gb_Output_announce,$(1) $(3) $(5),$(true),XHP,3)
$$(call gb_Helper_abbreviate_dirs, \
mkdir -p $$(dir $$@) && \
$(if $(filter-out en-US,$(5)), \
$(gb_ExtensionTarget_HELPEXCOMMAND) -i $$< -o $$@ -l $(5) \
-m $$(SDF), \
cp $$< $$@))
endef
# compile help for one language; the result is stored as help/$(3)/ in the
# extension's rootdir and marked for zipping into the .oxt
# $(1): extension identifier
# $(2): language
# Target-specific HELPFILES: list of relative paths of .xhp files (see
# gb_ExtensionTarget_add_helpfile)
define gb_ExtensionTarget__compile_help_onelang
$(call gb_ExtensionTarget_get_rootdir,$(1))/help/$(2).done : \
$(call gb_Executable_get_target_for_build,HelpIndexer) \
$(call gb_Executable_get_target_for_build,HelpLinker) \
$(OUTDIR_FOR_BUILD)/bin/embed.xsl \
$(OUTDIR_FOR_BUILD)/bin/idxcaption.xsl \
$(OUTDIR_FOR_BUILD)/bin/idxcontent.xsl | \
$(call gb_ExtensionTarget_get_rootdir,$(1))/help/.dir
$$(call gb_Output_announce,$(1) $(2),$(true),XHC,3)
$$(call gb_Helper_abbreviate_dirs, \
rm -rf $$(basename $$@) && \
mkdir $$(basename $$@) && \
$(call gb_Executable_get_target_for_build,HelpLinker) -mod help \
-extlangsrc $(call gb_ExtensionTarget_get_workdir,$(1))/help/$(2) \
-sty $(OUTDIR_FOR_BUILD)/bin/embed.xsl \
-extlangdest $$(basename $$@) \
-idxcaption $(OUTDIR_FOR_BUILD)/bin/idxcaption.xsl \
-idxcontent $(OUTDIR_FOR_BUILD)/bin/idxcontent.xsl \
$$(HELPFILES) && \
(cd $(call gb_ExtensionTarget_get_workdir,$(1))/help/$(2) && \
$(gb_ExtensionTarget_ZIPCOMMAND) -r $$(basename $$@)/help.jar \
$$(HELPFILES)) && \
$(call gb_Executable_get_target_for_build,HelpIndexer) -lang $(2) \
-mod help -dir $$(basename $$@) && \
touch $$@)
endef
# establish the dependency that actually causes inclusion of the compiled help
# into the .oxt, for one language; in principle, this would only need to be done
# once per language iff the extension uses any help -- currently it is done from
# each individual gb_ExtensionTarget_add_helpfile call (and thus requires $strip
# to remove duplicates from FILES)
# $(1): extension identifier
# $(2): language
define gb_ExtensionTarget__add_compiled_help_dependency_onelang
$(call gb_ExtensionTarget_get_target,$(1)) : FILES += help/$(2)
$(call gb_ExtensionTarget_get_target,$(1)) : \
$(call gb_ExtensionTarget_get_rootdir,$(1))/help/$(2).done
endef
define gb_ExtensionTarget_use_package
$(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_Package_get_target,$(2))
......
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# Version: MPL 1.1 / GPLv3+ / LGPLv3+
#
......@@ -59,15 +60,12 @@ $(eval $(call gb_Extension_add_file,wiki-publisher,filter/math/scripts.xsl,$(OUT
$(eval $(call gb_Extension_add_file,wiki-publisher,filter/math/tables.xsl,$(OUTDIR)/bin/xslt/export/xsltml/tables.xsl))
$(eval $(call gb_Extension_add_file,wiki-publisher,filter/math/tokens.xsl,$(OUTDIR)/bin/xslt/export/xsltml/tokens.xsl))
$(eval $(call gb_Extension_add_file,wiki-publisher,filter/odt2mediawiki.xsl,$(SRCDIR)/swext/mediawiki/src/filter/odt2mediawiki.xsl))
$(eval $(call gb_Extension_add_file,wiki-publisher,help/en-US/com.sun.wiki-publisher/wikisend.xhp,$(SRCDIR)/swext/mediawiki/help/wikisend.xhp))
$(eval $(call gb_Extension_add_file,wiki-publisher,help/en-US/com.sun.wiki-publisher/wikiformats.xhp,$(SRCDIR)/swext/mediawiki/help/wikiformats.xhp))
$(eval $(call gb_Extension_add_file,wiki-publisher,help/en-US/com.sun.wiki-publisher/wikiaccount.xhp,$(SRCDIR)/swext/mediawiki/help/wikiaccount.xhp))
$(eval $(call gb_Extension_add_file,wiki-publisher,help/en-US/com.sun.wiki-publisher/wiki.xhp,$(SRCDIR)/swext/mediawiki/help/wiki.xhp))
$(eval $(call gb_Extension_add_file,wiki-publisher,help/en-US/com.sun.wiki-publisher/wikisettings.xhp,$(SRCDIR)/swext/mediawiki/help/wikisettings.xhp))
$(eval $(call gb_Extension_add_file,wiki-publisher,license/THIRDPARTYLICENSEREADME.html,$(SRCDIR)/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html))
$(eval $(call gb_Extension_add_file,wiki-publisher,templates/MediaWiki/mediawiki.ott,$(SRCDIR)/swext/mediawiki/src/filter/mediawiki.ott))
$(eval $(call gb_Extension_localize_help,wiki-publisher,help/lang/com.sun.wiki-publisher/wikisend.xhp,$(SRCDIR)/swext/mediawiki/help/wikisend.xhp))
$(eval $(call gb_Extension_localize_help,wiki-publisher,help/lang/com.sun.wiki-publisher/wikiformats.xhp,$(SRCDIR)/swext/mediawiki/help/wikiformats.xhp))
$(eval $(call gb_Extension_localize_help,wiki-publisher,help/lang/com.sun.wiki-publisher/wikiaccount.xhp,$(SRCDIR)/swext/mediawiki/help/wikiaccount.xhp))
$(eval $(call gb_Extension_localize_help,wiki-publisher,help/lang/com.sun.wiki-publisher/wiki.xhp,$(SRCDIR)/swext/mediawiki/help/wiki.xhp))
$(eval $(call gb_Extension_localize_help,wiki-publisher,help/lang/com.sun.wiki-publisher/wikisettings.xhp,$(SRCDIR)/swext/mediawiki/help/wikisettings.xhp))
$(eval $(call gb_Extension_add_helpfile,wiki-publisher,$(SRCDIR)/swext/mediawiki/help,com.sun.wiki-publisher/wikisend.xhp,wikisend.xhp))
$(eval $(call gb_Extension_add_helpfile,wiki-publisher,$(SRCDIR)/swext/mediawiki/help,com.sun.wiki-publisher/wikiformats.xhp,wikiformats.xhp))
$(eval $(call gb_Extension_add_helpfile,wiki-publisher,$(SRCDIR)/swext/mediawiki/help,com.sun.wiki-publisher/wikiaccount.xhp,wikiaccount.xhp))
$(eval $(call gb_Extension_add_helpfile,wiki-publisher,$(SRCDIR)/swext/mediawiki/help,com.sun.wiki-publisher/wiki.xhp,wiki.xhp))
$(eval $(call gb_Extension_add_helpfile,wiki-publisher,$(SRCDIR)/swext/mediawiki/help,com.sun.wiki-publisher/wikisettings.xhp,wikisettings.xhp))
# vim: set noet sw=4 ts=4:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment