| 1 |
osamu |
1385 |
# Makefile for a manual in the Debian Documentation Project qref.sgml
|
| 2 |
|
|
# tree. ("Quick Reference" DDP compatible version)
|
| 3 |
|
|
########################################################################
|
| 4 |
|
|
# make [SFILE=qref] \
|
| 5 |
|
|
# [TLANG=en|fr|it|...] [TFILE=qref2] [BOOK=qref] \
|
| 6 |
|
|
# [INDEX=index] [DESTDIR=target] \
|
| 7 |
|
|
# [PHPON=] [publish] \
|
| 8 |
|
|
# [html] [text] [ps] [pdf] [scp] [date] [clean] [tar] [update] ...
|
| 9 |
|
|
########################################################################
|
| 10 |
|
|
# source file name (No language specifier part)
|
| 11 |
|
|
SFILE := qref
|
| 12 |
|
|
# target file name (for html: $(TFILE).html/)
|
| 13 |
|
|
TFILE := qref
|
| 14 |
|
|
# HTML start page
|
| 15 |
|
|
INDEX := index
|
| 16 |
|
|
# default language for build
|
| 17 |
|
|
TLANG := en
|
| 18 |
|
|
# default language for build (LATEX related specification)
|
| 19 |
|
|
LLANG := en
|
| 20 |
|
|
# build flag for SGML parse.
|
| 21 |
|
|
BOOK := qref
|
| 22 |
|
|
# url of this build.
|
| 23 |
|
|
URLHERE := ddp-page
|
| 24 |
|
|
# Where are we publishing to?
|
| 25 |
|
|
# (this can be overriden by a higher level makefile)
|
| 26 |
|
|
#PUBLISHDIR := ../../../public_html/qref.html
|
| 27 |
|
|
PUBLISHDIR := ../public_html
|
| 28 |
|
|
## Set alternative values by command line
|
| 29 |
|
|
# target directory for packaging
|
| 30 |
|
|
|
| 31 |
|
|
# What do we want by default? (ddp)
|
| 32 |
|
|
all: publish
|
| 33 |
|
|
|
| 34 |
|
|
#########################################################################
|
| 35 |
|
|
# programs for SGML output / validation
|
| 36 |
|
|
#DDOC := -d /usr/share/sgml/debiandoc/dtd/sgml/1.0/debiandoc.dcl
|
| 37 |
|
|
DDOC :=
|
| 38 |
|
|
DEBIANDOC2HTML := debiandoc2html $(DDOC) -l $(TLANG) -c
|
| 39 |
|
|
DEBIANDOC2TEXT := debiandoc2text $(DDOC) -l $(TLANG)
|
| 40 |
|
|
DEBIANDOC2PS := debiandoc2ps $(DDOC) -l $(TLANG) -v
|
| 41 |
|
|
DEBIANDOC2PDF := debiandoc2pdf $(DDOC) -l $(TLANG) -v
|
| 42 |
|
|
NSGMLS := nsgmls -ges -wall $(DDOC)
|
| 43 |
|
|
# How to install stuff in publish directory
|
| 44 |
|
|
install_file := install -p -m 664
|
| 45 |
|
|
install_dir := install -d -m 2775
|
| 46 |
|
|
|
| 47 |
|
|
# this for is used for dependencies
|
| 48 |
|
|
DEPENDS := dynamic.ent default.ent custom.ent date.ent \
|
| 49 |
|
|
$(wildcard $(TLANG)/*.sgml) \
|
| 50 |
|
|
$(wildcard examples/*)
|
| 51 |
|
|
#############################################################################
|
| 52 |
|
|
|
| 53 |
|
|
DATE := `date --utc +"%Y.%m.%d-%H:%M"`
|
| 54 |
|
|
|
| 55 |
|
|
date.ent:
|
| 56 |
|
|
: > $@ # clear the file
|
| 57 |
|
|
@echo "<!entity date \"$(DATE)\">" >> $@
|
| 58 |
|
|
|
| 59 |
|
|
# generate entities which are dynamically defined by the settings of this
|
| 60 |
|
|
# build run, generally set in the top-level config file (alway make)
|
| 61 |
|
|
dynamic.ent::
|
| 62 |
|
|
: > $@ # clear the file
|
| 63 |
|
|
@echo "<!entity language \"$(TLANG)\">" >> $@
|
| 64 |
|
|
@echo "<!entity % lang-$(TLANG) \"INCLUDE\">" >> $@
|
| 65 |
|
|
@echo "<!entity booklet \"$(BOOK)\">" >> $@
|
| 66 |
|
|
@echo "<!entity % $(BOOK) \"INCLUDE\">" >> $@
|
| 67 |
|
|
@echo "<!entity % $(URLHERE) \"INCLUDE\">" >> $@
|
| 68 |
|
|
|
| 69 |
|
|
# Create starting SGML for each language from template
|
| 70 |
|
|
# Actual contents are in language segrigated subdirectory
|
| 71 |
|
|
# generic rules for all the languages to each language
|
| 72 |
|
|
$(TFILE).$(TLANG).sgml: $(SFILE).sgml
|
| 73 |
|
|
sed -e "s/@@@@/$(TLANG)/g" $< > $@
|
| 74 |
|
|
|
| 75 |
|
|
# this is for php driven sf.net page
|
| 76 |
|
|
.PHONY: web
|
| 77 |
|
|
web: $(TFILE).html/$(INDEX).$(TLANG).html $(DEPENDS)
|
| 78 |
|
|
$(TFILE).html/$(INDEX).$(TLANG).html: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 79 |
|
|
$(DEBIANDOC2HTML) -t $(INDEX) -b $(TFILE) $< 2>_html-web.$(TLANG).err
|
| 80 |
|
|
|
| 81 |
|
|
# publish for ddp
|
| 82 |
|
|
.PHONY: publish
|
| 83 |
|
|
publish: webs
|
| 84 |
|
|
# fail if there is no PUBLISHDIR
|
| 85 |
|
|
[ -d $(PUBLISHDIR) ] || exit 1
|
| 86 |
|
|
rm -f $(PUBLISHDIR)/$(TFILE)/*.html
|
| 87 |
|
|
$(install_dir) $(PUBLISHDIR)/$(TFILE)
|
| 88 |
|
|
$(install_file) --preserve-timestamps \
|
| 89 |
|
|
$(TFILE).html/*.html $(PUBLISHDIR)/$(TFILE)/
|
| 90 |
|
|
|
| 91 |
|
|
# web page (auto-select language)
|
| 92 |
|
|
webs: date.ent
|
| 93 |
|
|
make TLANG=en LLANG=en TFILE=$(TFILE) SFILE=$(SFILE) web
|
| 94 |
|
|
make TLANG=fr LLANG=fr TFILE=$(TFILE) SFILE=$(SFILE) web
|
| 95 |
|
|
make TLANG=it LLANG=it TFILE=$(TFILE) SFILE=$(SFILE) web
|
| 96 |
|
|
# copy accompanying scripts from archive.
|
| 97 |
|
|
cp -ap examples/ $(TFILE).html/
|
| 98 |
|
|
# make sure link is not there first
|
| 99 |
|
|
-rm -f $(TFILE)
|
| 100 |
|
|
ln -sf $(TFILE).html $(TFILE)
|
| 101 |
|
|
|
| 102 |
|
|
.PHONY: update
|
| 103 |
|
|
update: sourceforge
|
| 104 |
|
|
|
| 105 |
|
|
.PHONY: sourceforge
|
| 106 |
|
|
sourceforge: webs
|
| 107 |
|
|
make TLANG=en LLANG=en TFILE=$(TFILE) SFILE=$(SFILE) text
|
| 108 |
|
|
make TLANG=fr LLANG=fr TFILE=$(TFILE) SFILE=$(SFILE) text
|
| 109 |
|
|
make TLANG=it LLANG=it TFILE=$(TFILE) SFILE=$(SFILE) text
|
| 110 |
|
|
make tar
|
| 111 |
|
|
# SF.NET server requires extention to be php
|
| 112 |
|
|
cp -f index.php $(TFILE).html/index.php
|
| 113 |
|
|
|
| 114 |
|
|
# this is alternative html build for debian package
|
| 115 |
|
|
# (Separate directory for language)
|
| 116 |
|
|
.PHONY: html
|
| 117 |
|
|
html: $(TLANG)/$(INDEX).html
|
| 118 |
|
|
$(TLANG)/$(INDEX).$(TLANG).html: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 119 |
|
|
$(DEBIANDOC2HTML) -t $(INDEX) -b $(TLANG) $< 2>_html.$(TLANG).err
|
| 120 |
|
|
cd $(TLANG).html ; ln -sf $(INDEX).$(TLANG).html $(INDEX).html
|
| 121 |
|
|
|
| 122 |
|
|
.PHONY: text
|
| 123 |
|
|
text: $(TFILE).$(TLANG).txt
|
| 124 |
|
|
$(TFILE).$(TLANG).txt: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 125 |
|
|
# $(DEBIANDOC2TEXT) $< 2>_text.err
|
| 126 |
|
|
$(DEBIANDOC2TEXT) -O $< > $(TFILE).$(TLANG).txt 2>_text.$(TLANG).err
|
| 127 |
|
|
|
| 128 |
|
|
.PHONY: tar
|
| 129 |
|
|
tar:
|
| 130 |
|
|
tar cvzf $(TFILE).tar.gz *.ent $(SFILE).sgml $(SFILE).??.sgml \
|
| 131 |
|
|
./??/*.sgml ./examples/* Makefile index.php
|
| 132 |
|
|
|
| 133 |
|
|
.PHONY: ps
|
| 134 |
|
|
ps: $(TFILE).$(TLANG).ps
|
| 135 |
|
|
$(TFILE).$(TLANG).ps: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 136 |
|
|
# $(DEBIANDOC2PS) -O $< > $(TFILE).ps # trouble ??ace condition?
|
| 137 |
|
|
### if debiandoc* confuses when output file has long extention, use below.
|
| 138 |
|
|
# -$(DEBIANDOC2PS) -b $(TFILEA).$(LINGUA) $<
|
| 139 |
|
|
# or
|
| 140 |
|
|
$(DEBIANDOC2PS) -O $< > $(TFILE).ps 2>_ps.$(TLANG).err
|
| 141 |
|
|
mv $(TFILE).ps $(TFILE).$(TLANG).ps
|
| 142 |
|
|
|
| 143 |
|
|
.PHONY: pdf
|
| 144 |
|
|
pdf: $(TFILE).$(TLANG).pdf
|
| 145 |
|
|
$(TFILE).$(TLANG).pdf: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 146 |
|
|
# $(DEBIANDOC2PDF) -O $< > $@ # trouble ?? race condition?
|
| 147 |
|
|
### if debiandoc* confuses when output file has long extention, use below.
|
| 148 |
|
|
# -$(DEBIANDOC2PDF) -b $(TFILEA).$(LINGUA) $<
|
| 149 |
|
|
# or
|
| 150 |
|
|
$(DEBIANDOC2PDF) -O $< > $(basename $(basename $@)).pdf 2>_pdf.$(TLANG).err
|
| 151 |
|
|
mv $(basename $(basename $@)).pdf $@
|
| 152 |
|
|
|
| 153 |
|
|
# remote update source forge using woody box
|
| 154 |
|
|
scp: scpps scppdf
|
| 155 |
|
|
|
| 156 |
|
|
scpps: ps
|
| 157 |
|
|
scp $(TFILE).$(TLANG).ps $$USER@shell.sf.net:/home/groups/q/qr/qref/htdocs/$(TFILE).$(TLANG).ps
|
| 158 |
|
|
|
| 159 |
|
|
#scppdf: pdf
|
| 160 |
|
|
scppdf: pdf
|
| 161 |
|
|
scp $(TFILE).$(TLANG).pdf $$USER@shell.sf.net:/home/groups/q/qr/qref/htdocs/$(TFILE).$(TLANG).pdf
|
| 162 |
|
|
|
| 163 |
|
|
|
| 164 |
|
|
# ensure our SGML is valid for all TLANG
|
| 165 |
|
|
.PHONY: validate
|
| 166 |
|
|
validate:
|
| 167 |
|
|
make TLANG=en TFILE=qref SFILE=qref lint
|
| 168 |
|
|
make TLANG=fr TFILE=qref SFILE=qref lint
|
| 169 |
|
|
make TLANG=it TFILE=qref SFILE=qref lint
|
| 170 |
|
|
|
| 171 |
|
|
# ensure our SGML is valid for a language
|
| 172 |
|
|
.PHONY: lint
|
| 173 |
|
|
lint: $(TFILE).$(TLANG).sgml $(DEPENDS)
|
| 174 |
|
|
# @echo "Verifying SGML validity for language $(LINGUA):"
|
| 175 |
|
|
$(NSGMLS) $(TFILE).$(TLANG).sgml
|
| 176 |
|
|
# @echo "Checking for deprecated entity references:"
|
| 177 |
|
|
# nsgmls -oentity /usr/lib/sgml/declaration/debiandoc.decl \
|
| 178 |
|
|
# $(TFILE).$(TLANG).sgml 2>/dev/null | sed -e '/^IMSG/!d' -e 's/^I/ /'
|
| 179 |
|
|
|
| 180 |
|
|
.PHONY: scps
|
| 181 |
|
|
scps:
|
| 182 |
|
|
make TLANG=en LLANG=en TFILE=$(TFILE) SFILE=$(SFILE) scp
|
| 183 |
|
|
make TLANG=fr LLANG=fr TFILE=$(TFILE) SFILE=$(SFILE) scp
|
| 184 |
|
|
make TLANG=it LLANG=en TFILE=$(TFILE) SFILE=$(SFILE) scp
|
| 185 |
|
|
|
| 186 |
|
|
.PHONY: tar-web
|
| 187 |
|
|
tar-web: webs
|
| 188 |
|
|
cd $(TFILE).html ; tar cvzf ../$(TFILE)-web.tar.gz .
|
| 189 |
|
|
|
| 190 |
|
|
.PHONY: tar0
|
| 191 |
|
|
tar0:
|
| 192 |
|
|
-tar cvzf ../$(TFILE).tar.gz .
|
| 193 |
|
|
|
| 194 |
|
|
.PHONY: clean-junk
|
| 195 |
|
|
clean-junk:
|
| 196 |
|
|
-rm -f *.log *.aux *.bak *.out *.sasp* *.toc *.tex *.dvi
|
| 197 |
|
|
-rm -f date.ent dynamic.ent *.??.sgml *.err
|
| 198 |
|
|
-rm -f *~ *.orig \#* *.tar.gz
|
| 199 |
|
|
|
| 200 |
|
|
.PHONY: clean
|
| 201 |
|
|
clean: clean-junk
|
| 202 |
|
|
-rm -f *.txt *.pdf *.ps
|
| 203 |
|
|
-rm -rf en.html fr.html it.html
|
| 204 |
|
|
-rm -rf qref.html
|
| 205 |
|
|
-rm -rf qref
|
| 206 |
|
|
|
| 207 |
|
|
.PHONY: distclean
|
| 208 |
|
|
distclean: clean
|