Removed v18 stuff; now we require 'poe.
[elisp/apel.git] / EMU-ELS
1 ;;; EMU-ELS --- list of EMU modules to install -*-Emacs-Lisp-*-
2
3 ;;; Commentary:
4
5 ;; APEL-MK imports `emu-modules' and `emu-modules-to-compile' from here.
6
7 ;;; Code:
8
9 (defvar emu-modules-not-to-compile nil)
10 (defvar emu-modules-to-compile nil)
11
12 ;; We use compile-time evaluation heavily.  So, order of compilation is
13 ;; very significant.  For example, loading some module before compiling
14 ;; it will cause "compile-time" evaluation many times.
15 (defvar emu-modules
16   (nconc
17    ;; modules are sorted by compilation order.
18    '(static broken)
19    ;; coming soon.
20    ;; '(product)
21
22    ;; poe modules; poe modules depend on static.
23    (cond
24     ;; XEmacs.
25     ((featurep 'xemacs)
26      '(poe-xemacs poe))
27     ;; Emacs 19.29 and earlier. (yes, includes Emacs 19.29.)
28     ((and (= emacs-major-version 19)
29           (<= emacs-minor-version 29))
30      '(localhook poe))
31     ;; Emacs 19.30 and later.
32     ((>= emacs-major-version 19)
33      '(poe))
34     (t
35      ;; v18.
36      '(localhook env poe-18 poe)))
37
38    ;; pcustom modules; pcustom modules depend on poe.
39    (if (and (module-installed-p 'custom)
40             ;; new custom requires widget.
41             (module-installed-p 'widget))
42        ;; if both 'custom and 'widget are found, we have new custom.
43        '(pcustom)
44      ;; pcustom does (require 'custom) at compile-time, and tinycustom
45      ;; need to test existence of some custom macros at compile-time!
46      ;; so, we must compile tinycustom first.
47      '(tinycustom pcustom))
48
49    ;; pccl modules; pccl modules depend on broken.
50    (cond
51     ((featurep 'mule)
52      (cond
53       ;; XEmacs 21 w/ mule.
54       ((and (featurep 'xemacs)
55             (>= emacs-major-version 21))
56        '(pccl-20 pccl))
57       ;; Emacs 20.
58       ((>= emacs-major-version 20)
59        '(pccl-20 pccl))
60       (t
61        ;; Mule 1.* and 2.*.
62        '(pccl-om pccl)))))
63
64    ;; pces modules; pces modules depend on poe.
65    (cond
66     ((featurep 'xemacs)
67      (cond
68       ((featurep 'mule)
69        ;; XEmacs w/ mule.
70        ;; pces-xfc depends pces-20, so we compile pces-20 first.
71        '(pces-20 pces-xm pces-xfc pces))
72       ((featurep 'file-coding)
73        ;; XEmacs w/ file-coding.
74        ;; pces-xfc depends pces-20, so we compile pces-20 first.
75        '(pces-20 pces-xfc pces))
76       (t
77        '(pces-raw pces))))
78     ((featurep 'mule)
79      (cond
80       ;; Emacs 20.3 and later.
81       ((and (fboundp 'set-buffer-multibyte)
82             (subrp (symbol-function 'set-buffer-multibyte)))
83        ;; pces-e20 depends pces-20, so we compile pces-20 first.
84        '(pces-20 pces-e20 pces))
85       ;; Emacs 20.1 and 20.2.
86       ((= emacs-major-version 20)
87        ;; pces-e20 depends pces-20, so we compile pces-20 first.
88        '(pces-20 pces-e20_2 pces-e20 pces))
89       (t
90        ;; Mule 1.* and 2.*.
91        '(pces-om pces))))
92     ((boundp 'NEMACS)
93      ;; Nemacs.
94      '(pces-nemacs pces))
95     (t
96      '(pces-raw pces)))
97
98    ;; poem modules; poem modules depend on pces.
99    (cond
100     ((featurep 'mule)
101      (cond
102       ((featurep 'xemacs)
103        ;; XEmacs w/ mule.
104        '(poem-xm poem))
105       ((>= emacs-major-version 20)
106        (if (and (fboundp 'set-buffer-multibyte)
107                 (subrp (symbol-function 'set-buffer-multibyte)))
108            ;; Emacs 20.3 and later.
109            '(poem-e20_3 poem-e20 poem)
110          ;; Emacs 20.1 and 20.2.
111          '(poem-e20_2 poem-e20 poem)))
112       (t
113        ;; Mule 1.* and 2.*.
114        '(poem-om poem))))
115     ((boundp 'NEMACS)
116      '(poem-nemacs poem))
117     (t
118      '(poem-ltn1 poem)))
119
120    ;; mcharset modules; mcharset modules depend on poem and pcustom.
121    (cond
122     ((featurep 'mule)
123      (cond
124       ((featurep 'xemacs)
125        ;; XEmacs w/ mule.
126        (if (featurep 'utf-2000)
127            ;; XEmacs w/ UTF-2000.
128            (setq emu-modules-not-to-compile
129                  (cons 'mcs-xmu emu-modules-not-to-compile)))
130        ;; mcs-xm depends mcs-20, so we compile mcs-20 first.
131        '(mcs-20 mcs-xmu mcs-xm mcharset))
132       ((>= emacs-major-version 20)
133        ;; Emacs 20 and later.
134        ;; mcs-e20 depends mcs-20, so we compile mcs-20 first.
135        '(mcs-20 mcs-e20 mcharset))
136       (t
137        ;; Mule 1.* and 2.*.
138        '(mcs-om mcharset))))
139     ((boundp 'NEMACS)
140      ;; Nemacs.
141      '(mcs-nemacs mcharset))
142     (t
143      '(mcs-ltn1 mcharset)))
144
145    ;; mule-caesar.el; part of apel-modules, but it is version-dependent.
146    '(mule-caesar)
147
148    ;; time-stamp.el; First appeared in Emacs 19.16.
149    ;; XXX: is this intended to include XEmacs ? FIXME!
150    (if (or (< emacs-major-version 19)
151            (and (= emacs-major-version 19)
152                 (< emacs-minor-version 16)))
153        '(time-stamp))
154
155    ;; timezone.el; Some versions have Y2K problem.
156    ;; coming soon.
157
158    ;; invisible modules; provided for backward compatibility with old "tm".
159    (cond
160     ((featurep 'xemacs)
161      ;; XEmacs.
162      '(inv-xemacs invisible))
163     ((>= emacs-major-version 19)
164      ;; Emacs 19 and later.
165      '(inv-19 invisible))
166     (t
167      ;; v18.
168      '(inv-18 invisible)))
169
170    ;; emu modules; provided for backward compatibility with old "tm".
171    (if (and (featurep 'mule)
172             (< emacs-major-version 20))
173        ;; Mule 1.* and 2.*.
174        '(emu-mule emu)
175      '(emu))
176
177    ;; emu submodules; text/richtext and text/enriched support.
178    (if (if (featurep 'xemacs)
179            (or (>= emacs-major-version 20)
180                (and (= emacs-major-version 19)
181                     (>= emacs-minor-version 14)))
182          (or (>= emacs-major-version 20)
183              (and (= emacs-major-version 19)
184                   (>= emacs-minor-version 29))))
185        ;; XEmacs 19.14 and later, or Emacs 19.29 and later.
186        '(richtext)
187      '(tinyrich))))
188
189 ;; Generate `emu-modules-to-compile' from `emu-modules-not-to-compile'
190 ;; and `emu-modules'.
191 (let ((modules emu-modules-not-to-compile))
192   (setq emu-modules-to-compile (copy-sequence emu-modules))
193   (while modules
194     (setq emu-modules-to-compile (delq (car modules) emu-modules-to-compile)
195           modules (cdr modules))))
196
197 ;;; EMU-ELS ends here