[Libreoffice-commits] .: 7 commits - Makefile.top Module_tail_build.mk postprocess/prj solenv/gbuild

David Tardon dtardon at kemper.freedesktop.org
Wed Aug 8 22:45:21 PDT 2012


 Makefile.top                            |    2 
 Module_tail_build.mk                    |    3 
 postprocess/prj/build.lst               |    2 
 solenv/gbuild/Dictionary.mk             |  178 +++++++++++++++++++++++
 solenv/gbuild/Extension.mk              |  182 +++--------------------
 solenv/gbuild/ExtensionTarget.mk        |  244 ++++++++++++++++++++++++++++++++
 solenv/gbuild/TargetLocations.mk        |   15 +
 solenv/gbuild/gbuild.mk                 |    2 
 solenv/gbuild/platform/IOS_ARM_GCC.mk   |    4 
 solenv/gbuild/platform/WNT_INTEL_GCC.mk |    4 
 solenv/gbuild/platform/WNT_INTEL_MSC.mk |    4 
 solenv/gbuild/platform/macosx.mk        |    4 
 solenv/gbuild/platform/solaris.mk       |    4 
 solenv/gbuild/platform/unxgcc.mk        |    4 
 14 files changed, 493 insertions(+), 159 deletions(-)

New commits:
commit 3d2c49ce800a64eab63c204874c260a75adb6c9c
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Aug 7 20:15:02 2012 +0200

    add dictionaries to tail_build
    
    Change-Id: If898ad805a1530d201650429b988c2866fb62512

diff --git a/Module_tail_build.mk b/Module_tail_build.mk
index 0ac0f53..38b795d 100644
--- a/Module_tail_build.mk
+++ b/Module_tail_build.mk
@@ -46,6 +46,9 @@ $(eval $(call gb_Module_add_moduledirs,tail_end,\
     cui \
     dbaccess \
     desktop \
+	$(if $(filter DICTIONARIES,$(BUILD_TYPE)),\
+		dictionaries \
+	) \
     dtrans \
     drawinglayer \
     editeng \
diff --git a/postprocess/prj/build.lst b/postprocess/prj/build.lst
index 72332e1..819a19c 100644
--- a/postprocess/prj/build.lst
+++ b/postprocess/prj/build.lst
@@ -1,4 +1,4 @@
-po      postprocess     ::      BINFILTER:binfilter CRASHREP:crashrep CT2N:ct2n EPM:epm extras HELP:helpcontent2 LIBRSVG:librsvg ODK:odk MORE_FONTS:more_fonts DICTIONARIES:dictionaries LANGUAGETOOL:languagetool MYSQLC:mysqlc DESKTOP:setup_native STLPORT:stlport sysui tail_build NULL
+po      postprocess     ::      BINFILTER:binfilter CRASHREP:crashrep CT2N:ct2n EPM:epm extras HELP:helpcontent2 LIBRSVG:librsvg ODK:odk MORE_FONTS:more_fonts LANGUAGETOOL:languagetool MYSQLC:mysqlc DESKTOP:setup_native STLPORT:stlport sysui tail_build NULL
 po	postprocess			    	usr1	-	all	po_mkout NULL
 po	postprocess\checkxml		nmake	-	all	po_checkxml NULL
 po	postprocess\packconfig		nmake	-	all	po_packconfig po_checkxml NULL
commit 6fa970fb62ce5825640be1b5ce0e0c066e0e5fbd
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Aug 7 20:12:38 2012 +0200

    gbuildize dictionaries
    
    Change-Id: I8aec0d6b6e7ccc6c674ee98d6a9eb28785ee42b2

diff --git a/Makefile.top b/Makefile.top
index 4361777..2622e3e 100644
--- a/Makefile.top
+++ b/Makefile.top
@@ -53,6 +53,7 @@ cpputools\
 cui\
 dbaccess\
 desktop\
+dictionaries \
 drawinglayer\
 dtrans\
 editeng\
@@ -177,7 +178,6 @@ cppunit\
 crashrep\
 ct2n\
 curl\
-dictionaries \
 epm\
 expat\
 external\
commit 75df7739309ccc5342084e668d9d869620cb3233
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Aug 7 20:07:47 2012 +0200

    add support for dictionaries to gbuild
    
    Change-Id: I7d3c066a72c68bdc0b55150714041908bb613f14

diff --git a/solenv/gbuild/Dictionary.mk b/solenv/gbuild/Dictionary.mk
new file mode 100644
index 0000000..c40e376
--- /dev/null
+++ b/solenv/gbuild/Dictionary.mk
@@ -0,0 +1,178 @@
+# -*- 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_TARGET := $(call gb_Executable_get_target_for_build,idxdict)
+gb_ThesaurusIndexTarget_INDEX_COMMAND := $(gb_Helper_set_ld_path) $(gb_ThesaurusIndexTarget_INDEX_TARGET)
+
+define gb_ThesaurusIndexTarget__command
+$(call gb_Output_announce,$(2),$(true),THI,1)
+$(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_TARGET) | $(gb_ThesaurusIndexTarget_CHECK_TARGET)
+	$(call gb_ThesaurusIndexTarget__command,$@,$*)
+
+.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
+
+# Dictionary class
+
+# Handles creation and delivery of dictionary extensions.
+
+gb_Dictionary_CONFIGURATION_FILE := dictionaries.xcu
+
+gb_Dictionary_extensionname = Dictionary/$(1)
+
+# Creates a dictionary extension
+#
+# gb_Dictionary_Dictionary dictionary srcdir
+define gb_Dictionary_Dictionary
+$(call gb_ExtensionTarget_ExtensionTarget,$(call gb_Dictionary_extensionname,$(1)),$(2))
+$(call gb_Dictionary_add_root_file,$(1),$(2)/$(gb_Dictionary_CONFIGURATION_FILE))
+
+$(call gb_Dictionary_get_target,$(1)) : $(call gb_ExtensionTarget_get_target,$(call gb_Dictionary_extensionname,$(1)))
+$(call gb_Dictionary_get_clean_target,$(1)) : $(call gb_ExtensionTarget_get_clean_target,$(call gb_Dictionary_extensionname,$(1)))
+
+$(call gb_Deliver_add_deliverable,$(call gb_Dictionary_get_target,$(1)),$(call gb_ExtensionTarget_get_target,$(call gb_Dictionary_extensionname,$(1))),$(1))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_Dictionary_get_target,$(1)),$(call gb_Dictionary_get_clean_target,$(1))))
+
+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_ExtensionTarget_add_file,$(call gb_Dictionary_extensionname,$(1)),$(2),$(SRCDIR)/$(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
+$(call gb_ExtensionTarget_add_files,$(call gb_Dictionary_extensionname,$(1)),$(2),$(addprefix $(SRCDIR)/,$(3)))
+
+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_ExtensionTarget_add_file,$(call gb_Dictionary_extensionname,$(1)),$(2),$(3))
+
+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
+$(call gb_ExtensionTarget_add_files,$(call gb_Dictionary_extensionname,$(1)),$(2),$(3))
+
+endef
+
+define gb_Dictionary__add_root_file
+$(call gb_ExtensionTarget_add_file,$(call gb_Dictionary_extensionname,$(1)),$(notdir $(2)),$(2))
+
+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_root_file,$(1),$(SRCDIR)/$(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
+
+# 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_root_file,$(1),$(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
+
+# 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_ExtensionTarget_localize_properties,$(call gb_Dictionary_extensionname,$(1)),$(2),$(SRCDIR)/$(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:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 7822e2c..24704d3 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -29,6 +29,7 @@
 # outdir target pattern
 
 gb_ComponentTarget_get_outdir_target = $(OUTDIR)/xml/component/$(1).component
+gb_Dictionary_get_target = $(OUTDIR)/pck/$(1).oxt
 gb_Executable_get_target = $(OUTDIR)/bin/$(1)$(gb_Executable_EXT)
 gb_Executable_get_target_for_build = $(OUTDIR_FOR_BUILD)/bin/$(1)$(gb_Executable_EXT_for_build)
 gb_Extension_get_target = $(OUTDIR)/bin/$(1).oxt
@@ -143,6 +144,7 @@ gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs
 gb_SrsTemplatePartTarget_get_target = $(WORKDIR)/SrsTemplatePartTarget/$(firstword $(subst /, ,$(1)))/$(subst _tmpl,,$(notdir $(1)))
 gb_SrsTemplateTarget_get_include_dir = $(WORKDIR)/SrsTemplatePartTarget/$(firstword $(subst /, ,$(1)))
 gb_SrsTemplateTarget_get_target = $(WORKDIR)/SrsTemplateTarget/$(1)
+gb_ThesaurusIndexTarget_get_target = $(WORKDIR)/ThesaurusIndexTarget/$(basename $(1)).idx
 gb_UnoApiTarget_get_target = $(WORKDIR)/UnoApiTarget/$(1).rdb
 gb_UnoApiHeadersTarget_get_bootstrap_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap$(2)
 gb_UnoApiHeadersTarget_get_comprehensive_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive$(2)
@@ -215,6 +217,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
 	SdiTarget \
 	SrsTarget \
 	SrsTemplateTarget \
+	ThesaurusIndexTarget \
 	CppunitTest \
 	CustomTarget \
 	ExternalLib \
@@ -234,6 +237,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
 ))
 
 $(eval $(call gb_Helper_make_outdir_clean_targets,\
+	Dictionary \
 	Executable \
 	Extension \
 	InstallScript \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index a77f57e..f782409 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -321,6 +321,7 @@ include $(foreach class, \
 	Zip \
 	Configuration \
 	ExtensionTarget \
+	Dictionary \
 	Extension \
 	InstallModuleTarget \
 	InstallModule \
commit 9b93a2d9db4c245dc96387c0d341652142bd5d44
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Aug 5 15:41:59 2012 +0200

    change handling of description-LANG.txt
    
    Change-Id: Iecd7760af418f6e9ff7c9502e27011ee03962705

diff --git a/solenv/gbuild/Extension.mk b/solenv/gbuild/Extension.mk
index 18ff482..e501e18 100644
--- a/solenv/gbuild/Extension.mk
+++ b/solenv/gbuild/Extension.mk
@@ -30,6 +30,7 @@
 define gb_Extension_Extension
 $(call gb_ExtensionTarget_ExtensionTarget,$(1),$(2))
 $(call gb_ExtensionTarget_use_default_license,$(1))
+$(call gb_ExtensionTarget_use_default_description,$(1),$(2))
 
 $(call gb_Extension_get_target,$(1)) : $(call gb_ExtensionTarget_get_target,$(1))
 $(call gb_Extension_get_clean_target,$(1)) : $(call gb_ExtensionTarget_get_clean_target,$(1))
diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
index 428c2d4..2a434ef 100644
--- a/solenv/gbuild/ExtensionTarget.mk
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -93,7 +93,7 @@ $(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 $(gb_WITH_LANG),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_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,$*) \
@@ -104,6 +104,7 @@ $(call gb_ExtensionTarget_get_target,%) : \
 # add deliverable
 # add dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
 define gb_ExtensionTarget_ExtensionTarget
+$(call gb_ExtensionTarget_get_target,$(1)) : DESCRIPTION :=
 $(call gb_ExtensionTarget_get_target,$(1)) : FILES := META-INF description.xml
 $(call gb_ExtensionTarget_get_target,$(1)) : LICENSE :=
 $(call gb_ExtensionTarget_get_target,$(1)) : LOCATION := $(SRCDIR)/$(2)
@@ -111,11 +112,9 @@ $(call gb_ExtensionTarget_get_target,$(1)) : PLATFORM :=
 $(call gb_ExtensionTarget_get_target,$(1)) : PRJNAME := $(firstword $(subst /, ,$(2)))
 $(call gb_ExtensionTarget_get_workdir,$(1))/description.xml : $(SRCDIR)/$(2)/description.xml
 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)) : SDF := $(gb_SDFLOCATION)/$(2)/localize.sdf
 $(call gb_ExtensionTarget_get_workdir,$(1))/description.xml : $$(SDF)
 endif
-$(call gb_ExtensionTarget_add_file,$(1),description-en-US.txt,$(SRCDIR)/$(2)/description-en-US.txt)
 
 endef
 
@@ -135,6 +134,16 @@ $(call gb_ExtensionTarget_get_target,$(1)) : $(gb_ExtensionTarget_LICENSEFILE_DE
 
 endef
 
+# Use the default description file
+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)
+endif
+
+endef
+
 # adding a file creates a dependency to it
 # file is copied to $(WORKDIR)
 # $(3) is the target of the copied file, and $(4) can be used to override that
commit 009d6c69eafea1d2bd21d15a3266aefd82e40d45
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Aug 5 07:37:48 2012 +0200

    move platform-specific settings to platform
    
    Change-Id: I99bf341df0a8cfe25f0821c8d21d3e27f3b12ea4

diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
index c4ee649..428c2d4 100644
--- a/solenv/gbuild/ExtensionTarget.mk
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -27,12 +27,10 @@
 
 # ExtensionTarget class
 
+# platform
+#  gb_ExtensionTarget_LICENSEFILE_DEFAULT
+
 gb_ExtensionTarget_ZIPCOMMAND := zip $(if $(findstring s,$(MAKEFLAGS)),-q)
-ifeq ($(GUI),WNT)
-gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt
-else
-gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
-endif
 gb_ExtensionTarget_XRMEXTARGET := $(call gb_Executable_get_target_for_build,xrmex)
 gb_ExtensionTarget_XRMEXCOMMAND := \
 	$(gb_Helper_set_ld_path) $(gb_ExtensionTarget_XRMEXTARGET)
diff --git a/solenv/gbuild/platform/IOS_ARM_GCC.mk b/solenv/gbuild/platform/IOS_ARM_GCC.mk
index b1f5d6d..27c9d64 100644
--- a/solenv/gbuild/platform/IOS_ARM_GCC.mk
+++ b/solenv/gbuild/platform/IOS_ARM_GCC.mk
@@ -322,6 +322,10 @@ gb_ScpConvertTarget_ScpConvertTarget_platform :=
 
 gb_InstallScript_EXT := .ins
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
+
 # Python
 gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR_FOR_BUILD)/lib
 
diff --git a/solenv/gbuild/platform/WNT_INTEL_GCC.mk b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
index 81d6226..180c35c 100644
--- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
@@ -460,6 +460,10 @@ endef
 
 gb_InstallScript_EXT := .inf
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt
+
 # Python
 gb_PYTHON_PRECOMMAND := PATH="$${PATH}:$(OUTDIR_FOR_BUILD)/bin" PYTHONHOME="$(OUTDIR_FOR_BUILD)/lib/python" PYTHONPATH="$(OUTDIR_FOR_BUILD)/lib/python;$(OUTDIR_FOR_BUILD)/lib/python/lib-dynload"
 
diff --git a/solenv/gbuild/platform/WNT_INTEL_MSC.mk b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
index a060cc8..0c0c98f 100644
--- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
@@ -731,6 +731,10 @@ endef
 
 gb_InstallScript_EXT := .inf
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt
+
 # Python
 gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME="$(OUTDIR_FOR_BUILD)/lib/python" PYTHONPATH="$(OUTDIR_FOR_BUILD)/lib/python;$(OUTDIR_FOR_BUILD)/lib/python/lib-dynload"
 
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 084c4c0..47c9771 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -431,6 +431,10 @@ gb_ScpConvertTarget_ScpConvertTarget_platform :=
 
 gb_InstallScript_EXT := .ins
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
+
 # Python
 gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
 
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
index 2532c19..bf582c2 100644
--- a/solenv/gbuild/platform/solaris.mk
+++ b/solenv/gbuild/platform/solaris.mk
@@ -430,6 +430,10 @@ gb_ScpConvertTarget_ScpConvertTarget_platform :=
 
 gb_InstallScript_EXT := .ins
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
+
 # Python
 gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME=$(OUTDIR)/lib/python PYTHONPATH=$(OUTDIR)/lib/python:$(OUTDIR)/lib/python/lib-dynload
 
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index ed73734..555aab1 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -432,6 +432,10 @@ gb_ScpConvertTarget_ScpConvertTarget_platform :=
 
 gb_InstallScript_EXT := .ins
 
+# ExtensionTarget class
+
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
+
 # Python
 gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME=$(OUTDIR)/lib/python PYTHONPATH=$(OUTDIR)/lib/python:$(OUTDIR)/lib/python/lib-dynload
 
commit 3abc7880e0e09b1a74922067707b37ef45462479
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Aug 5 07:32:05 2012 +0200

    change handling of license file
    
    This is a preparation for gbuildizing dictionaries, which does not
    contain registration/LICENSE like regular extensions.
    
    Change-Id: I9b186d101627872b522be0432f6daf21250eb497

diff --git a/solenv/gbuild/Extension.mk b/solenv/gbuild/Extension.mk
index 4f71256..18ff482 100644
--- a/solenv/gbuild/Extension.mk
+++ b/solenv/gbuild/Extension.mk
@@ -29,6 +29,7 @@
 
 define gb_Extension_Extension
 $(call gb_ExtensionTarget_ExtensionTarget,$(1),$(2))
+$(call gb_ExtensionTarget_use_default_license,$(1))
 
 $(call gb_Extension_get_target,$(1)) : $(call gb_ExtensionTarget_get_target,$(1))
 $(call gb_Extension_get_clean_target,$(1)) : $(call gb_ExtensionTarget_get_clean_target,$(1))
diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
index 599fbb9..c4ee649 100644
--- a/solenv/gbuild/ExtensionTarget.mk
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -29,9 +29,9 @@
 
 gb_ExtensionTarget_ZIPCOMMAND := zip $(if $(findstring s,$(MAKEFLAGS)),-q)
 ifeq ($(GUI),WNT)
-gb_ExtensionTarget_LICENSEFILE := license.txt
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt
 else
-gb_ExtensionTarget_LICENSEFILE := LICENSE
+gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE
 endif
 gb_ExtensionTarget_XRMEXTARGET := $(call gb_Executable_get_target_for_build,xrmex)
 gb_ExtensionTarget_XRMEXCOMMAND := \
@@ -91,25 +91,23 @@ $(call gb_ExtensionTarget_get_target,%) : \
 	$(call gb_Output_announce,$*,$(true),OXT,3)
 	$(call gb_Helper_abbreviate_dirs,\
 		mkdir -p $(call gb_ExtensionTarget_get_rootdir,$*)/META-INF \
-			$(call gb_ExtensionTarget_get_rootdir,$*)/registration && \
+			$(if $(LICENSE),$(call gb_ExtensionTarget_get_rootdir,$*)/registration) && \
 		$(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) && \
-		cp -f $(OUTDIR)/bin/osl/$(gb_ExtensionTarget_LICENSEFILE) $(call gb_ExtensionTarget_get_rootdir,$*)/registration && \
+		$(if $(LICENSE),cp -f $(LICENSE) $(call gb_ExtensionTarget_get_rootdir,$*)/registration &&) \
 		$(if $(gb_WITH_LANG),cp $(foreach lang,$(gb_ExtensionTarget_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))
 
-# TODO: needs dependency on $(OUTDIR)/bin/osl/$(gb_ExtensionTarget_LICENSEFILE) once readlicense_oo will be gbuildized
-# or just another simpler solution
-
 # set file list and location of manifest and description files
 # register target and clean target
 # add deliverable
 # add dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
 define gb_ExtensionTarget_ExtensionTarget
-$(call gb_ExtensionTarget_get_target,$(1)) : FILES := META-INF description.xml registration
+$(call gb_ExtensionTarget_get_target,$(1)) : FILES := META-INF description.xml
+$(call gb_ExtensionTarget_get_target,$(1)) : LICENSE :=
 $(call gb_ExtensionTarget_get_target,$(1)) : LOCATION := $(SRCDIR)/$(2)
 $(call gb_ExtensionTarget_get_target,$(1)) : PLATFORM :=
 $(call gb_ExtensionTarget_get_target,$(1)) : PRJNAME := $(firstword $(subst /, ,$(2)))
@@ -131,6 +129,14 @@ $(call gb_ExtensionTarget_get_target,$(1)) : PLATFORM := $(2)
 
 endef
 
+# Use the default license file
+define gb_ExtensionTarget_use_default_license
+$(call gb_ExtensionTarget_get_target,$(1)) : FILES += registration
+$(call gb_ExtensionTarget_get_target,$(1)) : LICENSE := $(gb_ExtensionTarget_LICENSEFILE_DEFAULT)
+$(call gb_ExtensionTarget_get_target,$(1)) : $(gb_ExtensionTarget_LICENSEFILE_DEFAULT)
+
+endef
+
 # adding a file creates a dependency to it
 # file is copied to $(WORKDIR)
 # $(3) is the target of the copied file, and $(4) can be used to override that
commit 9fbbcc122f5de6446d7500334f21445c30057bf6
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Aug 4 20:11:44 2012 +0200

    refactor Extension
    
    Change-Id: Ie0fd71b6547d9e04a55ae9690b137579e581e006

diff --git a/solenv/gbuild/Extension.mk b/solenv/gbuild/Extension.mk
index be486be..4f71256 100644
--- a/solenv/gbuild/Extension.mk
+++ b/solenv/gbuild/Extension.mk
@@ -27,102 +27,15 @@
 
 # Extension class
 
-gb_Extension_ZIPCOMMAND := zip $(if $(findstring s,$(MAKEFLAGS)),-q)
-ifeq ($(GUI),WNT)
-gb_Extension_LICENSEFILE := license.txt
-else
-gb_Extension_LICENSEFILE := LICENSE
-endif
-gb_Extension_XRMEXTARGET := $(call gb_Executable_get_target_for_build,xrmex)
-gb_Extension_XRMEXCOMMAND := \
-	$(gb_Helper_set_ld_path) $(gb_Extension_XRMEXTARGET)
-# propmerge is a perl script
-gb_Extension_PROPMERGETARGET := $(OUTDIR_FOR_BUILD)/bin/propmerge
-gb_Extension_PROPMERGECOMMAND := \
-	$(PERL) $(gb_Extension_PROPMERGETARGET)
-gb_Extension_HELPEXTARGET := $(call gb_Executable_get_target_for_build,helpex)
-gb_Extension_HELPEXCOMMAND := \
-	$(gb_Helper_set_ld_path) $(gb_Extension_HELPEXTARGET)
-# does not contain en-US because it is special cased in gb_Extension_Extension
-gb_Extension_LANGS := $(filter-out en-US,$(gb_WITH_LANG))
-
-# Substitute platform or copy if no platform has been set
-define gb_Extension__subst_platform
-$(if $(PLATFORM),\
-	sed \
-		-e 's/@PLATFORM@/$(PLATFORM)/' \
-		-e 's/@EXEC_EXTENSION@/$(gb_Executable_EXT)/' \
-		-e 's/@SHARED_EXTENSION@/$(gb_Library_DLLEXT)/' \
-		$(1) > $(2),\
-	cp -f $(1) $(2))
-endef
-
-# remove extension directory in workdir and oxt file in workdir and outdir
-$(call gb_Extension_get_clean_target,%) :
-	$(call gb_Output_announce,$*,$(false),OXT,3)
-	$(call gb_Helper_abbreviate_dirs,\
-		rm -f -r $(call gb_Extension_get_workdir,$*) && \
-		rm -f $(call gb_Extension_get_target,$*) && \
-		rm -f $(call gb_Extension_get_outdir_target,$*))
-
-ifeq ($(strip $(gb_WITH_LANG)),)
-$(call gb_Extension_get_workdir,%)/description.xml :
-	$(call gb_Output_announce,$*/description.xml,$(true),CPY,3)
-	$(call gb_Helper_abbreviate_dirs,\
-		mkdir -p $(call gb_Extension_get_workdir,$*) && \
-		cp -f $(LOCATION)/description.xml $@)
-else
-$(call gb_Extension_get_workdir,%)/description.xml : $(gb_Extension_XRMEXTARGET)
-	$(call gb_Output_announce,$*/description.xml,$(true),XRM,3)
-	$(call gb_Helper_abbreviate_dirs,\
-		mkdir -p $(call gb_Extension_get_workdir,$*) && \
-		$(gb_Extension_XRMEXCOMMAND) \
-			-p $(PRJNAME) \
-			-i $(filter %.xml,$^) \
-			-o $@ \
-			-m $(SDF) \
-			-l all)
-endif
-
-# rule to create oxt package in workdir
-# --filesync makes sure that all files in the oxt package will be removed that no longer are in $(FILES)
-$(call gb_Extension_get_target,%) : \
-		$(call gb_Extension_get_workdir,%)/description.xml
-	$(call gb_Output_announce,$*,$(true),OXT,3)
-	$(call gb_Helper_abbreviate_dirs,\
-		mkdir -p $(call gb_Extension_get_rootdir,$*)/META-INF \
-			$(call gb_Extension_get_rootdir,$*)/registration && \
-		$(call gb_Extension__subst_platform,$(call gb_Extension_get_workdir,$*)/description.xml,$(call gb_Extension_get_rootdir,$*)/description.xml) && \
-		$(call gb_Extension__subst_platform,$(LOCATION)/manifest.xml,$(call gb_Extension_get_rootdir,$*)/META-INF/manifest.xml) && \
-		cp -f $(OUTDIR)/bin/osl/$(gb_Extension_LICENSEFILE) $(call gb_Extension_get_rootdir,$*)/registration && \
-		$(if $(gb_WITH_LANG),cp $(foreach lang,$(gb_Extension_LANGS),$(call gb_Extension_get_workdir,$*)/description-$(lang).txt) $(call gb_Extension_get_rootdir,$*) &&) \
-		cd $(call gb_Extension_get_rootdir,$*) && \
-		$(gb_Extension_ZIPCOMMAND) -rX --filesync \
-			$(call gb_Extension_get_target,$*) \
-			$(FILES))
-
-# TODO: needs dependency on $(OUTDIR)/bin/osl/$(gb_Extension_LICENSEFILE) once readlicense_oo will be gbuildized
-# or just another simpler solution
-
-# set file list and location of manifest and description files
-# register target and clean target
-# add deliverable
-# add dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
 define gb_Extension_Extension
-$(call gb_Extension_get_target,$(1)) : FILES := META-INF description.xml registration
-$(call gb_Extension_get_target,$(1)) : LOCATION := $(SRCDIR)/$(2)
-$(call gb_Extension_get_target,$(1)) : PLATFORM :=
-$(call gb_Extension_get_target,$(1)) : PRJNAME := $(firstword $(subst /, ,$(2)))
-$(call gb_Extension_get_workdir,$(1))/description.xml : $(SRCDIR)/$(2)/description.xml
-ifneq ($(strip $(gb_WITH_LANG)),)
-$(call gb_Extension_get_target,$(1)) : FILES += $(foreach lang,$(gb_Extension_LANGS),description-$(lang).txt)
-$(call gb_Extension_get_target,$(1)) : SDF := $(gb_SDFLOCATION)/$(2)/localize.sdf
-$(call gb_Extension_get_workdir,$(1))/description.xml : $$(SDF)
-endif
-$(call gb_Extension_add_file,$(1),description-en-US.txt,$(SRCDIR)/$(2)/description-en-US.txt)
-$(eval $(call gb_Module_register_target,$(call gb_Extension_get_outdir_target,$(1)),$(call gb_Extension_get_clean_target,$(1))))
-$(call gb_Deliver_add_deliverable,$(call gb_Extension_get_outdir_target,$(1)),$(call gb_Extension_get_target,$(1)),$(1))
-$(call gb_Extension_get_outdir_target,$(1)) : $(call gb_Extension_get_target,$(1))
+$(call gb_ExtensionTarget_ExtensionTarget,$(1),$(2))
+
+$(call gb_Extension_get_target,$(1)) : $(call gb_ExtensionTarget_get_target,$(1))
+$(call gb_Extension_get_clean_target,$(1)) : $(call gb_ExtensionTarget_get_clean_target,$(1))
+
+$(call gb_Deliver_add_deliverable,$(call gb_Extension_get_target,$(1)),$(call gb_ExtensionTarget_get_target,$(1)),$(1))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_Extension_get_target,$(1)),$(call gb_Extension_get_clean_target,$(1))))
 
 endef
 
@@ -130,21 +43,12 @@ endef
 #
 # Only use this if the extension is platform-dependent.
 define gb_Extension_set_platform
-$(call gb_Extension_get_target,$(1)) : PLATFORM := $(2)
+$(call gb_ExtensionTarget_set_platform,$(1),$(2))
 
 endef
 
-# adding a file creates a dependency to it
-# file is copied to $(WORKDIR)
-# $(3) is the target of the copied file, and $(4) can be used to override that
-# with a different actual file, which is needed in gb_Extension_add_library
-# to make it work on Windows where the DLL doesn't have a gbuild target...
 define gb_Extension_add_file
-$(call gb_Extension_get_target,$(1)) : FILES += $(2)
-$(call gb_Extension_get_target,$(1)) : $(call gb_Extension_get_rootdir,$(1))/$(2)
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $(3)
-	mkdir -p $$(dir $$@) && \
-	cp -f $(if $(4),$(4),$(3)) $$@
+$(call gb_ExtensionTarget_add_file,$(1),$(2),$(3))
 
 endef
 
@@ -155,69 +59,51 @@ endef
 # without any subpath. If no path is specified, they are added directly
 # to the root dir of the extension.
 define gb_Extension_add_files
-$(foreach file,$(3),$(call gb_Extension_add_file,$(1),$(if $(strip $(2)),$(strip $(2))/)$(notdir $(file)),$(file)))
+$(call gb_ExtensionTarget_add_files,$(1),$(2),$(3))
 
 endef
 
 # add a library from the solver; DO NOT use gb_Library_get_target
 define gb_Extension_add_library
-$(call gb_Extension_add_file,$(1),$(call gb_Library_get_runtime_filename,$(2)),\
-	$(call gb_Library_get_target,$(2)),\
-	$(gb_Helper_OUTDIRLIBDIR)/$(call gb_Library_get_runtime_filename,$(2)))
+$(call gb_ExtensionTarget_add_library,$(1),$(2))
+
 endef
 
 define gb_Extension_add_libraries
-$(foreach lib,$(2),$(call gb_Extension_add_library,$(1),$(lib)))
+$(call gb_ExtensionTarget_add_libraries,$(1),$(2))
+
 endef
 
 # add an executable from the solver
 define gb_Extension_add_executable
-$(call gb_Extension_add_file,$(1),$(notdir $(call gb_Executable_get_target,$(2))),\
-	$(call gb_Executable_get_target,$(2)),\
-	$(call gb_Executable_get_target,$(2)))
+$(call gb_ExtensionTarget_add_executable,$(1),$(2))
+
 endef
 
 define gb_Extension_add_executables
-$(foreach exe,$(2),$(call gb_Extension_add_executable,$(1),$(exe)))
+$(call gb_ExtensionTarget_add_executables,$(1),$(2))
+
 endef
 
 # localize .properties file
-# source file is copied to $(WORKDIR)
 define gb_Extension_localize_properties
-$(call gb_Extension_get_target,$(1)) : FILES += $(2)
-ifneq ($(strip $(gb_WITH_LANG)),)
-$(call gb_Extension_get_target,$(1)) : FILES += $(foreach lang,$(subst -,_,$(gb_Extension_LANGS)),$(subst en_US,$(lang),$(2)))
-$(call gb_Extension_get_rootdir,$(1))/$(2) : SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(dir $(3)))localize.sdf
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $$(SDF)
-endif
-$(call gb_Extension_get_target,$(1)) : $(call gb_Extension_get_rootdir,$(1))/$(2)
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $(3) \
-		$(gb_Extension_PROPMERGETARGET)
-	$$(call gb_Output_announce,$(2),$(true),PRP,3)
-	mkdir -p $$(dir $$@) && \
-	cp -f $$< $$@ \
-	$(if $(strip $(gb_WITH_LANG)),&& $(gb_Extension_PROPMERGECOMMAND) -i $$@ -m $$(SDF))
+$(call gb_ExtensionTarget_localize_properties,$(1),$(2),$(3))
 
 endef
 
 # localize extension help
 define gb_Extension_localize_help
-ifneq ($(strip $(gb_WITH_LANG)),)
-$(call gb_Extension_get_target,$(1)) : FILES += $(foreach lang,$(gb_Extension_LANGS),$(subst lang,$(lang),$(2)))
-$(foreach lang,$(gb_Extension_LANGS),$(call gb_Extension_localize_help_onelang,$(1),$(subst lang,$(lang),$(2)),$(3),$(lang)))
-endif
+$(call gb_ExtensionTarget_localize_help,$(1),$(2),$(3))
+
+endef
+
+define gb_Extension_use_package
+$(call gb_ExtensionTarget_use_package,$(1),$(2))
 
 endef
 
-define gb_Extension_localize_help_onelang
-$(call gb_Extension_get_target,$(1)) : $(call gb_Extension_get_rootdir,$(1))/$(2)
-$(call gb_Extension_get_rootdir,$(1))/$(2) : SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(subst $(WORKDIR)/CustomTarget,,$(dir $(3))))localize.sdf
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $$(SDF)
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $(gb_Extension_HELPEXTARGET)
-$(call gb_Extension_get_rootdir,$(1))/$(2) : $(3)
-	$$(call gb_Output_announce,$(2),$(true),XHP,3)
-	mkdir -p $$(dir $$@) && \
-	$(gb_Extension_HELPEXCOMMAND) -i $$< -o $$@ -l $(4) -m $$(SDF)
+define gb_Extension_use_packages
+$(call gb_ExtensionTarget_use_packages,$(1),$(2))
 
 endef
 
@@ -226,19 +112,9 @@ $$(call gb_Output_error,\
  gb_Extension_add_package_dependency: use gb_Extension_use_package instead.)
 endef
 
-define gb_Extension_use_package
-$(call gb_Extension_get_target,$(1)) : $(call gb_Package_get_target,$(2))
-
-endef
-
 define gb_Extension_add_package_dependencies
 $$(call gb_Output_error,\
  gb_Extension_add_package_dependencies: use gb_Extension_use_packages instead.)
 endef
 
-define gb_Extension_use_packages
-$(foreach package,$(2),$(call gb_Extension_use_package,$(1),$(package)))
-
-endef
-
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/ExtensionTarget.mk b/solenv/gbuild/ExtensionTarget.mk
new file mode 100644
index 0000000..599fbb9
--- /dev/null
+++ b/solenv/gbuild/ExtensionTarget.mk
@@ -0,0 +1,231 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 Matúš Kukan <matus.kukan at gmail.com>
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+# ExtensionTarget class
+
+gb_ExtensionTarget_ZIPCOMMAND := zip $(if $(findstring s,$(MAKEFLAGS)),-q)
+ifeq ($(GUI),WNT)
+gb_ExtensionTarget_LICENSEFILE := license.txt
+else
+gb_ExtensionTarget_LICENSEFILE := LICENSE
+endif
+gb_ExtensionTarget_XRMEXTARGET := $(call gb_Executable_get_target_for_build,xrmex)
+gb_ExtensionTarget_XRMEXCOMMAND := \
+	$(gb_Helper_set_ld_path) $(gb_ExtensionTarget_XRMEXTARGET)
+# propmerge is a perl script
+gb_ExtensionTarget_PROPMERGETARGET := $(OUTDIR_FOR_BUILD)/bin/propmerge
+gb_ExtensionTarget_PROPMERGECOMMAND := \
+	$(PERL) $(gb_ExtensionTarget_PROPMERGETARGET)
+gb_ExtensionTarget_HELPEXTARGET := $(call gb_Executable_get_target_for_build,helpex)
+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))
+
+# Substitute platform or copy if no platform has been set
+define gb_ExtensionTarget__subst_platform
+$(if $(PLATFORM),\
+	sed \
+		-e 's/@PLATFORM@/$(PLATFORM)/' \
+		-e 's/@EXEC_EXTENSION@/$(gb_Executable_EXT)/' \
+		-e 's/@SHARED_EXTENSION@/$(gb_Library_DLLEXT)/' \
+		$(1) > $(2),\
+	cp -f $(1) $(2))
+endef
+
+# remove extension directory in workdir and oxt file in workdir
+$(call gb_ExtensionTarget_get_clean_target,%) :
+	$(call gb_Output_announce,$*,$(false),OXT,3)
+	$(call gb_Helper_abbreviate_dirs,\
+		rm -f -r $(call gb_ExtensionTarget_get_workdir,$*) && \
+		rm -f $(call gb_ExtensionTarget_get_target,$*) \
+	)
+
+ifeq ($(strip $(gb_WITH_LANG)),)
+$(call gb_ExtensionTarget_get_workdir,%)/description.xml :
+	$(call gb_Output_announce,$*/description.xml,$(true),CPY,3)
+	$(call gb_Helper_abbreviate_dirs,\
+		mkdir -p $(call gb_ExtensionTarget_get_workdir,$*) && \
+		cp -f $(LOCATION)/description.xml $@)
+else
+$(call gb_ExtensionTarget_get_workdir,%)/description.xml : $(gb_ExtensionTarget_XRMEXTARGET)
+	$(call gb_Output_announce,$*/description.xml,$(true),XRM,3)
+	$(call gb_Helper_abbreviate_dirs,\
+		mkdir -p $(call gb_ExtensionTarget_get_workdir,$*) && \
+		$(gb_ExtensionTarget_XRMEXCOMMAND) \
+			-p $(PRJNAME) \
+			-i $(filter %.xml,$^) \
+			-o $@ \
+			-m $(SDF) \
+			-l all)
+endif
+
+# rule to create oxt package in workdir
+# --filesync makes sure that all files in the oxt package will be removed that no longer are in $(FILES)
+$(call gb_ExtensionTarget_get_target,%) : \
+		$(call gb_ExtensionTarget_get_workdir,%)/description.xml
+	$(call gb_Output_announce,$*,$(true),OXT,3)
+	$(call gb_Helper_abbreviate_dirs,\
+		mkdir -p $(call gb_ExtensionTarget_get_rootdir,$*)/META-INF \
+			$(call gb_ExtensionTarget_get_rootdir,$*)/registration && \
+		$(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) && \
+		cp -f $(OUTDIR)/bin/osl/$(gb_ExtensionTarget_LICENSEFILE) $(call gb_ExtensionTarget_get_rootdir,$*)/registration && \
+		$(if $(gb_WITH_LANG),cp $(foreach lang,$(gb_ExtensionTarget_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))
+
+# TODO: needs dependency on $(OUTDIR)/bin/osl/$(gb_ExtensionTarget_LICENSEFILE) once readlicense_oo will be gbuildized
+# or just another simpler solution
+
+# set file list and location of manifest and description files
+# register target and clean target
+# add deliverable
+# add dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
+define gb_ExtensionTarget_ExtensionTarget
+$(call gb_ExtensionTarget_get_target,$(1)) : FILES := META-INF description.xml registration
+$(call gb_ExtensionTarget_get_target,$(1)) : LOCATION := $(SRCDIR)/$(2)
+$(call gb_ExtensionTarget_get_target,$(1)) : PLATFORM :=
+$(call gb_ExtensionTarget_get_target,$(1)) : PRJNAME := $(firstword $(subst /, ,$(2)))
+$(call gb_ExtensionTarget_get_workdir,$(1))/description.xml : $(SRCDIR)/$(2)/description.xml
+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)) : SDF := $(gb_SDFLOCATION)/$(2)/localize.sdf
+$(call gb_ExtensionTarget_get_workdir,$(1))/description.xml : $$(SDF)
+endif
+$(call gb_ExtensionTarget_add_file,$(1),description-en-US.txt,$(SRCDIR)/$(2)/description-en-US.txt)
+
+endef
+
+# Set platform.
+#
+# Only use this if the extension is platform-dependent.
+define gb_ExtensionTarget_set_platform
+$(call gb_ExtensionTarget_get_target,$(1)) : PLATFORM := $(2)
+
+endef
+
+# adding a file creates a dependency to it
+# file is copied to $(WORKDIR)
+# $(3) is the target of the copied file, and $(4) can be used to override that
+# with a different actual file, which is needed in gb_ExtensionTarget_add_library
+# to make it work on Windows where the DLL doesn't have a gbuild target...
+define gb_ExtensionTarget_add_file
+$(call gb_ExtensionTarget_get_target,$(1)) : FILES += $(2)
+$(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2)
+$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(3)
+	mkdir -p $$(dir $$@) && \
+	cp -f $(if $(4),$(4),$(3)) $$@
+
+endef
+
+# Add several files at once
+#
+# This function avoids the need to specify each file's name twice. The
+# files are added directly under specified path in the extension,
+# without any subpath. If no path is specified, they are added directly
+# to the root dir of the extension.
+define gb_ExtensionTarget_add_files
+$(foreach file,$(3),$(call gb_ExtensionTarget_add_file,$(1),$(if $(strip $(2)),$(strip $(2))/)$(notdir $(file)),$(file)))
+
+endef
+
+# add a library from the solver; DO NOT use gb_Library_get_target
+define gb_ExtensionTarget_add_library
+$(call gb_ExtensionTarget_add_file,$(1),$(call gb_Library_get_runtime_filename,$(2)),\
+	$(call gb_Library_get_target,$(2)),\
+	$(gb_Helper_OUTDIRLIBDIR)/$(call gb_Library_get_runtime_filename,$(2)))
+endef
+
+define gb_ExtensionTarget_add_libraries
+$(foreach lib,$(2),$(call gb_ExtensionTarget_add_library,$(1),$(lib)))
+endef
+
+# add an executable from the solver
+define gb_ExtensionTarget_add_executable
+$(call gb_ExtensionTarget_add_file,$(1),$(notdir $(call gb_Executable_get_target,$(2))),\
+	$(call gb_Executable_get_target,$(2)),\
+	$(call gb_Executable_get_target,$(2)))
+endef
+
+define gb_ExtensionTarget_add_executables
+$(foreach exe,$(2),$(call gb_ExtensionTarget_add_executable,$(1),$(exe)))
+endef
+
+# localize .properties file
+# source file is copied to $(WORKDIR)
+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_rootdir,$(1))/$(2) : SDF := $(gb_SDFLOCATION)$(subst $(SRCDIR),,$(dir $(3)))localize.sdf
+$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $$(SDF)
+endif
+$(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_ExtensionTarget_get_rootdir,$(1))/$(2)
+$(call gb_ExtensionTarget_get_rootdir,$(1))/$(2) : $(3) \
+		$(gb_ExtensionTarget_PROPMERGETARGET)
+	$$(call gb_Output_announce,$(2),$(true),PRP,3)
+	mkdir -p $$(dir $$@) && \
+	cp -f $$< $$@ \
+	$(if $(strip $(gb_WITH_LANG)),&& $(gb_ExtensionTarget_PROPMERGECOMMAND) -i $$@ -m $$(SDF))
+
+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
+
+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)
+
+endef
+
+define gb_ExtensionTarget_use_package
+$(call gb_ExtensionTarget_get_target,$(1)) : $(call gb_Package_get_target,$(2))
+
+endef
+
+define gb_ExtensionTarget_use_packages
+$(foreach package,$(2),$(call gb_ExtensionTarget_use_package,$(1),$(package)))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 60290af..7822e2c 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -31,7 +31,7 @@
 gb_ComponentTarget_get_outdir_target = $(OUTDIR)/xml/component/$(1).component
 gb_Executable_get_target = $(OUTDIR)/bin/$(1)$(gb_Executable_EXT)
 gb_Executable_get_target_for_build = $(OUTDIR_FOR_BUILD)/bin/$(1)$(gb_Executable_EXT_for_build)
-gb_Extension_get_outdir_target = $(OUTDIR)/bin/$(1).oxt
+gb_Extension_get_target = $(OUTDIR)/bin/$(1).oxt
 gb_Pagein_get_outdir_target = $(OUTDIR)/bin/pagein-$(1)
 gb_PackagePart_get_destinations = \
 	$(OUTDIR)/bin \
@@ -88,9 +88,9 @@ gb_CxxObject_get_target = $(WORKDIR)/CxxObject/$(1).o
 gb_GenCxxObject_get_target = $(WORKDIR)/GenCxxObject/$(1).o
 gb_Executable_get_external_headers_target = $(WORKDIR)/ExternalHeaders/Executable/$(1)
 gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1)
-gb_Extension_get_target = $(WORKDIR)/Extension/$(1).oxt
-gb_Extension_get_rootdir = $(WORKDIR)/Extension/$(1)/root
-gb_Extension_get_workdir = $(WORKDIR)/Extension/$(1)
+gb_ExtensionTarget_get_target = $(WORKDIR)/ExtensionTarget/$(1).oxt
+gb_ExtensionTarget_get_rootdir = $(WORKDIR)/ExtensionTarget/$(1)/root
+gb_ExtensionTarget_get_workdir = $(WORKDIR)/ExtensionTarget/$(1)
 gb_ExternalLib_get_workdir = $(WORKDIR)/ExternalLib/$(1)
 gb_ExternalLib_get_builddir = $(WORKDIR)/ExternalLib/$(1)/build
 gb_ExternalLib_get_target = $(WORKDIR)/ExternalLib/$(1).done
@@ -192,7 +192,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
 	AllLangResTarget \
 	ComponentTarget \
 	ComponentsTarget \
-	Extension \
+	ExtensionTarget \
 	InstallModule \
 	InstallModuleTarget \
 	InstallScriptTarget \
@@ -235,6 +235,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
 
 $(eval $(call gb_Helper_make_outdir_clean_targets,\
 	Executable \
+	Extension \
 	InstallScript \
 	InternalUnoApi \
 	Library \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index c5adb50..a77f57e 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -320,6 +320,7 @@ include $(foreach class, \
 	InternalUnoApi \
 	Zip \
 	Configuration \
+	ExtensionTarget \
 	Extension \
 	InstallModuleTarget \
 	InstallModule \


More information about the Libreoffice-commits mailing list