# Makefile for the Caml Light toplevel.

CAMLCOMP=../camlrun ../camlcomp
CAMLLINK=../camlrun ../camllink
CAMLLIBR=../camlrun ../camllibr
CAMLRUN=../camlrun
INCLUDES=-stdlib ../lib -I ../compiler -I ../linker
COMPFLAGS=-O fast $(INCLUDES)
LINKFLAGS=-g $(INCLUDES)

EXTERNOBJS=config.zo misc.zo const.zo prim.zo instruct.zo lambda.zo \
    globals.zo location.zo syntax.zo errors.zo modules.zo builtins.zo \
    types.zo pr_type.zo ty_error.zo typing.zo ty_decl.zo pr_decl.zo \
    ty_intf.zo tr_env.zo match.zo trstream.zo front.zo back.zo opcodes.zo \
    prim_opc.zo buffcode.zo labels.zo reloc.zo emitcode.zo emit_phr.zo \
    primdecl.zo lexer.zo par_aux.zo parser.zo compiler.zo \
    predef.zo prim_c.zo symtable.zo patch.zo tr_const.zo

OBJS=pr_value.zo load_phr.zo do_phr.zo toplevel.zo version.zo main.zo

PERV1=bool char eq exc fchar filename float fstring fvect
PERV2=genlex hashtbl int io iparsing lexing list obj pair parsing
PERV3=printexc printf queue random ref sort stack stream string
PERV4=graphics toplevel vect

SPECIALS=sys

all: camltop

camltop: $(OBJS) provide expunge
	$(CAMLRUN) provide -stdlib ../lib $(PERV1) > required
	$(CAMLRUN) provide -stdlib ../lib $(PERV2) >> required
	$(CAMLRUN) provide -stdlib ../lib $(PERV3) >> required
	$(CAMLRUN) provide -stdlib ../lib $(PERV4) >> required
	$(CAMLLINK) $(LINKFLAGS) -o camltop1 -require required -files &&!
stdlib.zo $(EXTERNOBJS) $(OBJS)
!
	$(CAMLRUN) expunge camltop1 camltop <<!
$(PERV1) $(PERV2) $(PERV3) $(PERV4) $(SPECIALS)
!
	del camltop1
	del required
	copy toplevel.zi ..\lib

expunge: expunge.zo
	$(CAMLLINK) $(LINKFLAGS) -o expunge stdlib.zo readword.zo expunge.zo

provide: provide.zo
	$(CAMLLINK) $(LINKFLAGS) -o provide stdlib.zo config.zo misc.zo modules.zo provide.zo

clean:
	del *.zi
	del *.zo
	del camltop
	del expunge
	del provide
	del makefile.bak

install:
	copy camltop $(LIBDIR)

.mli.zi:
	$(CAMLCOMP) $(COMPFLAGS) {$< }

.ml.zo:
	$(CAMLCOMP) $(COMPFLAGS) {$< }

depend:
	del makefile.bak
	ren makefile makefile.bak
	perl ../tools/cutdeps makefile.bak > makefile
	perl ../tools/camldep -I ../compiler -I ../linker >> makefile

### EVERYTHING THAT GOES BEYOND THIS COMMENT IS GENERATED
### DO NOT DELETE THIS LINE
toplevel.zo: toplevel.zi meta.zi pr_value.zo load_phr.zo do_phr.zo 
do_phr.zo: pr_value.zo meta.zi load_phr.zo 
load_phr.zo: pr_value.zo meta.zi 
main.zo: meta.zi toplevel.zi version.zo do_phr.zo 
