;;; APEL-MK --- installer for APEL. -*-Emacs-Lisp-*-
;;; Commentary:
;; DON'T EDIT THIS FILE; edit APEL-CFG instead.
;;; Code:
;;; Configuration variables.
;; Set these four variables in "APEL-CFG" or in "Makefile".
;; This variable will be detected automatically.
(defvar PREFIX nil)
;; This variable will be detected automatically using PREFIX.
;; v18: (no standard site-lisp directory)
;; Emacs 19.28 and earlier: "PREFIX/lib/emacs/site-lisp"
;; Emacs 19.29 and later: "PREFIX/share/emacs/site-lisp"
(defvar LISPDIR nil)
;; This variable will be detected automatically using PREFIX.
;; Emacs 19.31 and later: "PREFIX/share/emacs/VERSION/site-lisp"
(defvar VERSION_SPECIFIC_LISPDIR nil)
;; This variable will be detected automatically.
;; XEmacs 21.0 and later: "/usr/local/lib/xemacs/xemacs-packages"
(defvar PACKAGEDIR nil)
;; Install APEL modules to "apel" subdirectory.
(defvar APEL_PREFIX "apel")
;; Install EMU modules to "emu" subdirectory if emacs supports some features.
;; If your emacs does not have `normal-top-level-add-subdirs-to-load-path'
;; but have `normal-top-level-add-to-load-path' and you want to use it in
;; "subdirs.el", put the following line to "APEL-CFG".
;; (setq EMU_PREFIX "emu")
(defvar EMU_PREFIX "emu")
;; The directories where APEL and EMU modules will be installed.
;; These two variables will be generated from other variables above.
(defvar APEL_DIR nil) ; LISPDIR/APEL_PREFIX
(defvar EMU_DIR nil) ; VERSION_SPECIFIC_LISPDIR/EMU_PREFIX
;;; Configure, Compile, and Install.
(defun config-apel ()
;; Override everything you want.
(load-file "APEL-CFG")
;; Override PREFIX, LISPDIR, and VERSION_SPECIFIC_LISPDIR with
;; command-line options.
(let (prefix lisp-dir version-specific-lisp-dir)
(and (setq prefix
;; Avoid using `pop'.
;; (pop command-line-args-left)
(prog1
(car command-line-args-left)
(setq command-line-args-left
(cdr command-line-args-left))))
(or (string-equal "NONE" prefix)
(setq PREFIX prefix)))
(and (setq lisp-dir
;; Avoid using `pop'.
;; (pop command-line-args-left)
(prog1
(car command-line-args-left)
(setq command-line-args-left
(cdr command-line-args-left))))
(or (string-equal "NONE" lisp-dir)
(setq LISPDIR lisp-dir)))
(and (setq version-specific-lisp-dir
;; Avoid using `pop'.
;; (pop command-line-args-left)
(prog1
(car command-line-args-left)
(setq command-line-args-left
(cdr command-line-args-left))))
(or (string-equal "NONE" version-specific-lisp-dir)
(setq VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir))))
;; Load some APEL modules from this directory.
(defvar default-load-path load-path)
(setq load-path (cons (expand-file-name ".") load-path))
(require 'poe)
(require 'path-util)
(require 'install)
;; Import `apel-modules'.
(load-file "APEL-ELS")
;; Import `emu-modules' and `emu-modules-to-compile'.
(load-file "EMU-ELS")
;; Set PREFIX, LISPDIR, and VERSION_SPECIFIC_LISPDIR if not set yet.
(or PREFIX
(setq PREFIX install-prefix))
(or LISPDIR
(setq LISPDIR (install-detect-elisp-directory PREFIX)))
(or VERSION_SPECIFIC_LISPDIR
(setq VERSION_SPECIFIC_LISPDIR
(install-detect-elisp-directory PREFIX nil 'version-specific)))
;; The directories where APEL and EMU will be installed.
(or APEL_DIR
(setq APEL_DIR (expand-file-name APEL_PREFIX LISPDIR)))
(or EMU_DIR
(setq EMU_DIR (expand-file-name EMU_PREFIX VERSION_SPECIFIC_LISPDIR)))
(princ (format "\nLISPDIR=%s\n" LISPDIR))
(princ (format "VERSION_SPECIFIC_LISPDIR=%s\n" VERSION_SPECIFIC_LISPDIR)))
(defun compile-apel ()
(config-apel)
;; Compile emu modules first.
(compile-elisp-modules emu-modules-to-compile ".")
(compile-elisp-modules apel-modules "."))
(defun install-apel (&optional just-print)
(config-apel)
(or just-print
(setq just-print (install-just-print-p)))
(install-elisp-modules emu-modules "." EMU_DIR just-print)
(install-elisp-modules apel-modules "." APEL_DIR just-print))
;; For XEmacs package system.
(defun config-apel-package ()
;; Override everything you want.
(load-file "APEL-CFG")
;; Override PACKAGEDIR with command-line option.
(let (package-dir)
(and (setq package-dir
;; Avoid using `pop'.
;; (pop command-line-args-left)
(prog1
(car command-line-args-left)
(setq command-line-args-left
(cdr command-line-args-left))))
(or (string= "NONE" package-dir)
(setq PACKAGEDIR package-dir))))
;; Load some APEL modules from this directory.
(defvar default-load-path load-path)
(setq load-path (cons (expand-file-name ".") load-path))
(require 'poe)
(require 'path-util)
(require 'install)
;; Import `apel-modules'.
(load-file "APEL-ELS")
;; Import `emu-modules' and `emu-modules-to-compile'.
(load-file "EMU-ELS")
;; Set PACKAGEDIR if not set yet.
(or PACKAGEDIR
(setq PACKAGEDIR (install-get-default-package-directory)))
(if PACKAGEDIR
(princ (format "\nPACKAGEDIR=%s\n" PACKAGEDIR))
(error "XEmacs package system is not available")))
(defun compile-apel-package ()
(config-apel-package)
;; Compile emu modules first.
(compile-elisp-modules emu-modules-to-compile ".")
(compile-elisp-modules apel-modules "."))
(defun install-apel-package ()
(config-apel-package)
(let ((just-print (install-just-print-p))
(dir (expand-file-name APEL_PREFIX
(expand-file-name "lisp" PACKAGEDIR))))
(install-elisp-modules emu-modules "." dir just-print)
(install-elisp-modules apel-modules "." dir just-print)
(install-update-package-files "apel" dir just-print)))
(defun what-where-apel ()
(install-apel 'just-print)
;; (config-apel)
;;; (princ (format "
;;; The files that belong to the EMU modules:
;;; %s
;;; -> %s
;;; The files that belong to the APEL modules:
;;; %s
;;; -> %s
;;; Do `make elc', `make install', `make package', or `make install-package'.
;;; "
;;; (mapconcat (function symbol-name) emu-modules ", ")
;;; EMU_DIR
;;; (mapconcat (function symbol-name) apel-modules ", ")
;;; APEL_DIR))
)
;;; APEL-MK ends here