compile-commands

compile-commands
name platform procedure
symbol platform expression
platform
symbol symbol expression
make-archive *unknown*
(lambda (oname objects libs parms)
  (let ((aname (string-append "lib" oname ".a")))
    (and (batch:try-command parms "ar rc" aname objects)
         (batch:try-command parms "ranlib" aname)
         aname)))
make-dll-archive freebsd
(lambda (oname objects libs parms)
  (and (batch:try-command
         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")))
make-dll-archive *unknown*
(lambda (oname objects libs parms)
  (let ((aname (string-append
                 (car (parameter-list-ref parms 'implvic))
                 oname
                 ".a")))
    (and (batch:try-command parms "ar rc" aname objects)
         (batch:try-command parms "ranlib" aname)
         (batch:rebuild-catalog parms)
         aname)))
make-dll-archive linux
(lambda (oname objects libs parms)
  (let ((platform
          (car (parameter-list-ref parms 'platform))))
    (and (batch:try-command
           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"))))
make-dll-archive sunos
(lambda (oname objects libs parms)
  (and (batch:try-command
         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-dll-c-files freebsd
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-O"
         "-fpic"
         "-c"
         (string-append
           "-I"
           (parameter-list-ref parms 'scm-srcdir))
         (c-includes parms)
         (c-flags parms)
         files)
       (let ((objs (map c->o files)))
         (every (lambda (f)
                  (and (batch:try-command parms "ld" "-Bshareable" f)
                       (batch:try-command parms "mv" "a.out" f)))
                objs)
         objs)))
compile-dll-c-files *unknown*
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-O"
         "-c"
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) "\\/]")))
compile-dll-c-files gcc
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-O"
         "-c"
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) "\\/]")))
compile-dll-c-files linux
(lambda (files parms)
  (and (batch:try-chopped-command
         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-command
                              parms
                              "gcc"
                              "-shared"
                              "-o"
                              (string-append fname ".so")
                              (string-append fname ".o")
                              ld-opts)
                            (batch:delete-file
                              parms
                              (string-append fname ".o"))
                            (string-append fname ".so")))
                     (truncate-up-to (map c-> files) #\/))))
         (and (apply and? results) results))))
compile-dll-c-files linux-aout
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-Wall"
         "-O2"
         "-c"
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-dll-c-files hp-ux
(lambda (files parms)
  (and (batch:try-chopped-command
         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-command
                             parms
                             "ld"
                             "-b"
                             "-o"
                             (string-append fname ".sl")
                             (string-append fname ".o"))
                           (string-append fname ".sl")))
                    (truncate-up-to (map c-> files) #\/))))
         (and (apply and? results) results))))
link-c-program freebsd
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    oname
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "cc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "crt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program *unknown*
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    oname
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "cc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "ecrt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program vms-gcc
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) "/]"))
        (oexe (string-append oname ".exe")))
    (and (batch:try-command parms "macro" "setjump")
         (batch:try-command
           parms
           "link"
           (apply string-join
                  ","
                  (append
                    objects
                    '("setjump.obj" "sys$input/opt
   ")))
           (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)))
link-c-program vms
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) "/]"))
        (oexe (string-append oname ".exe")))
    (and (batch:try-command parms "macro" "setjump")
         (batch:try-command
           parms
           "link"
           (apply string-join
                  ","
                  (append
                    (map obj-> objects)
                    '("setjump" "sys$input/opt
   ")))
           (apply string-join
                  ","
                  (append
                    (remove "" libs)
                    '("sys$share:vaxcrtl/share"))))
         (or (string-ci=? exe oexe)
             (batch:rename-file parms exe oexe))
         oexe)))
link-c-program acorn-unixlib
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "link"
         "-o"
         oname
         objects
         libs
         ":5.$.dev.gcc.unixlib36d.clib.o.unixlib")
       (batch:try-command parms "squeeze" oname)
       oname))
link-c-program atari-st-turbo-c
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "tlink"
         "-o"
         (string-append oname ".ttp")
         objects
         libs
         "mintlib.lib"
         "osbind.lib"
         "pcstdlib.lib"
         "pcfltlib.lib")
       (string-append oname ".ttp")))
link-c-program atari-st-gcc
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "gcc"
         "-v"
         "-o"
         (string-append oname ".ttp")
         objects
         libs)
       (string-append oname ".ttp")))
link-c-program amiga-gcc
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    oname
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "gcc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "ecrt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program amiga-dice-c
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "dcc"
         "-r"
         "-gs"
         "-o"
         oname
         objects
         libs)
       oname))
link-c-program amiga-sas
(lambda (oname objects libs parms)
  (define lnk-name "link.amiga")
  (apply batch:lines->file
         parms
         lnk-name
         (apply string-join
                "+"
                ">FROM LIB:c.o"
                (map object->string objects))
         (string-append
           "TO "
           (object->string (string-append "/" oname)))
         (append
           (cond ((pair? libs)
                  (cons (string-append "LIB LIB:" (car libs))
                        (map (lambda (s) (string-append "    LIB:" s))
                             (cdr libs))))
                 (else '()))
           '("VERBOSE" "SC" "SD")))
  oname)
link-c-program amiga-aztec
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "cc"
         "-o"
         oname
         objects
         libs
         "-lma")
       oname))
link-c-program aix
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "cc"
         "-lansi"
         "-o"
         oname
         objects
         libs)
       oname))
link-c-program svr4-gcc-sun-ld
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    oname
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "gcc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "ecrt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program cygwin32
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    (string-append oname ".exe")
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "gcc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "ecrt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program gcc
(lambda (oname objects libs parms)
  (batch:rename-file
    parms
    oname
    (string-append oname "~"))
  (and (batch:try-command
         parms
         "gcc"
         "-o"
         oname
         (must-be-first
           '("-nostartfiles"
             "pre-crt0.o"
             "ecrt0.o"
             "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program unicos
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "cc"
         "setjump.o"
         "-o"
         oname
         objects
         libs)
       oname))
link-c-program linux
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "gcc"
         "-rdynamic"
         "-o"
         oname
         (must-be-first
           '("pre-crt0.o" "ecrt0.o" "/usr/lib/crt0.o")
           (append objects libs)))
       oname))
link-c-program os/2-cset
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "link386"
         objects
         libs
         (string-append "," oname ".exe,,,;"))
       (string-append oname ".exe")))
link-c-program os/2-emx
(lambda (oname objects libs parms)
  (and (batch:try-command
         parms
         "gcc"
         "-o"
         (string-append oname ".exe")
         objects
         libs)
       (string-append oname ".exe")))
link-c-program djgpp
(lambda (oname objects libs parms)
  (let ((exe (string-append oname ".exe")))
    (and (or (batch:try-command
               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:try-chopped-command
                      parms
                      "ar"
                      "r"
                      arname
                      objects)
                    (batch:try-command
                      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))))
         (batch:try-command parms "strip" exe)
         (batch:delete-file parms oname)
         exe)))
link-c-program highc
(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))
    (and (batch:try-command
           parms
           "d:\\hi_c\\hc386.31\\bin\\hc386"
           "-o"
           oname
           "-stack 65000"
           (string-append "@" lnk-name))
         (batch:try-command
           parms
           "bind386"
           "d:/hi_c/pharlap.51/run386b.exe"
           oname
           "-exe"
           oexe)
         oexe)))
link-c-program watcom-9.0
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) #\\))
        (oexe (string-append oname ".exe")))
    (and (or (string-ci=? exe oexe)
             (batch:delete-file parms oexe))
         (batch:try-command
           parms
           "wlinkp"
           "option"
           "quiet"
           "option"
           "stack=40000"
           "FILE"
           (apply string-join "," (map obj-> objects))
           libs)
         (if (not (string-ci=? exe oexe))
           (batch:rename-file parms exe oexe))
         oexe)))
link-c-program microsoft-quick-c
(lambda (oname objects libs parms)
  (define crf-name (string-append oname ".crf"))
  (apply batch:lines->file
         parms
         crf-name
         `(,@(map (lambda (f) (string-append f " +")) objects)
           ""
           ,(string-append oname ".exe")
           ,(apply string-join " " libs)
           ";"))
  (and (batch:try-command
         parms
         "qlink"
         "/CP:0xffff"
         "/NOI"
         "/SE:0x80"
         "/ST:0x9c40"
         crf-name)
       (string-append oname ".exe")))
link-c-program microsoft-c-nt
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) #\\))
        (oexe (string-append oname ".exe")))
    (and (batch:try-command
           parms
           "link"
           "/nologo"
           (string-append "/out:" oexe)
           (apply string-join " " (map obj-> objects))
           libs)
         oexe)))
link-c-program microsoft-c
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) #\\))
        (oexe (string-append oname ".exe")))
    (and (or (string-ci=? exe oexe)
             (batch:delete-file parms oexe))
         (batch:try-command
           parms
           "link"
           "/noe"
           "/ST:40000"
           (apply string-join "+" (map obj-> objects))
           libs)
         (or (string-ci=? exe oexe)
             (batch:rename-file parms exe oexe))
         oexe)))
link-c-program turbo-c
(lambda (oname objects libs parms)
  (let ((exe (truncate-up-to (obj->exe (car objects)) #\\))
        (oexe (string-append oname ".exe")))
    (and (or (string-ci=? exe oexe)
             (batch:delete-file parms oexe))
         (batch:try-command
           parms
           "tcc"
           "-Lc:\\turboc\\lib"
           libs
           objects)
         (or (string-ci=? exe oexe)
             (batch:rename-file parms exe oexe))
         oexe)))
link-c-program borland-c
(lambda (oname objects libs parms)
  (define lnk-name (string-append oname ".lnk"))
  (apply batch:lines->file
         parms
         lnk-name
         (append libs objects))
  (and (batch:try-command
         parms
         "bcc"
         (string-append "-e" oname)
         "-ml"
         (string-append "@" lnk-name))
       (string-append oname ".exe")))
compile-c-files freebsd
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-O"
         "-c"
         (c-includes parms)
         (c-flags parms)
         files)
       (map c->o files)))
compile-c-files *unknown*
(lambda (files parms)
  (batch:try-chopped-command
    parms
    "cc"
    "-O"
    "-c"
    (include-spec "-I" parms)
    (c-includes parms)
    (c-flags parms)
    files)
  (truncate-up-to (map c->o files) "\\/]"))
compile-c-files vms-gcc
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         (map c-> files))
       (truncate-up-to (map c->obj files) "/]")))
compile-c-files vms
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         (c-includes parms)
         (c-flags parms)
         (map c-> files))
       (truncate-up-to (map c->obj files) "/]")))
compile-c-files acorn-unixlib
(lambda (files parms)
  (and (batch:try-chopped-command
         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 (map c->o files) #\/)))
compile-c-files atari-st-turbo-c
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "tcc"
         "-P"
         "-W-"
         "-Datarist"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files atari-st-gcc
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-v"
         "-O"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files amiga-gcc
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-Wall"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files amiga-dice-c
(lambda (files parms)
  (and (batch:try-command
         parms
         "dcc"
         "-r"
         "-gs"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files
         "-o"
         (truncate-up-to (map c->o files) #\/))
       (truncate-up-to (map c->o files) #\/)))
compile-c-files amiga-sas
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "lc"
         "-d3"
         "-M"
         "-fi"
         "-O"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (batch:try-command
         parms
         "blink with link.amiga NODEBUG")
       (truncate-up-to (map c->o files) #\/)))
compile-c-files amiga-aztec
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-dAMIGA"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files aix
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-O"
         "-Dunix"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files svr4
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-O"
         "-DSVR4"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files svr4-gcc-sun-ld
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files cygwin32
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-Wall"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files gcc
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files unicos
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "-hvector2"
         "-hscalar2"
         "-c"
         (include-spec "-i" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files linux
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-O2"
         "-c"
         (c-includes parms)
         (include-spec "-I" parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files linux-aout
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-Wall"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files hp-ux
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cc"
         "+O1"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\/)))
compile-c-files os/2-cset
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "icc"
         "/Gd-"
         "/Ge+"
         "/Gm+"
         "/Q"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->obj files) #\\)))
compile-c-files os/2-emx
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-O"
         "-m386"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) #\\)))
compile-c-files djgpp
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "gcc"
         "-Wall"
         "-O2"
         "-c"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->o files) "\\/")))
compile-c-files highc
(lambda (files parms)
  (define hcc-name "temp.hcc")
  (apply batch:lines->file parms hcc-name files)
  (and (batch:try-command
         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 (map c->obj files) #\\)))
compile-c-files watcom-9.0
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "wcc386p"
         "/mf"
         "/d2"
         "/ze"
         "/oxt"
         "/3s"
         "/zq"
         "/w3"
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->obj files) #\\)))
compile-c-files microsoft-quick-c
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "qcl"
         "/AH"
         "/W1"
         "/Ze"
         "/O"
         "/Ot"
         "/DNDEBUG"
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->obj files) #\\)))
compile-c-files microsoft-c-nt
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cl"
         "-c"
         "-nologo"
         (if (memq 'stack-limit
                   (parameter-list-ref parms 'features))
           "-Oityb1"
           "-Ox")
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->obj files) #\\)))
compile-c-files microsoft-c
(lambda (files parms)
  (and (batch:try-chopped-command
         parms
         "cl"
         "-c"
         "Oxp"
         "-AH"
         (include-spec "-I" parms)
         (c-includes parms)
         (c-flags parms)
         files)
       (truncate-up-to (map c->obj files) #\\)))
compile-c-files turbo-c
(lambda (files parms)
  (and (batch:try-chopped-command
         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 (map c->obj files) #\\)))
compile-c-files borland-c
(lambda (files parms)
  (define rsp-name "temp.rsp")
  (apply batch:lines->file parms rsp-name files)
  (and (batch:try-command
         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 (map c->obj files) #\\)))
update-catalog *unknown*
(lambda (oname objects libs parms)
  (batch:rebuild-catalog parms)
  (if (= 1 (length objects)) (car objects) objects))