Cocoa Emacs パッケージ

Cocoa Emacs をビルドする度に, Emacs.app/Contents/Resources 以下に elisp を入れるのが面倒なので, Makefile にしてみました.

$ make checkout
$ make emacsinstall
$ make apelinstall
$ make installlib

とすることで, CVS から checkout して,で外部 elisp のインストールまでできます.

2回目からは, make update で checkout ではなく update できます.

中身は決して美しくないので, ダメ出ししていただけたらと思います(汗)

#################################################################################
#
# Cocoa-Emacs Makefile
#
# $Id: 2009-03-24.txt 783 2009-07-25 08:38:21Z nanasess $
#
#################################################################################

PREFIX = /Users/nanasess/src/cocoa-emacs
RM = /bin/rm -rfv
TAR = tar xvzf
CURL = curl -O
SOURCE_DIR = $(EMACS_SRC) $(APEL_SRC) $(SKK_SRC) $(MEW_SRC) $(W3M_SRC) $(HOWM_SRC)

## Emacs Variables
EMACS_SRC = emacs
EMACS_APP = $(PREFIX)/$(EMACS_SRC)/nextstep/Emacs.app
EMACS = $(EMACS_APP)/Contents/MacOS/Emacs
EMACS_PREFIX = $(EMACS_APP)/Contents/Resources
EMACS_BINDIR = $(EMACS_APP)/Contents/MacOS/bin
INFO_DIR = $(EMACS_PREFIX)/info
SITE_DIR = $(EMACS_PREFIX)/site-lisp

# APEL Variables
APEL_SRC = apel
APEL_CFG = APEL-CFG
APEL_DIR = $(SITE_DIR)/apel
EMU_DIR = $(SITE_DIR)/emu
APEL_MAKE_ENV = PREFIX=$(EMACS_PREFIX) APEL_DIR=$(APEL_DIR) EMU_DIR=$(EMU_DIR) EMACS=$(EMACS)

# SKK Variables
SKK_SRC = skk/main
SKK_CFG = SKK-CFG
SKK_DATADIR = $(EMACS_PREFIX)/etc/skk
SKK_INFODIR = $(INFO_DIR)
SKK_LISPDIR = $(SITE_DIR)/skk
SKK_SET_JISYO = t

# howm Variables
HOWM_SRC = howm-test

# Mew Variables
MEW_SRC = mew

# W3M Variables
W3M_SRC = emacs-w3m

# Muse Variables
MUSE_SRC = muse-latest
MUSE_CFG = Makefile.defs

all:
	@echo "make checkout or make update"
	@echo "make emacsinstall"
	@echo "make apelinstall"
	@echo "make installlib"

################################################################################
# common targets
################################################################################

update:
	cd $(EMACS_SRC) && cvs -q update -dP
	cd $(APEL_SRC) && cvs -q update -dP
	cd $(MEW_SRC) && cvs -q update -dP
	cd $(W3M_SRC) && cvs -q update -dP

buildlib: skkbuild howmbuild mewbuild w3mbuild musebuild

installlib: skkinstall howminstall mewinstall w3minstall museinstall

cleanall: emacsdistclean apelclean apelcfgclean skkclean skkcfgclean howmclean mewclean w3mclean musecfgclean

sourceclean:
	$(RM) $(SOURCE_DIR) $(HOWM_SRC).* $(MUSE_SRC).*

checkout: sourceclean checkoutemacs checkoutapel checkoutskk checkouthowm checkoutmew checkoutw3m checkoutmuse

################################################################################
# checkouts
################################################################################

checkoutemacs:
	cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co $(EMACS_SRC)
checkoutapel:
	cvs -z9 -d :pserver:anonymous@cvs.m17n.org:/cvs/root co $(APEL_SRC)

checkoutskk:
	cvs -d :pserver:guest@openlab.jp:/circus/cvsroot checkout $(SKK_SRC)

checkouthowm:
	$(CURL) http://howm.sourceforge.jp/a/$(HOWM_SRC).tar.gz ;\
	$(TAR) $(HOWM_SRC).tar.gz

checkoutmew:
	cvs -d :pserver:anoncvs@anoncvs.mew.org:/cvsmew co $(MEW_SRC)

checkoutw3m:
	cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co $(W3M_SRC)

checkoutmuse:
	$(CURL) http://mwolson.org/static/dist/muse-latest.tar.gz ;\
	$(TAR) $(MUSE_SRC).tar.gz

################################################################################
# emacs targets
################################################################################

emacsbuild:
	cd $(EMACS_SRC); \
	./configure --with-ns; \
	make

emacsinstall: emacsbuild
	cd $(EMACS_SRC); \
	make install

emacsclean:
	cd $(EMACS_SRC); \
	make clean

emacsdistclean:
	cd $(EMACS_SRC); \
	make distclean

################################################################################
# apel targets
################################################################################

apelcfg:
	cd $(APEL_SRC); \
	echo '(setq PREFIX "$(EMACS_PREFIX)")' >> $(APEL_CFG); \
	echo '(setq APEL_DIR "$(APEL_DIR)")' >> $(APEL_CFG); \
	echo '(setq EMU_DIR "$(EMU_DIR)")' >> $(APEL_CFG); 

apelcfgclean:
	cd $(APEL_SRC); \
	$(RM) $(APEL_CFG); \
	cvs update $(APEL_CFG)

apelbuild: apelcfg
	cd $(APEL_SRC); \
	make what-where EMACS=$(EMACS); \
	make EMACS=$(EMACS); \

apelinstall: apelbuild
	cd $(APEL_SRC); \
	make install EMACS=$(EMACS);

apelclean:
	cd $(APEL_SRC); \
	make clean

################################################################################
# skk targets
################################################################################

skkcfg:
	cd $(SKK_SRC); \
	echo '(setq PREFIX "$(EMACS_PREFIX)")' >> $(SKK_CFG); \
	echo '(setq EMU_DIR "$(EMU_DIR)")' >> $(SKK_CFG); \
	echo '(setq SKK_DATADIR "$(SKK_DATADIR)")' >> $(SKK_CFG); \
	echo '(setq SKK_INFODIR "$(SKK_INFODIR)")' >> $(SKK_CFG); \
	echo '(setq SKK_LISPDIR "$(SKK_LISPDIR)")' >> $(SKK_CFG); \
	echo '(setq SKK_SET_JISYO $(SKK_SET_JISYO))' >> $(SKK_CFG);

skkcfgclean:
	cd $(SKK_SRC); \
	$(RM) $(SKK_CFG); \
	cvs update $(SKK_CFG)

skkbuild: skkcfg
	cd $(SKK_SRC); \
	make what-where EMACS=$(EMACS); \
	make EMACS=$(EMACS)

skkinstall: skkbuild
	cd $(SKK_SRC); \
	make install EMACS=$(EMACS)


skkclean:
	cd $(SKK_SRC); \
	make clean EMACS=$(EMACS)

################################################################################
# howm targets
################################################################################

howmbuild:
	cd $(HOWM_SRC); \
	./configure	--with-emacs=$(EMACS) --prefix=$(PREFIX) \
			--exec-prefix=$(EMACS_BINDIR); \
	make

howminstall: howmbuild
	cd $(HOWM_SRC); \
	make install

howmclean:
	cd $(HOWM_SRC); \
	make distclean

################################################################################
# mew targets
################################################################################

mewbuild:
	cd $(MEW_SRC); \
	./configure	--with-emacs=$(EMACS) --prefix=$(PREFIX) \
			--bindir=$(EMACS_BINDIR) --with-elispdir=$(SITE_DIR)/mew \
			--with-etcdir=$(SITE_DIR)/etc --infodir=$(INFO_DIR) \
	make && make info && make jinfo

mewinstall: mewbuild
	cd $(MEW_SRC); \
	make install && make install-info && make install-jinfo

mewclean:
	cd $(MEW_SRC); \
	make distclean

################################################################################
# w3m targets
################################################################################

w3mbuild:
	cd $(W3M_SRC); \
	autoconf; \
	./configure	--with-emacs=$(EMACS) --prefix=$(PREFIX) \
			--bindir=$(EMACS_BINDIR) --sbindir=$(EMACS_BINDIR) \
			--with-lispdir=$(SITE_DIR)/w3m --infodir=$(INFO_DIR) \
	make

w3minstall: w3mbuild
	cd $(W3M_SRC); \
	make install && make install-icons && make install-icons30

w3mclean:
	cd $(W3M_SRC); \
	make distclean

################################################################################
# muse targets
################################################################################

musecfg:
	cd $(MUSE_SRC); \
	echo 'EMACS = $(EMACS)' >> $(MUSE_CFG); \
	echo 'PREFIX = $(EMACS_PREFIX)' >> $(MUSE_CFG); \
	echo 'SITEFLAG = --no-site-file' >> $(MUSE_CFG); \
	echo 'DESTDIR  =' >> $(MUSE_CFG); \
	echo 'PREFIX   = $(PREFIX)' >> $(MUSE_CFG);\
	echo 'ELISPDIR = $(SITE_DIR)/muse' >> $(MUSE_CFG); \
	echo 'INFODIR  = $(INFO_DIR)' >> $(MUSE_CFG); \
	echo 'install_info = install-info --info-dir=$$(INFODIR) $$(1) || :' >> $(MUSE_CFG); \
	echo 'PROJECT     = muse' >> $(MUSE_CFG); \
	echo 'VERSION     = 3.12' >> $(MUSE_CFG); \
	echo 'MANUAL      = muse' >> $(MUSE_CFG); \
	echo 'ELPADIR  = ../../elpa' >> $(MUSE_CFG); \
	echo 'ELPADESC = Authoring and publishing tool' >> $(MUSE_CFG);

musecfgclean:
	cd $(MUSE_SRC); \
	$(RM) $(MUSE_CFG)

musebuild:
	cd $(MUSE_SRC); \
	make

museinstall: musecfg musebuild
	cd $(MUSE_SRC); \
	make install

ChangeLog

2009-07-21  Kentaro Ohkouchi  <nanasess@fsm.ne.jp>

	* Makefile: Emacs Muse の設定を追加
	: フォーマットを修正

2009-04-30  Kentaro Ohkouchi  <nanasess@fsm.ne.jp>

	* Makefile (all): target を少し変更
	(buildlib): apelinstall を削除
	(buildall): removed

2009-03-24  Kentaro Ohkouchi  <nanasess@fsm.ne.jp>

	* Makefile: initial version