diff options
Diffstat (limited to 'doc/Conscript')
-rw-r--r-- | doc/Conscript | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/doc/Conscript b/doc/Conscript deleted file mode 100644 index 9eef3e6..0000000 --- a/doc/Conscript +++ /dev/null @@ -1,254 +0,0 @@ -# -# Conscript file for building SCons documentation. -# - -# -# Copyright (c) 2001, 2002 Steven Knight -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# - -Import qw( env ); - -# -# -# -$doc_tar_gz = "#build/dist/scons-doc-${\$env->{VERSION}}.tar.gz"; - -# -# We'll only try to build text files (for some documents) -# if lynx is available to do the dump. -# -$fig2dev = cons::whereis('fig2dev'); -$groff = cons::whereis('groff'); -$lynx = cons::whereis('lynx'); -$man2html = cons::whereis('man2html'); -$jw = cons::whereis('jw'); - -if ($jw) { - # - # Always create a version.sgml file containing the version information - # for this run. Ignore it for dependency purposes so we don't - # rebuild all the docs every time just because the date changes. - # - $verfile = SourcePath("version.sgml"); - unlink($verfile); - chmod(0664, $verfile); - open(FILE, ">$verfile") || die "Cannot open '$verfile': $!"; - print FILE <<_EOF_; -<!-- -THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. ---> -<!ENTITY builddate "${\$env->{DATE}}"> -<!ENTITY buildversion "${\$env->{VERSION}}"> -<!ENTITY buildrevision "${\$env->{REVISION}}"> -_EOF_ - close(FILE); - - Ignore("version.sgml"); - - # Find internal dependencies in .sgml files: - # - # <!entity bground SYSTEM "bground.sgml"> - # <graphic fileref="file.jpg"> - # <imagedata fileref="file.jpg"> - # - # This only finds one per line, and assumes that anything - # defined as a SYSTEM entity is, in fact, a file included - # somewhere in the document. - sub scansgml { - my $dir = shift; - my @includes = (); - do { - if (/<!entity\s+(?:%\s+)?(?:\S+)\s+SYSTEM\s+"([^"]*)">/i) { - push(@includes, $1); - } elsif (/<(?:graphic|imagedata)\s+fileref="([^"]*)"\s+format="([^"]*)"/) { - ($file, $format) = ($1, $2); - $file = "$file.$format" if ($file !~ /\.$format$/); - if ($dir && ! File::Spec->file_name_is_absolute($file)) { - $file = "build/doc/$dir/$file"; - } - push(@includes, $file); - } elsif (/<(?:graphic|imagedata)\s+fileref="([^"]*)"/) { - $file = $1; - if ($dir && ! File::Spec->file_name_is_absolute($file)) { - $file = "build/doc/$dir/$file"; - } - push(@includes, $file); - } - } while (<scan::quickscan::SCAN>); - @includes; - } - - # - # Each document will live in its own subdirectory. List them here - # as hash keys, with a hash of the info to control its build. - # - %docs = ( - 'design' => { - 'htmlindex' => 'book1.html', - 'ps' => 1, - 'pdf' => 1, - 'text' => 0, - 'scan' => sub { scansgml("design") }, - }, - 'python10' => { - 'htmlindex' => 't1.html', - 'html' => 1, - 'ps' => 1, - 'pdf' => 0, - 'text' => 0, - 'graphics' => [qw( arch builder job-task node scanner sig )], - 'scan' => sub { scansgml("python10") }, - }, - 'user' => { - 'htmlindex' => 'book1.html', - 'html' => 1, - 'ps' => 1, - 'pdf' => 1, - 'text' => 0, - 'scan' => sub { scansgml("user") }, - }, - ); - - # - # We have to tell Cons to QuickScan the top-level SGML files which - # get included by the document SGML files in the subdirectories. - # - @included_sgml = qw( - scons.mod - copyright.sgml - ); - - foreach $sgml (@included_sgml) { - $env->QuickScan(\&scansgml, $sgml); - } - - # - # For each document, build the document itself in HTML, Postscript, - # and PDF formats. - # - foreach $doc (keys %docs) { - my $main = "$doc/main.sgml"; - my $out = "main.out"; - - my $htmldir = "HTML/scons-$doc"; - my $htmlindex = "$htmldir/" . $docs{$doc}->{'htmlindex'}; - my $html = "HTML/scons-$doc.html"; - my $ps = "PS/scons-$doc.ps"; - my $pdf = "PDF/scons-$doc.pdf"; - my $text = "TEXT/scons-$doc.txt"; - - if ($docs{$doc}->{'scan'}) { - $env->QuickScan($docs{$doc}->{'scan'}, $main); - } - - if ($docs{$doc}->{'html'}) { - $env->Command($htmlindex, $main, - qq(rm -f %>:d/*.html - jw -b html -o %>:d %< - mv -v %>:d/index.html %> || true - )); - - $env->Command($html, $main, qq(jw -u -b html %< > %>)); - - push(@tar_deps, $html, $htmlindex); - push(@tar_list, $html, $htmldir); - if ($fig2dev) { - for $g (@{$docs{$doc}->{'graphics'}}) { - $fig = "$doc/$g.fig"; - $jpg = "$htmldir/$g.jpg"; - $env->Command($jpg, $fig, qq($fig2dev -L jpeg -q 100 %< %>)); - $env->Depends($ps, $jpg); - } - } - } - - if ($docs{$doc}->{'ps'}) { - $env->Command($ps, $main, - qq(rm -f %>:d/$out - jw -b ps -o %>:d %< - mv %>:d/main.ps %> - rm -f %>:d/$out - )); - push(@tar_deps, $ps); - push(@tar_list, $ps); - if ($fig2dev) { - for $g (@{$docs{$doc}->{'graphics'}}) { - $fig = "$doc/$g.fig"; - $eps = "PS/$g.eps"; - $env->Command($eps, $fig, qq($fig2dev -L eps %< %>)); - $env->Depends($ps, $eps); - } - } - } - - if ($docs{$doc}->{'pdf'}) { - $env->Command($pdf, $main, - qq(rm -f %>:d/$out - jw -b pdf -o %>:d %< - mv %>:d/main.pdf %> - rm -f %>:d/$out - )); - push(@tar_deps, $pdf); - push(@tar_list, $pdf); - } - - if ($docs{$doc}->{'text'} && $lynx) { - $env->Command($text, $html, qq(lynx -dump %<:a > %>)); - push(@tar_deps, $text); - push(@tar_list, $text); - } - } -} - -# -# Man page(s), in good ol' troff format. -# -my $scons_1 = "man/scons.1"; - -if ($groff) { - my $ps = "PS/scons-man.ps"; - my $text = "TEXT/scons-man.txt"; - - $env->Command($ps, $scons_1, "groff -man -Tps %< > %>"); - - $env->Command($text, $scons_1, "groff -man -Tascii %< > %>"); - - push(@tar_deps, $ps, $text); - push(@tar_list, $ps, $text); -} - -if ($man2html) { - my $html = "HTML/scons-man.html"; - - $env->Command($html, $scons_1, "man2html %< > %>"); - - push(@tar_deps, $html); - push(@tar_list, $html); -} - -# -# Now actually create the tar file of the documentation, -# for easy distribution to the web site. -# -$env->Command($doc_tar_gz, - @tar_deps, - qq(tar zchv -f %> -C build/doc @tar_list)); |