#  make -f makemod            Pour fabriquer ../llobj/*.lo
#  Pour ce faire: $(CMDDIR)/complice doit deja fonctionner.

# le nom de CPU utilise' pour trouver le lap*.lo
# [68k | ibmrt | ns | sparc | sps9 | vax]
CPU=sparc

#  Les syste`mes proprement dit: lelisp/$(SYSTEM)
SYSTEM=sun4

FLAGS= -parano nil -w t -o ../llobj -p \"../llib/\" -p \"../llmod/\" -p \"./\"
UFLAGS=-parano nil -w t -o ../llobj -p \"../llub/\" -p \"../llmod/\"

#  On va chercher un complice "su↑r":
#   (de preference un path absolu: pensez a virbitmap/*/*.lo !)
CMDDIR= /usr/local/bin

#  Ce que ne sait pas faire ce makefile:
.PRECIOUS: ../llobj/complice.lo 
#  Ce qui est reserve' aux porteurs:
.PRECIOUS: ../llobj/files.lo ../llobj/module.lo

# Les fichiers objets issus de llib et charge's en standard:
obji= loader.lo    \
     ../llobj/toplevel.lo  ../llobj/files.lo     \
     ../llobj/module.lo    ../llobj/defs.lo      \
     ../llobj/llpatch.lo   \
     ../llobj/virbitmap.lo ../llobj/virtty.lo    \
     ../llobj/sort.lo      ../llobj/array.lo     ../llobj/callext.lo   \
     ../llobj/trace.lo     ../llobj/pretty.lo    ../llobj/defstruct.lo \
     ../llobj/abbrev.lo    ../llobj/ttywindow.lo \
     ../llobj/debug.lo     ../llobj/microceyx.lo ../llobj/pepe.lo      \
     ../llobj/cpmac.lo     ../llobj/peephole.lo  ../llobj/llcp.lo      

# Les fichiers objets issus de llib mais non charge's en standard:
objj= ../llobj/genarith.lo ../llobj/genr.lo      ../llobj/ratio.lo     \
      ../llobj/complex.lo  ../llobj/schedule.lo  ../llobj/cstruct.lo   \
      ../llobj/format.lo   ../llobj/llmenu.lo    ../llobj/date.lo      \
      ../llobj/libdate.lo  ../llobj/libcir.lo    ../llobj/minimore.lo

# Les fichiers pour les bitmaps virtuels.
objb= ../virbitmap/X10.4/x.lo       ../virbitmap/X11/x11.lo \
      ../virbitmap/bvtty/bvtty.lo

# Tous les fichiers objets issus de llub (et couramment utilise's)
obju= ../llobj/meme.lo     ../llobj/edit.lo       ../llobj/editor.lo \
      ../llobj/loadfile.lo ../llobj/countcalls.lo ../llobj/hash.lo

# Tous les fichiers objets issus de llub (et non couramment utilise's)
objv= ../llobj/mvalues.lo   ../llobj/defun.lo     \
      ../llobj/setf.lo      ../llobj/croch.lo     ../llobj/macedit.lo   \
      ../llobj/maceditor.lo ../llobj/timetrace.lo

##############################################################################
# L'ensemble des fichiers a` compiler:
obj= $(obji) $(objj) $(objb) $(obju)

# L'entre'e standard
all: $(obj) $(objv)

# Entre'es spe'cifiques
std:    $(obji) ../virbitmap/X10.4/x.lo
llib:   $(obji) $(objj)
bitmap: $(objb)
llub:   $(obju) $(objv)

##############################################################################
clean:
	rm -f $(obj) $(objv)

../llobj/abbrev.lo: ../llib/abbrev.ll ../llmod/abbrev.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) abbrev

../llobj/array.lo: ../llib/array.ll ../llmod/array.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) array

../llobj/callext.lo: ../llib/callext.ll ../llmod/callext.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -e '(synonymq getglobal identity)' callext 

../llobj/complex.lo: ../llib/complex.ll ../llmod/complex.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) complex

../llobj/cpmac.lo : ../llib/cpmac.ll ../llmod/cpmac.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) cpmac

../llobj/cstruct.lo: ../llmod/cstruct.lm ../llib/cstruct.ll \
		o/cstruct.o
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -e '(progn (setq #:system:print-for-read t) (typecn #/← (quote cmacro)))' cstruct

o/cstruct.o : ../common/cstruct.c
	@echo ...Generating $@ because of $?
	$(MAKE) o/cstruct.o SYSTEM=$(SYSTEM)

../llobj/date.lo: ../llib/date.ll ../llmod/date.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) date

../llobj/debug.lo: ../llib/debug.ll ../llmod/debug.lm \
		../llobj/files.lo ../llobj/virtty.lo \
		../llobj/virbitmap.lo ../llobj/pretty.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -parano t debug

../llobj/defs.lo: ../llib/defs.ll ../llmod/defs.lm \
		loader.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) defs

../llobj/defstruct.lo: ../llib/defstruct.ll ../llmod/defstruct.lm \
		../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) defstruct

../llobj/format.lo: ../llib/format.ll ../llmod/format.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) format

../llobj/genarith.lo: ../llib/genarith.ll ../llmod/genarith.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) genarith

../llobj/genr.lo: ../llib/genr.ll ../llmod/genr.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) genr

../llobj/hash.lo: ../llib/hash.ll ../llmod/hash.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) hash

../llobj/libcir.lo: ../llib/libcir.ll ../llmod/libcir.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) libcir

../llobj/libdate.lo: ../llib/libdate.ll ../llmod/libdate.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) libdate

../llobj/llcp.lo : ../llib/llcp.ll ../llmod/llcp.lm \
		../llib/cpmac.ll ../llib/peephole.ll \
		../llobj/files.lo loader.lo ../llobj/pretty.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) llcp

../llobj/llmenu.lo: ../llib/llmenu.ll ../llmod/llmenu.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) llmenu

../llobj/llpatch.lo: ../llib/llpatch.ll ../llmod/llpatch.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) llpatch

loader.lo: ../llobj/lap$(CPU).lo loader.lm loader.ll
	@echo ...Generating $@ because of $?
	rm -f loader.lo
	ln -s ../llobj/lap$(CPU).lo loader.lo

loader.lm:
	@echo ...Generating $@ because of $?
	rm -f loader.lm
	ln -s ../llmod/lap$(CPU).lm loader.lm

loader.ll:
	@echo ...Generating $@ because of $?
	rm -f loader.ll
	ln -s ../llib/lap$(CPU).ll loader.ll

../llobj/lap$(CPU).lo: ../llib/lap$(CPU).ll ../llmod/lap$(CPU).lm \
			../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) lap$(CPU)

../llobj/menu.lo: ../llib/menu.ll ../llmod/menu.lm \
		../llobj/defstruct.lo ../llobj/virbitmap.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) menu

../llobj/microceyx.lo: ../llib/microceyx.ll ../llmod/microceyx.lm \
		../llobj/abbrev.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) microceyx

../llobj/minimore.lo: ../llib/minimore.ll ../llmod/minimore.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) minimore

../llobj/path.lo : ../llib/path.ll ../llmod/path.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) path

../llobj/peephole.lo : ../llib/peephole.ll ../llmod/peephole.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) peephole

../llobj/pepe.lo: ../llib/pepe.ll ../llmod/pepe.lm \
		../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -parano t pepe

../llobj/pretty.lo: ../llib/pretty.ll ../llmod/pretty.lm \
		../llobj/files.lo ../llobj/abbrev.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) pretty

../llobj/ratio.lo: ../llib/ratio.ll ../llmod/ratio.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) ratio

../llobj/schedule.lo: ../llib/schedule.ll ../llmod/schedule.lm \
		../llobj/debug.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -parano t schedule

../llobj/setf.lo: ../llib/setf.ll ../llmod/setf.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) setf

../llobj/sort.lo: ../llib/sort.ll ../llmod/sort.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) sort

../llobj/toplevel.lo: ../llib/toplevel.ll ../llmod/toplevel.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) toplevel

../llobj/topwin.lo: ../llib/topwin.ll ../llmod/topwin.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) topwin

../llobj/trace.lo: ../llib/trace.ll ../llmod/trace.lm \
		../llobj/toplevel.lo ../llobj/defs.lo \
		../llobj/virbitmap.lo ../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) trace

../llobj/ttywindow.lo: ../llib/ttywindow.ll ../llmod/ttywindow.lm \
		../llobj/virbitmap.lo ../llobj/defstruct.lo ../llobj/virtty.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) ttywindow

../llobj/virbitmap.lo: ../llib/virbitmap.ll ../llmod/virbitmap.lm \
		../llib/display.ll \
		../llobj/defstruct.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) virbitmap

../llobj/virtty.lo: ../llib/virtty.ll ../llmod/virtty.lm \
		../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) virtty
	

##############################################################################
# Les fichiers de la bibliotheque utilisateur llub:
../llobj/countcalls.lo: ../llub/countcalls.ll ../llmod/countcalls.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) countcalls

../llobj/croch.lo: ../llub/croch.ll ../llmod/croch.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) croch

../llobj/defun.lo: ../llub/defun.ll ../llmod/defun.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) defun

../llobj/edit.lo: ../llub/edit.ll ../llmod/edit.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) edit

../llobj/editor.lo: ../llub/editor.ll ../llmod/editor.lm \
		../llobj/edit.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) editor

../llobj/loadfile.lo: ../llub/loadfile.ll ../llmod/loadfile.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) loadfile

../llobj/macedit.lo: ../llub/macedit.ll ../llmod/macedit.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) macedit

../llobj/maceditor.lo: ../llub/maceditor.ll ../llmod/maceditor.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) maceditor

../llobj/meme.lo: ../llub/meme.ll ../llmod/meme.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) meme

../llobj/mvalues.lo: ../llub/mvalues.ll ../llmod/mvalues.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) mvalues

../llobj/timetrace.lo: ../llub/timetrace.ll ../llmod/timetrace.lm
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(UFLAGS) timetrace

##############################################################################
# Les instances de bitmap virtuel:
../virbitmap/X10.4/x.lo: ../virbitmap/X10.4/x.ll ../virbitmap/X10.4/x.lm \
	../llobj/virbitmap.lo ../llobj/defstruct.lo ../llobj/cstruct.lo
	@echo ...Generating $@ because of $?
	rm -f $@
	@(cd ../virbitmap/X10.4; \
	$(MAKE) -e SYSTEM=$(SYSTEM) CMDDIR=$(CMDDIR) )

../virbitmap/X11/x11.lo: ../virbitmap/X11/x11.ll ../virbitmap/X11/x11.lm \
	../llobj/virbitmap.lo ../llobj/defstruct.lo
	@echo ...Generating $@ because of $?
	rm -f $@
	@(cd ../virbitmap/X11; \
	$(MAKE) -e SYSTEM=$(SYSTEM) CMDDIR=$(CMDDIR) )

../virbitmap/bvtty/bvtty.lo: ../virbitmap/bvtty/bvtty.ll ../virbitmap/bvtty/bvtty.lm \
	../llobj/virbitmap.lo ../llobj/defstruct.lo
	@echo ...Generating $@ because of $?
	rm -f $@
	@(cd ../virbitmap/bvtty; \
	$(MAKE) -e SYSTEM=$(SYSTEM) CMDDIR=$(CMDDIR) )

##############################################################################
# Deux fichiers 'speciaux' [pour porteurs uniquement]:
../llobj/files.lo: ../llib/files.ll ../llmod/files.lm 
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -e "`cat ../lltool/hackcmplc.ll`" files

../llobj/module.lo: ../llib/module.ll ../llmod/module.lm \
		../llobj/files.lo
	@echo ...Generating $@ because of $?
	$(CMDDIR)/complice $(FLAGS) -e "`cat ../lltool/hackcmplc.ll`" module