(MAKEIT.BAT): Modify for apel-ja@lists.chise.org.
[elisp/apel.git] / APEL-MK
1 ;;; APEL-MK --- installer for APEL. -*-Emacs-Lisp-*-
2
3 ;;; Commentary:
4
5 ;; DON'T EDIT THIS FILE; edit APEL-CFG instead.
6
7 ;;; Code:
8
9 ;;; Configuration variables.
10
11 ;; Set these four variables in "APEL-CFG" or in "Makefile".
12
13 ;; This variable will be detected automatically.
14 (defvar PREFIX nil)
15
16 ;; This variable will be detected automatically using PREFIX.
17 ;; v18: (no standard site-lisp directory)
18 ;; Emacs 19.28 and earlier: "PREFIX/lib/emacs/site-lisp"
19 ;; Emacs 19.29 and later: "PREFIX/share/emacs/site-lisp"
20 (defvar LISPDIR nil)
21
22 ;; This variable will be detected automatically using PREFIX.
23 ;; Emacs 19.31 and later: "PREFIX/share/emacs/VERSION/site-lisp"
24 (defvar VERSION_SPECIFIC_LISPDIR nil)
25
26 ;; This variable will be detected automatically.
27 ;; XEmacs 21.0 and later: "/usr/local/lib/xemacs/xemacs-packages"
28 (defvar PACKAGEDIR nil)
29
30 ;; Install APEL modules to "apel" subdirectory.
31 (defvar APEL_PREFIX "apel")
32
33 ;; Install EMU modules to "emu" subdirectory if emacs supports some features.
34 ;; If your emacs does not have `normal-top-level-add-subdirs-to-load-path'
35 ;; but have `normal-top-level-add-to-load-path' and you want to use it in
36 ;; "subdirs.el", put the following line to "APEL-CFG".
37 ;; (setq EMU_PREFIX "emu")
38 (defvar EMU_PREFIX
39   (if (or (featurep 'xemacs)
40           (fboundp 'normal-top-level-add-subdirs-to-load-path))
41       ;; Make "emu" subdirectory.
42       "emu"
43     ;; Don't make "emu" subdirectory.
44     ""))
45
46 ;; The directories where APEL and EMU modules will be installed.
47 ;; These two variables will be generated from other variables above.
48 (defvar APEL_DIR nil)                   ; LISPDIR/APEL_PREFIX
49 (defvar EMU_DIR nil)                    ; VERSION_SPECIFIC_LISPDIR/EMU_PREFIX
50
51
52 ;;; Configure, Compile, and Install.
53
54 (defun config-apel ()
55   ;; Override everything you want.
56   (load-file "APEL-CFG")
57   ;; Override PREFIX, LISPDIR, and VERSION_SPECIFIC_LISPDIR with
58   ;; command-line options.
59   (let (prefix lisp-dir version-specific-lisp-dir)
60     (and (setq prefix
61                ;; Avoid using `pop'.
62                ;; (pop command-line-args-left)
63                (prog1
64                    (car command-line-args-left)
65                  (setq command-line-args-left
66                        (cdr command-line-args-left))))
67          (or (string-equal "NONE" prefix)
68              (setq PREFIX prefix)))
69     (and (setq lisp-dir
70                ;; Avoid using `pop'.
71                ;; (pop command-line-args-left)
72                (prog1
73                    (car command-line-args-left)
74                  (setq command-line-args-left
75                        (cdr command-line-args-left))))
76          (or (string-equal "NONE" lisp-dir)
77              (setq LISPDIR lisp-dir)))
78     (and (setq version-specific-lisp-dir
79                ;; Avoid using `pop'.
80                ;; (pop command-line-args-left)
81                (prog1
82                    (car command-line-args-left)
83                  (setq command-line-args-left
84                        (cdr command-line-args-left))))
85          (or (string-equal "NONE" version-specific-lisp-dir)
86              (setq VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir))))
87   ;; Load some APEL modules from this directory.
88   (defvar default-load-path load-path)
89   (setq load-path (cons (expand-file-name ".") load-path))
90   (require 'poe)
91   (require 'path-util)
92   (require 'install)
93
94   ;; Import `apel-modules'.
95   (load-file "APEL-ELS")
96   ;; Import `emu-modules' and `emu-modules-to-compile'.
97   (load-file "EMU-ELS")
98
99   ;; Set PREFIX, LISPDIR, and VERSION_SPECIFIC_LISPDIR if not set yet.
100   (or PREFIX
101       (setq PREFIX install-prefix))
102   (or LISPDIR
103       (setq LISPDIR (install-detect-elisp-directory PREFIX)))
104   (or VERSION_SPECIFIC_LISPDIR
105       (setq VERSION_SPECIFIC_LISPDIR
106             (install-detect-elisp-directory PREFIX nil 'version-specific)))
107   ;; The directories where APEL and EMU will be installed.
108   (or APEL_DIR
109       (setq APEL_DIR (expand-file-name APEL_PREFIX LISPDIR)))
110   (or EMU_DIR
111       (setq EMU_DIR (expand-file-name EMU_PREFIX VERSION_SPECIFIC_LISPDIR)))
112   (princ (format "\nLISPDIR=%s\n" LISPDIR))
113   (princ (format "VERSION_SPECIFIC_LISPDIR=%s\n" VERSION_SPECIFIC_LISPDIR)))
114
115 (defun compile-apel ()
116   (config-apel)
117   ;; Compile emu modules first.
118   (compile-elisp-modules emu-modules-to-compile ".")
119   (compile-elisp-modules apel-modules           "."))
120
121 (defun install-apel (&optional just-print)
122   (config-apel)
123   (or just-print
124       (setq just-print (install-just-print-p)))
125   (install-elisp-modules emu-modules    "." EMU_DIR  just-print)
126   (install-elisp-modules apel-modules   "." APEL_DIR just-print))
127
128 ;; For XEmacs package system.
129 (defun config-apel-package ()
130   ;; Override everything you want.
131   (load-file "APEL-CFG")
132   ;; Override PACKAGEDIR with command-line option.
133   (let (package-dir)
134     (and (setq package-dir
135                ;; Avoid using `pop'.
136                ;; (pop command-line-args-left)
137                (prog1
138                    (car command-line-args-left)
139                  (setq command-line-args-left
140                        (cdr command-line-args-left))))
141          (or (string= "NONE" package-dir)
142              (setq PACKAGEDIR package-dir))))
143   ;; Load some APEL modules from this directory.
144   (defvar default-load-path load-path)
145   (setq load-path (cons (expand-file-name ".") load-path))
146   (require 'poe)
147   (require 'path-util)
148   (require 'install)
149
150   ;; Import `apel-modules'.
151   (load-file "APEL-ELS")
152   ;; Import `emu-modules' and `emu-modules-to-compile'.
153   (load-file "EMU-ELS")
154
155   ;; Set PACKAGEDIR if not set yet.
156   (or PACKAGEDIR
157       (setq PACKAGEDIR (install-get-default-package-directory)))
158   (if PACKAGEDIR
159       (princ (format "\nPACKAGEDIR=%s\n" PACKAGEDIR))
160     (error "XEmacs package system is not available")))
161
162 (defun compile-apel-package ()
163   (config-apel-package)
164   ;; Compile emu modules first.
165   (compile-elisp-modules emu-modules-to-compile ".")
166   (compile-elisp-modules apel-modules           "."))
167
168 (defun install-apel-package ()
169   (config-apel-package)
170   (let ((just-print (install-just-print-p))
171         (dir (expand-file-name APEL_PREFIX
172                                (expand-file-name "lisp" PACKAGEDIR))))
173     (install-elisp-modules emu-modules  "." dir just-print)
174     (install-elisp-modules apel-modules "." dir just-print)
175     (install-update-package-files "apel" dir just-print)))
176
177 (defun what-where-apel ()
178   (install-apel 'just-print)
179   ;; (config-apel)
180 ;;;   (princ (format "
181 ;;; The files that belong to the EMU modules:
182 ;;;   %s
183 ;;;   -> %s
184
185 ;;; The files that belong to the APEL modules:
186 ;;;   %s
187 ;;;   -> %s
188
189 ;;; Do `make elc', `make install', `make package', or `make install-package'.
190 ;;; "
191 ;;;              (mapconcat (function symbol-name) emu-modules ", ")
192 ;;;              EMU_DIR
193 ;;;              (mapconcat (function symbol-name) apel-modules ", ")
194 ;;;              APEL_DIR))
195   )
196
197 ;;; APEL-MK ends here