# (code-c-d "eev" "~/eev/")
# (find-eevfile "")
# (find-eevfile "splitter")
# (find-node "(make)Automatic" "`$*'" "stem")
# (find-node "(make)Automatic" "`$<'" "name of the first prerequisite")
# (find-node "(make)Pattern Intro" "%.o : %.c ; COMMAND...")
# (find-node "(make)Errors" "-rm -f *.o")

VERSION = 0.93
TGZ = eev-$(VERSION).tar.gz
EEVDIR = $(HOME)/eev
CHANGER = sh changer.sh

####
#
# default
#
####

all install help default:
	# If you have unpacked this in ~/eev/, then the installation
	# is done, except for the configuration of your dotfiles
	# (i.e., .bashrc, .cshrc, .emacs, .gdbinit, .emacs) - and to
	# do that you have to run a command explicitly:
	#
	#   make dotfiles-install
	#
	# its action can be undone with:
	#
	#   make dotfiles-restore
	#
	# The full details are described in the file INSTALL.

####
#
# dotfiles - stuff for modifying files like .bashrc/.zshrc/.emacs/...
#
####

# (find-node "(make)Echoing" "@echo")
# (find-node "(make)Errors" "-rm -f *.o")

dotfiles-install:
	$(CHANGER) $(EEVDIR)/rcfiles/.bashrc  $(HOME)/.bashrc
	$(CHANGER) $(EEVDIR)/rcfiles/.cshrc   $(HOME)/.cshrc
	$(CHANGER) $(EEVDIR)/rcfiles/.emacs   $(HOME)/.emacs
	$(CHANGER) $(EEVDIR)/rcfiles/.gdbinit $(HOME)/.gdbinit
	$(CHANGER) $(EEVDIR)/rcfiles/.zshrc   $(HOME)/.zshrc
	# Warning: if your Emacs init file is called .emacs.el
	# instead of .emacs this may not work!!!
	#
	# You can revert your dotfiles to their previous state by running:
	#   make dotfiles-restore

dotfiles-restore:
	-mv $(HOME)/.bashrc_pre-eev  $(HOME)/.bashrc
	-mv $(HOME)/.cshrc_pre-eev   $(HOME)/.cshrc
	-mv $(HOME)/.emacs_pre-eev   $(HOME)/.emacs
	-mv $(HOME)/.gdbinit_pre-eev $(HOME)/.gdbinit
	-mv $(HOME)/.zshrc_pre-eev   $(HOME)/.zshrc

dotfiles-rmbackups:
	rm -fv	$(HOME)/.bashrc_pre-eev $(HOME)/.cshrc_pre-eev	 \
		$(HOME)/.emacs_pre-eev  $(HOME)/.gdbinit_pre-eev \
		$(HOME)/.zshrc_pre-eev

dotfiles-showdiff:
	cd $(HOME); \
	for i in .bashrc .cshrc .emacs .gdbinit .zshrc; do	\
	  if [ -e $${i}_pre-eev ]; then		\
	    echo diff $$i $${i}_pre-eev;	\
		 diff $$i $${i}_pre-eev;	\
	  fi;		\
	done



####
#
# info-files
# Stuff for installing some "info" documents as a common user
# (find-shttpw3 "ftp.gnu.org/gnu/emacs/")
#
####

TMPDIR = $(EEVDIR)/tmp
DOWNLOADDIR = $(EEVDIR)/downloads
INFODIR = $(HOME)/info

ELISPTGZ = elisp-manual-21-2.8.tar.gz
ELISPURL = http://ftp.gnu.org/gnu/emacs/$(ELISPTGZ)
ELISPTMPDIR = $(TMPDIR)/elisp-manual-21-2.8
ELISPTGZLOCAL = $(DOWNLOADDIR)/$(ELISPTGZ)

$(ELISPTGZLOCAL):
	mkdir -p $(DOWNLOADDIR)
	cd $(DOWNLOADDIR); wget $(ELISPURL)

elisp-manual-dl: $(ELISPTGZLOCAL)

elisp-manual-install: elisp-manual-dl
	-rm -Rv   $(ELISPTMPDIR)/
	mkdir -p  $(TMPDIR)/
	tar -xvzf $(ELISPTGZLOCAL) -C $(TMPDIR)/
	gzip -v $(ELISPTMPDIR)/elisp $(ELISPTMPDIR)/elisp-*
	mkdir -p  $(INFODIR)
	mv -v $(ELISPTMPDIR)/elisp.gz $(ELISPTMPDIR)/elisp-*.gz $(INFODIR)
	rm -Rv    $(ELISPTMPDIR)/

ELINTROTGZ = emacs-lisp-intro-2.04.tar.gz
ELINTROURL = http://ftp.gnu.org/gnu/emacs/$(ELINTROTGZ)
ELINTROTMPDIR = $(TMPDIR)/emacs-lisp-intro-2.04
ELINTROTGZLOCAL = $(DOWNLOADDIR)/$(ELINTROTGZ)

$(ELINTROTGZLOCAL):
	mkdir -p $(DOWNLOADDIR)
	cd $(DOWNLOADDIR); wget $(ELINTROURL)

elintro-dl: $(ELINTROTGZLOCAL)

elintro-install: elintro-dl
	-rm -Rv   $(ELINTROTMPDIR)/
	mkdir -p  $(TMPDIR)/
	tar -xvzf $(ELINTROTGZLOCAL) -C $(TMPDIR)/
	gzip -v   $(ELINTROTMPDIR)/emacs-lisp-intro.info \
		  $(ELINTROTMPDIR)/emacs-lisp-intro.info-*
	mkdir -p  $(INFODIR)
	mv -v     $(ELINTROTMPDIR)/emacs-lisp-intro.info.gz \
		  $(ELINTROTMPDIR)/emacs-lisp-intro.info-*.gz $(INFODIR)
	rm -Rv    $(ELINTROTMPDIR)/


####
#
# devel - techie stuff for developers (i.e., for me)
#
####

# terms
# The descriptions of terminal types for eeg4 can be generated
# automatically, but we include the most common types in the package.
# (find-eev "libeeg/term" "save_termkeys_file")
# (find-eev "eeg4" "loadeeglib")
#
EEG4SAVETERMKEYSFILE = $(EEG4) \
  -c 'loadeeglibs k term; save_termkeys_file; exit'
EEG4TERMKEYFILES = \
  libeeg/term-linux.auto.tcl \
  libeeg/term-xterm.auto.tcl \
  libeeg/term-screen.auto.tcl

clean:
	rm -fv $(EEG4TERMKEYFILES)
	rm -fRv demo/.bash_history demo/bin/ demo/tmp/ demo/eev demo/e
tgz $(TGZ):
	tar -cvzf $(TGZ) `egrep -v '^ *(#|$$)' .files | sort`

libeeg/term-%.auto.tcl:
	TERM=$* $(EEG4SAVETERMKEYSFILE)
terms: $(EEG4TERMKEYFILES)




####
#
# Stuff for the demos
# I haven't tested this for ages!!!
# It's 2002may15 now and this stuff is certainly at least 50% broken...
#
####

# (find-man "1 bash" "--norc")
DEMOSH = /bin/bash
DEMODIR = $(PWD)/demo
EEG4 = LIBEEGDIR=$(PWD)/libeeg expect eeg4 --
DEMOEEG4 = HOME=$(DEMODIR) SHELL=$(DEMOSH) $(EEG4)

# (find-enode "Initial Options" "--debug-init")
# (find-elnode "Error Debugging" "--debug-init")
EMACS ?= emacs

prepdemo:
	mkdir -p demo/tmp/
	mkdir -p demo/bin/
	cp -v eeg eeg4 demo/bin/
	ln -snf ..   demo/eev
	ln -snf ../e demo/e

# list-demos
# demo-bash
list-demos:
	# The available demos are:
	#   make demo-emacs0		-- an introduction to emacs
	#   make demo-dlopen		-- a demo of advanced e-scripting
	#   make demo-bash		-- enter bash with "demo/" as home
	#   make demo-zsh		-- same, but for zsh.
	# To try the tutorial enter one of the demo shells and run
	#     emacs ~/e/tutorial.e
	# (or emacs ~/e/tutorial.pt.e for the version in portuguese).
	# Note that all demos, including the demo shells, run using an
	# alternate home directory -- you can run them without installing
	# anything.

demo-bash: eevs prepdemo
	HOME=$(PWD)/demo bash
demo-zsh: eevs prepdemo
	HOME=$(PWD)/demo zsh

demo-emacs0: files prepdemo
	rm -fv ~/tmp/foo ~/tmp/otherfoo
	$(DEMOEEG4) -f $(DEMODIR)/emacs0.eeg4  \
	  screen $(EMACS) -nw $(DEMODIR)/tmp/foo
	# demo-emacs0 terminated (used $$EMACS=$(EMACS)).

demo-dlopen: files prepdemo
	$(DEMOEEG4) -f $(DEMODIR)/dlopen.eeg4  \
	   screen  $(EMACS) -nw $(DEMODIR)/dlopen.e
	# demo-dlopen-eeg4 terminated (used $$EMACS=$(EMACS)).

xemacs-demo:
	EMACS="xemacs21 -debug-init" make demo
	# Note: this entry is just for debugging.
	# The demos don't work on xemacsen yet.



#
#  Local Variables:
#  coding:               no-conversion
#  ee-anchor-format:     "%s"
#  ee-charset-indicator: ""
#  End:
