summaryrefslogtreecommitdiff
path: root/solenv/gbuild/ExtensionTarget.mk
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/gbuild/ExtensionTarget.mk')
-rw-r--r--solenv/gbuild/ExtensionTarget.mk132
1 files changed, 112 insertions, 20 deletions
diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
index 105e58e0bfd3..94e4832dfabf 100644
--- a/solenv/gbuild/ExtensionTarget.mk
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -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))