;; Copyright (C) 1993, 1994, 1995, 1997, 1998 Free Software Foundation, Inc. ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this software; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;; ;; As a special exception, the Free Software Foundation gives permission ;; for additional uses of the text contained in its release of GUILE. ;; ;; The exception is that, if you link the GUILE library with other files ;; to produce an executable, this does not by itself cause the ;; resulting executable to be covered by the GNU General Public License. ;; Your use of that executable is in no way restricted on account of ;; linking the GUILE library code into it. ;; ;; This exception does not however invalidate any other reasons why ;; the executable file might be covered by the GNU General Public License. ;; ;; This exception applies only to the code released by the ;; Free Software Foundation under the name GUILE. If you copy ;; code from other Free Software Foundation releases into a copy of ;; GUILE, as the General Public License permits, the exception does ;; not apply to the code that you add in this way. To avoid misleading ;; anyone as to the status of such modified files, you must delete ;; this exception notice from them. ;; ;; If you write modifications of your own for GUILE, it is your choice ;; whether to permit this exception to apply to your modifications. ;; If you do not wish that, delete this exception notice. ;;;; "mkimpcat.scm" Build SCM-specific catalog for SLIB. ;;; Author: Aubrey Jaffer. (let ((catname "implcat")) (call-with-output-file (in-vicinity (implementation-vicinity) catname) (lambda (op) (define (display* . args) (for-each (lambda (arg) (display arg op)) args) (newline op)) (define wb:vicinity (string-append (implementation-vicinity) "../wb/")) (define x-scm:vicinity (string-append (implementation-vicinity) "../xscm-2.01/")) (define (add-link feature ofile . libs) (cond ((file-exists? ofile) ;; remove #f from libs list (set! libs (let rem ((l libs)) (cond ((null? l) l) ((car l) (cons (car l) (rem (cdr l)))) (else (rem (cdr l)))))) (display " " op) (write (cons feature (cons 'compiled (cons ofile libs))) op) (newline op) #t) (else #f))) (define (add-alias from to) (display " " op) (write (cons from to) op) (newline op)) (define (add-source feature filename) (add-alias feature filename)) (define (add-links feature usr:lib x:lib link:able-suffix) (display* "#+" feature) (display* "(") (begin (cond ((add-link 'i/o-extensions (in-vicinity (implementation-vicinity) "ioext" link:able-suffix) (usr:lib "c")) (add-alias 'line-i/o 'i/o-extensions) (add-alias 'pipe 'i/o-extensions))) (cond ((add-link 'rev2-procedures (in-vicinity (implementation-vicinity) "sc2" link:able-suffix)) (add-alias 'rev3-procedures 'rev2-procedures))) (cond ((or (add-link 'db (in-vicinity wb:vicinity "db.so")) (add-link 'db (in-vicinity wb:vicinity "db" link:able-suffix) (in-vicinity wb:vicinity "handle" link:able-suffix) (in-vicinity wb:vicinity "blink" link:able-suffix) (in-vicinity wb:vicinity "prev" link:able-suffix) (in-vicinity wb:vicinity "ent" link:able-suffix) (in-vicinity wb:vicinity "sys" link:able-suffix) (in-vicinity wb:vicinity "del" link:able-suffix) (in-vicinity wb:vicinity "stats" link:able-suffix) (in-vicinity wb:vicinity "blkio" link:able-suffix) (in-vicinity wb:vicinity "scan" link:able-suffix) (usr:lib "c"))) (add-source 'wb-table (in-vicinity wb:vicinity "wbtab")) (add-alias 'wb 'db))) (cond ((add-link 'stringvector (in-vicinity x-scm:vicinity "strvec" link:able-suffix)) (add-source 'x11 (in-vicinity x-scm:vicinity "x11")) (add-source 'xevent(in-vicinity x-scm:vicinity "xevent")) (add-source 'xt (in-vicinity x-scm:vicinity "xt")) (add-source 'xm (in-vicinity x-scm:vicinity "xm")) (add-source 'xmsubs(in-vicinity x-scm:vicinity "xmsubs")) (add-source 'xaw (in-vicinity x-scm:vicinity "xaw")) (add-source 'xpm (in-vicinity x-scm:vicinity "xpm")))) (add-link 'turtle-graphics (in-vicinity (implementation-vicinity) "turtlegr" link:able-suffix) (x:lib "X11") (usr:lib "m") (usr:lib "c")) (add-link 'curses (in-vicinity (implementation-vicinity) "crs" link:able-suffix) (usr:lib "ncurses") ;;(usr:lib "curses") ;;(usr:lib "termcap") (usr:lib "c")) (add-link 'edit-line (in-vicinity (implementation-vicinity) "edline" link:able-suffix) (usr:lib "edit") (usr:lib "termcap") (usr:lib "c")) (add-link 'regex (in-vicinity (implementation-vicinity) "rgx" link:able-suffix) (usr:lib "c")) (add-link 'unix (in-vicinity (implementation-vicinity) "unix" link:able-suffix) (in-vicinity (implementation-vicinity) "ioext" link:able-suffix) (usr:lib "c")) (add-link 'posix (in-vicinity (implementation-vicinity) "posix" link:able-suffix) (usr:lib "c")) (add-link 'socket (in-vicinity (implementation-vicinity) "socket" link:able-suffix) (usr:lib "c")) (add-link 'record (in-vicinity (implementation-vicinity) "record" link:able-suffix)) (add-link 'generalized-c-arguments (in-vicinity (implementation-vicinity) "gsubr" link:able-suffix)) (add-link 'array-for-each (in-vicinity (implementation-vicinity) "ramap" link:able-suffix)) ) (display* ")") ) (begin (display* ";\"" catname "\" Implementation-specific SLIB catalog for " (scheme-implementation-type) (scheme-implementation-version) ". -*-scheme-*-") (display* ";") (display* "; DO NOT EDIT THIS FILE") (display* "; it is automagically generated by \"" *load-pathname* "\"") (newline op) ) ;; Output association lists to file "implcat" (begin ;; Simple associations -- OK for all modes of dynamic-linking (display* "(") (add-alias 'hobbit (in-vicinity (implementation-vicinity) "hobbit")) (add-alias 'scmhob (in-vicinity (implementation-vicinity) "scmhob")) (add-alias 'regex-case (in-vicinity (implementation-vicinity) "rgxcase")) (add-alias 'url-filename (in-vicinity (implementation-vicinity) "urlfile")) (add-source 'disarm (in-vicinity (implementation-vicinity) (string-append "disarm" (scheme-file-suffix)))) (add-source 'build (in-vicinity (implementation-vicinity) (string-append "build" (scheme-file-suffix)))) ;; (add-alias 'impl:callback '(identity)) (display* ")") ) (begin ;; Messy because this trait has no C-installed feature name (display* "#.(if (defined? renamed-identifier)") (display* " '(") (display " " op) (add-source 'macro (in-vicinity (implementation-vicinity) "Macro")) (display* " )") (display* " '())") ) (add-links 'dld (lambda (lib) (string-append "/usr/lib/lib" lib ".a")) (lambda (lib) (string-append "/usr/X11/lib/lib" lib ".sa")) ".o") (add-links 'dld:dyncm (lambda (lib) (or (and (member lib '("c" "m")) (let ((sa (string-append "/usr/lib/lib" lib ".sa"))) (and (file-exists? sa) sa))) (string-append "/usr/lib/lib" lib ".a"))) (lambda (lib) (string-append "/usr/X11/lib/lib" lib ".sa")) ".o") (add-links 'shl (lambda (lib) (if (member lib '("c" "m")) (string-append "/lib/lib" lib ".sl") (string-append "/usr/lib/lib" lib ".sl"))) (lambda (lib) (string-append "/usr/X11R5/lib/lib" lib ".sl")) ".sl") (add-links 'sun-dl ;; These libraries are (deferred) linked in conversion to ".so" (lambda (lib) #f) (lambda (lib) #f) ".so") )))