1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
;;; -*- Mode: Lisp -*-
;;; software.lisp --
;;;
;;; Copyright (c) 2000-2005 Marco Antoniotti, all rights reserved.
;;; This software is released under the terms of the GNU Lesser General
;;; Public License (LGPL, see file COPYRIGHT for details).
(in-package "CL.ENVIRONMENT")
(defclass software ()
((type :initarg :type :reader software-type)
(version :initarg :version :reader software-version)
)
(:documentation "The CL.ENVIRONMENT Software Class."))
;;; Known CL implementations.
;;; The hierarchy is rather arbitrary, representing "derivation".
(defclass generic-common-lisp-implementation (software
feature-tagged-type-class)
((type :reader common-lisp-implementation-type)
(version :reader common-lisp-implementation-version)
(tag :reader common-lisp-implementation-feature-tag
:reader cl-feature-tag
:type symbol)
)
(:documentation "The CL.ENVIRONMENT Common Lisp Implementation Class.")
(:default-initargs :type (lisp-implementation-type)
:version (lisp-implementation-version)))
;;; Tags for CL implementations
;;; CMUCL :cmucl
;;; SBCL :sbcl
;;; ACL :allegro
;;; CLISP :clisp
;;; LW :lispworks
;;; Corman Lisp :corman-lisp
;;; ECLS :ecl
;;; etc etc
;;; See below!!!
(defclass cmucl (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :cmu))
(defclass sbcl (cmucl)
()
(:default-initargs :feature-tag :sbcl))
(defclass allegro (generic-common-lisp-implementation)
((case-sensitive :type boolean :initarg :case-sensitive
:reader software-case-sensitive)
(characters-16bits :type boolean :initarg :characters-16bits
:reader software-characters-16bits))
(:default-initargs :feature-tag :allegro))
(defclass lispworks (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :lispworks))
(defclass clisp (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :clisp))
(defclass kcl (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :kcl))
(defclass ibcl (kcl)
()
(:default-initargs :feature-tag :ibcl))
(defclass akcl (kcl)
()
(:default-initargs :feature-tag :akcl))
(defclass ecolisp (kcl)
()
(:default-initargs :feature-tag :ecolisp))
(defclass ecl (ecolisp)
()
(:default-initargs :feature-tag :ecl))
(defclass gcl (kcl)
()
(:default-initargs :feature-tag :gcl))
(defclass mcl (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :mcl))
(defclass lucid (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :lucid))
(defclass lcl (lucid)
()
(:default-initargs :feature-tag :lcl))
(defclass scl (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :genera)) ; Symbolics Genera.
(defclass corman (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :corman-lisp))
(defclass eclipse (generic-common-lisp-implementation)
()
(:default-initargs :feature-tag :eclipse))
;;; The default binary directory name is the lowercase of the feature tag
(defgeneric software-binary-directory-name (software))
(defmethod software-binary-directory-name ((software software))
(string-downcase (symbol-name (cl-feature-tag software))))
;;; A generic function that allows for the specification of a "default
;;; source extension".
(defgeneric software-source-file-extension (sw)
)
(defmethod software-source-file-extension ((sw generic-common-lisp-implementation))
"lisp")
;;; end of file -- software.lisp --
|