source: trunk/source/cocoa-ide/defsystem.lisp @ 15180

Last change on this file since 15180 was 15180, checked in by rme, 8 years ago

New file cf-utils.lisp. Build it along with the rest of the IDE.

File size: 3.6 KB
Line 
1;;-*-Mode: LISP; Package: CCL -*-
2;;;
3;;;   Copyright (C) 2007 Clozure Associates
4;;;
5
6(in-package "CCL")
7
8(eval-when (:compile-toplevel :execute)
9  (use-interface-dir :cocoa))
10
11;; These are used to communicate with ide-bundle, which must be loaded before objc-support.
12;; They are defvar'ed so the caller can set them before loading us.
13(defvar *cocoa-application-path* nil)
14(defvar *cocoa-application-copy-headers-p* nil)
15(require "IDE-BUNDLE")
16
17(require "OBJC-SUPPORT")
18
19(defpackage "GUI"
20  (:use :common-lisp :ccl)
21  (:import-from
22   "CCL"
23   ;; symbols defined here
24   *cocoa-application-path*
25   *cocoa-application-copy-headers-p*
26   load-ide
27   build-ide
28   ;; Misc symbols that perhaps should be exported from CCL but currently aren't.
29   report-bad-arg
30   native-translated-namestring
31   make-id-map
32   assign-id-map-id
33   id-map-free-object
34   process-thread
35   process-serial-number
36   ensure-directory-pathname
37   recursive-copy-directory
38   application
39   ;; Symbols that perhaps should be exported by ObjC support but aren't
40   @selector
41   *nsapp*
42   with-nsstr
43   %make-nsstring
44   lisp-string-from-nsstring
45   with-autorelease-pool
46   ns-height
47   ns-width
48   *cocoa-event-process*
49   create-autorelease-pool
50   release-autorelease-pool
51   release-canonical-nsobject
52   objc-message-send
53   open-main-bundle
54   )
55  (:export
56   "ABSTRACT-NS-LISP-STRING"
57   "NS-LISP-STRING"
58   "NS-LISP-STRING-STRING"
59   "BACKGROUND-PROCESS-RUN-FUNCTION"
60
61   "EXECUTE-IN-GUI"
62   ))
63
64(defparameter *ide-files*
65  '(;"ide-bundle" - loaded by hand above
66    "constants"
67    "cocoa-utils"
68    "cf-utils"
69    "cocoa-defaults"
70    "cocoa-prefs"
71    "cocoa-typeout"
72    "console-window"
73    "cocoa-window"
74    "cocoa-doc"
75    "compile-hemlock"
76    "hemlock"  ;; treated specially below, compile-hemlock must come before.
77    "cocoa-editor"
78    "cocoa-listener"
79    "cocoa-grep"
80    "cocoa-backtrace"
81    "inspector"
82    "project"
83    "cocoa-remote-lisp"
84    "swank-listener"
85    "preferences"
86    "processes-window"
87    "apropos-window"
88    "xapropos"
89    "file-dialogs"
90    "app-delegate"
91    "ide-self-update"
92    "search-files"
93    "start"
94    ))
95
96(defparameter *leopard-only-ide-files*
97  '("xinspector"
98    ))
99
100(defun load-ide-files (names src-dir force-compile)
101  (declare (special *hemlock-files*)) ;; kludge
102  (let* ((bin-dir (merge-pathnames ";fasls;" src-dir)))
103    (ensure-directories-exist bin-dir)
104    (with-compilation-unit ()
105      (dolist (name names)
106        (let* ((source (make-pathname :name name :type (pathname-type *.lisp-pathname*)
107                                      :defaults src-dir))
108               (fasl (make-pathname :name name :type (pathname-type *.fasl-pathname*)
109                                    :defaults bin-dir))
110               (sources (cons source
111                              (and (equalp name "hemlock")
112                                   ;; This is defined in compile-hemlock, which is loaded first
113                                   (mapcar #'hemlock-source-pathname *hemlock-files*)))))
114          (if (needs-compile-p fasl sources force-compile)
115            (progn
116              ;; Once compile something, keep compiling, in case macros changed.
117              (setq force-compile t)
118              (compile-file source :output-file fasl :verbose t :load t))
119            (load fasl :verbose t))))))
120  force-compile)
121
122(defun load-ide (&optional force-compile)
123  ;; kludge to limit experimental files to Leopard
124  #+darwin-target
125  (rlet ((p :int))
126    (#_Gestalt #$gestaltSystemVersion p)
127    (when (>= (%get-long p) #x1050)
128      (setq *ide-files* (append *ide-files* *leopard-only-ide-files*))))
129  (load-ide-files *ide-files* "ccl:cocoa-ide;" force-compile)
130  (provide "COCOA"))
Note: See TracBrowser for help on using the repository browser.