summaryrefslogtreecommitdiff
path: root/solenv/gbuild/UIConfig.mk
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2013-04-18 18:18:39 +0200
committerDavid Tardon <dtardon@redhat.com>2013-04-19 16:38:00 +0200
commitdf0c6367285952a44082d1359a9e053b7c7b556b (patch)
treeebfe58dbf1cd5234261efbd777c70f0a8fb06a15 /solenv/gbuild/UIConfig.mk
parenta47fa9ca7c1fef29da50cf9699d76eb98ac33a14 (diff)
fdo#63591 pack images referenced by .ui files
Change-Id: Ia7e932a98d3f2c8bca981261406798760b69f8e8
Diffstat (limited to 'solenv/gbuild/UIConfig.mk')
-rw-r--r--solenv/gbuild/UIConfig.mk58
1 files changed, 57 insertions, 1 deletions
diff --git a/solenv/gbuild/UIConfig.mk b/solenv/gbuild/UIConfig.mk
index 458ceb9fa2fe..52cffe59f1a5 100644
--- a/solenv/gbuild/UIConfig.mk
+++ b/solenv/gbuild/UIConfig.mk
@@ -111,6 +111,49 @@ $(call gb_UIMenubarTarget_UIMenubarTarget_platform,$(1),$(2))
endef
+# class UIImageListTarget
+
+# Handles creation of image lists for .ui files.
+
+gb_UIImageListTarget_COMMAND = $(call gb_ExternalExecutable_get_command,xsltproc)
+gb_UIImageListTarget_DEPS = $(call gb_ExternalExecutable_get_dependencies,xsltproc)
+gb_UIImageListTarget_XSLTFILE := $(SRCDIR)/solenv/bin/uiimagelist.xsl
+
+# NOTE: for some reason xsltproc does not produce any file if there is
+# no output, so we touch the target to make sure it exists.
+define gb_UIImageListTarget__command
+$(call gb_Output_announce,$(2),$(true),UIL,1)
+$(call gb_Helper_abbreviate_dirs,\
+ $(gb_UIImageListTarget_COMMAND) -o $@ $(gb_UIImageListTarget_XSLTFILE) $(UIFILE) && \
+ touch $@ \
+)
+endef
+
+$(dir $(call gb_UIImageListTarget_get_target,%)).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_UIImageListTarget_get_target,%))%/.dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_UIImageListTarget_get_target,%) : $(gb_UIImageListTarget_DEPS) $(gb_UIImageListTarget_XSLTFILE)
+ $(call gb_UIImageListTarget__command,$@,$*)
+
+.PHONY : $(call gb_UIImageListTarget_get_clean_target,%)
+$(call gb_UIImageListTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$(2),$(false),UIL,1)
+ rm -f $(call gb_UIImageListTarget_get_target,$*)
+
+# Extract list of images referenced in a .ui file.
+#
+# gb_UIImageListTarget_UIImageListTarget uifile
+define gb_UIImageListTarget_UIImageListTarget
+$(call gb_UIImageListTarget_get_target,$(1)) : UIFILE := $(SRCDIR)/$(1).ui
+
+$(call gb_UIImageListTarget_get_target,$(1)) : $(SRCDIR)/$(1).ui
+$(call gb_UIImageListTarget_get_target,$(1)) :| $(dir $(call gb_UIImageListTarget_get_target,$(1))).dir
+
+endef
+
# class UIConfig
# Handles UI configuration files.
@@ -134,12 +177,17 @@ $(dir $(call gb_UIConfig_get_target,%)).dir :
$(dir $(call gb_UIConfig_get_target,%))%/.dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
-$(call gb_UIConfig_get_target,%) :
+$(call gb_UIConfig_get_target,%) : $(call gb_UIConfig_get_imagelist_target,%)
$(call gb_Output_announce,$*,$(true),UIC,2)
$(call gb_Helper_abbreviate_dirs,\
touch $@ \
)
+$(call gb_UIConfig_get_imagelist_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ sort -u $(UI_IMAGELISTS) /dev/null > $@ \
+ )
+
.PHONY : $(call gb_UIConfig_get_clean_target,%)
$(call gb_UIConfig_get_clean_target,%) :
$(call gb_Output_announce,$*,$(false),UIC,2)
@@ -155,6 +203,8 @@ gb_UIConfig_get_packagesetname = UIConfig/$(1)
#
# gb_UIConfig_UIConfig modulename
define gb_UIConfig_UIConfig
+$(call gb_UIConfig_get_imagelist_target,$(1)) : UI_IMAGELISTS :=
+
$(call gb_PackageSet_PackageSet_internal,$(call gb_UIConfig_get_packagesetname,$(1)))
$(call gb_Package_Package_internal,$(call gb_UIConfig_get_packagename,$(1)),$(SRCDIR))
$(call gb_Package_Package_internal,$(call gb_UIConfig_get_packagename,$(1)_generated),$(WORKDIR))
@@ -164,6 +214,7 @@ $(call gb_Package_set_outdir,$(call gb_UIConfig_get_packagename,$(1)_generated),
$(call gb_PackageSet_add_package,$(call gb_UIConfig_get_packagesetname,$(1)),$(call gb_UIConfig_get_packagename,$(1)))
$(call gb_UIConfig_get_target,$(1)) :| $(dir $(call gb_UIConfig_get_target,$(1))).dir
+$(call gb_UIConfig_get_imagelist_target,$(1)) :| $(dir $(call gb_UIConfig_get_imagelist_target,$(1))).dir
$(call gb_UIConfig_get_target,$(1)) : $(call gb_PackageSet_get_target,$(call gb_UIConfig_get_packagesetname,$(1)))
$(call gb_Postprocess_get_target,AllUIConfigs) : $(call gb_UIConfig_get_target,$(1))
$(call gb_UIConfig_get_clean_target,$(1)) : $(call gb_PackageSet_get_clean_target,$(call gb_UIConfig_get_packagesetname,$(1)))
@@ -200,6 +251,11 @@ endef
# gb_UIConfig__add_uifile target file
define gb_UIConfig__add_uifile
$(call gb_UIConfig__package_uifile,$(1),$(call gb_UIConfig_get_packagename,$(1)),$(notdir $(2)).ui,$(2).ui)
+$(call gb_UIImageListTarget_UIImageListTarget,$(2))
+
+$(call gb_UIConfig_get_imagelist_target,$(1)) : UI_IMAGELISTS += $(call gb_UIImageListTarget_get_target,$(2))
+$(call gb_UIConfig_get_imagelist_target,$(1)) : $(call gb_UIImageListTarget_get_target,$(2))
+$(call gb_UIConfig_get_clean_target,$(1)) : $(call gb_UIImageListTarget_get_clean_target,$(2))
endef