#
#  Emacs Lisp Collections
#  http://homepage.mac.com/zenitani/emacs-j.html
#  http://homepage.mac.com/zenitani/emacs-e.html
#  http://homepage.mac.com/zenitani/emacs-fr.html
#
#  Carbon Emacs Package に同梱している emacs lisp ライブラリのうち、
#  プラットフォーム非依存のものを取り出したものです。
#
#  $Id: Makefile 294 2008-03-13 19:00:21Z zenitani $
#
###############################################################


MY_EMACS     := /Applications/Emacs.app/Contents/MacOS/Emacs
ELC_PREFIX   := $(shell pwd)/extra
ELC_LISPDIR   = ${ELC_PREFIX}/lisp
ELC_INFODIR   = ${ELC_PREFIX}/info
DATE         := $(shell date "+%Y%m%d")

ELISP_CONFIGURE	= ./configure --with-emacs=${MY_EMACS} --prefix=${ELC_PREFIX} 
ELISP_MAKE     	= env LANG=C make EMACS=${MY_EMACS} prefix=${ELC_PREFIX}
INSTALL	        = install -c -m 644

###############################################################

all: _preflight misc _apel _color _elib _emacs-muse _emacs-rails _ess _haskell _howm _imaxima _nxhtml _psgml _riece _postflight

_preflight: 
	rm -rf extra
	mkdir ${ELC_PREFIX}
	mkdir -p ${ELC_LISPDIR}
	mkdir -p ${ELC_INFODIR}

_postflight: 
	cp -p src/lisp/extra-autoloads.el ${ELC_LISPDIR}
	rmdir ${ELC_PREFIX}/etc
	ls -lR ${ELC_PREFIX}/share
	rm -rf ${ELC_PREFIX}/share
	tar zcvf extra-${DATE}.tar.gz extra


###############################################################
#
# いろいろなパッケージのインストール／コンパイル手順
#

misc: 
	cp -p src/misc/*.el ${ELC_LISPDIR}/
	cd  ${ELC_LISPDIR}/ ; \
	${MY_EMACS} -q --no-site-file -batch --eval \
		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'


## apel
_apel: ${ELC_LISPDIR}/apel

${ELC_LISPDIR}/apel:
	tar zxvf src/apel-*.tar.gz
	cd apel-* ; \
	make install EMACS=${MY_EMACS} LISPDIR=${ELC_LISPDIR} \
		VERSION_SPECIFIC_LISPDIR=${ELC_LISPDIR}

## color-theme
_color: ${ELC_LISPDIR}/color-theme

${ELC_LISPDIR}/color-theme:
	tar zxvf src/color-theme-*.tar.gz
	mkdir ${ELC_LISPDIR}/color-theme
	cd color-theme-* ; \
	cp -pR *.el ${ELC_LISPDIR}/color-theme ; \
	cp -pR themes ${ELC_LISPDIR}/color-theme
	cd  ${ELC_LISPDIR}/color-theme ; \
	${MY_EMACS} -q --no-site-file -batch --eval \
		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'

##elib
_elib: ${ELC_LISPDIR}/elib

${ELC_LISPDIR}/elib:
	tar zxvf src/elib-*.tar.gz
	cd elib-* ; \
	${ELISP_MAKE} infodir=${ELC_INFODIR} \
		ELIBDIR=${ELC_LISPDIR}/elib all install ; \
	install-info elib.info ${ELC_INFODIR}/dir \
	--entry="* Elib: (elib). Elib, the GNU Emacs lisp library."

## emacs-muse
_emacs-muse: ${ELC_LISPDIR}/muse

${ELC_LISPDIR}/muse:
	tar zxvf src/muse-*.tar.gz
	cd muse-* ; \
	patch -p1 < ../src/muse-texi.patch ; \
	${ELISP_MAKE} INFODIR=${ELC_INFODIR} \
		ELISPDIR=${ELC_LISPDIR}/muse all install
	touch ${ELC_LISPDIR}/muse/{contrib,experimental}/.nosearch

## emacs-rails
_emacs-rails: ${ELC_LISPDIR}/rails

${ELC_LISPDIR}/rails:
	tar zxvf src/emacs-rails-*.tar.gz
	[ -d ${ELC_LISPDIR}/rails ] || mkdir ${ELC_LISPDIR}/rails
	${INSTALL} emacs-rails/*.el    ${ELC_LISPDIR}/rails
	${INSTALL} src/lisp/find-recursive.el ${ELC_LISPDIR}/rails
	${INSTALL} src/lisp/snippet.el ${ELC_LISPDIR}/rails

## ess
_ess: ${ELC_LISPDIR}/ess

${ELC_LISPDIR}/ess:
	tar zxvf src/ess-*.tgz
	cd ess-* ; \
	${ELISP_MAKE} PREFIX=${ELC_PREFIX} LISPDIR=${ELC_LISPDIR}/ess \
	INFODIR=${ELC_PREFIX}/info ETCDIR=${ELC_LISPDIR}/ess/etc \
	all install
	touch ${ELC_LISPDIR}/ess/etc/.nosearch
	rm ${ELC_LISPDIR}/ess/Changelog
	rm ${ELC_LISPDIR}/ess/etc/sas-keys.ps

# ## flim
# _flim: ${ELC_LISPDIR}/flim

# ${ELC_LISPDIR}/flim: ${ELC_LISPDIR}/apel
# 	tar zxvf src/flim-*.tar.gz
# 	rm flim-*/sha1*.el
# 	rm flim-*/hex-util.el
# 	cd flim-* ; \
# 	make install EMACS=${MY_EMACS} LISPDIR=${ELC_LISPDIR} \
# 		VERSION_SPECIFIC_LISPDIR=${ELC_LISPDIR}/emu

## haskell
_haskell: ${ELC_LISPDIR}/haskell

${ELC_LISPDIR}/haskell: 
	tar zxvf src/haskell-mode-*.tar.gz
	cd haskell-mode-* ; \
	${MY_EMACS} -q --no-site-file -batch --eval \
		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'
	if [ -e ${ELC_LISPDIR}/haskell-mode ] ; \
		then rm -rf ${ELC_LISPDIR}/haskell-mode ; fi
	mkdir ${ELC_LISPDIR}/haskell-mode
	cp -p haskell-mode-*/*.el ${ELC_LISPDIR}/haskell-mode/
	cp -p haskell-mode-*/*.elc ${ELC_LISPDIR}/haskell-mode/

## howm
_howm: ${ELC_LISPDIR}/howm

${ELC_LISPDIR}/howm:
	tar zxvf src/howm-*.tar.gz
	cd howm-* ; \
	${ELISP_CONFIGURE} --datadir=${ELC_PREFIX}/etc ; \
	${ELISP_MAKE} all install lispdir=${ELC_LISPDIR} \
		docdir=${ELC_LISPDIR}/howm/doc
	touch ${ELC_LISPDIR}/howm/doc/.nosearch
	rm -rf ${ELC_PREFIX}/etc/howm

# ## icicles
# _icicles: ${ELC_LISPDIR}/icicles

# ${ELC_LISPDIR}/icicles:
# 	mkdir ${ELC_LISPDIR}/icicles
# 	cp -p src/icicles/*.el ${ELC_LISPDIR}/icicles
# 	cd  ${ELC_LISPDIR}/icicles ; \
# 	${MY_EMACS} -q --no-site-file -batch --eval \
# 		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'

## imaxima
_imaxima: ${ELC_LISPDIR}/imaxima

${ELC_LISPDIR}/imaxima:
	tar zxvf src/imaxima-*.tar.gz
	cd imaxima-* ; \
	${ELISP_CONFIGURE} --with-lispdir=${ELC_LISPDIR}/imaxima \
		infodir=${ELC_INFODIR} ; \
	${ELISP_MAKE} all install

# ## JDEE
# _eieio: ${ELC_LISPDIR}/eieio

# ${ELC_LISPDIR}/eieio:
# 	tar zxvf src/cedet-*.tar.gz
# 	mkdir ${ELC_LISPDIR}/eieio
# 	cp -p cedet-*/eieio/*.el ${ELC_LISPDIR}/eieio
# 	cd ${ELC_LISPDIR}/eieio ; \
# 	${MY_EMACS} -q --no-site-file -batch --eval \
# 		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'
# 	install-info cedet-*/eieio/eieio.info ${ELC_INFODIR}/dir
# ## end JDEE

# ## mmm-mode
# _mmm-mode: ${ELC_LISPDIR}/mmm-mode

# ${ELC_LISPDIR}/mmm-mode:
# 	tar zxvf src/mmm-mode-*.tar.gz
# 	cd mmm-mode-* ; \
# 	${ELISP_CONFIGURE} --with-lispdir=${ELC_LISPDIR}/mmm-mode ; \
# 	${ELISP_MAKE} install

## nxhtml
_nxhtml: ${ELC_LISPDIR}/nxhtml

${ELC_LISPDIR}/nxhtml:
	unzip -o src/nxhtml-*.zip
	rm -rf nxhtml/.nosearch
	rm -rf nxhtml/tests
	rm -rf nxhtml/old
	rm -rf nxhtml/?*/old
	touch nxhtml/nxhtml/{doc,html-chklnk,html-toc,html-upl,html-wtoc}/.nosearch
	touch nxhtml/etc/.nosearch
	cp -pR nxhtml ${ELC_LISPDIR}/

## psgml
_psgml: ${ELC_LISPDIR}/psgml

${ELC_LISPDIR}/psgml: 
	tar zxvf src/psgml-*.tar.gz
	cd psgml-* ; \
	${ELISP_CONFIGURE} ; \
	${ELISP_MAKE} infodir=${ELC_INFODIR} \
		lispdir=${ELC_LISPDIR}/psgml all install install-info

## python-mode
# Pymacs というライブラリも別途必要
# Pymacs is also necessary
# http://www.emacswiki.org/cgi-bin/wiki?PyMacs
# _python-mode: ${ELC_LISPDIR}/python-mode

# ${ELC_LISPDIR}/python-mode:
# 	tar zxvf src/python-mode-*.tar.gz
# 	cp -p src/lisp/pymacs.el python-mode-*
# 	cd python-mode-* ; \
# 	${MY_EMACS} -q --no-site-file -batch --eval \
# 		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'
# 	cp -pR python-mode-* ${ELC_LISPDIR}/python-mode

## riece
_riece: ${ELC_LISPDIR}/riece

${ELC_LISPDIR}/riece:
	tar zxvf src/riece-*.tar.gz
	cd riece-* ; \
	${ELISP_CONFIGURE} --with-lispdir=${ELC_LISPDIR} ; \
	${ELISP_MAKE} infodir=${ELC_INFODIR} install

# ## semi
# _semi: ${ELC_LISPDIR}/semi

# ${ELC_LISPDIR}/semi: ${ELC_LISPDIR}/flim ${ELC_LISPDIR}/apel
# 	tar zxvf src/semi-*.tar.gz
# 	rm semi-*/pgg*.el
# 	rm semi-*/smime.el
# 	cd semi-* ; \
# 	make install EMACS=${MY_EMACS} LISPDIR=${ELC_LISPDIR} \
# 		VERSION_SPECIFIC_LISPDIR=${ELC_LISPDIR}/emu

## slime
# _slime: ${ELC_LISPDIR}/slime

# ${ELC_LISPDIR}/slime:
# 	tar zxvf src/slime-*.tgz
# 	cd  slime/slime ; \
# 	${MY_EMACS} -q --no-site-file -batch --eval \
# 		'(progn (add-to-list (quote load-path) ".") (byte-recompile-directory "." 0))'
# 	cd  slime/slime/doc ; \
# 		${ELISP_MAKE} infodir=${ELC_INFODIR} install-info
# 	mkdir ${ELC_LISPDIR}/slime
# 	cp -p slime/slime/*.{el,elc}  ${ELC_LISPDIR}/slime
# 	cp -p slime/slime/*.lisp ${ELC_LISPDIR}/slime
# 	head slime/slime/ChangeLog > ${ELC_LISPDIR}/slime/ChangeLog
# 	echo "" >> ${ELC_LISPDIR}/slime/ChangeLog
# 	echo "== The rest part of the ChangeLog file was ommited. ==" >> ${ELC_LISPDIR}/slime/ChangeLog



###############################################################



# end
