gimp-help-2 r2716 - trunk
- From: ulfehlert svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp-help-2 r2716 - trunk
- Date: Mon, 26 Jan 2009 20:14:22 +0000 (UTC)
Author: ulfehlert
Date: Mon Jan 26 20:14:22 2009
New Revision: 2716
URL: http://svn.gnome.org/viewvc/gimp-help-2?rev=2716&view=rev
Log:
2009-01-26 Ulf-D. Ehlert <ulfehlert svn gnome org>
* Makefile.am
* Makefile.GNU: changed to handle merged po files
Modified:
trunk/ChangeLog
trunk/Makefile.GNU
trunk/Makefile.am
Modified: trunk/Makefile.GNU
==============================================================================
--- trunk/Makefile.GNU (original)
+++ trunk/Makefile.GNU Mon Jan 26 20:14:22 2009
@@ -5,16 +5,14 @@
# The GIMP manual languages
ifneq ($(LINGUAS),)
LANGUAGES = $(LINGUAS)
-else
-ifneq ($(ALL_LINGUAS),)
+else ifneq ($(ALL_LINGUAS),)
LANGUAGES = $(ALL_LINGUAS)
else
LANGUAGES ?= de en es fr it ko nl no pl ru sv
endif
-endif
-XML_LANG = en
-PO_LANGS = $(filter-out $(XML_LANG), $(LANGUAGES))
+XML_LANG = en
+PO_LANGS = $(filter-out $(XML_LANG), $(LANGUAGES))
# Essential external programs and their default options
XSLTPROC = xsltproc
@@ -48,6 +46,7 @@
echo_n = echo -n
mkdir_p = mkdir -p
ln_s = ln -s
+find_l = find -L
# Calling make recursively
RMAKE = $(MAKE) -f Makefile.GNU $(MAKEFLAGS) --no-print-directory
@@ -88,21 +87,20 @@
-name '.svn' -prune \
-o \
-type d -print
+src_dir_predicates = -name images -prune -o $(dir_predicates)
xml_dir_predicates = $(dir_predicates)
pot_dir_predicates = $(dir_predicates)
-# List of authors and contributors
+# List of authors and contributors (no DocBook)
AUTHORS_STYLESHEET_XML = stylesheets/authors.xml
# Automatically generated authors section (DocBook)
AUTHORS_DOCBOOK_XML = src/preface/authors.xml
# Files & directories
-XML_DIRS := $(shell cd $(srcdir) && find src $(dir_predicates))
-XML_FILES := $(shell cd $(srcdir) && find src $(xml_file_predicates)) \
+SRC_DIRS := $(shell cd $(srcdir) && find src $(src_dir_predicates))
+SRC_FILES := $(shell cd $(srcdir) && find src $(xml_file_predicates)) \
$(AUTHORS_DOCBOOK_XML)
-POT_FILES = $(XML_FILES:src/%.xml=pot/%.pot)
-
# XXX: requires that "plainhtml.xsl" has been renamed to "html.xsl"
HTML_STYLESHEETS = stylesheets/html*.xsl
@@ -145,14 +143,14 @@
# Create a PO-template (POT)
#
# Usage:
-# $(call xml2pot,xml-file,pot-file)
+# $(call xml2pot,xml-files,pot-file)
# Parameters:
-# $1 - original (untranslated) XML file
-# $2 - POT template file containing translatable tags
+# $1 - input: original (untranslated) XML files
+# $2 - output: POT template file containing translatable tags
#
# Hint: Better don't use 'grep' for filtering-out the warning
# messages, since grep's exit status is 1 if there is no match.
-xml2pot = ($(XML2PO) --output='-' "$(1)" \
+xml2pot = ($(XML2PO) --output='-' $(1) \
| $(MSGUNIQ) $(MSGUNIQFLAGS) \
| $(MSGCAT) $(MSGCATFLAGS) - > "$(2)") 2>&1 \
| sed -e '/image file .* not found/d'
@@ -245,11 +243,28 @@
#### Make pot files: XML(en) --> POT ####
########################################################################
-# xmldir/path/to/file.xml --> potdir/path/to/file.pot
-$(POT_FILES): pot/%.pot : src/%.xml
+# xmldir/path/to/file/*.xml --> potdir/path/to/file.pot
+POT_FILES = $(patsubst src/%,pot/%.pot,$(filter-out src src/,$(SRC_DIRS)))
+# Special case
+POT_FILES += pot/gimp.pot
+
+# Special case
+pot/gimp.pot: src/*.xml
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+# Special case: pot file for the authors DocBook file
+# (src/preface/authors.xml, but this may change...)
+# TODO: is there a better way?
+AUTHORS_POT = $(AUTHORS_DOCBOOK_XML:src/%/$(notdir $(AUTHORS_DOCBOOK_XML))=pot/%.pot)
+$(AUTHORS_POT): $(AUTHORS_DOCBOOK_XML) $(wildcard $(dir $(AUTHORS_DOCBOOK_XML))*.xml)
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+pot/%.pot: src/%/*.xml
$(cmd) $(call make_target_dir,$@)
$(msg) "[POT] $@"
- $(cmd) if test -s $<; then $(call xml2pot,$<,$@); else touch $@; fi
+ $(cmd) $(call xml2pot,$^,$@)
# Targets suitable for command line
# ("make pot" will work even if pot exists)
@@ -269,6 +284,11 @@
$$(cmd) if test -s $$<; then $$(call pot2po,$$<,$(1),$$@); else touch $$@; fi
po-$(1): $$($(1)_PO_FILES)
$$(cmd) if test -e messages.mo; then rm -f messages.mo; fi
+ $$(cmd) find po/$(1) -name $(COMPENDIUM) -prune -o $$(file_predicates) | \
+ while read pofile; do \
+ potfile=pot/$$$${pofile#po/$(1)/}t; \
+ test -e $$$${potfile} || rm -vf $$$${pofile}; \
+ done
endef
$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_PO_RULES,$(LANG))))
@@ -299,19 +319,55 @@
########################################################################
+#### Generate XML prerequisites ####
+########################################################################
+
+ifneq "$(UPDATE)" "nodeps"
+include $(foreach LANG,$(PO_LANGS),xml/$(LANG)/.deps.mk)
+endif
+
+# The dynamically generated and updated ".deps.mk" files contain
+# rules to register the po prereqisite for every xml file, e.g.
+# xml/LANG/*.xml: po/LANG/gimp.po
+# xml/LANG/filters/*.xml: po/LANG/filters.po
+# xml/LANG/filters/generic/*.xml: po/LANG/filters/generic.po
+# etc.
+
+#xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$($(1)_PO_FILES)
+# TODO: simplify
+define MAKE_DEP_RULES
+xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$(SRC_FILES)
+ $$(cmd) $$(call make_target_dir,$$@)
+ $$(msg) "[DEP] $$@"
+ $$(cmd) touch $$@
+ $$(cmd) for srcdir in $(SRC_DIRS); do \
+ ls $$$${srcdir}/*.xml >/dev/null 2>&1 || continue; \
+ srcdir=$$$${srcdir%/}; \
+ xmldir=xml/$(1)$$$${srcdir#src}; \
+ test "$$$${srcdir}" != "src" || srcdir="src/gimp"; \
+ pofile=po/$(1)$$$${srcdir#src}.po; \
+ echo "$$$${xmldir}/*.xml: $$$${pofile}"; \
+ done > $$@
+endef
+$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_DEP_RULES,$(LANG))))
+
+
+########################################################################
#### Make XML files: PO --> XML(non-en) ####
########################################################################
+# TODO: check xml/$(1) vs. xml-$(1) prerequisites (XML_FILES)
define MAKE_XML_RULES
-$(1)_XML_FILES = $$(XML_FILES:src/%=xml/$(1)/%)
-$$($(1)_XML_FILES): xml/$(1)/%.xml : po/$(1)/%.po
- $$(cmd) $$(call make_target_dir,$$@)
+$(1)_XML_FILES = $$(SRC_FILES:src/%=xml/$(1)/%)
+xml/$(1)/%.xml:
$$(msg) "[XML] $$@"
- $$(cmd) if test -s $$(@:xml/$(1)/%=src/%); then \
- $$(call po2xml,$$(@:xml/$(1)/%=src/%),$$<,$(1),$$@); \
- else \
- touch $$@; \
- fi
+ $$(cmd) $$(call make_target_dir,$$@)
+ $$(cmd) xmlfile=$$@; \
+ stem=$$*; \
+ srcfile=src/$$$${stem}.xml; \
+ test "$$$${stem}" != "$$$${stem%/*}" && stem=$$$${stem%/*} || stem=gimp; \
+ pofile=po/$(1)/$$$${stem}.po; \
+ $(call po2xml,$$$${srcfile},$$$${pofile},$(1),$$@)
# This is indirectly used as HTML prerequisite:
xml/$(1): $$($(1)_XML_FILES)
@@ -330,13 +386,13 @@
$(cmd) if test -d $@; then rm -rf $@/*; fi
$(cmd) test -d $@ || $(mkdir_p) $@
$(msg) "*** Copying images ($*) ..."
- $(cmd) (cd images && find common C $(dir_predicates)) | \
+ $(cmd) (cd images && $(find_l) common C $(dir_predicates)) | \
while read dir; do \
dest=$${dir#*/}; \
test "$${dir}" != "$${dest}" || continue; \
test -d $@/$${dest} || $(mkdir_p) $@/$${dest}; \
done
- $(cmd) (cd images && find common C $(file_predicates)) | \
+ $(cmd) (cd images && $(find_l) common C $(file_predicates)) | \
while read image; do \
if [ "$*" != "en" ]; then \
localized=$*/$${image#C/}; \
@@ -348,7 +404,7 @@
# Special case: en
-en_XML_FILES = $(XML_FILES:src/%=xml/en/%)
+en_XML_FILES = $(SRC_FILES:src/%=xml/en/%)
$(en_XML_FILES): xml/en/%.xml : src/%.xml
$(cmd) if test -L xml/en; then rm -v xml/en; fi
$(cmd) $(call make_target_dir,$@)
Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am (original)
+++ trunk/Makefile.am Mon Jan 26 20:14:22 2009
@@ -5,13 +5,11 @@
# The GIMP manual languages
# HIDE FROM AUTOMAKE #ifneq ($(LINGUAS),)
# HIDE FROM AUTOMAKE #LANGUAGES = $(LINGUAS)
-# HIDE FROM AUTOMAKE #else
-# HIDE FROM AUTOMAKE #ifneq ($(ALL_LINGUAS),)
+# HIDE FROM AUTOMAKE #else ifneq ($(ALL_LINGUAS),)
# HIDE FROM AUTOMAKE #LANGUAGES = $(ALL_LINGUAS)
# HIDE FROM AUTOMAKE #else
# HIDE FROM AUTOMAKE #LANGUAGES ?= de en es fr it ko nl no pl ru sv
# HIDE FROM AUTOMAKE #endif
-# HIDE FROM AUTOMAKE #endif
XML_LANG = en
PO_LANGS = $(filter-out $(XML_LANG), $(LANGUAGES))
@@ -101,17 +99,18 @@
-o \
-type d -print
-# list of authors and contributors
+# for generating xml source directories
+src_dir_predicates = -name images -prune -o $(dir_predicates)
+
+# list of authors and contributors (no DocBook)
AUTHORS_STYLESHEET_XML = stylesheets/authors.xml
# automatically generated authors section (DocBook)
AUTHORS_DOCBOOK_XML = src/preface/authors.xml
# lists of source (XML) files and source directories
-XML_DIRS = $(shell cd $(srcdir) && find src $(dir_predicates))
-XML_FILES = $(shell cd $(srcdir) && find src $(src_find_predicates)) \
+SRC_DIRS = $(shell cd $(srcdir) && find src $(src_dir_predicates))
+SRC_FILES = $(shell cd $(srcdir) && find src $(src_find_predicates)) \
$(AUTHORS_DOCBOOK_XML)
-# list of source po template files
-POT_FILES = $(XML_FILES:src/%.xml=pot/%.pot)
# stylesheets for HTML
COMMON_CSS_FILES = \
@@ -140,7 +139,7 @@
TERMINOLOGY \
$(COMMON_CSS_FILES) \
$(OTHER_CSS_FILES) \
- $(XML_FILES) \
+ $(SRC_FILES) \
$(XSL_FILES)
# TODO?: rename "plainhtml.xsl" to "html.xsl" and use ...
@@ -214,17 +213,17 @@
# Create a PO-template (POT)
#
# Usage:
-# $(call xml2pot,xml-file,pot-file)
+# $(call xml2pot,xml-files,pot-file)
# Parameters:
-# $1 - original (untranslated) XML file
-# $2 - POT template file containing translatable tags
+# $1 - input: original (untranslated) XML files
+# $2 - output: POT template file containing translatable tags
#
-# Hint: Do not use 'grep' for filtering-out the warning
+# Hint: Better don't use 'grep' for filtering-out the warning
# messages, since grep's exit status is 1 if there is no match.
-xml2pot = ($(XML2PO) --output='-' "$(1)" \
+xml2pot = ($(XML2PO) --output='-' $(1) \
| $(MSGUNIQ) $(MSGUNIQFLAGS) \
| $(MSGCAT) $(MSGCATFLAGS) - > "$(2)") 2>&1 \
- | $(SED) -e '/image file .* not found/d'
+ | sed -e '/image file .* not found/d'
# Merge template (pot) and message catalog (po) or create a new catalog
#
@@ -293,26 +292,40 @@
########################################################################
#### Make pot files: XML(en) --> POT ####
########################################################################
-
-$(POT_FILES): pot/%.pot : src/%.xml
+#
+# xmldir/path/to/file/*.xml --> potdir/path/to/file.pot
+POT_FILES = $(patsubst src/%,pot/%.pot,$(filter-out src src/,$(SRC_DIRS)))
+# Special case
+POT_FILES += pot/gimp.pot
+#
+# Special case
+pot/gimp.pot: src/*.xml
$(cmd) $(call make_target_dir,$@)
$(msg) "[POT] $@"
- $(cmd) if test -s $<; then \
- $(call xml2pot,$<,$@);\
- else \
- touch $@; \
- fi
-
+ $(cmd) $(call xml2pot,$^,$@)
+# Special case: pot file for the authors DocBook file
+# (src/preface/authors.xml, but this may change...)
+# TODO: is there a better way?
+AUTHORS_POT = $(AUTHORS_DOCBOOK_XML:src/%/$(notdir $(AUTHORS_DOCBOOK_XML))=pot/%.pot)
+$(AUTHORS_POT): $(AUTHORS_DOCBOOK_XML) $(wildcard $(dir $(AUTHORS_DOCBOOK_XML))*.xml)
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+pot/%.pot: src/%/*.xml
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+#
# Targets suitable for command line
# ("make pot" will work even if pot exists)
-pot update-pot: potfiles ;
+pot: potfiles ;
potfiles: $(POT_FILES) ;
########################################################################
#### Make po files: POT --> PO ####
########################################################################
-
+#
# HIDE FROM AUTOMAKE #define MAKE_PO_RULES
# HIDE FROM AUTOMAKE #$(1)_PO_FILES = $$(patsubst pot/%.pot, po/$(1)/%.po, $$(POT_FILES))
# HIDE FROM AUTOMAKE #$$($(1)_PO_FILES): po/$(1)/%.po : pot/%.pot
@@ -325,9 +338,6 @@
$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_PO_RULES,$(LANG))))
-# Targets suitable for command line
-update-po-%: po-%
-
# Special case 'en': do nothing :-)
po-en: ;
@@ -345,26 +355,62 @@
########################################################################
-#### Make XML files: PO --> XML(non-en) ####
+#### Generate XML prerequisites ####
########################################################################
-# HIDE FROM AUTOMAKE #define MAKE_XML_RULES
-# HIDE FROM AUTOMAKE #$(1)_XML_FILES = $$(XML_FILES:src/%=xml/$(1)/%)
-# HIDE FROM AUTOMAKE #$$($(1)_XML_FILES): xml/$(1)/%.xml : po/$(1)/%.po
+include $(foreach LANG,$(PO_LANGS),xml/$(LANG)/.deps.mk)
+
+# The dynamically generated and updated ".deps.mk" files contain
+# rules to register the po prereqisite for every xml file, e.g.
+# xml/LANG/*.xml: po/LANG/gimp.po
+# xml/LANG/filters/*.xml: po/LANG/filters.po
+# xml/LANG/filters/generic/*.xml: po/LANG/filters/generic.po
+# etc.
+
+#xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$($(1)_PO_FILES)
+# TODO: simplify
+# HIDE FROM AUTOMAKE #define MAKE_DEP_RULES
+# HIDE FROM AUTOMAKE #xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$(SRC_FILES)
# HIDE FROM AUTOMAKE # $$(cmd) $$(call make_target_dir,$$@)
+# HIDE FROM AUTOMAKE # $$(msg) "[DEP] $$@"
+# HIDE FROM AUTOMAKE # $$(cmd) touch $$@
+# HIDE FROM AUTOMAKE # $$(cmd) for srcdir in $(SRC_DIRS); do \
+# HIDE FROM AUTOMAKE # ls $$$${srcdir}/*.xml >/dev/null 2>&1 || continue; \
+# HIDE FROM AUTOMAKE # srcdir=$$$${srcdir%/}; \
+# HIDE FROM AUTOMAKE # xmldir=xml/$(1)$$$${srcdir#src}; \
+# HIDE FROM AUTOMAKE # test "$$$${srcdir}" != "src" || srcdir="src/gimp"; \
+# HIDE FROM AUTOMAKE # pofile=po/$(1)$$$${srcdir#src}.po; \
+# HIDE FROM AUTOMAKE # echo "$$$${xmldir}/*.xml: $$$${pofile}"; \
+# HIDE FROM AUTOMAKE # done > $$@
+# HIDE FROM AUTOMAKE #endef
+# HIDE FROM AUTOMAKE #$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_DEP_RULES,$(LANG))))
+
+
+########################################################################
+#### Make XML files: PO --> XML(non-en) ####
+########################################################################
+#
+# TODO: check xml/$(1) vs. xml-$(1) prerequisites (XML_FILES)
+# HIDE FROM AUTOMAKE #define MAKE_XML_RULES
+# HIDE FROM AUTOMAKE #$(1)_XML_FILES = $$(SRC_FILES:src/%=xml/$(1)/%)
+# HIDE FROM AUTOMAKE #xml/$(1)/%.xml:
# HIDE FROM AUTOMAKE # $$(msg) "[XML] $$@"
-# HIDE FROM AUTOMAKE # $$(cmd) if test -s $$(@:xml/$(1)/%=src/%); then \
-# HIDE FROM AUTOMAKE # $$(call po2xml,$$(@:xml/$(1)/%=src/%),$$<,$(1),$$@); \
-# HIDE FROM AUTOMAKE # else \
-# HIDE FROM AUTOMAKE # touch $$@; \
-# HIDE FROM AUTOMAKE # fi
+# HIDE FROM AUTOMAKE # $$(cmd) $$(call make_target_dir,$$@)
+# HIDE FROM AUTOMAKE # $$(cmd) xmlfile=$$@; \
+# HIDE FROM AUTOMAKE # stem=$$*; \
+# HIDE FROM AUTOMAKE # srcfile=src/$$$${stem}.xml; \
+# HIDE FROM AUTOMAKE # test "$$$${stem}" != "$$$${stem%/*}" && stem=$$$${stem%/*} || stem=gimp; \
+# HIDE FROM AUTOMAKE # pofile=po/$(1)/$$$${stem}.po; \
+# HIDE FROM AUTOMAKE # $(call po2xml,$$$${srcfile},$$$${pofile},$(1),$$@)
+# HIDE FROM AUTOMAKE #
# HIDE FROM AUTOMAKE ## This is indirectly used as HTML prerequisite:
# HIDE FROM AUTOMAKE #xml/$(1): $$($(1)_XML_FILES)
-# HIDE FROM AUTOMAKE # $$(cmd) test -d $$@ && touch $$@ || $(MKDIR_P) $$@
+# HIDE FROM AUTOMAKE # $$(cmd) test -d $$@ && touch $$@ || $(mkdir_p) $$@
+# HIDE FROM AUTOMAKE #
# HIDE FROM AUTOMAKE ## Targets suitable for command line
# HIDE FROM AUTOMAKE #xml-$(1): xml/$(1) $$($(1)_XML_FILES) xml/$(1)/images ;
# HIDE FROM AUTOMAKE #endef
-$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_XML_RULES,$(LANG))))
+# HIDE FROM AUTOMAKE #$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_XML_RULES,$(LANG))))
# TODO: test new image files structure;
# use (~1500) image files as prerequisites?
@@ -389,9 +435,10 @@
dest=$${image#*/}; \
$(call copy,images/$${image},$@/$${dest}); \
done
+
# Special case: en
-en_XML_FILES = $(XML_FILES:src/%=xml/en/%)
+en_XML_FILES = $(SRC_FILES:src/%=xml/en/%)
$(en_XML_FILES): xml/en/%.xml : src/%.xml
$(cmd) if test -L xml/en; then rm -v xml/en; fi
$(cmd) $(call make_target_dir,$@)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]