summaryrefslogtreecommitdiff
path: root/buildlib
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2009-09-04 20:54:48 +0200
committerMichael Vogt <mvo@debian.org>2009-09-04 20:54:48 +0200
commit2d4aa48a2e3e493780a797b828a04066ef1994fa (patch)
treeddbc618f8e9a52a612f70860eb23884a001a064c /buildlib
parent85b6d40dc0d41cc196f05e921260a592fe0ffd94 (diff)
parentb43af876ed0901eabfb7fe93276eb9272cacf22d (diff)
merged po4a change from David, many thanks
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