;;; -*-Emacs-Lisp-*-
;;;
;;; $Id: inst-tm,v 7.40 1996/10/24 08:14:02 morioka Exp $
;;;

(defun config-tm ()
  (let (prefix exec-prefix)
    (setq prefix (car command-line-args-left))
    (and prefix
	 (not (string-equal "NONE" prefix))
	 (progn
	   (defvar PREFIX prefix)
	   (setq command-line-args-left (cdr command-line-args-left))
	   )
	 (setq exec-prefix (car command-line-args-left))
	 (progn
	   (defvar EXEC_PREFIX exec-prefix)
	   ;;(setq command-line-args-left (cdr command-line-args-left))
	   )))
  (load-file "TM-CFG")
  (load-file "../tl/TL-ELS")
  (load-file "../mu/MU-ELS")
  (load-file "../mel/MEL-ELS")
  (load-file "TM-ELS")
  (load-file "../tm-mh-e/TMH-ELS")
  (load-file "../tm-mail/TMAIL-ELS")
  (load-file "../tm-vm/TM-VM-ELS")
  (princ (format "PREFIX=%s\tEXEC_PREFIX=%s\n" PREFIX EXEC_PREFIX))
  )

(defun make-mime-setup (tl-absolute-path tl-path mu-path mel-path tm-path)
  (let ((buf (find-file "mime-setup.el.in")))
    (goto-char (point-min))
    (re-search-forward "^;;; Code:\n" nil t)
    (setq buffer-read-only nil)

    ;; generate tl setting
    (if (member tl-absolute-path default-load-path)
	(insert "\n(require \'tl-misc)")
      (insert
       (format "

\(let ((load-path
       (cons \"%s\"
             load-path)))
  (require \'tl-misc)
  )
\(add-path \"%s\")" tl-absolute-path tl-path))
      )
    
    ;; generate MU load-path setting
    (or (member mu-path default-load-path)
	(insert (format "\n(add-path \"%s\")" mu-path)))
    
    ;; generate MEL load-path setting
    (or (member mel-path default-load-path)
	(insert (format "\n(add-path \"%s\")" mel-path)))
    
    ;; generate tm load-path setting
    (or (member tm-path default-load-path)
	(insert (format "\n(add-path \"%s\")" tm-path)))
    
    ;; generate tm external-methods path setting
    (or (string= METHOD_DIR exec-directory)
	(insert
	 (format "\n(defvar mime-viewer/external-progs %s)"
		 (let ((dir (file-relative-name METHOD_DIR data-directory)))
		   (if (< (length dir) (length METHOD_DIR))
		       (concat "\n  (expand-file-name \""
			       dir "\" data-directory)")
		     (setq dir (file-relative-name METHOD_DIR
						   (expand-file-name "~/")))
		     (if (< (length dir) (length METHOD_DIR))
			 (concat "\n  (expand-file-name \"~/"
				 dir "\")")
		       (concat "\"" METHOD_DIR "\"")
		       )))
		 ))
	)
    (write-file "mime-setup.el")
    ))

(defun compile-tm ()
  (config-tm)
  (print load-path)
  (require 'mel-u)
  (require 'tm-edit)
  (load "rmailsum")
  (require 'tm-mh-e)
  (make-mime-setup TL_DIR TL_RELATIVE_DIR MU_RELATIVE_DIR
		   MEL_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR)
  (compile-elisp-modules tl-modules		"../tl")
  (compile-elisp-modules mu-modules-to-compile	"../mu")
  (compile-elisp-modules mel-modules		"../mel")
  (compile-elisp-modules tm-modules-to-compile	".")
  (compile-elisp-modules tm-mh-e-modules	"../tm-mh-e")
  (compile-elisp-module  'mime-setup		".")
  (require 'gnus)
  (cond ((featurep 'gnus-ems)
	 (load "../gnus-mime/Gnus-MIME-ELS")
	 (compile-elisp-modules gnus-mime-modules-to-compile "../gnus-mime")
	 )
	(t
         (load "../tm-gnus/TGNUS-ELS")
	 (compile-elisp-modules tm-gnus-modules-to-compile "../tm-gnus")
	 ))
  (compile-elisp-modules tm-mail-modules	"../tm-mail")
  (compile-elisp-modules tm-vm-modules-to-compile "../tm-vm")
  )

(defun install-tm ()
  (config-tm)
  (princ (format "%s\n" emacs-version))
  (print TL_DIR)
  (install-elisp-modules tl-modules	 "../tl"	TL_DIR)
  (install-elisp-modules mu-modules	 "../mu"	MU_DIR)
  (install-elisp-modules mel-modules	 "../mel"	MEL_DIR)
  (install-elisp-modules tm-modules	 "."		TM_KERNEL_DIR)
  (install-elisp-modules tm-mh-e-modules "../tm-mh-e"	TM_MHE_DIR)
  ;;(install-tm-gnus)
  (require 'gnus)
  (cond ((featurep 'gnus-ems)
	 (load "../gnus-mime/Gnus-MIME-ELS")
	 (install-elisp-modules gnus-mime-modules
				"../gnus-mime" Gnus_MIME_DIR)
	 )
	(t
	 (load "../tm-gnus/TGNUS-ELS")
	 (install-elisp-modules tm-gnus-modules "../tm-gnus" TM_GNUS_DIR)
	 ))
  (install-elisp-modules tm-mail-modules "../tm-mail"	TM_MAIL_DIR)
  (install-elisp-modules tm-vm-modules	 "../tm-vm"	TM_VM_DIR)
  (install-elisp-modules '(mime-setup)	 "."	SETUP_FILE_DIR)
  )

(defun install-execs ()
  (config-tm)
  (install-files BINS	    BIN_SRC_DIR    BIN_DIR)
  (install-files METHODS METHOD_SRC_DIR METHOD_DIR nil t)
  )

;;; inst-tm ends here
