summaryrefslogtreecommitdiffstats
path: root/solenv/gbuild/Gallery.mk
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/gbuild/Gallery.mk')
-rw-r--r--solenv/gbuild/Gallery.mk183
1 files changed, 183 insertions, 0 deletions
diff --git a/solenv/gbuild/Gallery.mk b/solenv/gbuild/Gallery.mk
new file mode 100644
index 000000000..56d5157ef
--- /dev/null
+++ b/solenv/gbuild/Gallery.mk
@@ -0,0 +1,183 @@
+# -*- 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/.
+#
+
+# class Gallery
+
+# Handles creation of image galleries.
+
+gb_Gallery_TRANSLATE := $(SRCDIR)/solenv/bin/desktop-translate.py
+gb_Gallery_INSTDIR := $(LIBO_SHARE_FOLDER)/gallery
+
+define gb_Gallery__command
+$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_Gallery_get_workdir,$(2))/* && \
+ RESPONSEFILE=$(call gb_var2file,$(shell $(call gb_MKTEMP)),100,$(GALLERY_FILES)) && \
+ $(call gb_Helper_print_on_error,\
+ $(call gb_Executable_get_command,gengal,$(ICECREAM_RUN)) \
+ --build-tree \
+ --destdir $(GALLERY_BASEDIR) \
+ --name "$(GALLERY_NAME)" \
+ --path $(call gb_Gallery_get_workdir,$(2)) \
+ --filenames $(call gb_Helper_make_url,$$RESPONSEFILE) \
+ -env:UserInstallation=$(call gb_Helper_make_url,$(call gb_Gallery_get_workdir,$(2))/user),\
+ $@.log \
+ ) && \
+ rm $$RESPONSEFILE && \
+ touch $@ \
+)
+endef
+
+define gb_Gallery__command_str
+cp -f $(GALLERY_STRFILE) $@ && \
+$(call gb_ExternalExecutable_get_command,python) \
+ $(gb_Gallery_TRANSLATE) \
+ --ext "str" --key "name" \
+ -d $(GALLERY_WORKDIR) \
+ $(GALLERY_ULFFILE)
+endef
+
+gb_Gallery__get_final_target = $(WORKDIR)/Gallery/$(1).final
+
+$(dir $(call gb_Gallery_get_target,$(1))).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_Gallery_get_target,$(1)))%/.dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_Gallery_get_target,%) : \
+ $(call gb_Executable_get_runtime_dependencies,gengal)
+ $(call gb_Output_announce,$*,$(true),GAL,1)
+ $(call gb_Trace_StartRange,$*,GAL)
+ $(call gb_Gallery__command,$@,$*)
+ $(call gb_Trace_EndRange,$*,GAL)
+
+$(call gb_Gallery__get_final_target,%) :
+ touch $@
+
+# difficult to determine source dep for this one...
+$(call gb_Gallery_get_workdir,%).ulf : \
+ $(call gb_Executable_get_runtime_dependencies,ulfex)
+ $(call gb_CustomTarget_ulfex__command,$@,$(GALLERY_ULFFILE),\
+ $(foreach lang,$(gb_TRANS_LANGS),\
+ $(gb_POLOCATION)/$(lang)/extras/source/gallery/share.po))
+
+$(call gb_Gallery_get_workdir,%).str : $(gb_Gallery_TRANSLATE) \
+ $(call gb_ExternalExecutable_get_dependencies,python)
+ $(call gb_Output_announce,$*,$(true),STR,1)
+ $(call gb_Trace_StartRange,$*,STR)
+ $(call gb_Gallery__command_str,$@,$*)
+ $(call gb_Trace_EndRange,$*,STR)
+
+# there must be a rule for these since they are targets due to Package
+$(call gb_Gallery_get_workdir,%).sdg :
+ touch $@
+$(call gb_Gallery_get_workdir,%).sdv :
+ touch $@
+$(call gb_Gallery_get_workdir,%).thm :
+ touch $@
+
+.PHONY : $(call gb_Gallery_get_clean_target,%)
+$(call gb_Gallery_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),GAL,1)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -rf \
+ $(call gb_Gallery__get_final_target,$*) \
+ $(call gb_Gallery_get_target,$*) \
+ $(call gb_Gallery_get_target,$*).log \
+ $(call gb_Gallery_get_workdir,$*) \
+ )
+
+# the theme package
+gb_Gallery_get_packagename = Gallery/$(1)
+# the files package
+gb_Gallery_get_files_packagename = Gallery/Files/$(1)
+
+# Create a gallery.
+#
+# basedir less one directory will be stripped from paths of the files when they are
+# inserted into the gallery.
+#
+# gb_Gallery_Gallery gallery basedir name
+define gb_Gallery_Gallery
+$(call gb_Gallery__Gallery_impl,$(1),$(call gb_Gallery_get_packagename,$(1)),$(2),$(3))
+
+# setup the files package - we install all of these too
+$(call gb_Package_Package_internal,$(call gb_Gallery_get_files_packagename,$(1)),$(SRCDIR)/$(2))
+$(call gb_Gallery__get_final_target,$(1)) : $(call gb_Package_get_target,$(call gb_Gallery_get_files_packagename,$(1)))
+$(call gb_Gallery_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(call gb_Gallery_get_files_packagename,$(1)))
+
+endef
+
+
+gb_Gallery_basedir = $(patsubst %/,%,$(dir $(SRCDIR)/$(1)))
+
+# TODO: we process the same ulf file for every gallery. That does not
+# make sense.
+#
+# gb_Gallery__Gallery_impl gallery package basedir name
+define gb_Gallery__Gallery_impl
+$(call gb_Package_Package_internal,$(2),$(call gb_Gallery_get_workdir,$(1)))
+$(call gb_Package_add_file,$(2),$(gb_Gallery_INSTDIR)/$(1).sdg,$(1).sdg)
+$(call gb_Package_add_file,$(2),$(gb_Gallery_INSTDIR)/$(1).sdv,$(1).sdv)
+$(call gb_Package_add_file,$(2),$(gb_Gallery_INSTDIR)/$(1).thm,$(1).thm)
+$(call gb_Package_add_file,$(2),$(gb_Gallery_INSTDIR)/$(1).str,$(1).str)
+
+# strip URL, without / to help the internal gallery system
+$(call gb_Gallery_get_target,$(1)) : GALLERY_BASEDIR := $(call gb_Helper_make_url,$(call gb_Gallery_basedir,$(3)))
+$(call gb_Gallery_get_target,$(1)) : GALLERY_FILES :=
+$(call gb_Gallery_get_target,$(1)) : GALLERY_NAME := $(1)
+$(call gb_Gallery_get_workdir,$(1))/$(1).str : GALLERY_STRFILE := $(SRCDIR)/$(3)/$(1).str
+$(call gb_Gallery_get_workdir,$(1))/$(1).str : GALLERY_ULFFILE := $(call gb_Gallery_get_workdir,$(1))/$(1).ulf
+$(call gb_Gallery_get_workdir,$(1))/$(1).str : GALLERY_WORKDIR := $(call gb_Gallery_get_workdir,$(1))
+$(call gb_Gallery_get_workdir,$(1))/$(1).ulf : GALLERY_BASEDIR := $(3)
+$(call gb_Gallery_get_workdir,$(1))/$(1).ulf : GALLERY_ULFFILE := $(call gb_Gallery_basedir,$(3))/share/gallery_names.ulf
+
+$(call gb_Gallery_get_workdir,$(1))/$(1).ulf : \
+ $(call gb_Gallery_basedir,$(3))/share/gallery_names.ulf \
+ $(call gb_Gallery_get_target,$(1)) # that rule pre-cleans our output directory
+
+$(call gb_Gallery_get_workdir,$(1))/$(1).str : $(call gb_Gallery_get_workdir,$(1))/$(1).ulf
+
+$(call gb_Gallery_get_workdir,$(1))/$(1).sdg \
+$(call gb_Gallery_get_workdir,$(1))/$(1).sdv \
+$(call gb_Gallery_get_workdir,$(1))/$(1).thm : $(call gb_Gallery_get_target,$(1))
+$(call gb_Gallery__get_final_target,$(1)) : $(call gb_Package_get_target,$(2))
+
+$(call gb_Gallery_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(2))
+$(call gb_Gallery_get_target,$(1)) :| $(dir $(call gb_Gallery_get_target,$(1))).dir \
+ $(call gb_Gallery_get_workdir,$(1))/.dir
+
+$$(eval $$(call gb_Module_register_target,$(call gb_Gallery__get_final_target,$(1)),$(call gb_Gallery_get_clean_target,$(1))))
+$(call gb_Helper_make_userfriendly_targets,$(1),Gallery,$(call gb_Gallery__get_final_target,$(1)))
+
+endef
+
+# Add a file to the gallery.
+#
+# The file is given by path relative to $(SRCDIR).
+#
+# gb_Gallery_add_file gallery file
+define gb_Gallery_add_file
+$(call gb_Gallery_get_target,$(1)) : $(SRCDIR)/$(3)
+$(call gb_Gallery_get_target,$(1)) : GALLERY_FILES += $(call gb_Helper_make_url,$(SRCDIR)/$(3))
+$(call gb_Package_add_file,$(call gb_Gallery_get_files_packagename,$(1)),$(2)/$(notdir $(3)),$(notdir $(3)))
+
+endef
+
+# Add several files to the gallery at once.
+#
+# The files are given by path relative to $(SRCDIR).
+#
+# gb_Gallery_add_files gallery file(s)
+define gb_Gallery_add_files
+$(foreach fname,$(3),$(call gb_Gallery_add_file,$(1),$(2),$(fname)))
+
+endef
+
+# vim: set noet sw=4 ts=4: