# The standard library

CAMLCOMP=camlrun ../compiler/camlcomp
CAMLLIBR=camllibr
COMPFLAGS=-stdlib . -O none -W
CPP=m68k-palmos-coff-gcc -E

# The list of all interfaces. Order irrelevant.
# arg.zi filename.zi io.zi lexing.zi parsing.zi 
# genlex.zi float.zi obj.zi printexc.zi 
# sys.zi printf.zi format.zi
STD_INTF= bool.zi char.zi string.zi vect.zi eq.zi exc.zi \
    fchar.zi fstring.zi fvect.zi hashtbl.zi \
    int.zi list.zi pair.zi \
    ref.zi sort.zi stream.zi stack.zi queue.zi random.zi \
    baltree.zi set.zi map.zi gc.zi \
    io.zi

PALM_INTF=palm.zi events.zi \
  font.zi clip.zi ctl.zi fld.zi fio.zi frm.zi \
  ftr.zi lst.zi menu.zi scl.zi tbl.zi win.zi

PALM_IMPL=palm.zo events.zo lst.zo

# The list of all implementations. In dependency order.

# arg.zo filename.zo lexing.zo parsing.zo 
# genlex.zo float.zo 
# printexc.zo printf.zo format.zo 
STD_IMPL= bool.zo eq.zo exc.zo int.zo fstring.zo string.zo fchar.zo \
    char.zo list.zo fvect.zo vect.zo pair.zo \
    hashtbl.zo sort.zo \
    stream.zo stack.zo queue.zo random.zo \
    baltree.zo set.zo map.zo gc.zo \
    io.zo

all: $(STD_INTF) $(PALM_INTF) $(PALM_IMPL) stdlib.zo

stdlib.zo: $(STD_IMPL)  $(PALM_IMPL)
	$(CAMLLIBR) -o stdlib.zo $(STD_IMPL) $(PALM_IMPL)

clean:
	rm -f *.zi *.zix *.zo
	rm -f filename.ml genlex.ml

install:
	cp stdlib.zo *.zi *.zix *.mli *.ml $(LIBDIR)
	rm $(LIBDIR)/iparsing.mli

.SUFFIXES :
.SUFFIXES : .ml .mli .zi .zo .mlp

.mli.zi:
	$(CAMLCOMP) $(COMPFLAGS) $<
.ml.zo:
	$(CAMLCOMP) $(COMPFLAGS) $<
.mlp.ml:
	@rm -f $@
	$(CPP) $< > $@
	@chmod a-w $@

# filename.ml genlex.ml
depend: 
	mv Makefile Makefile.bak
	(sed -n -e '1,/^### DO NOT DELETE THIS LINE/p' Makefile.bak; \
         ../tools/camldep *.mli *.ml) > Makefile
	rm Makefile.bak

filename.ml: filename.mlp
genlex.ml: genlex.mlp

### EVERYTHING THAT GOES BEYOND THIS COMMENT IS GENERATED
### DO NOT DELETE THIS LINE
ctl.zi: events.zi 
fld.zi: io.zi events.zi font.zi 
form.zi: events.zi 
gc.zi: io.zi 
genlex.zi: stream.zi 
lst.zi: events.zi 
map.zi: eq.zi 
set.zi: eq.zi 
stream.zi: io.zi 
baltree.zo: baltree.zi exc.zi int.zi bool.zi eq.zi 
bool.zo: bool.zi 
char.zo: char.zi exc.zi fchar.zi bool.zi fstring.zi eq.zi 
eq.zo: eq.zi 
events.zo: events.zi ref.zi hashtbl.zi 
exc.zo: exc.zi 
fchar.zo: fchar.zi int.zi fstring.zi 
float.zo: float.zi exc.zi int.zi fstring.zi 
fstring.zo: fstring.zi exc.zi int.zi fchar.zi ref.zi eq.zi 
fvect.zo: fvect.zi int.zi list.zi eq.zi 
gc.zo: gc.zi 
hashtbl.zo: hashtbl.zi fvect.zi exc.zi int.zi eq.zi 
int.zo: int.zi eq.zi 
io.zo: io.zi exc.zi int.zi bool.zi fstring.zi eq.zi 
list.zo: list.zi exc.zi int.zi bool.zi eq.zi 
map.zo: map.zi baltree.zi 
pair.zo: pair.zi exc.zi 
printexc.zo: printexc.zi exc.zi eq.zi fvect.zi io.zi int.zi obj.zi bool.zi \
    sys.zi 
queue.zo: queue.zi exc.zi int.zi ref.zi 
random.zo: random.zi fvect.zi int.zi ref.zi eq.zi float.zi 
set.zo: set.zi exc.zi eq.zi baltree.zi 
sort.zo: sort.zi 
stack.zo: stack.zi exc.zi list.zi 
stream.zo: stream.zi exc.zi io.zi obj.zi ref.zi fstring.zi eq.zi 
string.zo: string.zi exc.zi int.zi bool.zi fstring.zi eq.zi sys.zi 
vect.zo: vect.zi fvect.zi exc.zi int.zi bool.zi eq.zi sys.zi 
