2007-09-19 20:21:29 +00:00
|
|
|
# $Id$
|
2007-12-19 19:54:42 +00:00
|
|
|
|
2007-09-19 20:21:29 +00:00
|
|
|
# Makefile to generate the macports html guide and the man pages.
|
2008-07-16 09:57:27 +00:00
|
|
|
# The ports 'docbook-xsl', 'docbook-xml' and 'libxslt' have to be installed.
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# If your macports isn't installed in /opt/local you have to change PREFIX
|
|
|
|
|
# here.
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
|
|
|
|
|
# Prefix of the macports installation.
|
2007-12-19 19:54:42 +00:00
|
|
|
PREFIX = /opt/local
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# Command abstraction variables.
|
2007-12-19 19:54:42 +00:00
|
|
|
MKDIR = /bin/mkdir
|
|
|
|
|
CP = /bin/cp
|
|
|
|
|
RM = /bin/rm
|
2008-07-20 16:12:27 +00:00
|
|
|
LN = /bin/ln
|
2007-12-19 19:54:42 +00:00
|
|
|
SED = /usr/bin/sed
|
2008-07-16 13:09:17 +00:00
|
|
|
TCLSH = /usr/bin/tclsh
|
2007-12-18 21:55:06 +00:00
|
|
|
XSLTPROC = $(PREFIX)/bin/xsltproc
|
2008-01-14 21:26:33 +00:00
|
|
|
XMLLINT = $(PREFIX)/bin/xmllint
|
2007-12-18 21:55:06 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# Data directories.
|
2007-12-19 19:54:42 +00:00
|
|
|
GUIDE = guide
|
|
|
|
|
MAN = man
|
2008-07-16 09:57:27 +00:00
|
|
|
# Source directories.
|
2007-12-19 19:54:42 +00:00
|
|
|
GUIDE-SRC = $(GUIDE)/xml
|
|
|
|
|
MAN-SRC = $(MAN)/xml
|
2008-07-16 09:57:27 +00:00
|
|
|
# Result directories.
|
2008-07-16 13:09:17 +00:00
|
|
|
GUIDE-RESULT = $(GUIDE)/html
|
|
|
|
|
GUIDE-RESULT-CHUNK = $(GUIDE-RESULT)/chunked
|
|
|
|
|
MAN-RESULT = $(MAN)/man/
|
2008-07-16 09:57:27 +00:00
|
|
|
# Man temporary directory.
|
2007-12-19 19:54:42 +00:00
|
|
|
MAN-TMP = $(MAN)/tmp
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# Path to the docbook xsl files.
|
2008-07-16 13:09:17 +00:00
|
|
|
DOCBOOK = $(PREFIX)/share/xsl/docbook-xsl
|
2008-07-20 16:12:27 +00:00
|
|
|
GUIDE-XSL = $(GUIDE)/resources/single-page.xsl
|
|
|
|
|
GUIDE-XSL-CHUNK = $(GUIDE)/resources/chunk.xsl
|
2008-07-16 13:09:17 +00:00
|
|
|
MAN-XSL = $(MAN)/resources/macports.xsl
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# Docbook html stylesheet for the guide.
|
2007-12-19 19:54:42 +00:00
|
|
|
STYLESHEET = docbook.css
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 10:22:38 +00:00
|
|
|
.PHONY: all guide man clean validate
|
2007-09-19 20:21:29 +00:00
|
|
|
|
|
|
|
|
all: guide man
|
|
|
|
|
|
2008-01-13 23:27:07 +00:00
|
|
|
# Generate the html guide using DocBook from the xml sources in $(GUIDE-SRC).
|
2007-09-19 20:21:29 +00:00
|
|
|
guide:
|
2007-12-18 21:55:06 +00:00
|
|
|
$(MKDIR) -p $(GUIDE-RESULT)
|
|
|
|
|
$(CP) $(GUIDE)/resources/$(STYLESHEET) $(GUIDE-RESULT)/$(STYLESHEET)
|
|
|
|
|
$(CP) $(GUIDE)/resources/images/* $(GUIDE-RESULT)/
|
2008-07-20 16:12:27 +00:00
|
|
|
$(LN) -sfh $(DOCBOOK) $(GUIDE)/resources/xsl
|
|
|
|
|
$(XSLTPROC) --xinclude \
|
2008-07-16 13:09:17 +00:00
|
|
|
--output $(GUIDE-RESULT)/index.html \
|
2007-11-24 11:51:47 +00:00
|
|
|
$(GUIDE-XSL) $(GUIDE-SRC)/guide.xml
|
2008-03-20 13:32:48 +00:00
|
|
|
# Convert all sections (h1-h9) to a link so it's easy to link to them.
|
|
|
|
|
# If someone knows a better way to do this please change it.
|
|
|
|
|
$(SED) -i "" -E \
|
|
|
|
|
's|(<h[0-9] [^>]*><a id="([^"]*)"></a>)([^<]*)(</h[0-9]>)|\1<a href="#\2">\3</a>\4|g' \
|
|
|
|
|
$(GUIDE-RESULT)/index.html
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 13:09:17 +00:00
|
|
|
# Generate the chunked html guide with one section per file.
|
|
|
|
|
guide-chunked:
|
|
|
|
|
$(MKDIR) -p $(GUIDE-RESULT-CHUNK)
|
|
|
|
|
$(CP) $(GUIDE)/resources/$(STYLESHEET) $(GUIDE-RESULT-CHUNK)/$(STYLESHEET)
|
|
|
|
|
$(CP) $(GUIDE)/resources/images/* $(GUIDE-RESULT-CHUNK)/
|
2008-07-20 16:12:27 +00:00
|
|
|
$(LN) -sfh $(DOCBOOK) $(GUIDE)/resources/xsl
|
|
|
|
|
$(XSLTPROC) --xinclude \
|
2008-07-16 13:09:17 +00:00
|
|
|
--output $(GUIDE-RESULT-CHUNK)/index.html \
|
|
|
|
|
$(GUIDE-XSL-CHUNK) $(GUIDE-SRC)/guide.xml
|
|
|
|
|
# Convert all sections (h1-h9) to a link so it's easy to link to them.
|
|
|
|
|
# If someone knows a better way to do this please change it.
|
|
|
|
|
$(SED) -i "" -E \
|
|
|
|
|
's|(<h[0-9] [^>]*><a id="([^"]*)"></a>)([^<]*)(</h[0-9]>)|\1<a href="#\2">\3</a>\4|g' \
|
|
|
|
|
$(GUIDE-RESULT-CHUNK)/*.html
|
|
|
|
|
# Add the table of contents to every junked html file.
|
|
|
|
|
# If someone knows a better way to do this please change it.
|
|
|
|
|
$(TCLSH) toc-for-chunked.tcl $(GUIDE-RESULT-CHUNK)
|
|
|
|
|
|
|
|
|
|
|
2008-01-13 23:27:07 +00:00
|
|
|
# Generate the man pages using DocBook from the xml source in $(MAN-SRC).
|
2008-07-16 15:51:17 +00:00
|
|
|
# The portfile-*.xml and portgroup-*.xml files in $(GUIDE-SRC) are copied to
|
|
|
|
|
# $(MAN-TMP) and modified (section -> refsection) so they can be used as man
|
|
|
|
|
# xml source files and then xincluded in the real man xml files in $(MAN-SRC).
|
2008-07-04 00:37:00 +00:00
|
|
|
man: $(MAN-XSL)
|
2007-12-18 21:55:06 +00:00
|
|
|
$(MKDIR) -p $(MAN-RESULT)
|
|
|
|
|
$(MKDIR) -p $(MAN-TMP)
|
|
|
|
|
$(CP) $(GUIDE-SRC)/portfile-*.xml $(MAN-TMP)
|
2008-02-16 20:17:01 +00:00
|
|
|
$(CP) $(GUIDE-SRC)/portgroup-*.xml $(MAN-TMP)
|
2007-12-18 21:55:06 +00:00
|
|
|
$(SED) -i "" 's|<section|<refsection|g' $(MAN-TMP)/*
|
|
|
|
|
$(SED) -i "" 's|</section>|</refsection>|g' $(MAN-TMP)/*
|
|
|
|
|
$(XSLTPROC) --xinclude --output $(MAN-RESULT) $(MAN-XSL) \
|
2007-11-24 12:14:10 +00:00
|
|
|
$(MAN-SRC)/port.1.xml \
|
2007-11-24 11:51:47 +00:00
|
|
|
$(MAN-SRC)/portfile.7.xml \
|
|
|
|
|
$(MAN-SRC)/portgroup.7.xml \
|
|
|
|
|
$(MAN-SRC)/porthier.7.xml
|
2007-12-18 21:55:06 +00:00
|
|
|
$(RM) -r $(MAN-TMP)
|
2007-09-19 20:21:29 +00:00
|
|
|
|
2008-07-16 09:57:27 +00:00
|
|
|
# Create XSL from template for man pages.
|
2008-07-04 00:37:00 +00:00
|
|
|
$(MAN-XSL):
|
|
|
|
|
$(SED) 's:@PREFIX@:$(PREFIX):' $@.in > $@
|
|
|
|
|
|
2008-01-13 23:27:07 +00:00
|
|
|
# Remove all temporary files generated by guide: and man:.
|
2007-09-19 20:21:29 +00:00
|
|
|
clean:
|
2008-07-20 16:12:27 +00:00
|
|
|
$(RM) -rf $(GUIDE)/resources/xsl
|
2007-12-18 21:55:06 +00:00
|
|
|
$(RM) -rf $(GUIDE-RESULT)
|
|
|
|
|
$(RM) -rf $(MAN-RESULT)
|
|
|
|
|
$(RM) -rf $(MAN-TMP)
|
2008-07-04 00:37:00 +00:00
|
|
|
$(RM) -rf $(MAN-XSL)
|
2008-01-14 21:26:33 +00:00
|
|
|
$(RM) -f guide.tmp.xml
|
|
|
|
|
|
|
|
|
|
# Validate the xml files for the guide.
|
|
|
|
|
# These two steps are necessary as otherwise xmllint complains about missing
|
|
|
|
|
# ids.
|
|
|
|
|
validate:
|
|
|
|
|
$(XMLLINT) --xinclude $(GUIDE-SRC)/guide.xml > guide.tmp.xml
|
|
|
|
|
$(XMLLINT) --loaddtd --valid --noout guide.tmp.xml
|