;;; -*-Emacs-Lisp-*-

;; EMH-MK: installer for EMH.

;;; Code:

(defun config-emh ()
  (let (prefix lisp-dir version-specific-lisp-dir)
    (and (setq prefix (car command-line-args-left))
	 (or (string-equal "NONE" prefix)
	     (defvar PREFIX prefix)
	     ))
    (setq command-line-args-left (cdr command-line-args-left))
    (and (setq lisp-dir (car command-line-args-left))
	 (or (string-equal "NONE" lisp-dir)
	     (defvar LISPDIR lisp-dir)
	     ))
    (setq command-line-args-left (cdr command-line-args-left))
    (and (setq version-specific-lisp-dir (car command-line-args-left))
	 (or (string-equal "NONE" version-specific-lisp-dir)
	     (progn
	       (defvar VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir)
	       (princ (format "VERSION_SPECIFIC_LISPDIR=%s\n"
			      VERSION_SPECIFIC_LISPDIR)))
	     ))
    (setq command-line-args-left (cdr command-line-args-left))
    (config-emh-pixmap-dir)
    )
  (setq command-line-args-left (cdr command-line-args-left))
  (load-file "EMH-CFG")
  (load-file "EMH-ELS")
  (princ (format "PREFIX=%s
LISPDIR=%s\n" PREFIX LISPDIR))
  )

(defun compile-emh ()
  (config-emh)
  (compile-elisp-modules emh-modules ".")
  )

(defun install-emh ()
  (config-emh)
  (install-elisp-modules emh-modules "./" EMH_DIR)
  (if PIXMAPDIR (install-emh-icons))
  )

(defun config-emh-package ()
  (let (package-dir)
    (and (setq package-dir (car command-line-args-left))
	 (or (string= "NONE" package-dir)
	     (defvar PACKAGEDIR package-dir)
	     ))
    (setq command-line-args-left (cdr command-line-args-left))
    (load-file "EMH-CFG")
    (load-file "EMH-ELS")
    (setq emh-modules (append emh-modules
			       '(auto-autoloads custom-load)))
    (princ (format "PACKAGEDIR=%s\n" PACKAGEDIR))
    (config-emh-pixmap-dir PACKAGEDIR)
    ))

(defun compile-emh-package ()
  (config-emh-package)

  (setq autoload-package-name "emh")
  (add-to-list 'command-line-args-left ".")
  (batch-update-directory)

  (add-to-list 'command-line-args-left ".")
  (Custom-make-dependencies)

  (compile-elisp-modules emh-modules ".")
  )

(defun install-emh-package ()
  (config-emh-package)
  (install-elisp-modules emh-modules
			 "./"
			 (expand-file-name EMH_PREFIX
					   (expand-file-name "lisp"
							     PACKAGEDIR)))
  (if PIXMAPDIR (install-emh-icons))
  )

(defun config-emh-pixmap-dir (&optional packagedir)
  (let ((pixmap-dir (car command-line-args-left)))
    (defvar PIXMAPDIR
      (if (string= pixmap-dir "NONE")
	  (if packagedir
	      (expand-file-name "etc/emh/" packagedir)
	    (expand-file-name "emh/icons/" data-directory))
	pixmap-dir)))
  (if PIXMAPDIR
      (princ (format "PIXMAPDIR is %s\n" PIXMAPDIR)))
  (setq command-line-args-left (cdr command-line-args-left)))

(defun install-emh-icons ()
  (if (not (file-directory-p PIXMAPDIR))
      (make-directory PIXMAPDIR t))
  (let* ((case-fold-search t)
	 (icons (if (and (not (featurep 'xemacs))
			 (boundp 'emacs-major-version)
			 (>= emacs-major-version 21))
		    (directory-files "./etc/icons" t "\\.xpm$")))
	 icon dest)
    (while icons
      (setq icon  (car icons)
	    icons (cdr icons)
	    dest  (expand-file-name (file-name-nondirectory icon) PIXMAPDIR))
      (princ (format "%s -> %s\n"
		     (file-name-nondirectory icon)
		     (substring (file-name-directory dest) 0 -1)))
      (copy-file icon dest t))))

;;; EMH-MK ends here
