#
# Main Makefile for slides (gnu make only, sorry)
#
# version 3.1 - Mon Jan 13, 2003
#


# TEXINPUTS - where latex looks for stuff
# (trailing : means 'empty' - add the default)
export TEXINPUTS=.:/home/sdo/lib/latex:

#   (Modify PATH to include ostermann's directory, for missing stuff)
PATH_IRG=/home/sdo/bin
PATH_CS=/home/osterman/bin
export PATH+=${PATH_CS}:${PATH_IRG}


# disable automatic RCS
%: RCS/%,v
%: %,v

#
# Magic suffixes
#
.SUFFIXES:	.tex .dvi .sm .ps .pdf .eps .4up .8up .16up .64up .128up .pic .fig .cm .gif .jpg .png


#
# tools
#
FIG2TEX	=	fig2ps2tex
FIG2PS	=	fig2ps
DVI2PS	=	dvips -Ppdf -G0 -t letter
CMAKER	=	cmaker -s 0.75
4UP	=	psnup -c -r -4 -m0.33in
8UP	=	psnup -c -r -8 -m0.80in
16UP	=	psnup -16 -m0.33in
64UP	=	64up
128UP	=	128up
SMAKER	=	smaker -v -t
END=

#
# default rules
#
.sm.tex:
	${SMAKER} $*.sm


#
# turn a .dvi file into PS
#
.dvi.ps:
	${DVI2PS} -o .$*.ps $*.dvi && /bin/mv .$*.ps $*.ps

#
# turn a .ps file into '4 up' format
#
%.4up.ps: %.ps Makefile
	${4UP} $*.ps > $*.4up.ps

#
# turn a .ps file into '8 up' format
#
%.8up.ps: %.ps
	${8UP} $*.ps > $*.8up.ps

#
# turn a .ps file into Doug's '16 up' format
#
%.16up.ps: %.ps
	${16UP} $*.ps > $*.16up.ps
	ps5per $*.16up.ps



#
# turn a .fig file into latex input format
#
.fig.tex: ;
	${FIG2PS} $*.fig > $*.ps &&		\
	${FIG2TEX} $*.ps ${DIRNAME} > .$*.tex &&	\
	/bin/mv .$*.tex $*.tex
#
# turn a .eps file into latex input format
#
.eps.tex: ;
	${FIG2TEX} $*.eps ${DIRNAME} > .$*.tex &&	\
	/bin/mv .$*.tex $*.tex
#
# turn a .jpg file into an EPS file
#
${JPGFILES}: ${JPGSOURCES}
.jpg.ps: ;
	djpeg -colors 256 -pnm $*.jpg | pnmtops > .$*.ps && mv .$*.ps $*.ps

#
# turn a .gif file into an EPS file
#
.gif.ps: ;
	giftopnm $*.gif | pnmscale -xysize 600 600 | ppmquant 256 | pnmtops > .$*.ps && mv .$*.ps $*.ps
#	giftopnm $*.gif | ppmtopgm | ppmquant 256 | pnmtops > .$*.ps && mv .$*.ps $*.ps

#
# turn a .png file into an EPS file
#
.png.ps: ;
	pngtopnm $*.png | pnmscale -xysize 500 500 | ppmquant 256 | pnmtops > .$*.ps && mv .$*.ps $*.ps

#
# turn a .pic file into fig
# (obsolete)
.pic.fig: ;
	pic2fig $*.pic > $*.fig
#
# turn a .pic file into tex
#
.pic.tex: ;
	tpic -t $*.pic > $*.tex
#
# turn a .pic file into ps
# (experimental)
.pic.ps: ;
	groff -p -Tps $*.pic > $*.ps
#
# turn a Postscript file into an Adobe PDF format file
#
%.pdf: %.ps
	ps2pdf $*.ps $*.pdf
#
# turn a .cm file into latex input format and postscript
#
.cm.tex: ;
	${CMAKER} $*.cm > $*.ps &&			\
	${FIG2TEX} $*.ps ${DIRNAME} > .$*.tex &&	\
	/bin/mv .$*.tex $*.tex


SOURCES=${wildcard *.sm}
CMSOURCES=${wildcard  fig_*.cm}
DIASOURCES=${wildcard  fig_*.dia}
EPSSOURCES=${wildcard fig_*.eps}
FIGSOURCES=${wildcard fig_*.fig}
GIFSOURCES=${wildcard  fig_*.gif}
JPGSOURCES=${wildcard  fig_*.jpg}
PICSOURCES=${wildcard fig_*.pic}
PNGSOURCES=${wildcard  fig_*.png}
CMFILES=${CMSOURCES:.cm=.tex}
EPSFILES=${EPSSOURCES:.eps=.tex}
FIGFILES=${FIGSOURCES:.fig=.tex}
GIFFILES=${GIFSOURCES:.gif=.ps}
JPGFILES=${JPGSOURCES:.jpg=.ps}
PICFILES=${PICSOURCES:.pic=.tex}
PNGFILES=${PNGSOURCES:.png=.ps}
DEPFILES=${FIGFILES} ${PICFILES} ${EPSFILES} ${CMFILES}  ${GIFFILES} ${JPGFILES} ${PNGFILES} ${DIAFILES}
BASENAME=${SOURCES:.sm=}
DVIFILES=${SOURCES:.sm=.dvi}
TEXFILES=${SOURCES:.sm=.tex}
PSFILES=${SOURCES:.sm=.ps}
PDFFILES=${PSFILES:.ps=.pdf}
PS4FILES=${SOURCES:.sm=.4up.ps}
PS4AFILES=${SOURCES:.sm=.4up.*.ps}

.PHONY: default dvi ps
default: ${DVIFILES} ${PSFILES} ${PDFFILES}

$(DVIFILES): %.dvi: %.sm ${DEPFILES}
	${SMAKER} $*.sm
	latex $*.tex


#
# shorthand
#
.PHONY: 4up 8up pdf
4up: ${PS4FILES}
8up: ${PS8FILES}
pdf: ${PDFFILES}


print: ${PSFILES}
	lpr ${PSFILES}


CLEANFILES=			\
	styl.tmp		\
	.*_slides.tex		\
	.*_index.tex		\
	fig_*.ps		\
	fig_*.tex		\
	${TEXFILES}		\
	${PSFILES}		\
	${PDFFILES}		\
	*.*[0-9]up		\
	*.*[0-9]up.ps		\
	*.*[0-9]up.*		\
	${END}

clean:
	rm -f ${CLEANFILES}
	texclean -all
	for DIR in *; do \
		if test -d $$DIR -a -e $$DIR/Makefile; then \
			(cd $$DIR; ${MAKE} clean); \
		fi; \
	done

allslides:
	for SMFILE in ../[0-9]/*.sm ../[0-9][0-9]/*.sm; do\
		echo '\SMINPUT ' $$SMFILE; echo "---"; done > allslides.sm
	for FIGFILE in ../*/fig*; do ln -s $$FIGFILE; done


archive: ${SOURCES} ${PDFFILES} ${PS4FILES}
	cp ${PDFFILES} ${PS4FILES} ../../archive/notes/
	scp ${PDFFILES} defiant:Documents/Work/544
	make_ace_menus
