(DEFMACRO DEFINE-SYSTEM (NAME DIRECTORY &BODY MODULES) ;; TRANSLATE INTO SIMPLE LINEAR ORDER, LOAD, COMPILE. ;; TAKE CARE OF DIFFERENT OBJECT DIRECTORIES. `(DEFSYSTEM ,NAME (:PATHNAME-DEFAULT ,(STRING-APPEND "AI-SYS:" DIRECTORY ";")) ,@(MAPCAR #'(LAMBDA (M) `(:MODULE ,M ((,(STRING M) ,(STRING-APPEND #-TI "AI-SYS:BIN;" #+TI "AI-SYS:BIN." #+(AND LMI REL2) "LMI-REL-2;" #+(AND LMI REL3) "LMI-REL-3;" #+TI "TI-REL-2;" M))))) MODULES) ,@(MAPCAR #'(LAMBDA (M) (LET ((NEED (BUTLAST MODULES (- (LENGTH MODULES) (FIND-POSITION-IN-LIST M MODULES))))) (IF (NOT NEED) `(:COMPILE-LOAD ,M) `(:COMPILE-LOAD ,M (:FASLOAD ,@NEED) (:FASLOAD ,@NEED))))) MODULES)))