1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
#########################################################################
# Makefile.common
#
# This file, to be included from every document's local Makefile, provides
# the basic targets used by the Fedora Docs Project:
# all -- Default target, builds HTML document only
# ${DOCNAME}/index.html -- Builds HTML version of document
# html -- See "${DOCNAME}/index.html"
# html-nochunks -- See "${DOCNAME}.html"; single HTML file
# ${DOCNAME}.tar.gz -- Packages HTML document into a tar archive
# tarball -- See "${DOCNAME}.tar.gz"
# clean -- Deletes all generated files and directories
# distclean -- See "clean"
# ${DOCNAME}.pdf -- Builds PDF version of document
# pdf -- See "${DOCNAME}.pdf"
#########################################################################
# PDF generation is still fragile and probably won't work on your document
#########################################################################
# Note: all targets within this Makefile.common must be defined as
# double-colon (::) targets so that additional steps can be added by
# providing additional rules, also marked with double-colons, in the
# document Makefile.
#########################################################################
# Supply default values for the boilerplate files _unless_ the user has
# provided their own values.
ifeq (${XSLPDF},)
XSLPDF = ../docs-common/xsl/main-pdf.xsl
endif
ifeq (${XSLHTML},)
XSLHTML = ../docs-common/xsl/main-html.xsl
endif
ifeq (${XSHTMLNOCHUNKS},)
XSLHTMLNOCHUNKS = ../docs-common/xsl/main-html-nochunks.xsl
endif
#########################################################################
# PUT NO TARGETS BEFORE THIS ONE, not even in your base Makefile
# In a properly-constructed Makefile, this will be the default target
TARGETS=all tarball pdf html html-nochunks clean distclean
.PHONY: ${TARGETS}
all:: html html-nochunks tarball # pdf
${TARGETS}::
#########################################################################
# For each LANG in LANGUAGES, generate a target and rule similar to:
# mydoc-en/index.html:: mydoc-en.xml ${XMLEXTRAFILES}-en
# LANG=en.UTF-8 xmlto html -x $(XSLHTML) -o mydoc-en mydoc-en.xml
# mkdir -p mydoc-en/stylesheet-images
# cp ../docs-common/stylesheet-images/*.png mydoc-en/stylesheet-images/
# cp ../docs-common/css/fedora.css mydoc-en/
#
define HTML_template
${DOCBASE}-$(1)/index.html:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1))
LANG=$(1).UTF-8 xmlto html -x $(XSLHTML) -o $(DOCBASE)-$(1) $(DOCBASE)-$(1).xml
mkdir -p $(DOCBASE)-$(1)/stylesheet-images/
cp ../docs-common/stylesheet-images/*.png $(DOCBASE)-$(1)/stylesheet-images
cp ../docs-common/css/fedora.css $$(DOCBASE)-$(1)/
endef
#
html:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG)/index.html)
$(foreach LANG,${LANGUAGES},$(eval $(call HTML_template,${LANG})))
#
#########################################################################
# For each language in ${LANGUAGES}, generate a single HTML file
define HTMLNOCHUNK_template
${DOCBASE}-$(1).html:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1))
xmlto html-nochunks -x $(XSLHTMLNOCHUNKS) $(DOCBASE)-$(1).xml
mkdir -p stylesheet-images/
cp ../docs-common/stylesheet-images/*.png stylesheet-images/
cp ../docs-common/css/fedora.css .
endef
#
html-nochunks:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).html)
$(foreach LANG,${LANGUAGES},$(eval $(call HTMLNOCHUNK_template,${LANG})))
#
#########################################################################
# For each language in ${LANGUAGES}, build a tarball of the HTML files.
#
define TAR_template
${DOCBASE}-$(1).tar.gz:: ${DOCBASE}-$(1)/index.html
tar -zc --exclude '*.eps' -f ${DOCBASE}-$(1).tar.gz ${DOCBASE}-$(1)
endef
#
tarball:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).tar.gz)
$(foreach LANG,${LANGUAGES},$(eval $(call TAR_template,${LANG})))
#
#########################################################################
# For each language in ${LANGUAGES}, generate an Adobe Portable Document
# Format (PDF) file.
define PDF_template
${DOCBASE}-$(1).pdf:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1))
xmlto pdf -x $(XSLPDF) $(DOCBASE)-$(1).xml
endef
#
pdf:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).pdf)
$(foreach LANG,${LANGUAGES},$(eval $(call PDF_template,${LANG})))
#
#########################################################################
# For each language in ${LANGUAGES}, clean up!
define CLEAN_template
${DOCBASE}-$(1)-clean::
${RM} -r ${DOCBASE}-$(1)
${RM} -r ${DOCBASE}-$(1).html stylesheet-images fedora.css
${RM} -r ${DOCBASE}-$(1).pdf
${RM} -r ${DOCBASE}-$(1).tar.gz
endef
#
distclean clean:: $(foreach LANG,${LANGUAGES},${DOCBASE}-${LANG}-clean)
$(foreach LANG,${LANGUAGES},$(eval $(call CLEAN_template,${LANG})))
#
#########################################################################
# End of Makefile.common
#########################################################################
|