# $Id: Imakefile,v 1.4 1996/09/21 10:10:18 queinnec Exp $

work : enonces

clean :: cleanMakefile 
	-rm a.out *.c *.o .Z*enonces.tex
	-rm enonces.tex enonces?.tex

### Distribution 

FILES	=	natScheme*.scm natScheme*.tst \
		kScheme*.scm kScheme*.tst \
		stream.scm tpmacros.scm \
		tps.scm tps.tst tpstst.scm tps.phrases \
		enonces+.dvi enonces-.dvi \
		enonces+.ps enonces-.ps \
		tester.scm scheme.tst \
		Imakefile README

distribution : Exos-Scheme.tar.gz update.all
	mv Exos-Scheme.tar.gz `date +Exos-Scheme%y%h%d.tar.gz`

Exos-Scheme.tar.gz : $(FILES)
	tar -cvfh Exos-Scheme.tar $(FILES)
	gzip Exos-Scheme.tar

# Update files needed for exportations.

update.all : 
	${MAKE} update.file FILE=${HOME}/WWW/Queinnec.html \
		STAMP=Exos-Scheme DATE=`date +%y%h%d`
	${MAKE} update.file FILE=${HOME}/WWW/Pedagogy.html \
		STAMP=Exos-Scheme DATE=`date +%y%h%d`
	${MAKE} update.file FILE=${HOME}/admin/Exportations \
		STAMP=Exos-Scheme DATE=`date +%y%h%d`

# Les fichiers venant d'ailleurs
tester.scm : ../DEA/tester.scm
	ln -s ../DEA/tester.scm .
scheme.tst : ../DEA/scheme.tst
	ln -s ../DEA/scheme.tst .

### Les enonces d'exercices en Scheme

enonces: test.enonces enonces+.dvi enonces-.dvi

test.enonces : test1.enonces
test.enonces : test1a.enonces
test.enonces : test2.enonces
test.enonces : test3.enonces
test.enonces : test4.enonces
test.enonces : test5.enonces
test.enonces : test6.enonces
test.enonces : test6a.enonces

test1.enonces : tps.tst tps.scm tester.scm scheme.tst
	echo "							\
(loadq \"tester.scm\") 						\
(loadq \"stream.scm\")						\
(loadq \"tps.scm\") 						\
(loadq \"tpstst.scm\") 						\
(if (suite-test \"tps.tst\" \"?? \" \"== \" #t			\
      (lambda (read print error) (set! wrong error)		\
       (lambda () (try (print (eval (read)))			\
		       (lambda (k a b c) 			\
			 (error (list a b c)) ) )) )		\
     check-result ) #t (exit 1) ) 				\
		" | bigloo

test1a.enonces : tps.scm tester.scm scheme.tst
	( echo "						\
(loadq \"tester.scm\") 						\
(loadq \"stream.scm\")						\
(loadq \"tps.scm\") 						\
		" ; cat tps.phrases ) | bigloo

test2.enonces : tps.scm natScheme.scm tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"natScheme.scm\")				\
(define wrong 'wait)					\
(if (test-natscheme \"scheme.tst\")			\
    #t (exit 1) ) 					\
		" | bigloo

test3.enonces : tps.scm natScheme.scm natScheme2.scm 
test3.enonces : tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"natScheme.scm\")				\
(loadq \"natScheme2.scm\")				\
(define wrong 'wait)					\
(if (and ''(test-natscheme \"scheme.tst\")		\
         (test-natscheme \"natScheme.tst\") )		\	 
    #t (exit 1) ) 					\
		" | bigloo

test4.enonces : tps.scm natScheme.scm natScheme2.scm natScheme3.scm 
test4.enonces : tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"natScheme.scm\")				\
(loadq \"natScheme2.scm\")				\
(loadq \"natScheme3.scm\")				\
(define wrong 'wait)					\
(if (and (test-natscheme \"scheme.tst\")		\
         (test-natscheme \"extension3.tst\") ) 		\
    #t (exit 1) ) 					\
		" | bigloo

test5.enonces : tps.scm natScheme.scm natScheme2.scm natScheme4.scm 
test5.enonces : tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"natScheme.scm\")				\
(loadq \"natScheme2.scm\")				\
(loadq \"natScheme4.scm\")				\
(define wrong 'wait)					\
(if (and (test-natscheme \"scheme.tst\")		\
         (test-natscheme \"extension4.tst\") ) 		\
    #t (exit 1) ) 					\
		" | bigloo

test6.enonces : tps.scm kScheme.scm tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"kScheme.scm\")					\
(define wrong 'wait)					\
(if (test-kscheme \"scheme.tst\")			\
    #t (exit 1) ) 					\
		" | bigloo

test6a.enonces : tps.scm kScheme.scm kScheme1.scm kScheme.tst 
test6a.enonces : tester.scm scheme.tst
	echo "						\
(loadq \"tester.scm\") 					\
(loadq \"kScheme.scm\")					\
(loadq \"kScheme1.scm\")				\
(define wrong 'wait)					\
(if (and (test-kscheme1 \"scheme.tst\")			\
	 (test-kscheme1 \"kScheme.tst\") )		\
    #t (exit 1) ) 					\
		" | bigloo


# NOTE: ne pas s'effrayer des multiples avertissements concernant la
# redefinition des variables poeme-pi ... (ils sont emis
# par Bigloo sur stderr et n'affectent pas enonces.tex).

#enonces.tex : enonces.bk tps.scm stream.scm
#	LiSP2TeX -vU -I/usr/local/lib/LiSP2TeX slatex.l2t \
#		-- enonces.bk | gpic -t > enonces.tex
#	SLaTeX enonces.tex

enonces.tex : enonces.bk tps.scm stream.scm natScheme.scm
enonces.tex : natScheme2.scm natScheme3.scm natScheme4.scm
	LiSP2TeX -vU -I/usr/local/lib/LiSP2TeX \
		-- enonces.bk | gpic -t > enonces.tex

enonces.dvi :
	echo "Ask rather for enonces+.dvi or enonces-.dvi" ; exit 1

enonces+.dvi : enonces.tex
	-rm nosol.tex
	latex enonces.tex
	bibtex enonces
	mv enonces.dvi enonces+.dvi
enonces-.dvi : enonces.tex nosol.tex
	latex enonces.tex
	bibtex enonces
	mv enonces.dvi enonces-.dvi

# Si ce fichier est present, alors les solutions seront absentes du document
# enonces.dvi produit.

nosol.tex :
	echo "\\relax" > nosol.tex

##################################################### Obsolete
### Divers autres (utilises a l'X)

Paper(intro,,intro.bbl)
SimplePaper(s2c-macros)
WithBibPaper(tpunix,,)

# Transparents pour cours: l'interprete naif.

natScheme.dvi : natScheme.tex natScheme.slides
	slitex natScheme.tex

##################################################################
### Install onto poly:

DOCS=	intro.tex intro.dvi \
	enonces.bk enonces-.dvi \
	s2c-macros.tex s2c-macros.dvi \
	refcard.tex refcard.dvi \
	emacs-map.bitmap 

SOURCES=Xoo.scm example?.sc fact.sc macros.sc stream.scm while.sc \
	../DEA/meroon/meroon.s2c ../DEA/meroon/meroon.scm

RDIST=rdist -yc 
#RDIST=rcp -p
install :
	${RDIST} Imakefile ${DOCS} ${SOURCES} poly:s2c

##################################################################
# Cette entree peut entrer en conflit avec celle sur .c.o qui necessite
# de donner acces a object.h (On peut alors augmenter CFLAGS)
CFLAGS= -I/usr/local/schemetoc -Ur3000
.SUFFIXES: .o .sc
.sc.o : ;	scc -c $*.sc

test : test-mod1 test-mod2 test-mod3 test-mod4

test-mod1 : macros.sc while.sc example1.sc
	scc example1.sc
	a.out *.sc 
# Ce test doit e^tre fait a` la main car S2c de'tecte que les expressions
# ne viennent pas du terminal et s'interrompt brutalement.
test-mod2 : macros.sc while.sc example2.sc
	scc -i example2.sc
	( echo '(define i 23)'						; \
	  echo '(while (> i 0) (set! i (- i 1))  (display "!"))' 	; \
	  echo "(start '(a bb ccc))"					; \
	  echo '(while (> i 0) (set! i (- i 1))  (display "!"))' 	; \
	  ) | a.out *.sc 	
test-mod3 : example3.sc fact.sc
	make fact.o
	scc example3.sc fact.o
	a.out 5
	make example3.o
	scc example3.o fact.o
	a.out 5
test-mod4 : example4.sc fact.o
	scc example4.sc fact.o
	a.out 5
	make example4.o
	scc example4.o fact.o
	a.out 5
test-mod5 : example5.sc scc-meroon.sc rt-meroon.o
	scc example5 rt-meroon.o
	a.out

test-X : Xoo.scm
	( echo "(load \"Xoo.scm\")"				; \
	  echo "(test)" ) | scixl

##################################################################
# Noel 94
# noel1.prl le script qui verifie et calcule les notes.
# noel.raw toutes les notes decomposees par question
# noel.excel une version ascii du fichier excel
# noel.data mes notes a moi
# fages celles de Fages
# puech celles de Puech
# notes.finales les notes remises a la scola.

n : test.noel.data noel.tar
test.noel.data : noel noel.data
	perl noel1.prl noel.data
NOEL_SOURCES	= noel noel.data noel1.prl noel.README \
		  notes.finales noel.raw puech fages noel.excel
noel.tar : ${NOEL_SOURCES}
	tar -cvf noel.tar ${NOEL_SOURCES}

notes.finales : noel.raw Imakefile noel1.prl
	perl noel1.prl noel.raw | tee notes.finales

tt : 
	sort -t: puech >puech.sorted
	sort -t: fages >fages.sorted
	sort -t: noel.data >queinnec.sorted
	join -t: fages.sorted puech.sorted >f+p.sorted
	join -t: queinnec.sorted f+p.sorted >notes.sorted
	sort -t: -n notes.sorted >notes	
	wc puech fages noel.data notes

#end of Imakefile
