ede/build/Doc.jam
2008-09-04 10:16:55 +00:00

110 lines
2.6 KiB
Plaintext

#
# $Id$
#
# Part of Equinox Desktop Environment (EDE).
# Copyright (c) 2000-2007 EDE Authors.
#
# This program is licensed under terms of the
# GNU General Public License version 2 or newer.
# See COPYING for details.
ASCIIDOC = "$(TOP)/doc/asciidoc/asciidoc.py" ;
DOCDIR = "$(TOP)/doc" ;
MANUALDIR = "$(DOCDIR)/manual" ;
# Must be relative to "doc" dir
MANUALICONS = "images" ;
# EdeManual [file] : [optinal-images] : "make-toc" ;
# Creates [file].html via asciidoc. If [optinal-images] are
# given, they will be copied in $(DOCICONS).
rule EdeManual
{
if ! $(ASCIIDOC) {
Echo "ASCIIDOC not defined; documentation will not be built !" ;
return ;
}
# see if we have tidy installed
local tidy_paths = [ Glob $(PATH) : tidy ] ;
local html_ext = ".html" ;
local path = $(SEARCH_SOURCE) ;
local i source target ;
for i in $(<) {
source = [ FFileName $(path) $(i) ] ;
# strip directory part so we can prepend
# another one (used as output directory)
target = $(source:D=) ;
# set output extension (asciidoc does not do that)
# and grist to prevent collision
target = $(target:S=$(html_ext):G="$(target)-html") ;
LocalDepends $(target) : $(source) ;
LocalDepends all : $(target) ;
LocalDepends doc : $(target) ;
# set output to $(MANUALDIR) directory
MakeLocate $(target) : $(MANUALDIR) ;
# a hack to create Table of Content
# seems that this is the only way asciidoc can do it
if $(3) = "make-toc" {
TOC_FLAG on $(target) = "-a toc" ;
}
if ! $(tidy_paths) {
AsciiDoc1 $(target) : $(source) ;
} else {
TIDY on $(target) = "tidy" ;
AsciiDoc2 $(target) : $(source) ;
}
LocalClean clean : $(target) ;
}
# copy images, if given
local imgdir = [ FDirName $(MANUALDIR) $(MANUALICONS) ] ;
if $(>) {
for i in $(>) {
source = [ FFileName $(path) $(i) ] ;
target = $(source:D=$(imgdir)) ;
MkDir $(imgdir) ;
LocalDepends $(target) : $(imgdir) ;
LocalDepends $(target) : $(source) ;
LocalDepends all : $(target) ;
LocalDepends doc : $(target) ;
Copy $(target) : $(source) ;
LocalClean clean : $(target) ;
}
}
}
# EdeManualWithToc [file] : [optinal-images] ;
# The same as EdeManual, but it will build Table of Contents
rule EdeManualWithToc
{
EdeManual $(1) : $(2) : "make-toc" ;
}
actions AsciiDoc1
{
$(ASCIIDOC) $(TOC_FLAG) -a icons -a iconsdir=$(MANUALICONS) -a edeversion="EDE 2.0" -o $(<) $(>)
}
# version with tidy (utility to clean HTML/XHTML code)
actions AsciiDoc2
{
$(ASCIIDOC) $(TOC_FLAG) -a icons -a iconsdir=$(MANUALICONS) -a edeversion="EDE 2.0" -o "$(<).tmp" $(>)
$(TIDY) -q -i "$(<).tmp" > "$(<)"
$(RM) "$(<).tmp"
}
NotFile doc ;
Always doc ;