aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
Diffstat (limited to 'build')
-rwxr-xr-xbuild72
1 files changed, 68 insertions, 4 deletions
diff --git a/build b/build
index 6392f65..1921d3c 100755
--- a/build
+++ b/build
@@ -1,10 +1,70 @@
#!/bin/sh
:;exec scmlit -f $0 -e"(bi)" build $*
-(require 'build)
+(require (in-vicinity (program-vicinity) "build.scm"))
(require 'getopt)
(require 'getopt-parameters)
+(define (make-features-txi)
+ (call-with-output-file "features.txi"
+ (lambda (port)
+ ((((build 'open-table) 'features #f) 'for-each-row)
+ (lambda (row)
+ (apply (lambda (name spec documentation)
+ (display "@item " port) (display name port) (newline port)
+ (display "@cindex " port) (display name port) (newline port)
+ (display documentation port) (newline port) (newline port))
+ row))))))
+
+(define (print-manifest port)
+ (display "@multitable @columnfractions .22 .78" port) (newline port)
+ ((((build 'open-table) 'manifest #f) 'for-each-row)
+ (lambda (row)
+ (apply (lambda (file format category documentation)
+ (display (string-append "@item @code{" file) port)
+ (display "}" port) (newline port)
+ (display (string-append "@tab " documentation) port)
+ (newline port))
+ row)))
+ (display "@end multitable" port) (newline port))
+
+(define (append-info-node path node afile)
+ (let ((cat (open-file afile "a")))
+ (do ((n (+ -1 2) (+ -1 n)))
+ ((negative? n) (close-port cat))
+ (newline cat)))
+ (system (string-append "info -f " path " -n '" node "' -o - >> " afile)))
+
+(define (make-readme)
+ (require 'posix)
+ (let ((pipe (open-output-pipe "makeinfo --no-headers -o README"))
+ (scm-info (read-version
+ (in-vicinity (implementation-vicinity) "patchlvl.h"))))
+ (if (not pipe) (slib:error 'make-readme 'couldn't 'open 'pipe))
+ (display "\
+This directory contains the distribution of scm" pipe)
+ (display scm-info pipe)
+ (display ". Scm conforms to
+Revised^5 Report on the Algorithmic Language Scheme and the IEEE P1178
+specification. SCM runs under Amiga, Atari-ST, MacOS, MS-DOS, OS/2,
+NOS/VE, Unicos, VMS, Unix and similar systems.
+
+@center @url{http://swissnet.ai.mit.edu/~jaffer/SCM.html}
+
+@section Manifest
+"
+ pipe)
+ (print-manifest pipe)
+ (close-port pipe)
+ (set! scm-info (string-append "scm" scm-info ".info"))
+ (append-info-node scm-info "SLIB" "README")
+ (append-info-node scm-info "Making SCM" "README")
+ (append-info-node scm-info "Editing Scheme Code" "README")
+ (append-info-node scm-info "Problems Compiling" "README")
+ (append-info-node scm-info "Problems Linking" "README")
+ (append-info-node scm-info "Problems Running" "README")
+ (append-info-node scm-info "Testing" "README")))
+
(define (build-from-argv argv)
(cond ((string? argv)
(require 'read-command)
@@ -22,8 +82,12 @@
(let* ((params (getopt->parameter-list
argc argv options arities types aliases))
(fparams (fill-empty-parameters defaulters params)))
- (cond ((not (list? params)) #f)
- ((not (check-parameters checks fparams)) #f)
+ (cond ((not (list? params))
+ (slib:warn 'build-from-argv 'not-parameters? fparams)
+ #f)
+ ((not (check-parameters checks fparams))
+ (slib:warn 'build-from-argv 'check-parameters 'failed)
+ #f)
((not (check-arities (map arity->arity-spec arities) fparams))
(slib:error 'build-from-argv "arity error" fparams) #f)
(else (comval fparams))))))))))
@@ -48,7 +112,7 @@
(display "build> ")
(force-output)))
-(define (bi) (build-from-argv *argv*))
+(define (bi) (if (build-from-argv *argv*) #t (exit #f)))
(cond (*interactive*
(display "type (b \"build <command-line>\") to build") (newline)