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

;; EMU-ELS: list of EMU modules to install

;;; Code:

(setq emu-modules (cons 'emu
			(if (if (featurep 'xemacs)
				;; running-xemacs-19_14-or-later
				(or (>= emacs-major-version 20)
				    (and (= emacs-major-version 19)
					 (>= emacs-minor-version 14)))
			      ;; running-emacs-19_29-or-later
			      (or (>= emacs-major-version 20)
				  (and (= emacs-major-version 19)
				       (>= emacs-minor-version 29))))
			    '(richtext)
			  '(tinyrich))))

(setq emu-modules-to-compile nil)

(setq emu-modules-not-to-compile nil)

(setq pcustom-modules (if (and (module-installed-p 'custom)
			       ;; new custom requires widget.
			       (module-installed-p 'widget))
			  '(pcustom)
			;; XXX: order is significant in current make process.
			'(tinycustom pcustom)))

(let ((poe-modules '(poe))
      (pces-modules '(pces))
      (poem-modules '(poem))
      (mcs-modules '(mcharset))
      (invisible-modules '(invisible))
      (pccl-modules '(pccl)))
  (cond ((featurep 'xemacs)
	 (setq poe-modules (cons 'poe-xemacs poe-modules)
	       invisible-modules (cons 'inv-xemacs invisible-modules))
	 )
	((>= emacs-major-version 19)
	 (setq invisible-modules (cons 'inv-19 invisible-modules))
	 (if (and (= emacs-major-version 19)
		  (<= emacs-minor-version 28))
	     (setq poe-modules (cons 'localhook poe-modules))
	   )
	 )
	(t
	 (setq poe-modules (cons 'env (cons 'poe-18 (cons 'localhook poe-modules)))
	       invisible-modules (cons 'inv-18 invisible-modules))
	 ))
  (cond ((featurep 'xemacs)
	 (if (featurep 'file-coding)
	     (setq pces-modules (cons 'pces-xfc (cons 'pces-20 pces-modules)))
	   )
	 (if (featurep 'mule)
	     (setq pces-modules (cons 'pces-xm pces-modules))
	   (setq pces-modules (cons 'pces-raw pces-modules))
	   ))
	((featurep 'mule)
	 (cond ((>= emacs-major-version 20)
		(setq pces-modules
		      (cons 'pces-e20 (cons 'pces-20 pces-modules)))
		(or (and (fboundp 'set-buffer-multibyte)
			 (subrp (symbol-function 'set-buffer-multibyte)))
		    (setq pces-modules (cons 'pces-e20_2 pces-modules)))
		)
	       (t
		;; for MULE 1.* and 2.*
		(setq pces-modules (cons 'pces-om pces-modules))
		)))
	((boundp 'NEMACS)
	 ;; for Nemacs and Nepoch
	 (setq pces-modules (cons 'pces-nemacs pces-modules))
	 )
	(t
	 (setq pces-modules (cons 'pces-raw pces-modules))
	 ))
  (cond ((featurep 'mule)
	 (cond ((featurep 'xemacs)
		(setq poem-modules (cons 'poem-xm poem-modules)
		      mcs-modules (append '(mcs-xmu mcs-xm mcs-20)
					  mcs-modules))
		(if (featurep 'utf-2000)
		    (setq emu-modules-not-to-compile
			  (cons 'mcs-xmu emu-modules-not-to-compile)))
		(if (>= emacs-major-version 21)
		    (setq pccl-modules (cons 'pccl-20 pccl-modules))
		  ))
	       ((>= emacs-major-version 20)
		(setq poem-modules (cons 'poem-e20 poem-modules)
		      mcs-modules (cons 'mcs-e20 (cons 'mcs-20 mcs-modules))
		      pccl-modules (cons 'pccl-20 pccl-modules))
		(setq poem-modules
		      (cons
		       (if (and
			    (fboundp 'set-buffer-multibyte)
			    (subrp (symbol-function 'set-buffer-multibyte)))
			   'poem-e20_3
			 'poem-e20_2)
		       poem-modules))
		)
	       (t
		(setq poem-modules (cons 'poem-om poem-modules)
		      mcs-modules (cons 'mcs-om mcs-modules)
		      pccl-modules (cons 'pccl-om pccl-modules)
		      emu-modules (cons 'emu-mule emu-modules))
		))
	 )
	((boundp 'NEMACS)
	 (setq poem-modules (cons 'poem-nemacs poem-modules)
	       mcs-modules (cons 'mcs-nemacs mcs-modules))
	 )
	(t
	 (setq poem-modules (cons 'poem-ltn1 poem-modules)
	       mcs-modules (cons 'mcs-ltn1 mcs-modules))
	 ))

  (setq emu-modules (append poe-modules
			    pces-modules poem-modules
			    mcs-modules invisible-modules
			    pccl-modules pcustom-modules
			    emu-modules))

  (setq emu-modules (cons 'broken emu-modules))
  (setq emu-modules (cons 'static emu-modules))
  )

(let ((modules emu-modules)
      module)
  (while modules
    (setq module (car modules)
	  modules (cdr modules))
    (if (memq module emu-modules-not-to-compile)
	nil
      (setq emu-modules-to-compile (nconc emu-modules-to-compile
					  (list module))))))

;;; EMU-ELS ends here
