summaryrefslogtreecommitdiffstats
path: root/build.scm
diff options
context:
space:
mode:
Diffstat (limited to 'build.scm')
-rw-r--r--[-rwxr-xr-x]build.scm1551
1 files changed, 796 insertions, 755 deletions
diff --git a/build.scm b/build.scm
index bf40fc2..3c45f09 100755..100644
--- a/build.scm
+++ b/build.scm
@@ -1,18 +1,18 @@
-#!/bin/sh
-:;exec ./scmlit -f $0 -e"(bi)" build $*
-;;; "build.scm" Build database and program
+;;; "build.scm" Build database and program -*-scheme-*-
;;; Copyright (C) 1994, 1995, 1996, 1997 Aubrey Jaffer.
;;; See the file `COPYING' for terms applying to this program.
-(require 'getopt)
(require 'parameters)
(require 'database-utilities)
;;;(define build (create-database "buildscm.scm" 'alist-table))
(define build (create-database #f 'alist-table))
+(require 'glob)
(require 'batch)
(batch:initialize! build)
+((((build 'open-table) 'batch-dialect #t) 'row:insert) '(default-for-platform))
+
(set! OPEN_WRITE "w") ; Because MS-DOS scripts need ^M
(define-tables build
@@ -88,7 +88,7 @@
("Init.scm" Scheme required "Scheme initialization.")
("Transcen.scm" Scheme required "inexact builtin procedures.")
("Link.scm" Scheme required "compiles and dynamically links.")
- ("Macro.scm" Scheme required "Supports R4RS Macros.")
+ ("Macro.scm" Scheme required "Supports Syntax-Rules Macros.")
("scmfig.h" c-header required "contains system dependent definitions.")
("patchlvl.h" c-header required "patchlevel of this release.")
("setjump.h" c-header required "continuations, stacks, and memory allocation.")
@@ -133,7 +133,7 @@
(for-each (build 'add-domain)
'((optstring #f (lambda (x) (or (not x) (string? x))) string #f)
(filename #f #f string #f)
- (build-whats #f #f symbol #f)))
+ (build-whats build-whats #f symbol #f)))
(define-tables build
@@ -180,6 +180,7 @@
(atari-st-gcc m68000 atari.st gcc)
(atari-st-turbo-c m68000 atari.st turbo-c)
(borland-c-3.1 8086 ms-dos borland-c)
+ (cygwin32 i386 unix gcc)
(djgpp i386 ms-dos gcc)
(freebsd i386 unix cc)
(gcc *unknown* unix gcc)
@@ -210,110 +211,111 @@
((compiler-flags string)
(link-lib-flag string)
(lib-path optstring)
- (lib-support expression))
+ (lib-support expression)
+ (suppress-files expression))
- ((m *unknown* "" "-lm" "/usr/lib/libm.a" ())
- (c *unknown* "" "-lc" "/usr/lib/libc.a" ())
- (regex *unknown* "" "-lregex" "/usr/lib/libregex.a" ())
- (curses *unknown* "" "-lcurses" "/usr/lib/libcurses.a" ())
+ ((m *unknown* "" "-lm" "/usr/lib/libm.a" () ())
+ (c *unknown* "" "-lc" "/usr/lib/libc.a" () ())
+ (regex *unknown* "" "-lregex" "/usr/lib/libregex.a" () ())
+ (curses *unknown* "" "-lcurses" "/usr/lib/libcurses.a" () ())
(graphics *unknown* "-I/usr/X11/include -DX11" "-lX11"
- "/usr/X11/lib/libX11.sa" ())
- (editline *unknown* "" "-lreadline" "/usr/lib/libreadline.a" ())
- (termcap *unknown* "" "-ltermcap" "/usr/lib/libtermcap.a" ())
- (debug *unknown* "-g" "-g" #f ())
- (socket *unknown* "" "" #f ())
-
- (m linux-aout "" "-lm" "/usr/lib/libm.sa" ())
- (c linux-aout "" "-lc" "/usr/lib/libc.sa" ())
- (dlll linux-aout "-DDLD -DDLD_DYNCM" "-ldld" #f ("findexec.c"))
- (regex linux-aout "" "" "" ())
- (curses linux-aout "-I/usr/include/ncurses" "-lncurses"
- "/usr/lib/libncurses.a" ())
- (nostart linux-aout "" "-nostartfiles" #f ("pre-crt0.c"))
- (dump linux-aout "" "/usr/lib/crt0.o" #f ("unexec.c" "gmalloc.c"))
-
- (m linux "" "-lm" "/lib/libm.so" ())
- (c linux "" "-lc" "/lib/libc.so" ())
- (dlll linux "-DSUN_DL" "-ldl" #f ())
+ "/usr/X11/lib/libX11.sa" () ())
+ (editline *unknown* "" "-lreadline" "/usr/lib/libreadline.a" () ())
+ (terminfo *unknown* "" "-lncurses" "/usr/lib/libncurses.a" () ())
+ (debug *unknown* "-g" "-g" #f () ())
+ (socket *unknown* "" "" #f () ())
+
+ (c cygwin32 "" "" "" () ())
+ (m linux-aout "" "-lm" "/usr/lib/libm.sa" () ())
+ (c linux-aout "" "-lc" "/usr/lib/libc.sa" () ())
+ ;; (dlll linux "-DDLD" "-ldld" #f () ("findexec.c"))
+ (regex linux "" "" "" () ())
+ ;; (curses linux "-I/usr/include/ncurses" "-lncurses" "/usr/lib/libncurses.a" () ())
+;; (nostart linux "" "-nostartfiles" #f ("pre-crt0.c") ())
+ (dump linux-aout "" "/usr/lib/crt0.o" #f ("unexec.c" "gmalloc.c") ())
+
+ (m linux "" "-lm" "/lib/libm.so" () ())
+ (c linux "" "-lc" "/lib/libc.so" () ())
+ (dlll linux "-DSUN_DL" "-ldl" #f () ())
(graphics linux "-I/usr/include/X11 -DX11" "-L/usr/X11R6/lib -lX11"
- "/usr/X11R6/lib/libX11.so" ())
- (curses linux "" "-lcurses" "/lib/libncurses.so" ())
- (nostart linux "" "" #f ())
- (dump linux "" "" #f ("unexelf.c" "gmalloc.c"))
+ "/usr/X11R6/lib/libX11.so" () ())
+ (curses linux "" "-lcurses" "/lib/libncurses.so" () ())
+ (nostart linux "" "" #f () ())
+ (dump linux "" "" #f ("unexelf.c" "gmalloc.c") ())
- (m acorn-unixlib "" "" #f ())
+ (m acorn-unixlib "" "" #f () ())
- (nostart alpha "" "-non_shared" #f ("pre-crt0.c"))
- (dump alpha "" "" #f ("unexalpha.c"))
+ (nostart alpha "" "-non_shared" #f ("pre-crt0.c") ())
+ (dump alpha "" "" #f ("unexalpha.c") ())
- (m amiga-dice-c "" "-lm" #f ())
- (m amiga-SAS/C-5.10 "" "lcmieee.lib" #f ())
- (c amiga-SAS/C-5.10 "" "lc.lib" #f ())
+ (m amiga-dice-c "" "-lm" #f () ())
+ (m amiga-SAS/C-5.10 "" "lcmieee.lib" #f () ())
+ (c amiga-SAS/C-5.10 "" "lc.lib" #f () ())
- (m vms-gcc "" "" #f ())
- (m vms "" "" #f ())
+ (m vms-gcc "" "" #f () ())
+ (m vms "" "" #f () ())
- (m atari-st-gcc "" "-lpml" #f ())
- (m atari-st-turbo-c "" "" #f ())
+ (m atari-st-gcc "" "-lpml" #f () ())
+ (m atari-st-turbo-c "" "" #f () ())
- (m sunos "" "-lm" #f ())
- (dlll sunos "-DSUN_DL" "-ldl" #f ())
- (nostart sunos "" "-e __start -nostartfiles -static" #f ("ecrt0.c"))
- (dump sunos "" "" #f ("unexelf.c" "gmalloc.c"))
+ (m sunos "" "-lm" #f () ())
+ (dlll sunos "-DSUN_DL" "-ldl" #f () ())
+ (nostart sunos "" "-e __start -nostartfiles -static" #f ("ecrt0.c") ())
+ (dump sunos "" "" #f ("unexelf.c" "gmalloc.c") ())
- (m sun-svr4-gcc-sunld "" "-lm" #f ())
- (dlll sun-svr4-gcc-sunld "-DSUN_DL" "-Wl,-ldl" #f ())
- (nostart sun-svr4-gcc-sunld "" "-e __start -nostartfiles" #f ("ecrt0.c"))
- (dump sun-svr4-gcc-sunld "" "" #f ("unexelf.c" "gmalloc.c"))
- (socket sun-svr4-gcc-sunld "" "-lsocket -lnsl" #f ())
- (regex sun-svr4-gcc-sunld "" "" #f ())
+ (m sun-svr4-gcc-sunld "" "-lm" #f () ())
+ (dlll sun-svr4-gcc-sunld "-DSUN_DL" "-Wl,-ldl" #f () ())
+ (nostart sun-svr4-gcc-sunld "" "-e __start -nostartfiles" #f ("ecrt0.c") ())
+ (dump sun-svr4-gcc-sunld "" "" #f ("unexelf.c" "gmalloc.c") ())
+ (socket sun-svr4-gcc-sunld "" "-lsocket -lnsl" #f () ())
+ (regex sun-svr4-gcc-sunld "" "" #f () ())
- (nostart gcc "" "-e __start -nostartfiles" #f ("ecrt0.c"))
- (dump gcc "" "" #f ("unexelf.c" "gmalloc.c"))
+ (nostart gcc "" "-e __start -nostartfiles" #f ("ecrt0.c") ())
+ (dump gcc "" "" #f ("unexelf.c" "gmalloc.c") ())
- (m hp-ux "" "-lm" #f ())
- (dlll hp-ux "-DHAVE_DYNL" "-Wl,-E -ldld" #f ())
- (graphics hp-ux "-DX11" "-lX" "/usr/lib/X11R5/libX11.sl" ())
- (nostart hp-ux "" "" #f ("ecrt0.c"))
- (dump hp-ux "" "" #f ("unexhp9k800.c" "gmalloc.c"))
+ (m hp-ux "" "-lm" #f () ())
+ (dlll hp-ux "-DHAVE_DYNL" "-Wl,-E -ldld" #f () ())
+ (graphics hp-ux "-DX11" "-lX" "/usr/lib/X11R5/libX11.sl" () ())
+ (nostart hp-ux "" "" #f ("ecrt0.c") ())
+ (dump hp-ux "" "" #f ("unexhp9k800.c" "gmalloc.c") ())
- (c djgpp "" "-lc" #f ("findexec.c"))
+ (c djgpp "" "-lc" #f () ("findexec.c"))
(curses djgpp "-I/djgpp/contrib/pdcurses/include/"
"-L/djgpp/contrib/pdcurses/lib/ -lcurses"
- "\\djgpp\\contrib\\pdcurses\\lib\\libcurse.a" ())
- (nostart djgpp "" "-nostartfiles" #f ("pre-crt0.c"))
- (dump djgpp "" "c:/djgpp/lib/crt0.o" #f ("unexec.c" "gmalloc.c"))
-;;; (nostart djgpp "" "" #f ("ecrt0.c"))
-;;; (dump djgpp "" "" #f ("unexelf.c" "gmalloc.c"))
-;;; (nostart djgpp "" "-e __start -nostartfiles -static" #f ("ecrt0.c"))
-;;; (dump djgpp "" "" #f ("unexelf.c" "gmalloc.c"))
-
- (c Microsoft-C "" "" #f ("findexec.c"))
- (m Microsoft-C "" "" #f ())
- (c Microsoft-C-nt "" "" #f ("findexec.c"))
- (m Microsoft-C-nt "" "" #f ())
- (c Microsoft-Quick-C "" "" #f ("findexec.c"))
- (m Microsoft-Quick-C "" "" #f ())
-
- (c Turbo-C-2 "" "" #f ("findexec.c"))
- (m Turbo-C-2 "" "" #f ())
- (graphics Turbo-C-2 "" "graphics.lib" #f ())
-
- (c Borland-C-3.1 "" "" #f ("findexec.c"))
- (m Borland-C-3.1 "" "" #f ())
- (graphics Borland-C-3.1 "" "graphics.lib" #f ())
- (windows Borland-C-3.1 "-N -W" "-W" #f ())
-
- (c highc.31 "" "" #f ("findexec.c"))
- (m highc.31 "" "" #f ())
- (windows highc.31 "-Hwin" "-Hwin" #f ())
-
- (m freebsd "" "-lm" #f ())
- (regex freebsd "" "-lgnuregex" "" ())
- (editline freebsd "" "-lreadline" "" ())
- (dlll freebsd "-DSUN_DL" "" "" ())
- (nostart freebsd "" "-e start -dc -dp -Bstatic -lgnumalloc" #f ("pre-crt0.c"))
- (dump freebsd "" "/usr/lib/crt0.o" "" ("unexsunos4.c"))
+ "\\djgpp\\contrib\\pdcurses\\lib\\libcurse.a" () ())
+ (nostart djgpp "" "-nostartfiles" #f ("pre-crt0.c") ())
+ (dump djgpp "" "c:/djgpp/lib/crt0.o" #f ("unexec.c" "gmalloc.c") ())
+;;; (nostart djgpp "" "" #f ("ecrt0.c") ())
+;;; (dump djgpp "" "" #f ("unexelf.c" "gmalloc.c") ())
+;;; (nostart djgpp "" "-e __start -nostartfiles -static" #f ("ecrt0.c") ())
+;;; (dump djgpp "" "" #f ("unexelf.c" "gmalloc.c") ())
+
+ (c Microsoft-C "" "" #f () ("findexec.c"))
+ (m Microsoft-C "" "" #f () ())
+ (c Microsoft-C-nt "" "" #f () ("findexec.c"))
+ (m Microsoft-C-nt "" "" #f () ())
+ (c Microsoft-Quick-C "" "" #f () ("findexec.c"))
+ (m Microsoft-Quick-C "" "" #f () ())
+
+ (c Turbo-C-2 "" "" #f () ("findexec.c"))
+ (m Turbo-C-2 "" "" #f () ())
+ (graphics Turbo-C-2 "" "graphics.lib" #f () ())
+
+ (c Borland-C-3.1 "" "" #f () ("findexec.c"))
+ (m Borland-C-3.1 "" "" #f () ())
+ (graphics Borland-C-3.1 "" "graphics.lib" #f () ())
+ (windows Borland-C-3.1 "-N -W" "-W" #f () ())
+
+ (c highc.31 "" "" #f () ("findexec.c"))
+ (m highc.31 "" "" #f () ())
+ (windows highc.31 "-Hwin" "-Hwin" #f () ())
+
+ (m freebsd "" "-lm" #f () ())
+ (regex freebsd "" "-lgnuregex" "" () ())
+ (editline freebsd "" "-lreadline" "" () ())
+ (dlll freebsd "-DSUN_DL" "" "" () ())
+ (nostart freebsd "" "-e start -dc -dp -Bstatic -lgnumalloc" #f ("pre-crt0.c") ())
+ (dump freebsd "" "/usr/lib/crt0.o" "" ("unexsunos4.c") ())
))
'(compile-commands
@@ -325,125 +327,124 @@
(lambda (files parms)
(define rsp-name "temp.rsp")
(apply batch:lines->file parms rsp-name files)
- (batch:system parms
- "bcc" "-d" "-O" "-Z" "-G" "-w-pro" "-ml" "-c"
- (if (member '(define "FLOATS" #t)
- (c-defines parms))
- "" "-f-")
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- (string-append "@" rsp-name))
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:try-system
+ parms
+ "bcc" "-d" "-O" "-Z" "-G" "-w-pro" "-ml" "-c"
+ (if (member '(define "FLOATS" #t)
+ (c-defines parms))
+ "" "-f-")
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ (string-append "@" rsp-name))
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Borland-C-3.1
(lambda (oname objects libs parms)
(define lnk-name (string-append oname ".lnk"))
(apply batch:lines->file parms
lnk-name
(append libs objects))
- (batch:system parms "bcc"
- (string-append "-e" oname)
- "-ml"
- (string-append "@" lnk-name))
- (string-append oname ".exe")))
+ (and (batch:try-system
+ parms "bcc" (string-append "-e" oname)
+ "-ml" (string-append "@" lnk-name))
+ (string-append oname ".exe"))))
(compile-c-files Turbo-C-2
(lambda (files parms)
- (batch:system parms
- "tcc" "-c" "-d" "-O" "-Z" "-G" "-ml" "-c"
- "-Ic:\\turboc\\include"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system
+ parms
+ "tcc" "-c" "-d" "-O" "-Z" "-G" "-ml" "-c"
+ "-Ic:\\turboc\\include"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Turbo-C-2
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
(replace-suffix (car objects) ".obj" ".exe")
#\\))
(oexe (string-append oname ".exe")))
- (if (not (string-ci=? exe oexe))
- (batch:delete-file parms oexe))
- (batch:system parms
- "tcc" "-Lc:\\turboc\\lib" libs objects)
- (if (not (string-ci=? exe oexe))
- (batch:rename-file parms exe oexe))
- oexe)))
+ (and (or (string-ci=? exe oexe)
+ (batch:delete-file parms oexe))
+ (batch:try-system
+ parms "tcc" "-Lc:\\turboc\\lib" libs objects)
+ (or (string-ci=? exe oexe)
+ (batch:rename-file parms exe oexe))
+ oexe))))
(compile-c-files Microsoft-C
(lambda (files parms)
- (batch:system parms
- "cl" "-c" "Oxp" "-AH"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system
+ parms "cl" "-c" "Oxp" "-AH"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Microsoft-C
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
(replace-suffix (car objects) ".obj" ".exe")
#\\))
(oexe (string-append oname ".exe")))
- (if (not (string-ci=? exe oexe))
- (batch:delete-file parms oexe))
- (batch:system parms
- "link" "/noe" "/ST:40000"
- (apply string-join "+"
- (map (lambda (o)
- (replace-suffix o ".obj" ""))
- objects))
- libs)
- (if (not (string-ci=? exe oexe))
- (batch:rename-file parms exe oexe))
- oexe)))
+ (and (or (string-ci=? exe oexe)
+ (batch:delete-file parms oexe))
+ (batch:try-system
+ parms "link" "/noe" "/ST:40000"
+ (apply string-join "+"
+ (map (lambda (o)
+ (replace-suffix o ".obj" ""))
+ objects))
+ libs)
+ (or (string-ci=? exe oexe)
+ (batch:rename-file parms exe oexe))
+ oexe))))
(compile-c-files Microsoft-C-nt
(lambda (files parms)
- (batch:system parms
- "cl" "-c" "-nologo" "-O2"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system parms
+ "cl" "-c" "-nologo" "-O2"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Microsoft-C-nt
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
(replace-suffix (car objects) ".obj" ".exe")
#\\))
(oexe (string-append oname ".exe")))
-; (if (not (string-ci=? exe oexe))
-; (batch:delete-file parms oexe))
- (batch:system parms
- "link" "/nologo" (string-append "/out:" oexe)
- (apply string-join " "
- (map (lambda (o)
- (replace-suffix o ".obj" ""))
- objects))
- libs)
-; (if (not (string-ci=? exe oexe))
-; (batch:rename-file parms exe oexe))
- oexe)))
+ (and (batch:try-system
+ parms "link" "/nologo"
+ (string-append "/out:" oexe)
+ (apply string-join " "
+ (map (lambda (o)
+ (replace-suffix o ".obj" ""))
+ objects))
+ libs)
+ oexe))))
(compile-c-files Microsoft-Quick-C
(lambda (files parms)
- (batch:system parms
- "qcl" "/AH" "/W1" "/Ze" "/O" "/Ot" "/DNDEBUG"
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system
+ parms
+ "qcl" "/AH" "/W1" "/Ze" "/O" "/Ot" "/DNDEBUG"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Microsoft-Quick-C
(lambda (oname objects libs parms)
(define crf-name (string-append oname ".crf"))
@@ -455,400 +456,445 @@
,(string-append oname ".exe")
,(apply string-join " " libs)
";"))
- (batch:system parms
- "qlink"
- "/CP:0xffff" "/NOI" "/SE:0x80" "/ST:0x9c40"
- crf-name)
- (string-append oname ".exe")))
+ (and (batch:try-system
+ parms "qlink"
+ "/CP:0xffff" "/NOI" "/SE:0x80" "/ST:0x9c40"
+ crf-name)
+ (string-append oname ".exe"))))
(compile-c-files Watcom-9.0
(lambda (files parms)
- (batch:system parms
- "wcc386p" "/mf" "/d2" "/ze" "/oxt" "/3s"
- "/zq" "/w3"
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system
+ parms
+ "wcc386p" "/mf" "/d2" "/ze" "/oxt" "/3s"
+ "/zq" "/w3"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program Watcom-9.0
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
(replace-suffix (car objects)
- ".obj" ".exe")
+ ".obj" ".exe")
#\\))
(oexe (string-append oname ".exe")))
- (if (not (string-ci=? exe oexe))
- (batch:delete-file parms oexe))
- (batch:system parms
- "wlinkp" "option" "quiet" "option"
- "stack=40000" "FILE"
- (apply string-join ","
- (map (lambda (o)
- (replace-suffix o ".obj" ""))
- objects))
- libs)
- (if (not (string-ci=? exe oexe))
- (batch:rename-file parms exe oexe))
- oexe)))
+ (and (or (string-ci=? exe oexe)
+ (batch:delete-file parms oexe))
+ (batch:try-system
+ parms
+ "wlinkp" "option" "quiet" "option"
+ "stack=40000" "FILE"
+ (apply string-join ","
+ (map (lambda (o)
+ (replace-suffix o ".obj" ""))
+ objects))
+ libs)
+ (if (not (string-ci=? exe oexe))
+ (batch:rename-file parms exe oexe))
+ oexe))))
(compile-c-files highc.31
(lambda (files parms)
(define hcc-name "temp.hcc")
(apply batch:lines->file parms hcc-name files)
- (batch:system parms
- "d:\\hi_c\\hc386.31\\bin\\hc386"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- "-c" (string-append "@" hcc-name))
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:try-system
+ parms
+ "d:\\hi_c\\hc386.31\\bin\\hc386"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ "-c" (string-append "@" hcc-name))
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program highc.31
(lambda (oname objects libs parms)
(let ((oexe (string-append oname ".exe")))
(define lnk-name (string-append oname ".lnk"))
(apply batch:lines->file parms
lnk-name (append libs objects))
- (batch:system parms
- "d:\\hi_c\\hc386.31\\bin\\hc386" "-o" oname
- (string-append "@" lnk-name))
- (batch:system parms
- "bind386" "d:/hi_c/pharlap.51/run386b.exe" oname
- "-exe" oexe)
- oexe)))
+ (and (batch:try-system
+ parms
+ "d:\\hi_c\\hc386.31\\bin\\hc386" "-o" oname
+ "-stack 65000"
+ (string-append "@" lnk-name))
+ (batch:try-system
+ parms
+ "bind386" "d:/hi_c/pharlap.51/run386b.exe" oname
+ "-exe" oexe)
+ oexe))))
(compile-c-files djgpp
(lambda (files parms)
- (batch:apply-chop-to-fit
- batch:try-system parms
- "gcc" "-Wall" "-O2" "-c"
- (include-spec "-I" parms)
- (c-includes parms) (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- "\\/")))
+ (and (batch:chop-to-fit-system
+ parms
+ "gcc" "-Wall" "-O2" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms) (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ "\\/"))))
(link-c-program djgpp
(lambda (oname objects libs parms)
(let ((exe (string-append oname ".exe")))
- (or
- (batch:try-system parms
- "gcc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "ecrt0.o"
- "c:/djgpp/lib/crt0.o")
- (append objects libs)))
- (let ((arname (string-append oname ".a")))
- (batch:delete-file parms arname)
- (batch:apply-chop-to-fit
- batch:try-system parms
- "ar" "r" arname objects)
- (and
- (batch:system
- parms "gcc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "ecrt0.o" "c:/djgpp/lib/crt0.o")
- (cons arname libs)))
- (batch:delete-file parms arname)))
- (slib:error 'build "couldn't build archive"))
- (batch:system parms "strip" exe)
- (batch:delete-file parms oname)
- ;;(batch:delete-file parms exe)
- ;;(batch:system parms "coff2exe" "-s" "c:\\djgpp\\bin\\go32.exe" oname)
- exe)))
+ (and (or (batch:try-system parms
+ "gcc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "c:/djgpp/lib/crt0.o")
+ (append objects libs)))
+ (let ((arname (string-append oname ".a")))
+ (batch:delete-file parms arname)
+ (and (batch:chop-to-fit-system
+ parms
+ "ar" "r" arname objects)
+ (batch:try-system
+ parms "gcc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "c:/djgpp/lib/crt0.o")
+ (cons arname libs)))
+ (batch:delete-file parms arname)))
+ ;;(build:error 'build "couldn't build archive")
+ )
+ (batch:try-system parms "strip" exe)
+ (batch:delete-file parms oname)
+ ;;(batch:delete-file parms exe)
+ ;;(batch:try-system parms "coff2exe" "-s" "c:\\djgpp\\bin\\go32.exe" oname)
+ exe))))
(compile-c-files os/2-emx
(lambda (files parms)
- (batch:system parms
- "gcc" "-O" "-m386" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\\)))
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-O" "-m386" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\\))))
(link-c-program os/2-emx
(lambda (oname objects libs parms)
- (batch:system parms
- "gcc" "-o" (string-append oname ".exe")
- objects libs)
- (string-append oname ".exe")))
+ (and (batch:try-system
+ parms "gcc" "-o" (string-append oname ".exe")
+ objects libs)
+ (string-append oname ".exe"))))
(compile-c-files os/2-cset
(lambda (files parms)
- (batch:system parms
- "icc.exe" "/Gd-" "/Ge+" "/Gm+" "/Q" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- #\\)))
+ (and (batch:chop-to-fit-system
+ parms "icc.exe" "/Gd-" "/Ge+" "/Gm+" "/Q" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".obj")
+ #\\))))
(link-c-program os/2-cset
(lambda (oname objects libs parms)
- (batch:system parms
- "link386.exe" objects libs
- (string-append "," oname ".exe,,,;"))
- (string-append oname ".exe")))
+ (and (batch:try-system
+ parms "link386.exe" objects libs
+ (string-append "," oname ".exe,,,;"))
+ (string-append oname ".exe"))))
(compile-c-files HP-UX
(lambda (files parms)
- (batch:system parms
- "cc" "+O1" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "cc" "+O1" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(compile-dll-c-files HP-UX
(lambda (files parms)
- (batch:system parms
- "cc" "+O1" "-Wl,-E" "+z" "-c"
- (c-includes parms)
- (c-flags parms)
- files)
- (map
- (lambda (fname)
- (batch:rename-file parms
- (string-append fname ".sl")
- (string-append fname ".sl~"))
- (batch:system parms
- "ld" "-b" "-o"
- (string-append fname ".sl")
- (string-append fname ".o"))
- (string-append fname ".sl"))
- (truncate-up-to
- (replace-suffix files ".c" "")
- #\/))))
-; (make-dll-archive HP-UX
+ (and (batch:chop-to-fit-system
+ parms "cc" "+O1" "-Wl,-E" "+z" "-c"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (let ((results
+ (map
+ (lambda (fname)
+ (batch:rename-file
+ parms
+ (string-append fname ".sl")
+ (string-append fname ".sl~"))
+ (and (batch:try-system
+ parms "ld" "-b" "-o"
+ (string-append fname ".sl")
+ (string-append fname ".o"))
+ (string-append fname ".sl")))
+ (truncate-up-to
+ (replace-suffix files ".c" "")
+ #\/))))
+ (and (apply and? results) results)))))
+; (make-dll-archive HP-UX
; (lambda (oname objects libs parms)
-; (batch:system parms
-; "ld" "-b" "-o" (string-append oname ".sl")
-; objects)
-; (rebuild-catalog)
-; (string-append oname ".sl")))
-
+; (and (batch:try-system
+; parms "ld" "-b" "-o" (string-append oname ".sl")
+; objects)
+; (batch:rebuild-catalog parms)
+; (string-append oname ".sl"))))
(make-dll-archive sunos
(lambda (oname objects libs parms)
- (batch:system parms
- "ld" "-assert" "pure-text" "-o"
- (string-append oname ".so.1.0")
- objects)
- (rebuild-catalog)
- (string-append oname ".so.1.0")))
+ (and (batch:try-system
+ parms
+ "ld" "-assert" "pure-text" "-o"
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so.1.0")
+ objects)
+ (batch:rebuild-catalog parms)
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so.1.0"))))
(compile-c-files linux-aout
(lambda (files parms)
- (batch:system parms
- "gcc" "-Wall" "-O2" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-Wall" "-O2" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(compile-dll-c-files linux-aout
(lambda (files parms)
- (batch:system parms
- "gcc" "-Wall" "-O2" "-c"
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system
+ parms
+ "gcc" "-Wall" "-O2" "-c"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))))
;;; (make-dll-archive linux-aout
;;; (lambda (oname objects libs parms) #t
-;;; (rebuild-catalog)
+;;; (batch:rebuild-catalog parms)
;;; oname))
(compile-c-files linux
(lambda (files parms)
- (batch:system parms
- "gcc" "-O2" "-c" (c-includes parms)
- (include-spec "-I" parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system
+ parms
+ "gcc"
+ (if (member "-g" (c-includes parms)) "" "-O2")
+ "-c" (c-includes parms)
+ (include-spec "-I" parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(compile-dll-c-files linux
(lambda (files parms)
- (batch:system parms
- "gcc" "-O2" "-fpic" "-c" (c-includes parms)
- (c-flags parms)
- files)
- (let* ((platform (car (parameter-list-ref
- parms 'platform)))
- (ld-opts
- (map (lambda (l)
- (build:lib-ld-flag l platform))
- (parameter-list-ref parms 'c-lib))))
- (map
- (lambda (fname)
- (batch:system parms
- "gcc" "-shared" "-o"
- (string-append fname ".so")
- (string-append fname ".o")
- ld-opts)
- (string-append fname ".so"))
- (truncate-up-to
- (replace-suffix files ".c" "")
- #\/)))))
+ (and
+ (batch:chop-to-fit-system
+ parms
+ "gcc" "-O2" "-fpic" "-c" (c-includes parms)
+ (c-flags parms)
+ files)
+ (let* ((platform (car (parameter-list-ref
+ parms 'platform)))
+ (ld-opts
+ (map (lambda (l)
+ (build:lib-ld-flag l platform))
+ (parameter-list-ref parms 'c-lib)))
+ (results
+ (map
+ (lambda (fname)
+ (and (batch:try-system
+ parms
+ "gcc" "-shared" "-o"
+ (string-append fname ".so")
+ (string-append fname ".o")
+ ld-opts)
+ (string-append fname ".so")))
+ (truncate-up-to
+ (replace-suffix files ".c" "")
+ #\/))))
+ (and (apply and? results) results)))))
(make-dll-archive linux
(lambda (oname objects libs parms)
(let ((platform (car (parameter-list-ref
parms 'platform))))
- (batch:system
- parms
- "gcc" "-shared" "-o"
- (string-append oname ".so")
- objects
- (map (lambda (l) (build:lib-ld-flag l platform))
- (parameter-list-ref parms 'c-lib))))
- (rebuild-catalog)
- (string-append oname ".so")))
+ (and (batch:try-system
+ parms
+ "gcc" "-shared" "-o"
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so")
+ objects
+ (map (lambda (l)
+ (build:lib-ld-flag l platform))
+ (parameter-list-ref parms 'c-lib)))
+ (batch:rebuild-catalog parms)
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so")))))
(link-c-program linux
(lambda (oname objects libs parms)
- (batch:system parms
- "gcc" "-rdynamic" "-o" oname
- (must-be-first
- '("pre-crt0.o" "ecrt0.o" "/usr/lib/crt0.o")
- (append objects libs)))
- oname))
+ (and (batch:try-system
+ parms "gcc" "-rdynamic" "-o" oname
+ (must-be-first
+ '("pre-crt0.o" "ecrt0.o" "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
(compile-c-files Unicos
(lambda (files parms)
- (batch:system parms
- "cc" "-hvector2" "-hscalar2" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
- (link-c-program Unicos
+ (and (batch:chop-to-fit-system
+ parms
+ "cc" "-hvector2" "-hscalar2" "-c"
+ (include-spec "-i" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
+ (link-c-program unicos
(lambda (oname objects libs parms)
- (batch:system parms
- "cc" "setjump.o" "-o" oname objects libs)
- oname))
+ (and (batch:try-system
+ parms "cc" "setjump.o" "-o" oname objects libs)
+ oname)))
(compile-c-files gcc
(lambda (files parms)
- (batch:system parms
- "gcc" "-Wall" "-O2" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-Wall" "-O2" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program gcc
(lambda (oname objects libs parms)
(batch:rename-file parms
oname (string-append oname "~"))
- (batch:system parms
- "gcc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "ecrt0.o"
- "/usr/lib/crt0.o")
- (append objects libs)))
- oname))
+ (and (batch:try-system parms
+ "gcc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
+
+ (compile-c-files cygwin32
+ (lambda (files parms)
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-Wall" "-O2" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))))
+ (link-c-program cygwin32
+ (lambda (oname objects libs parms)
+ (batch:rename-file parms
+ (string-append oname ".exe")
+ (string-append oname "~"))
+ (and (batch:try-system parms
+ "gcc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
(compile-c-files sun-svr4-gcc-sunld
(lambda (files parms)
- (batch:system parms
- "gcc" "-Wall" "-O2" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-Wall" "-O2" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program sun-svr4-gcc-sunld
(lambda (oname objects libs parms)
(batch:rename-file parms
oname (string-append oname "~"))
- (batch:system parms
- "gcc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "ecrt0.o"
- "/usr/lib/crt0.o")
- (append objects libs)))
- oname))
+ (and (batch:try-system parms
+ "gcc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
(compile-c-files svr4
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-DSVR4" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "cc" "-O" "-DSVR4" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(compile-c-files aix
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-Dunix" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "cc" "-O" "-Dunix" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program aix
(lambda (oname objects libs parms)
- (batch:system parms
- "cc" "-lansi" "-o" oname objects libs)
- oname))
+ (and (batch:try-system
+ parms "cc" "-lansi" "-o" oname objects libs)
+ oname)))
(compile-c-files amiga-aztec
(lambda (files parms)
- (batch:system parms
- "cc" "-dAMIGA"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "cc" "-dAMIGA"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program amiga-aztec
(lambda (oname objects libs parms)
- (batch:system parms
- "cc" "-o" oname objects libs "-lma")
- oname))
+ (and (batch:try-system
+ parms "cc" "-o" oname objects libs "-lma")
+ oname)))
(compile-c-files amiga-SAS/C-5.10
(lambda (files parms)
- (batch:system parms
- "lc" "-d3" "-M" "-fi" "-O"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (batch:system parms "blink with link.amiga NODEBUG")
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system
+ parms
+ "lc" "-d3" "-M" "-fi" "-O"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (batch:try-system
+ parms "blink with link.amiga NODEBUG")
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program amiga-SAS/C-5.10
(lambda (oname objects libs parms)
(define lnk-name "link.amiga")
@@ -871,156 +917,158 @@
(compile-c-files amiga-dice-c
(lambda (files parms)
- (batch:system parms
- "dcc" "-r" "-gs" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files "-o" (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/))
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:try-system
+ parms
+ "dcc" "-r" "-gs" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files "-o" (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program amiga-dice-c
(lambda (oname objects libs parms)
- (batch:system parms
- "dcc" "-r" "-gs" "-o" oname objects libs)
- oname))
+ (and (batch:try-system
+ parms "dcc" "-r" "-gs" "-o" oname objects libs)
+ oname)))
(compile-c-files atari-st-gcc
(lambda (files parms)
- (batch:system parms
- "gcc" "-v" "-O" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system parms
+ "gcc" "-v" "-O" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program atari-st-gcc
(lambda (oname objects libs parms)
- (batch:system parms
- "gcc" "-v" "-o" (string-append oname ".ttp")
- objects libs)
- (string-append oname ".ttp")))
+ (and (batch:try-system
+ parms "gcc" "-v" "-o" (string-append oname ".ttp")
+ objects libs)
+ (string-append oname ".ttp"))))
(compile-c-files atari-st-turbo-c
(lambda (files parms)
- (batch:system parms
- "tcc" "-P" "-W-" "-Datarist"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system
+ parms
+ "tcc" "-P" "-W-" "-Datarist"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program atari-st-turbo-c
(lambda (oname objects libs parms)
- (batch:system parms
- "tlink" "-o" (string-append oname ".ttp")
- objects libs "mintlib.lib" "osbind.lib"
- "pcstdlib.lib" "pcfltlib.lib")
- (string-append oname ".ttp")))
+ (and (batch:try-system
+ parms "tlink" "-o" (string-append oname ".ttp")
+ objects libs "mintlib.lib" "osbind.lib"
+ "pcstdlib.lib" "pcfltlib.lib")
+ (string-append oname ".ttp"))))
(compile-c-files acorn-unixlib
(lambda (files parms)
- (batch:system parms
- "cc" "-c" "-depend" "!Depend" "-IUnixLib:"
- "-pcc" "-Dunix" "-DSVR3" "-DARM_ULIB"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- #\/)))
+ (and (batch:chop-to-fit-system
+ parms
+ "cc" "-c" "-depend" "!Depend" "-IUnixLib:"
+ "-pcc" "-Dunix" "-DSVR3" "-DARM_ULIB"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ #\/))))
(link-c-program acorn-unixlib
(lambda (oname objects libs parms)
- (batch:system parms
- "link" "-o" oname objects libs
- ":5.$.dev.gcc.unixlib36d.clib.o.unixlib")
- (batch:system parms
- "squeeze" oname)
- oname))
+ (and (batch:try-system
+ parms "link" "-o" oname objects libs
+ ":5.$.dev.gcc.unixlib36d.clib.o.unixlib")
+ (batch:try-system parms "squeeze" oname)
+ oname)))
(compile-c-files vms
(lambda (files parms)
- (batch:system parms
- "cc"
- (c-includes parms)
- (c-flags parms)
- (replace-suffix files ".c" ""))
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- "/]")))
+ (and (batch:chop-to-fit-system
+ parms
+ "cc"
+ (c-includes parms)
+ (c-flags parms)
+ (replace-suffix files ".c" ""))
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ "/]"))))
(link-c-program vms
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
(replace-suffix (car objects)
- ".obj" ".exe")
+ ".obj" ".exe")
"/]"))
(oexe (string-append oname ".exe")))
- (batch:system parms
- "macro" "setjump")
- (batch:system parms
- "link"
- (apply string-join ","
- (append (map (lambda (f)
- (replace-suffix f ".obj" ""))
- objects)
- '("setjump" "sys$input/opt\n ")))
- (apply string-join
- "," (append (remove "" libs)
- '("sys$share:vaxcrtl/share"))))
- (if (not (string-ci=? exe oexe))
- (batch:rename-file parms exe oexe))
- oexe)))
+ (and (batch:try-system parms "macro" "setjump")
+ (batch:try-system
+ parms
+ "link"
+ (apply string-join ","
+ (append (map (lambda (f)
+ (replace-suffix f ".obj" ""))
+ objects)
+ '("setjump" "sys$input/opt\n ")))
+ (apply string-join
+ "," (append (remove "" libs)
+ '("sys$share:vaxcrtl/share"))))
+ (or (string-ci=? exe oexe)
+ (batch:rename-file parms exe oexe))
+ oexe))))
(compile-c-files vms-gcc
(lambda (files parms)
- (batch:system parms
- "gcc"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- (replace-suffix files ".c" ""))
- (truncate-up-to
- (replace-suffix files ".c" ".obj")
- "/]")))
+ (and (batch:chop-to-fit-system
+ parms
+ "gcc"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ (replace-suffix files ".c" ""))
+ (truncate-up-to
+ (replace-suffix files ".c" ".obj")
+ "/]"))))
(link-c-program vms-gcc
(lambda (oname objects libs parms)
(let ((exe (truncate-up-to
- (replace-suffix (car objects)
- ".obj" ".exe")
+ (replace-suffix (car objects) ".obj" ".exe")
"/]"))
(oexe (string-append oname ".exe")))
- (batch:system parms
- "macro" "setjump")
- (batch:system parms
- "link"
- (apply string-join ","
- (append objects
- '("setjump.obj"
- "sys$input/opt\n ")))
- (apply string-join
- "," (append (remove "" libs)
- '("gnu_cc:[000000]gcclib/lib"
- "sys$share:vaxcrtl/share"))))
- (if (not (string-ci=? exe oexe))
- (batch:rename-file parms exe oexe))
- oexe)))
+ (and (batch:try-system parms "macro" "setjump")
+ (batch:try-system
+ parms
+ "link"
+ (apply string-join ","
+ (append objects
+ '("setjump.obj"
+ "sys$input/opt\n ")))
+ (apply string-join
+ "," (append (remove "" libs)
+ '("gnu_cc:[000000]gcclib/lib"
+ "sys$share:vaxcrtl/share"))))
+ (or (string-ci=? exe oexe)
+ (batch:rename-file parms exe oexe))
+ oexe))))
(compile-c-files *unknown*
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-c"
- (include-spec "-I" parms)
- (c-includes parms)
- (c-flags parms)
- files)
+ (batch:chop-to-fit-system
+ parms
+ "cc" "-O" "-c"
+ (include-spec "-I" parms)
+ (c-includes parms)
+ (c-flags parms)
+ files)
(truncate-up-to
(replace-suffix files ".c" ".o")
"\\/]")))
@@ -1028,89 +1076,101 @@
(lambda (oname objects libs parms)
(batch:rename-file parms
oname (string-append oname "~"))
- (batch:system parms
- "cc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "ecrt0.o"
- "/usr/lib/crt0.o")
- (append objects libs)))
- oname))
+ (and (batch:try-system parms
+ "cc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "ecrt0.o"
+ "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
(make-archive *unknown*
(lambda (oname objects libs parms)
(let ((aname (string-append oname ".a")))
- (batch:system parms "ar rc" aname objects)
- (batch:system parms "ranlib" aname)
- aname)))
+ (and (batch:try-system parms "ar rc" aname objects)
+ (batch:try-system parms "ranlib" aname)
+ aname))))
(compile-dll-c-files *unknown*
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-c"
- (c-includes parms)
- (c-flags parms)
- files)
- (truncate-up-to
- (replace-suffix files ".c" ".o")
- "\\/]")))
+ (and (batch:chop-to-fit-system parms
+ "cc" "-O" "-c"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (truncate-up-to
+ (replace-suffix files ".c" ".o")
+ "\\/]"))))
(make-dll-archive *unknown*
(lambda (oname objects libs parms)
- (let ((aname (string-append oname ".a")))
- (batch:system parms
- "ar rc" aname objects)
- (batch:system parms
- "ranlib" aname)
- (rebuild-catalog)
- aname)))
+ (let ((aname
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".a")))
+ (and (batch:try-system parms "ar rc" aname objects)
+ (batch:try-system parms "ranlib" aname)
+ (batch:rebuild-catalog parms)
+ aname))))
(update-catalog *unknown*
(lambda (oname objects libs parms)
- (rebuild-catalog)
+ (batch:rebuild-catalog parms)
(if (= 1 (length objects)) (car objects)
objects)))
(compile-c-files freebsd
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-Dfreebsd" "-c"
- (c-includes parms)
- (c-flags parms)
- files)
- (replace-suffix files ".c" ".o")))
+ (and (batch:chop-to-fit-system
+ parms
+ "cc" "-O" "-Dfreebsd" "-c"
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (replace-suffix files ".c" ".o"))))
(link-c-program freebsd
(lambda (oname objects libs parms)
(batch:rename-file parms
oname (string-append oname "~"))
- (batch:system parms
- "cc" "-o" oname
- (must-be-first
- '("-nostartfiles"
- "pre-crt0.o" "crt0.o"
- "/usr/lib/crt0.o")
- (append objects libs)))
- oname))
+ (and (batch:try-system parms
+ "cc" "-o" oname
+ (must-be-first
+ '("-nostartfiles"
+ "pre-crt0.o" "crt0.o"
+ "/usr/lib/crt0.o")
+ (append objects libs)))
+ oname)))
(compile-dll-c-files freebsd
(lambda (files parms)
- (batch:system parms
- "cc" "-O" "-fpic" "-c"
- "-Dfreebsd"
- (string-append "-I" (implementation-vicinity))
- (c-includes parms)
- (c-flags parms)
- files)
- (let ((objs (replace-suffix files ".c" ".o")))
- (map (lambda (f)
- (batch:system parms "ld" "-Bshareable" f)
- (batch:system parms "mv" "a.out" f))
- objs)
- objs)))
+ (and (batch:chop-to-fit-system
+ parms
+ "cc" "-O" "-fpic" "-c"
+ "-Dfreebsd"
+ (string-append
+ "-I" (parameter-list-ref parms 'scm-srcdir))
+ (c-includes parms)
+ (c-flags parms)
+ files)
+ (let ((objs (replace-suffix files ".c" ".o")))
+ (every
+ (lambda (f)
+ (and (batch:try-system
+ parms "ld" "-Bshareable" f)
+ (batch:try-system
+ parms "mv" "a.out" f)))
+ objs)
+ objs))))
(make-dll-archive freebsd
(lambda (oname objects libs parms)
- (batch:system parms
- "ld" "-Bshareable" "-o"
- (string-append oname ".so")
- objects)
- (rebuild-catalog)
- (string-append oname ".so")))
+ (and (batch:try-system
+ parms
+ "ld" "-Bshareable" "-o"
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so")
+ objects)
+ (batch:rebuild-catalog parms)
+ (string-append
+ (car (parameter-list-ref parms 'implvic))
+ oname ".so"))))
))
@@ -1230,7 +1290,7 @@ file delete and rename, and directory functions.")
`Curses' screen management package.")
(edit-line
- ((c-file "edline.c") (c-lib termcap editline) (compiled-init "init_edline"))
+ ((c-file "edline.c") (c-lib terminfo editline) (compiled-init "init_edline"))
"\
interface to the editline or GNU readline library")
@@ -1270,7 +1330,7 @@ Convert a running scheme program into an executable file.")
;;; (short-aligned-stack ((define "SHORT_ALIGN")))
;;; (initial-malloc-limit ((define "INIT_MALLOC_LIMIT" 100000)))
;;; (number-of-hash-buckets ((define "NUM_HASH_BUCKETS" 137)))
-;;; (minimum-gc-yield ((define "MIN_GC_YIELD" "(heap_size/4)")))
+;;; (minimum-gc-yield ((define "MIN_GC_YIELD" "(heap_cells/4)")))
(heap-can-shrink ((define "DONT_GC_FREE_SEGMENTS"))
"\
@@ -1286,7 +1346,14 @@ unusual stacks need this. Also, if you incorporate new C code into
scm which uses VMS system services or library routines (which need to
unwind the stack in an ordrly manner) you may need to define
CHEAP_CONTINUATIONS.")
- ))
+ )))
+
+(for-each (build 'add-domain)
+ '((features features #f symbol #f)
+ (C-libraries C-libraries #f symbol #f)))
+
+(define-tables build
+
'(build-params
*parameter-columns*
*parameter-columns*
@@ -1296,18 +1363,16 @@ CHEAP_CONTINUATIONS.")
"what to build it for")
(2 target-name single string (lambda (pl) '("scm")) #f
"base name of target")
- (3 c-lib nary symbol (lambda (pl) '(c)) #f
+ (3 c-lib nary C-libraries (lambda (pl) '(c)) #f
"C library (and include files)")
(4 define nary string #f #f "#define FLAG")
- (5 implinit single string
- (lambda (pl) (list (object->string
- (in-vicinity (implementation-vicinity) "Init.scm"))))
+ (5 implvic single string (lambda (pl) (list ""))
#f "implementation vicinity")
(6 c-file nary filename #f #f "C source files")
(7 o-file nary filename #f #f "other object files")
(8 init nary string #f #f "initialization calls")
(9 compiled-init nary string #f #f "later initialization calls")
- (10 features nary symbol
+ (10 features nary features
(lambda (pl) '(arrays inexact bignums))
(lambda (rdb) (((rdb 'open-table) 'features #f) 'get 'spec))
"features to include")
@@ -1323,28 +1388,27 @@ CHEAP_CONTINUATIONS.")
,@(or (getspec what) '())))))
"what to build")
(12 batch-dialect single batch-dialect
- guess-how
+ (lambda (pl) '(default-for-platform)) ;;guess-how
#f
- "How to build")
- (13 who single expression (lambda (pl) (list (current-output-port))) #f
- "name of buildfile or port")
+ "scripting language")
+ (13 who optional expression #f #f "name of buildfile")
(14 compiler-options nary string #f #f "command-line compiler options")
(15 linker-options nary string #f #f "command-line linker options")
- (17 batch-port nary expression #f #f
- "port batch file will be written to.")
- (18 c-defines nary expression #f #f "#defines for C")
- (19 c-includes nary expression #f #f "library induced defines for C")
- (20 scm-srcdir single filename
+ (16 scm-srcdir single filename
(lambda (pl) (list (user-vicinity))) #f
"directory path for files in the manifest")
- (21 scm-libdir single filename
+ (17 scm-libdir single filename
(lambda (pl) (list (implementation-vicinity))) #f
"directory path for files in the manifest")
+ (18 c-defines nary expression #f #f "#defines for C")
+ (19 c-includes nary expression #f #f "library induced defines for C")
+ (20 batch-port nary expression #f #f
+ "port batch file will be written to.")
))
'(build-pnames
((name string))
- ((parameter-index uint))
+ ((parameter-index uint)) ;should be build-params
(
("p" 1) ("platform" 1)
("o" 2) ("outname" 2)
@@ -1360,8 +1424,8 @@ CHEAP_CONTINUATIONS.")
("w" 13) ("script name" 13)
("compiler options" 14)
("linker options" 15)
- ("scm srcdir" 20)
- ("scm libdir" 21)
+ ("scm srcdir" 16)
+ ("scm libdir" 17)
))
'(*commands*
@@ -1374,11 +1438,11 @@ CHEAP_CONTINUATIONS.")
build-params
build-pnames
build:build
- "build program.")
+ "compile and link SCM programs.")
(*initialize*
no-parameters
no-parameters
- build:init
+ #f
"SCM Build Database"))))
;;;((build 'close-database))
@@ -1389,6 +1453,7 @@ CHEAP_CONTINUATIONS.")
(define build:lib-cc-flag #f)
(define build:lib-ld-flag #f)
(define build:c-lib-support #f)
+(define build:c-suppress #f)
(define plan-command #f)
;;; Look up command on a platform, but default to '*unknown* if not
@@ -1400,7 +1465,8 @@ CHEAP_CONTINUATIONS.")
(let ((ans (getter thing platform)))
(cond (ans ans)
((eq? '*unknown* platform)
- (build:error "Couldn't find: " plat thing))
+ ;;(slib:warn "Couldn't find: " plat thing)
+ '())
(else (look '*unknown*)))))
(look plat)))
@@ -1433,9 +1499,16 @@ CHEAP_CONTINUATIONS.")
(map (lambda (c)
(string-append c "();"))
(parameter-list-ref parms 'compiled-init))))
+ (implvic (let ((impl (car (parameter-list-ref parms 'implvic))))
+ (if (equal? "" impl)
+ (car (parameter-list-ref parms 'scm-srcdir))
+ impl)))
(c-defines
`((define "IMPLINIT"
- ,(car (parameter-list-ref parms 'implinit)))
+ ,(object->string
+ (string-append
+ implvic "Init" (read-version parms) ".scm")))
+ ;;,@`(if (equal? "" implvic) '() (...))
,@(if (string=? "" init=) '()
`((define "INITS" ,init=)))
,@(if (string=? "" compiled-init=) '()
@@ -1447,19 +1520,28 @@ CHEAP_CONTINUATIONS.")
(c-includes
(map (lambda (l) (build:lib-cc-flag l platform))
(parameter-list-ref parms 'c-lib)))
- (batch-dialect (car (parameter-list-ref parms 'batch-dialect)))
(what (car (parameter-list-ref parms 'what)))
(c-proc (plan-command ((((rdb 'open-table) 'build-whats #f)
'get 'c-proc)
what)
platform)))
+
+ (case (car (parameter-list-ref parms 'batch-dialect))
+ ((default-for-platform)
+ (let ((os ((((build 'open-table) 'platform #f)
+ 'get 'operating-system) platform)))
+ (if (not os)
+ (build:error "OS corresponding to " platform " unknown"))
+ (adjoin-parameters!
+ parms (cons 'batch-dialect (list (os->batch-dialect os)))))))
+
(adjoin-parameters!
parms
(cons 'c-defines c-defines)
- (cons 'c-includes c-includes)
- )
+ (cons 'c-includes c-includes))
- (let ((name (car (parameter-list-ref parms 'who))))
+ (let ((name (parameter-list-ref parms 'who)))
+ (set! name (if (null? name) (current-output-port) (car name)))
(batch:call-with-output-script
parms
name
@@ -1476,17 +1558,21 @@ CHEAP_CONTINUATIONS.")
;; ================ Compile C source files
(set! o-files
- (c-proc
- (map (lambda (file)
- (in-vicinity
- (car (parameter-list-ref parms 'scm-srcdir))
- file))
- (apply append
- (parameter-list-ref parms 'c-file)
- (map
- (lambda (l) (build:c-lib-support l platform))
- (parameter-list-ref parms 'c-lib))))
- parms))
+ (let ((suppressors
+ (apply append
+ (map (lambda (l) (build:c-suppress l platform))
+ (parameter-list-ref parms 'c-lib))))
+ (ssdir (car (parameter-list-ref parms 'scm-srcdir))))
+ (c-proc
+ (map (lambda (file) (in-vicinity ssdir file))
+ (apply
+ append
+ (remove-if (lambda (file) (member file suppressors))
+ (parameter-list-ref parms 'c-file))
+ (map
+ (lambda (l) (build:c-lib-support l platform))
+ (parameter-list-ref parms 'c-lib))))
+ parms)))
;; ================ Link C object files
((plan-command
@@ -1528,13 +1614,23 @@ CHEAP_CONTINUATIONS.")
(else (string-append "-D" (cadr d) "=" (object->string (caddr d))))))
defines))
-(define (guess-how pl)
- (let* ((plat (parameter-list-ref pl 'platform))
- (platform (if (pair? plat) (car plat) batch:platform)))
- (let ((os (or ((((build 'open-table) 'platform #f)
- 'get 'operating-system) platform) batch:platform)))
- (cond ((not os) (slib:error "OS corresponding to " platform " unknown"))
- (else (list (os->batch-dialect os)))))))
+(define (batch:chop-to-fit-system . args)
+ (apply batch:apply-chop-to-fit
+ batch:try-system
+ args))
+
+(define (read-version parms)
+ (call-with-input-file
+ (string-append (car (parameter-list-ref parms 'scm-srcdir)) "patchlvl.h")
+ (lambda (port)
+ (do ((c (read-char port) (read-char port)))
+ ((or (eof-object? c) (eqv? #\= c))
+ (symbol->string (read port)))))))
+
+(define (batch:rebuild-catalog parms)
+ (batch:delete-file parms
+ (in-vicinity (car (parameter-list-ref parms 'implvic))
+ "slibcat")))
(define build:initializer
(lambda (rdb)
@@ -1548,6 +1644,9 @@ CHEAP_CONTINUATIONS.")
(set! build:c-lib-support
(make-defaulting-platform-lookup
(build:c-libraries 'get 'lib-support)))
+ (set! build:c-suppress
+ (make-defaulting-platform-lookup
+ (build:c-libraries 'get 'suppress-files)))
(set! plan-command
(let ((lookup (make-defaulting-platform-lookup
(((rdb 'open-table) 'compile-commands #f)
@@ -1555,61 +1654,3 @@ CHEAP_CONTINUATIONS.")
(lambda (thing plat)
(slib:eval (lookup thing plat)))))))
(build:initializer build)
-
-(define (rebuild-catalog)
- (delete-file (in-vicinity (implementation-vicinity) "slibcat"))
- ;;(load (in-vicinity (implementation-vicinity) "mkimpcat"))
- )
-
-(define (build-from-argv argv)
- (cond ((string? argv)
- (require 'read-command)
- (set! argv (call-with-input-string argv read-command))))
- (let ()
- (define command (string->symbol (list-ref argv *optind*)))
- (define argc (length argv))
- (cond
- ((pair? argv)
- (set! *optind* (+ 1 *optind*))
- ((make-command-server build '*commands*)
- command
- (lambda (comname comval options positions arities types
- defaulters checks aliases)
- (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)
- ((not (check-arities (map arity->arity-spec arities) fparams))
- (slib:error 'build-from-argv "arity error" fparams) #f)
- (else (comval fparams))))))))))
-
-(define (build-from-whole-argv argv)
- (set! *optind* 0)
- (set! *optarg* #f)
- (build-from-argv argv))
-
-(define b build-from-whole-argv)
-
-(define (b*)
- (require 'read-command)
- (do ((e (read-command) (read-command)))
- ((eof-object? e))
- (cond ((null? e))
- (else
- (cond ((not (string-ci=? (car e) "build"))
- (set! e (cons "build" e))))
- (write (build-from-whole-argv e))
- (newline)))
- (display "build> ")
- (force-output)))
-
-(define (bi) (build-from-argv *argv*))
-
-(cond (*interactive*
- (display "type (b \"build <command-line>\") to build") (newline)
- (display "type (b*) to enter build command loop") (newline)))
-
-;;; Local Variables:
-;;; mode:scheme
-;;; End: