summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildlib/defaults.mak1
-rw-r--r--buildlib/environment.mak.in7
-rw-r--r--buildlib/po4a_manpage.mak54
-rw-r--r--configure.in6
-rw-r--r--debian/changelog2
-rw-r--r--doc/ja/makefile70
-rw-r--r--doc/makefile28
7 files changed, 91 insertions, 77 deletions
diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak
index 8c57da05b..5373ee5cf 100644
--- a/buildlib/defaults.mak
+++ b/buildlib/defaults.mak
@@ -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
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/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
diff --git a/configure.in b/configure.in
index 0dd1beb1a..eb3ec0426 100644
--- a/configure.in
+++ b/configure.in
@@ -190,6 +190,12 @@ AC_PATH_PROG(DOCBOOK2MAN,docbook2man)
dnl Check for the XML tools needed to build man pages
AC_PATH_PROG(XMLTO,xmlto)
+dnl Check for the XSLTProc tool needed to build man pages together with po4a
+AC_PATH_PROG(XSLTPROC,xsltproc)
+
+dnl Check for the po4a tool needed to build man pages
+AC_PATH_PROG(PO4A,po4a)
+
dnl Check for graphviz
AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
AC_PATH_PROG([DOT], [dot], [])
diff --git a/debian/changelog b/debian/changelog
index f978eb367..c3f9881ac 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -39,6 +39,8 @@ apt (0.7.22.3) unstable; urgency=low
* doc/Doxyfile.in:
- update file with doxygen 1.6.1 (current unstable)
- activate DOT_MULTI_TARGETS, it is default on since doxygen 1.5.9
+ * buildlib/po4a_manpage.mak, doc/makefile, configure:
+ - simplify the makefiles needed for po4a manpages
[ George Danchev ]
* cmdline/apt-cache.cc:
diff --git a/doc/ja/makefile b/doc/ja/makefile
index da566cc96..f44bb1c0f 100644
--- a/doc/ja/makefile
+++ b/doc/ja/makefile
@@ -5,71 +5,7 @@ SUBDIR=doc/ja
# Bring in the default rules
include ../../buildlib/defaults.mak
-# Do not use XMLTO, build the manpages directly with XSLTPROC
-XSLTPROC=/usr/bin/xsltproc
-STYLESHEET=./style.ja.xsl
-
-
-# Man pages
-SOURCE = apt-cache.ja.8 apt-get.ja.8 apt-cdrom.ja.8 apt.conf.ja.5 \
- sources.list.ja.5 apt-config.ja.8 apt-sortpkgs.ja.1 \
- apt-ftparchive.ja.1 apt_preferences.ja.5 apt-extracttemplates.ja.1 \
- apt-key.ja.8 apt-secure.ja.8 apt-mark.ja.8
-
-INCLUDES = apt.ent
-
-doc: $(SOURCE)
-
-clean: clean-manpages
-
-clean-manpages:
- rm -f $(SOURCE) \
- $(patsubst %.ja.1,%.1,$(SOURCE)) \
- $(patsubst %.ja.5,%.5,$(SOURCE)) \
- $(patsubst %.ja.8,%.8,$(SOURCE))
-
-$(SOURCE) :: % : %.xml $(INCLUDES)
- echo Creating man page $@
- $(XSLTPROC) -o $@ $(STYLESHEET) $<
-
-apt-cache.ja.8:: apt-cache.8
- cp $< $@
-
-apt-get.ja.8:: apt-get.8
- cp $< $@
-
-apt-cdrom.ja.8:: apt-cdrom.8
- cp $< $@
-
-apt.conf.ja.5:: apt.conf.5
- cp $< $@
-
-apt-config.ja.8:: apt-config.8
- cp $< $@
-
-sources.list.ja.5:: sources.list.5
- cp $< $@
-
-apt-sortpkgs.ja.1:: apt-sortpkgs.1
- cp $< $@
-
-apt-ftparchive.ja.1:: apt-ftparchive.1
- cp $< $@
-
-apt_preferences.ja.5:: apt_preferences.5
- cp $< $@
-
-apt-extracttemplates.ja.1:: apt-extracttemplates.1
- cp $< $@
-
-apt-key.ja.8:: apt-key.8
- cp $< $@
-
-apt-secure.ja.8:: apt-secure.8
- cp $< $@
-
-apt-mark.ja.8:: apt-mark.8
- cp $< $@
-
-
+# Language Code of this translation
+LC=ja
+include $(PO4A_MANPAGE_H)
diff --git a/doc/makefile b/doc/makefile
index e12de7228..2a2663fb3 100644
--- a/doc/makefile
+++ b/doc/makefile
@@ -1,7 +1,7 @@
# -*- make -*-
BASE=..
SUBDIR=doc
-SUBDIRS= fr ja pl pt_BR es
+SUBDIRS= $(dir $(wildcard */makefile))
# Bring in the default rules
include ../buildlib/defaults.mak
@@ -26,27 +26,39 @@ TARGET = binary
include $(COPY_H)
#.PHONY: headers library clean veryclean all binary program doc doc.pt_BR doc.fr
-doc: po4a
+doc:
for dir in $(SUBDIRS); do\
$(MAKE) -C $$dir $@; \
done
-.PHONY: update-po po4a
-update-po:
- po4a --previous --no-backups --force --no-translations po4a.conf
-
-clean: po4a-clean clean-subdirs
+clean: clean-subdirs
+veryclean: veryclean-subdirs
clean-subdirs:
for dir in $(SUBDIRS); do\
- $(MAKE) -C $$dir $@; \
+ $(MAKE) -C $$dir clean; \
+ done
+
+veryclean-subdirs:
+ for dir in $(SUBDIRS); do\
+ $(MAKE) -C $$dir veryclean; \
done
+ifdef PO4A
+doc: po4a
+
+clean: po4a-clean
+
+.PHONY: update-po po4a
+update-po:
+ po4a --previous --no-backups --force --no-translations po4a.conf
+
po4a-clean:
po4a --previous --rm-backups --rm-translations po4a.conf
po4a:
po4a --previous --no-backups po4a.conf
+endif
ifdef DOXYGEN
DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) )