;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 126.12
;;; Reason:
;;;  Moved *TARGET-FEATURES* to SI package.
;;;  Made #+(TARGET ...) ignore *TARGET-FEATURES* if null.
;;; Written 4-Aug-88 12:39:54 by smh at site Gigamos Cambridge
;;; while running on Harpo from band 2
;;; with ZWEI 125.10, ZMail 73.0, Local-File 75.2, File-Server 24.1, Unix-Interface 13.0, Tape 24.2, Lambda-Diag 17.0, Experimental System 126.11, microcode 1761, SDU Boot Tape 3.12, SDU ROM 102, 125+make-system system.



; From modified file DJ: L.IO; READ.LISP#468 at 4-Aug-88 12:39:58
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  "

(DEFUN XR-FEATURE-PRESENT (FEATURE &optional (feature-list *features*))
  (COND ((SYMBOLP FEATURE)
	 ;; recent common-lisp flamage claims that this should be memq, not member :test #'string=
	 ;;  Personally, I can't think of a more poorly-designed advertised feature in the
	 ;;  clisp manual than *features* and *modules*
	 (MEMQ FEATURE feature-list))
	((NUMBERP FEATURE)
	 (MEMBER-EQL FEATURE feature-list))
	((ATOM FEATURE)
	 (READ-ERROR "Unknown form ~S in #+ or #- feature list." FEATURE))
	((EQ (CAR FEATURE) :NOT)
	 (NOT (XR-FEATURE-PRESENT (CADR FEATURE) feature-list)))
	((EQ (CAR FEATURE) :AND)
	 (loop for f in (cdr feature)
	       always (XR-FEATURE-PRESENT f feature-list)))
	((EQ (CAR FEATURE) :OR)
	 (loop for f in (cdr feature)
	       thereis (XR-FEATURE-PRESENT f feature-list)))
	((eq (car feature) :PACKAGE-ROOT-NAME)	;extension, 7/18/87, RG.
	 (string-equal (si:package-root-name *previous-package*)
		       (cadr feature)))
	((eq (car feature) :target)		;cross compilation extension - 3aug88 smh
	 (xr-feature-present (cadr feature) (or *target-features* *features*)))
	((eq (car feature) :local)		;cross compilation extension - 3aug88 smh
	 (xr-feature-present (cadr feature) *features*))
	(T (READ-ERROR "Unknown form ~S in #+ or #- feature list." FEATURE))))

))

; From modified file DJ: L.SYS; QMISC.LISP#734 at 4-Aug-88 12:40:24
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QMISC  "

(defvar *target-features* 'nil			;4aug88 smh
  "An alternate *FEATURES* list which for purposes of cross compilation may be bound
or otherwise hacked instead of *FEATURES*.  #+(TARGET FOO) looks for FOO on
*TARGET-FEATURES* instead of *FEATURES*.  If NIL, *FEATURES* is used anyway.")

))
