summaryrefslogtreecommitdiff
path: root/buildlib
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2009-08-28 10:06:03 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2009-08-28 10:06:03 +0200
commit86d9e9635a23c7ecfe2de7f440a6acce320067bc (patch)
tree49cdacfb0df096ddf14c3a9c0af8f0682cb67249 /buildlib
parent97c17a01c7722f08e0cebf938c12a010b96220b7 (diff)
parentb01390eaa5750f28f258308b546f398ea5d89e3c (diff)
merge with my po4a branch & update both pot's
Thanks again for the initial patch from KURASAWA Nozomu and for the improvements and cleanups done by Nicolas François to get po4a up and running for apt man page translations!
Diffstat (limited to 'buildlib')
-rw-r--r--buildlib/defaults.mak23
-rw-r--r--buildlib/environment.mak.in7
-rw-r--r--buildlib/manpage.mak2
-rw-r--r--buildlib/po4a_manpage.mak54
4 files changed, 72 insertions, 14 deletions
diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak
index a171522d5..5373ee5cf 100644
--- a/buildlib/defaults.mak
+++ b/buildlib/defaults.mak
@@ -6,26 +6,26 @@
# for it to operate as expected. When included the module generates
# the requested rules based on the contents of its control variables.
-# This works out very well and allows a good degree of flexability.
-# To accomidate some of the features we introduce the concept of
+# This works out very well and allows a good degree of flexibility.
+# To accommodate some of the features we introduce the concept of
# local variables. To do this we use the 'Computed Names' feature of
# gmake. Each module declares a LOCAL scope and access it with,
# $($(LOCAL)-VAR)
-# This works very well but it is important to rembember that within
-# a rule the LOCAL var is unavailble, it will have to be constructed
-# from the information in the rule invokation. For stock rules like
+# This works very well but it is important to remember that within
+# a rule the LOCAL var is unavailable, it will have to be constructed
+# from the information in the rule invocation. For stock rules like
# clean this is simple, we use a local clean rule called clean/$(LOCAL)
# and then within the rule $(@F) gets back $(LOCAL)! Other rules will
# have to use some other mechanism (filter perhaps?) The reason such
# lengths are used is so that each directory can contain several 'instances'
# of any given module. I notice that the very latest gmake has the concept
# of local variables for rules. It is possible this feature in conjunction
-# with the generated names will provide a very powerfull solution indeed!
+# with the generated names will provide a very powerful solution indeed!
# A build directory is used by default, all generated items get put into
# there. However unlike automake this is not done with a VPATH build
# (vpath builds break the distinction between #include "" and #include <>)
-# but by explicly setting the BUILD variable. Make is invoked from
+# but by explicitly setting the BUILD variable. Make is invoked from
# within the source itself which is much more compatible with compilation
# environments.
ifndef NOISY
@@ -83,6 +83,7 @@ PYTHON_H = $(BASE)/buildlib/python.mak
COPY_H = $(BASE)/buildlib/copy.mak
YODL_MANPAGE_H = $(BASE)/buildlib/yodl_manpage.mak
SGML_MANPAGE_H = $(BASE)/buildlib/sgml_manpage.mak
+PO4A_MANPAGE_H = $(BASE)/buildlib/po4a_manpage.mak
XML_MANPAGE_H = $(BASE)/buildlib/xml_manpage.mak
FAIL_H = $(BASE)/buildlib/fail.mak
PODOMAIN_H = $(BASE)/buildlib/podomain.mak
@@ -99,12 +100,12 @@ endif
# Source location control
# SUBDIRS specifies sub components of the module that
-# may be located in subdrictories of the source dir.
+# may be located in subdirectories of the source dir.
# This should be declared before including this file
SUBDIRS+=
# Header file control.
-# TARGETDIRS indicitates all of the locations that public headers
+# TARGETDIRS indicates all of the locations that public headers
# will be published to.
# This should be declared before including this file
HEADER_TARGETDIRS+=
@@ -133,7 +134,7 @@ dirs:
mkdir -p $(patsubst %/,%,$(sort $(MKDIRS)))
# Header file control. We want all published interface headers to go
-# into the build directory from thier source dirs. We setup some
+# into the build directory from their source dirs. We setup some
# search paths here
vpath %.h $(SUBDIRS)
$(INCLUDE)/%.h $(addprefix $(INCLUDE)/,$(addsuffix /%.h,$(HEADER_TARGETDIRS))) : %.h
@@ -142,7 +143,7 @@ $(INCLUDE)/%.h $(addprefix $(INCLUDE)/,$(addsuffix /%.h,$(HEADER_TARGETDIRS))) :
# Dependency generation. We want to generate a .d file using gnu cpp.
# For GNU systems the compiler can spit out a .d file while it is compiling,
# this is specified with the INLINEDEPFLAG. Other systems might have a
-# makedep program that can be called after compiling, that's illistrated
+# makedep program that can be called after compiling, that's illustrated
# by the DEPFLAG case.
# Compile rules are expected to call this macro after calling the compiler
ifdef GCC3DEP
diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in
index 4e47692f5..b3afca0ad 100644
--- a/buildlib/environment.mak.in
+++ b/buildlib/environment.mak.in
@@ -36,8 +36,11 @@ DOCBOOK2MAN := @DOCBOOK2MAN@
# XML for the man pages
XMLTO := @XMLTO@
-# XML for the man pages
-XMLTO := @XMLTO@
+# po4a for the man pages
+XSLTPROC := @XSLTPROC@
+
+# po4a for the man pages
+PO4A := @PO4A@
# Gettext settings
GMSGFMT = @GMSGFMT@
diff --git a/buildlib/manpage.mak b/buildlib/manpage.mak
index 1f2644c01..6cdf73ccf 100644
--- a/buildlib/manpage.mak
+++ b/buildlib/manpage.mak
@@ -5,7 +5,7 @@
# Input
# $(SOURCE) - The documents to use
-# All output is writtin to files in the build doc directory
+# All output is written to files in the build doc directory
# See defaults.mak for information about LOCAL
diff --git a/buildlib/po4a_manpage.mak b/buildlib/po4a_manpage.mak
new file mode 100644
index 000000000..3ea4e2cb5
--- /dev/null
+++ b/buildlib/po4a_manpage.mak
@@ -0,0 +1,54 @@
+# -*- make -*-
+
+# This handles man pages with po4a. We convert to the respective
+# output in the source directory then copy over to the final dest. This
+# means po4a is only needed if compiling from bzr
+
+# Input
+# $(LC) - The language code of the translation
+
+# See defaults.mak for information about LOCAL
+
+# generate a list of accepted man page translations
+SOURCE = $(patsubst %.xml,%,$(wildcard *.$(LC).?.xml))
+INCLUDES = apt.ent
+
+# Do not use XMLTO, build the manpages directly with XSLTPROC
+ifdef XSLTPROC
+
+STYLESHEET=./style.$(LC).xsl
+
+LOCAL := po4a-manpage-$(firstword $(SOURCE))
+$(LOCAL)-LIST := $(SOURCE)
+
+# Install generation hooks
+doc: $($(LOCAL)-LIST)
+veryclean: veryclean/$(LOCAL)
+
+$($(LOCAL)-LIST) :: % : %.xml $(INCLUDES)
+ echo Creating man page $@
+ $(XSLTPROC) -o $@ $(STYLESHEET) $< # why xsltproc doesn't respect the -o flag here???
+ mv -f $(subst .$(LC),,$@) $@
+
+# Clean rule
+.PHONY: veryclean/$(LOCAL)
+veryclean/$(LOCAL):
+ -rm -rf $($(@F)-LIST) apt.ent apt.$(LC).8 \
+ $(addsuffix .xml,$($(@F)-LIST))
+
+HAVE_PO4A=yes
+endif
+
+# take care of the rest
+SOURCE := $(SOURCE) apt.$(LC).8
+INCLUDES :=
+
+ifndef HAVE_PO4A
+# Strip from the source list any man pages we dont have compiled already
+SOURCE := $(wildcard $(SOURCE))
+endif
+
+# Chain to the manpage rule
+ifneq ($(words $(SOURCE)),0)
+include $(MANPAGE_H)
+endif