#*=====================================================================*/
#*    serrano/diffusion/talk/sw02/Makefile                             */
#*    -------------------------------------------------------------    */
#*    Author      :  Manuel Serrano                                    */
#*    Creation    :  Tue Sep 17 11:38:09 2002                          */
#*    Last change :  Tue Sep 17 14:24:47 2002 (serrano)                */
#*    Copyright   :  2002 Manuel Serrano                               */
#*    -------------------------------------------------------------    */
#*    The Makefile to build the Scribe slides                          */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    Compilers and flags                                              */
#*---------------------------------------------------------------------*/
RESOLUTION=1024x768
DURATION=short
SCRIBE=scribe
SFLAGS=-J style -J $$HOUSE/share/scribe \
        --eval "(define *resolution* \"$(RESOLUTION)\")" \
        --eval "(define *duration* \"$(DURATION)\")"
ADVI=advi
DVIPS=dvips
BIGLOO=bigloo
BFLAGS=-O2 -unsafe
CC=gcc
CFLAGS=-O2
JAVAC=javac

#*---------------------------------------------------------------------*/
#*    Files                                                            */
#*---------------------------------------------------------------------*/
STYLE=style/local.scr style/apps.scr style/denotation.scr style/denotation-pp.scr style/sos.scr
SCM=eval.scm
SCMS=$(SCM:%=scm/%)
SCR=slides.scr
EX=scribe xml skel itemize fact factb slide man syntax
EXS=$(EX:%=ex/%.scr) ex/C-code.c
FIG=fig/overview.fig fig/scribe.fig
IMGS=img/img.jpg

POPULATION=Makefile advi.sty man.sh doman.sh $(SCR) $(EXS) $(STYLE) $(FIG) $(SCMS) $(IMGS)

#*---------------------------------------------------------------------*/
#*    targets                                                          */
#*---------------------------------------------------------------------*/
.SUFFIXES:

all: 1024 html mgp

1024: man.html man.dvi man.man sh
	$(MAKE) dvi RESOLUTION="1024x768"

1280: man.html man.dvi man.man sh
	$(MAKE) dvi RESOLUTION="1280x1024"

sh:
	chmod u+x doman.sh
	chmod u+x man.sh

dvi: slides.dvi
slides.dvi: slides.tex $(SCR) $(STYLE) $(DEMOS) $(SCMS) $(EXS) $(FIG)
	(export TEXINPUTS=.:style:$$TEXINPUTS; latex slides.tex)

ps: slides.ps
slides.ps: slides.dvi
	$(DVIPS) slides.dvi -o slides.ps

tex: slides.tex
slides.tex: $(SCR) $(STYLE) $(DEMOS) $(SCMS) $(EXS) $(FIG)
	$(SCRIBE) $(SFLAGS) slides.scr -o slides.tex \
                  --eval "(set! *scribe-user* (cons '$(ADVI) *scribe-user*))"

txt: slides.txt
slides.txt: $(SCR) $(STYLE) $(DEMOS) $(SCMS) $(EXS) $(FIG)
	$(SCRIBE) $(SFLAGS) -t text slides.scr -o slides.txt

mgp: slides.mgp
slides.mgp: $(SCR) $(STYLE) $(DEMOS) $(SCMS) $(EXS) $(FIG)
	$(SCRIBE) $(SFLAGS) slides.scr -o slides.mgp

html: slides.html
slides.html: $(SCR) $(STYLE) $(DEMOS) $(SCMS) $(EXS) $(FIG)
	$(SCRIBE) $(SFLAGS) slides.scr -o slides.html

man.html: ex/man.scr
	$(SCRIBE) $(SFLAGS) ex/man.scr -o man.html

man.man: ex/man.scr
	$(SCRIBE) $(SFLAGS) ex/man.scr -o man.man

man.dvi: man.tex
	latex man.tex

man.tex: ex/man.scr
	$(SCRIBE) $(SFLAGS) ex/man.scr -o man.tex

pop:
	@ echo $(POPULATION:%=examples/slide/%)

%.o: %.scm
	$(BIGLOO) $(BFLAGS) -c $*.scm -o $*.o

%.o: %.c
	$(CC) $(CFLAGS) -c $*.c -o $*.o

clean:
	/bin/rm -f *~ */*~ > /dev/null 2>&1
	/bin/rm -f *.dvi > /dev/null 2>&1
	/bin/rm -f *.tex > /dev/null 2>&1
	/bin/rm -f *.html > /dev/null 2>&1
	/bin/rm -f *.mgp > /dev/null 2>&1
	/bin/rm -f *.aux
	/bin/rm -f *.ps
	/bin/rm -f *.log *.toc
	/bin/rm -f slides.txt
	/bin/rm -f fig/*.eps fig/*.png fig/*.bak fig/*.s
	/bin/rm -f man.html man.dvi man.man man.tex
	/bin/rm -f img/*.eps img/*.gif img/*.png

cleanall: clean
	/bin/rm -f $(DEMOS) scm/*.o scm/*/*.o
	/bin/rm -f scm/sticker/sticker
	/bin/rm -f scm/prims/prims
	/bin/rm -f scm/gas/gas
	/bin/rm -f scm/http/http
	/bin/rm -f scm/atext/atext
	/bin/rm -f java/*.class
