1 | (in-package "CCL") |
---|
2 | |
---|
3 | (defparameter *hemlock-src-dir-pathname* "ccl:cocoa-ide;hemlock;src;") |
---|
4 | |
---|
5 | (defparameter *hemlock-binary-dir-pathname* "ccl:cocoa-ide;hemlock;bin;openmcl;") |
---|
6 | |
---|
7 | (defparameter *hemlock-binary-file-extension* |
---|
8 | (pathname-type (compile-file-pathname "foo.lisp"))) |
---|
9 | |
---|
10 | (defun hemlock-source-pathname (name) |
---|
11 | (make-pathname :name name |
---|
12 | :type "lisp" |
---|
13 | :defaults *hemlock-src-dir-pathname*)) |
---|
14 | |
---|
15 | (defun hemlock-binary-pathname (name) |
---|
16 | (make-pathname :name name |
---|
17 | :type *hemlock-binary-file-extension* |
---|
18 | :defaults *hemlock-binary-dir-pathname*)) |
---|
19 | |
---|
20 | (defun compile-and-load-hemlock-file (name &optional force) |
---|
21 | (let* ((source-pathname (hemlock-source-pathname name)) |
---|
22 | (binary-pathname (hemlock-binary-pathname name))) |
---|
23 | (when (or force |
---|
24 | (not (probe-file binary-pathname)) |
---|
25 | (> (file-write-date source-pathname) |
---|
26 | (file-write-date binary-pathname))) |
---|
27 | (compile-file source-pathname :output-file binary-pathname :verbose t)) |
---|
28 | (load binary-pathname :verbose t))) |
---|
29 | |
---|
30 | |
---|
31 | (defparameter *hemlock-files* |
---|
32 | '("package" |
---|
33 | |
---|
34 | "hemlock-ext" |
---|
35 | |
---|
36 | "decls" ;early declarations of functions and stuff |
---|
37 | |
---|
38 | "struct" |
---|
39 | "charmacs" |
---|
40 | "key-event" |
---|
41 | "keysym-defs" |
---|
42 | "cocoa-hemlock" |
---|
43 | "rompsite" |
---|
44 | |
---|
45 | "macros" |
---|
46 | |
---|
47 | "views" |
---|
48 | "line" |
---|
49 | "ring" |
---|
50 | "vars" |
---|
51 | "interp" |
---|
52 | "syntax" |
---|
53 | "htext1" |
---|
54 | "buffer" |
---|
55 | "htext2" |
---|
56 | "htext3" |
---|
57 | "htext4" |
---|
58 | "files" |
---|
59 | "search1" |
---|
60 | "search2" |
---|
61 | "table" |
---|
62 | "modeline" |
---|
63 | "pop-up-stream" |
---|
64 | "font" |
---|
65 | "streams" |
---|
66 | "main" |
---|
67 | "echo" |
---|
68 | "echocoms" |
---|
69 | "command" |
---|
70 | "indent" |
---|
71 | ;; moved "comments" |
---|
72 | "morecoms" |
---|
73 | "undo" |
---|
74 | "killcoms" |
---|
75 | "searchcoms" |
---|
76 | "isearchcoms" |
---|
77 | "filecoms" |
---|
78 | "doccoms" |
---|
79 | "fill" |
---|
80 | "text" |
---|
81 | "lispmode" |
---|
82 | "listener" |
---|
83 | "comments" |
---|
84 | "icom" |
---|
85 | "defsyn" |
---|
86 | "edit-defs" |
---|
87 | "register" |
---|
88 | "completion" |
---|
89 | "symbol-completion" |
---|
90 | "bindings" |
---|
91 | )) |
---|
92 | |
---|
93 | (defun compile-hemlock (&optional force) |
---|
94 | (with-compilation-unit () |
---|
95 | (dolist (name *hemlock-files*) |
---|
96 | (compile-and-load-hemlock-file name force))) |
---|
97 | (fasl-concatenate "ccl:cocoa-ide;hemlock" |
---|
98 | (mapcar #'hemlock-binary-pathname *hemlock-files*) |
---|
99 | :if-exists :supersede) |
---|
100 | (provide "HEMLOCK") |
---|
101 | ) |
---|
102 | |
---|
103 | |
---|
104 | (provide "COMPILE-HEMLOCK") |
---|