;;; 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 (if (or (featurep 'xemacs) (fboundp 'normal-top-level-add-subdirs-to-load-path)) ;; Make "emu" subdirectory. "emu" ;; Don't make "emu" subdirectory. "")) ;; 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