Mercurial > hg > xemacs-beta
comparison lisp/make-docfile.el @ 209:41ff10fd062f r20-4b3
Import from CVS: tag r20-4b3
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:04:58 +0200 |
parents | |
children | d44af0c54775 |
comparison
equal
deleted
inserted
replaced
208:f427b8ec4379 | 209:41ff10fd062f |
---|---|
1 ;;; make-docfile.el --- Cache docstrings in external file | |
2 | |
3 | |
4 ;; Copyright (C) 1985, 1986, 1992-1995, 1997 Free Software Foundation, Inc. | |
5 | |
6 ;; Author: Unknown | |
7 ;; Maintainer: Steven L Baur <steve@altair.xemacs.org> | |
8 ;; Keywords: internal | |
9 | |
10 ;; This file is part of XEmacs. | |
11 | |
12 ;; XEmacs is free software; you can redistribute it and/or modify it | |
13 ;; under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; XEmacs is distributed in the hope that it will be useful, but | |
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
20 ;; General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with XEmacs; see the file COPYING. If not, write to the Free | |
24 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
25 ;; 02111-1307, USA. | |
26 | |
27 ;;; Synched up with: Not in FSF | |
28 | |
29 ;;; Commentary: | |
30 | |
31 ;; This is a front-end to the make-docfile program that gathers up all the | |
32 ;; lisp files that will be dumped with XEmacs. It would probably be best | |
33 ;; to just move make-docfile.c completely to lisp and be done with it. | |
34 | |
35 ;;; Code: | |
36 | |
37 (defvar options nil) | |
38 (defvar processed nil) | |
39 (defvar docfile nil) | |
40 (defvar docfile-buffer nil) | |
41 (defvar site-file-list nil) | |
42 (defvar docfile-out-of-date nil) | |
43 | |
44 ;; Gobble up the stuff we don't wish to pass on. | |
45 (setq command-line-args (cdr (cdr (cdr (cdr command-line-args))))) | |
46 | |
47 ;; First gather up the command line options. | |
48 (let (done) | |
49 (while (and (null done) command-line-args) | |
50 (let ((arg (car command-line-args))) | |
51 (cond ((or (string-equal arg "-o") ; Specify DOC file name | |
52 (string-equal arg "-a") ; Append to DOC file | |
53 (string-equal arg "-d")) ; Set working directory | |
54 (if (string-equal arg "-o") | |
55 (setq docfile (car (cdr command-line-args)))) | |
56 (setq options (cons arg options)) | |
57 (setq options (cons (car (cdr command-line-args)) options))) | |
58 ((string-equal arg "-i") ; Set site files to scan | |
59 (setq site-file-list (car (cdr command-line-args)))) | |
60 (t (setq done t))) | |
61 (if (null done) | |
62 (setq command-line-args (cdr (cdr command-line-args))))))) | |
63 (setq options (nreverse options)) | |
64 | |
65 ;; (print (concat "Options: " (prin1-to-string options))) | |
66 | |
67 ;; Next process the list of C files. | |
68 (while command-line-args | |
69 (let ((arg (car command-line-args))) | |
70 (if (null (member arg processed)) | |
71 (progn | |
72 (if (and (null docfile-out-of-date) | |
73 (file-newer-than-file-p arg docfile)) | |
74 (setq docfile-out-of-date t)) | |
75 (setq processed (cons arg processed))))) | |
76 (setq command-line-args (cdr command-line-args))) | |
77 | |
78 ;; Then process the list of Lisp files. | |
79 (define-function 'defalias 'define-function) | |
80 (let ((temp-path (expand-file-name "." (car load-path)))) | |
81 (setq load-path (nconc (mapcar | |
82 #'(lambda (i) (concat i "/")) | |
83 (directory-files temp-path t "^[^-.]" | |
84 nil 'dirs-only)) | |
85 (cons (file-name-as-directory temp-path) | |
86 load-path)))) | |
87 | |
88 ;; Then process the autoloads | |
89 (setq autoload-file-name "auto-autoloads.elc") | |
90 (setq source-directory (concat default-directory "../lisp")) | |
91 ;; (print (concat "Source directory: " source-directory)) | |
92 (require 'packages) | |
93 | |
94 ;; We must have some lisp support at this point | |
95 | |
96 ;(load "backquote") | |
97 ;(load "bytecomp-runtime") | |
98 ;(load "subr") | |
99 ;(load "replace") | |
100 ;(load "version.el") | |
101 ;(load "cl") | |
102 | |
103 ;; (load "featurep") | |
104 | |
105 (let (preloaded-file-list) | |
106 (load (concat default-directory "../lisp/prim/dumped-lisp.el")) | |
107 (setq preloaded-file-list | |
108 (append preloaded-file-list packages-hardcoded-lisp)) | |
109 (while preloaded-file-list | |
110 (let ((arg0 (packages-add-suffix (car preloaded-file-list))) | |
111 arg) | |
112 (setq arg (locate-library arg0)) | |
113 (if (null arg) | |
114 (princ (format "Error: dumped file %s does not exist\n" arg0)) | |
115 (if (null (member arg processed)) | |
116 (progn | |
117 (if (and (null docfile-out-of-date) | |
118 (file-newer-than-file-p arg docfile)) | |
119 (setq docfile-out-of-date t)) | |
120 (setq processed (cons arg processed))))) | |
121 (setq preloaded-file-list (cdr preloaded-file-list))))) | |
122 | |
123 ;; Finally process the list of site-loaded files. | |
124 (if site-file-list | |
125 (let (site-load-packages) | |
126 (load site-file-list t t) | |
127 (while site-load-packages | |
128 (let ((arg (car site-load-packages))) | |
129 (if (null (member arg processed)) | |
130 (progn | |
131 (if (and (null docfile-out-of-date) | |
132 (file-newer-than-file-p arg docfile)) | |
133 (setq docfile-out-of-date t)) | |
134 (setq processed (cons arg processed))))) | |
135 (setq site-load-packages (cdr site-load-packages))))) | |
136 | |
137 (packages-find-packages package-path t) | |
138 | |
139 (let ((autoloads (list-autoloads-path))) | |
140 ;; (print (concat "Autoloads: " (prin1-to-string autoloads))) | |
141 (while autoloads | |
142 (let ((arg (car autoloads))) | |
143 (if (null (member arg processed)) | |
144 (progn | |
145 ;; (print arg) | |
146 (if (and (null docfile-out-of-date) | |
147 (file-newer-than-file-p arg docfile)) | |
148 (setq docfile-out-of-date t)) | |
149 (setq processed (cons arg processed)))) | |
150 (setq autoloads (cdr autoloads))))) | |
151 | |
152 ;; Now fire up make-docfile and we're done | |
153 | |
154 (setq processed (nreverse processed)) | |
155 | |
156 ;; (print (prin1-to-string (append options processed))) | |
157 | |
158 (if docfile-out-of-date | |
159 (progn | |
160 (princ "Spawning make-docfile ...") | |
161 ;; (print (prin1-to-string (append options processed))) | |
162 | |
163 (setq exec-path (list (concat default-directory "../lib-src"))) | |
164 | |
165 ;; (locate-file-clear-hashing nil) | |
166 (if (memq system-type '(berkeley-unix next-mach)) | |
167 ;; Suboptimal, but we have a unresolved bug somewhere in the | |
168 ;; low-level process code | |
169 (call-process-internal | |
170 "/bin/csh" | |
171 nil | |
172 t | |
173 nil | |
174 "-fc" | |
175 (mapconcat | |
176 'identity | |
177 (append | |
178 (list (concat default-directory "../lib-src/make-docfile")) | |
179 options processed) | |
180 " ")) | |
181 ;; (print (prin1-to-string (append options processed))) | |
182 (apply 'call-process-internal | |
183 ;; (concat default-directory "../lib-src/make-docfile") | |
184 "make-docfile" | |
185 nil | |
186 t | |
187 nil | |
188 (append options processed))) | |
189 | |
190 (princ "Spawning make-docfile ...done\n") | |
191 ;; (write-region-internal (point-min) (point-max) "/tmp/DOC") | |
192 ) | |
193 (princ "DOC file is up to date\n")) | |
194 | |
195 (kill-emacs) | |
196 | |
197 ;;; make-docfile.el ends here |