diff options
Diffstat (limited to '')
-rw-r--r-- | solenv/gbuild/Dictionary.mk | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/solenv/gbuild/Dictionary.mk b/solenv/gbuild/Dictionary.mk new file mode 100644 index 000000000..b86f1b493 --- /dev/null +++ b/solenv/gbuild/Dictionary.mk @@ -0,0 +1,401 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +# ThesaurusIndexTarget class + +gb_ThesaurusIndexTarget_CHECK_TARGET := $(SRCDIR)/dictionaries/util/th_check.pl +gb_ThesaurusIndexTarget_CHECK_COMMAND := PERL_UNICODE=0 $(PERL) -w $(gb_ThesaurusIndexTarget_CHECK_TARGET) +gb_ThesaurusIndexTarget_INDEX_DEPS := $(call gb_Executable_get_runtime_dependencies,idxdict) +gb_ThesaurusIndexTarget_INDEX_COMMAND := $(call gb_Executable_get_command,idxdict) + +define gb_ThesaurusIndexTarget__command +$(call gb_Helper_abbreviate_dirs,\ + $(gb_ThesaurusIndexTarget_INDEX_COMMAND) -o $(1) < $(THESAURUS_FILE) \ +) +endef + #$(gb_ThesaurusIndexTarget_CHECK_COMMAND) $(THESAURUS_FILE) && \ + +$(dir $(call gb_ThesaurusIndexTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_ThesaurusIndexTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_ThesaurusIndexTarget_get_target,%) : $(gb_ThesaurusIndexTarget_INDEX_DEPS) | $(gb_ThesaurusIndexTarget_CHECK_TARGET) + $(call gb_Output_announce,$*,$(true),THI,1) + $(call gb_Trace_StartRange,$*,THI) + $(call gb_ThesaurusIndexTarget__command,$@,$*) + $(call gb_Trace_EndRange,$*,THI) + +.PHONY : $(call gb_ThesaurusIndexTarget_get_clean_target,%) +$(call gb_ThesaurusIndexTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),THI,1) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_ThesaurusIndexTarget_get_target,$*) \ + ) + +# Creates an index for a given thesaurus +# +# The thesaurus' file path is relative to $(SRCDIR). +# +# gb_ThesaurusIndexTarget_ThesaurusIndexTarget thesaurus +define gb_ThesaurusIndexTarget_ThesaurusIndexTarget +$(call gb_ThesaurusIndexTarget_get_target,$(1)) : THESAURUS_FILE := $(SRCDIR)/$(1) +$(call gb_ThesaurusIndexTarget_get_target,$(1)) : $(SRCDIR)/$(1) +$(call gb_ThesaurusIndexTarget_get_target,$(1)) :| $(dir $(call gb_ThesaurusIndexTarget_get_target,$(1))).dir + +endef + +# PropertiesTranslateTarget class + +# Handles translation of .properties files in dictionaries. + +gb_PropertiesTranslateTarget_COMMAND := $(call gb_Executable_get_command,propex) +gb_PropertiesTranslateTarget_DEPS := $(call gb_Executable_get_runtime_dependencies,propex) + +define gb_PropertiesTranslateTarget__command +$(call gb_Helper_abbreviate_dirs, \ + $(if $(filter-out qtz,$(LANGUAGE)), \ + MERGEINPUT=$(call gb_var2file,$(shell $(gb_MKTEMP)),100,$(POFILE)) && \ + $(gb_PropertiesTranslateTarget_COMMAND) \ + -i $(PROPERTIES_FILE) \ + -l $(LANGUAGE) \ + -m $${MERGEINPUT} \ + -o $(1) && \ + rm -f $${MERGEINPUT} \ + , \ + $(gb_PropertiesTranslateTarget_COMMAND) \ + -i $(PROPERTIES_FILE) \ + -l $(LANGUAGE) \ + -m \ + -o $(1) \ + ) \ +) +endef + +$(dir $(call gb_PropertiesTranslateTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_PropertiesTranslateTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_PropertiesTranslateTarget_get_target,%) : $(gb_PropertiesTranslateTarget_DEPS) + $(call gb_Output_announce,$*,$(true),PRP,1) + $(call gb_Trace_StartRange,$*,PRP) + $(call gb_PropertiesTranslateTarget__command,$@,$*) + $(call gb_Trace_EndRange,$*,PRP) + +.PHONY : $(call gb_PropertiesTranslateTarget_get_clean_target,%) +$(call gb_PropertiesTranslateTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),PRP,1) + rm -f $(call gb_PropertiesTranslateTarget_get_target,$*) + +# gb_PropertiesTranslateTarget_PropertiesTranslateTarget target source lang +define gb_PropertiesTranslateTarget_PropertiesTranslateTarget +$(call gb_PropertiesTranslateTarget_get_target,$(1)) : LANGUAGE := $(3) +$(call gb_PropertiesTranslateTarget_get_target,$(1)) : POFILE := $(gb_POLOCATION)/$(3)/$(patsubst %/,%,$(dir $(2))).po +$(call gb_PropertiesTranslateTarget_get_target,$(1)) : PROPERTIES_FILE := $(SRCDIR)/$(2) + +$(call gb_PropertiesTranslateTarget_get_target,$(1)) : $(SRCDIR)/$(2) +$(call gb_PropertiesTranslateTarget_get_target,$(1)) :| $(dir $(call gb_PropertiesTranslateTarget_get_target,$(1))).dir + +$(if $(filter-out qtz,$(3)),\ + $(call gb_PropertiesTranslateTarget__PropertiesTranslateTarget_onelang,$(1),$(gb_POLOCATION)/$(3)/$(patsubst %/,%,$(dir $(2))).po) \ +) + +endef + +# gb_PropertiesTranslateTarget__PropertiesTranslateTarget_onelang target pofile +define gb_PropertiesTranslateTarget__PropertiesTranslateTarget_onelang +$(call gb_PropertiesTranslateTarget_get_target,$(1)) : $(2) +$(2) : + +endef + +# DescriptionTranslateTarget class + +# Handles translation of description.xml files in dictionaries. + +gb_DescriptionTranslateTarget_COMMAND := $(call gb_Executable_get_command,xrmex) +gb_DescriptionTranslateTarget_DEPS := $(call gb_Executable_get_runtime_dependencies,xrmex) + +define gb_DescriptionTranslateTarget__command +$(call gb_Helper_abbreviate_dirs,\ + MERGEINPUT=$(call gb_var2file,$(shell $(gb_MKTEMP)),100,$(POFILES)) && \ + $(gb_DescriptionTranslateTarget_COMMAND) \ + -i $(DESCRIPTION_XML) \ + -l all \ + -m $${MERGEINPUT} \ + -o $(1) && \ + rm -f $${MERGEINPUT} \ +) +endef + +$(dir $(call gb_DescriptionTranslateTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_DescriptionTranslateTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_DescriptionTranslateTarget_get_target,%) : $(gb_DescriptionTranslateTarget_DEPS) + $(call gb_Output_announce,$*,$(true),XRM,1) + $(call gb_Trace_StartRange,$*,XRM) + $(call gb_DescriptionTranslateTarget__command,$@,$*) + $(call gb_Trace_EndRange,$*,XRM) + +.PHONY : $(call gb_DescriptionTranslateTarget_get_clean_target,%) +$(call gb_DescriptionTranslateTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),XRM,1) + rm -f $(call gb_DescriptionTranslateTarget_get_target,$*) + +# gb_DescriptionTranslateTarget_DescriptionTranslateTarget target source langs +define gb_DescriptionTranslateTarget_DescriptionTranslateTarget +$(call gb_DescriptionTranslateTarget_get_target,$(1)) : DESCRIPTION_XML := $(SRCDIR)/$(2) +$(call gb_DescriptionTranslateTarget_get_target,$(1)) : POFILES := + +$(call gb_DescriptionTranslateTarget_get_target,$(1)) : $(SRCDIR)/$(2) +$(call gb_DescriptionTranslateTarget_get_target,$(1)) :| $(dir $(call gb_DescriptionTranslateTarget_get_target,$(1))).dir + +$(foreach lang,$(3),\ + $(call gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang,$(1),$(patsubst %/,%,$(dir $(2))),$(lang)) \ +) + +endef + +# gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang target pobase lang +define gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang +$(call gb_DescriptionTranslateTarget_get_target,$(1)) : POFILES += $(if $(filter-out qtz,$(3)),$(gb_POLOCATION)/$(3)/$(2).po) +$(if $(filter-out qtz,$(3)),\ + $(call gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang_podeps,$(1),$(gb_POLOCATION)/$(3)/$(2).po)) + +endef + +# gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang_podeps target pofile +define gb_DescriptionTranslateTarget__DescriptionTranslateTarget_onelang_podeps +$(call gb_DescriptionTranslateTarget_get_target,$(1)) : $(2) +$(2) : + +endef + +# Dictionary class + +# Handles creation and delivery of dictionary extensions. +# +# This class provides a filelist called Dictionary/<name> that contains +# all installed files of the dictionary. + +gb_Dictionary_ALL_LANGS := $(filter-out en-US,$(gb_WITH_LANG)) +gb_Dictionary_INSTDIR := $(LIBO_SHARE_FOLDER)/extensions + +$(dir $(call gb_Dictionary_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_Dictionary_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_Dictionary_get_target,%) : + $(call gb_Output_announce,$*,$(true),DIC,3) + $(call gb_Trace_MakeMark,$*,DIC) + touch $@ + +.PHONY : $(call gb_Dictionary_get_clean_target,%) +$(call gb_Dictionary_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),DIC,3) + rm -f $(call gb_Dictionary_get_target,$*) + +gb_Dictionary_get_packagename = Dictionary/$(1) +gb_Dictionary_get_packagesetname = Dictionary/$(1) + +# Creates a dictionary extension +# +# gb_Dictionary_Dictionary dictionary srcdir +define gb_Dictionary_Dictionary +$(call gb_Package_Package_internal,$(call gb_Dictionary_get_packagename,$(1)),$(SRCDIR)) +$(call gb_Package_Package_internal,$(call gb_Dictionary_get_packagename,$(1)_generated),$(WORKDIR)) +$(call gb_PackageSet_PackageSet_internal,$(call gb_Dictionary_get_packagesetname,$(1))) + +$(call gb_PackageSet_add_package,$(call gb_Dictionary_get_packagesetname,$(1)),$(call gb_Dictionary_get_packagename,$(1))) + +ifeq (,$(gb_Dictionary_ALL_LANGS)) +$(call gb_Dictionary_add_root_file,$(1),$(2)/description.xml) +else +$(call gb_Dictionary__add_description_translations,$(1),$(2)/description.xml) +endif +$(call gb_Dictionary_add_root_file,$(1),$(2)/dictionaries.xcu) +$(call gb_Dictionary_add_file,$(1),META-INF/manifest.xml,$(2)/META-INF/manifest.xml) + +$(call gb_Dictionary_get_target,$(1)) : $(call gb_PackageSet_get_target,$(call gb_Dictionary_get_packagesetname,$(1))) +$(call gb_Dictionary_get_target,$(1)) :| $(dir $(call gb_Dictionary_get_target,$(1))).dir +$(call gb_Dictionary_get_clean_target,$(1)) : $(call gb_PackageSet_get_clean_target,$(call gb_Dictionary_get_packagesetname,$(1))) + +$$(eval $$(call gb_Module_register_target,$(call gb_Dictionary_get_target,$(1)),$(call gb_Dictionary_get_clean_target,$(1)))) +$(call gb_Helper_make_userfriendly_targets,$(1),Dictionary) + +endef + +# gb_Dictionary__add_description_translation_impl dictionary desctarget descxml +define gb_Dictionary__add_description_translation_impl +$(call gb_DescriptionTranslateTarget_DescriptionTranslateTarget,$(2),$(3),$(gb_Dictionary_ALL_LANGS)) +$(call gb_Dictionary_add_generated_file,$(1),description.xml,$(call gb_DescriptionTranslateTarget_get_target,$(2))) + +$(call gb_Dictionary_get_target,$(1)) : $(call gb_DescriptionTranslateTarget_get_target,$(2)) +$(call gb_Dictionary_get_clean_target,$(1)) : $(call gb_DescriptionTranslateTarget_get_clean_target,$(2)) + +endef + +# gb_Dictionary__add_description_translations dictionary descxml +define gb_Dictionary__add_description_translations +$(call gb_Dictionary__add_description_translation_impl,$(1),$(basename $(2)),$(2)) + +endef + +# gb_Dictionary__add_file dictionary package-base destfile sourcefile +define gb_Dictionary__add_file +$(call gb_Package_add_file,$(call gb_Dictionary_get_packagename,$(2)),$(gb_Dictionary_INSTDIR)/$(1)/$(3),$(4)) + +endef + +# Adds a file from $(SRCDIR) to the dictionary under chosen name +# +# gb_Dictionary_add_file dictionary destfile sourcefile +define gb_Dictionary_add_file +$(call gb_Dictionary__add_file,$(1),$(1),$(2),$(3)) + +endef + +# Adds several files from $(SRCDIR) to the dictionary at once +# +# The files are put into the chosen directory. +# +# gb_Dictionary_add_files dictionary destdir file(s) +define gb_Dictionary_add_files +$(foreach file,$(3),$(call gb_Dictionary_add_file,$(1),$(2)/$(notdir $(file)),$(file))) + +endef + +# Adds an arbitrary file to the dictionary under chosen name +# +# gb_Dictionary_add_file dictionary destfile sourcefile +define gb_Dictionary_add_generated_file +$(call gb_Dictionary__add_file,$(1),$(1)_generated,$(2),$(subst $(WORKDIR)/,,$(3))) +$(call gb_PackageSet_add_package,$(call gb_Dictionary_get_packagesetname,$(1)),$(call gb_Dictionary_get_packagename,$(1)_generated)) + +endef + +# Adds several arbitrary files to the dictionary at once +# +# The files are put into the chosen directory. +# +# gb_Dictionary_add_files dictionary destdir file(s) +define gb_Dictionary_add_generated_files +$(foreach file,$(3),$(call gb_Dictionary_add_generated_file,$(1),$(2)/$(notdir $(file)),$(file))) + +endef + +# Adds a localized xcu file, which needs special handling because it may be +# in $(WORKDIR) or $(SRCDIR) depending on whether translations are built. +# +# gb_Dictionary_add_localized_xcu_file dictionary destdir file +define gb_Dictionary_add_localized_xcu_file +ifeq ($(gb_WITH_LANG),) +$(call gb_Dictionary__add_file,$(1),$(1),$(2)/$(notdir $(3)),$(strip $(3))) +else +$(call gb_Dictionary__add_file,$(1),$(1)_generated,$(2)/$(notdir $(3)),$(subst $(WORKDIR)/,,$(call gb_XcuFile_for_extension,$(strip $(3))))) +$(call gb_PackageSet_add_package,$(call gb_Dictionary_get_packagesetname,$(1)),$(call gb_Dictionary_get_packagename,$(1)_generated)) +endif + +endef + +# Adds a file to the root dir of the dictionary +# +# gb_Dictionary_add_root_file dictionary file +define gb_Dictionary_add_root_file +$(call gb_Dictionary_add_file,$(1),$(notdir $(2)),$(2)) + +endef + +# Adds several files to the root dir of the dictionary +# +# gb_Dictionary_add_root_files dictionary file(s) +define gb_Dictionary_add_root_files +$(foreach file,$(2),$(call gb_Dictionary_add_root_file,$(1),$(file))) + +endef + +define gb_Dictionary__add_thesaurus +$(call gb_Dictionary__add_file,$(1),$(1)_generated,$(notdir $(3)),$(subst $(WORKDIR)/,,$(3))) +$(call gb_PackageSet_add_package,$(call gb_Dictionary_get_packagesetname,$(1)),$(call gb_Dictionary_get_packagename,$(1)_generated)) + +endef + +# Adds a thesaurus to the dictionary +# +# An index for the thesaurus is generated and added to the dictionary as +# well. +# +# gb_Dictionary_add_thesaurus dictionary thesaurus +define gb_Dictionary_add_thesaurus +$(call gb_ThesaurusIndexTarget_ThesaurusIndexTarget,$(2)) +$(call gb_Dictionary_add_root_file,$(1),$(2)) +$(call gb_Dictionary__add_thesaurus,$(1),$(2),$(call gb_ThesaurusIndexTarget_get_target,$(2))) + +endef + +# Adds several thesauri to the dictionary at once +# +# Indexes for the thesauri are generated and added to the dictionary as +# well. +# +# gb_Dictionary_add_thesauri dictionary thesauri +define gb_Dictionary_add_thesauri +$(foreach thesaurus,$(2),$(call gb_Dictionary_add_thesaurus,$(1),$(thesaurus))) + +endef + +# gb_Dictionary__translate_propertyfile_impl dictionary destfile propertyfile propertyname lang +define gb_Dictionary__translate_propertyfile_impl +$(call gb_PropertiesTranslateTarget_PropertiesTranslateTarget,$(4),$(3),$(5)) +$(call gb_Dictionary_add_generated_file,$(1),$(2),$(call gb_PropertiesTranslateTarget_get_target,$(4))) + +endef + +# gb_Dictionary__translate_propertyfile dictionary destdir propertyfile propertyname lang +define gb_Dictionary__translate_propertyfile +$(call gb_Dictionary__translate_propertyfile_impl,$(1),$(2)$(notdir $(4)).properties,$(3),$(4),$(5)) + +endef + +# gb_Dictionary__add_propertyfile_translations dictionary destfile propertyfile +define gb_Dictionary__add_propertyfile_translations +$(foreach lang,$(gb_Dictionary_ALL_LANGS),$(call gb_Dictionary__translate_propertyfile,$(1),$(dir $(2)),$(3),$(subst en_US,$(subst -,_,$(lang)),$(basename $(3))),$(lang))) + +endef + +# Adds a .property file to the dictionary under chosen name +# +# The file is localized automatically. +# +# gb_Dictionary_add_propertyfile dictionary destfile propertyfile +define gb_Dictionary_add_propertyfile +$(call gb_Dictionary__add_file,$(1),$(1),$(2),$(3)) +$(call gb_Dictionary__add_propertyfile_translations,$(1),$(2),$(3)) + +endef + +# Adds several .property files to the dictionary at once +# +# The files are put into chosen directory. They are localized automatically. +# +# gb_Dictionary_add_propertyfiles dictionary destdir propertyfile(s) +define gb_Dictionary_add_propertyfiles +$(foreach propertyfile,$(3),$(call gb_Dictionary_add_propertyfile,$(1),$(2)/$(notdir $(propertyfile)),$(propertyfile))) + +endef + +# vim: set noet sw=4 ts=4: |