# Makefile for the Caml Light runtime system

CC=gcc
FLAGS_OPTI=-O
FLAGS_DEBUG=-g
LIBS=-lgrx -lpc -lm
OTHEROPTS=-DANSI
RUNTIME32=..\..\go32\go32.exe

OBJS=interp.o equal.o ints.o floats.o str.o io.o intext.o \
        hash.o sys.o meta.o freelist.o major_gc.o minor_gc.o \
        memory.o mem_misc.o alloc.o fail.o main.o stacks.o \
        fix_code.o roots.o version.o parsing.o lexing.o graph.o signals.o \
	msdos.o

DOBJS=interp.do equal.do ints.do floats.do str.do io.do intext.do \
        hash.do sys.do meta.do freelist.do major_gc.do minor_gc.do \
        memory.do mem_misc.do alloc.do fail.do main.do \
        stacks.do fix_code.do roots.do prims.do debugger.do version.do \
	parsing.do lexing.do graph.do signals.do msdos.do

PRIMS=interp.c equal.c ints.c floats.c str.c \
        io.c intext.c hash.c sys.c meta.c parsing.c lexing.c graph.c

all: camlrun.exe

camlrun.exe: prims.o libcaml.a 
	$(CC) $(FLAGS_OPTI) $(OTHEROPTS) -o camlrun @&&!
prims.o
libcaml.a
$(LIBS)
!
	copy /b $(RUNTIME32)+camlrun camlrun.exe

camlrund.exe: $(DOBJS)
	$(CC) $(FLAGS_DEBUG) $(OTHEROPTS) -o camlrund @&&!
$(DOBJS)
$(LIBS)
!
	copy /b $(RUNTIME32)+camlrund camlrund.exe

libcaml.a: $(OBJS)
	del libcaml.a
	ar rcs libcaml.a @&&!
$(OBJS)
!

clean:
	del camlrun.exe
	del camlrun
	del camlrund.exe
	del camlrund
	del libcaml.a
	del *.o
	del *.do

scratch: clean
	del prims
	del prims.c

prims.c: $(PRIMS)
	perl ..\tools\findprim prims <<!
$(PRIMS)
!
	perl ..\tools\mkprims prims > prims.c

install:
	copy camlrun.exe $(BINDIR)

.c.o:
	$(CC) -c $(FLAGS_OPTI) $(OTHEROPTS) {$< }

.c.do:
	$(CC) -c -DDEBUG $(OTHEROPTS) $< -o $*.do

### EVERYTHING THAT GOES BEYOND THIS COMMENT WILL BE ERASED WITHOUT WARNING
### DO NOT DELETE THIS LINE
alloc.o : alloc.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h major_gc.h freelist.h misc.h memory.h gc.h minor_gc.h stacks.h 
debugger.o : debugger.c 
equal.o : equal.c fail.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
fail.o : fail.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h signals.h 
fix_code.o : fix_code.c config.h ../../config/m.h ../../config/s.h misc.h mlvalues.h \
  instruct.h reverse.h 
floats.o : floats.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h debugger.h 
freelist.o : freelist.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h freelist.h gc.h major_gc.h misc.h 
hash.o : hash.c mlvalues.h config.h ../../config/m.h ../../config/s.h memory.h \
  gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
interp.o : interp.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h fail.h instruct.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h \
  prims.h signals.h stacks.h str.h unalignd.h jumptbl.h 
intext.o : intext.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h misc.h minor_gc.h reverse.h 
ints.o : ints.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h 
io.o : io.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h fail.h \
  io.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h signals.h sys.h 
lexing.o : lexing.c mlvalues.h config.h ../../config/m.h ../../config/s.h instruct.h \
  stacks.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
main.o : main.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  exec.h fail.h gc.h globals.h intext.h io.h misc.h stacks.h memory.h major_gc.h \
  freelist.h minor_gc.h sys.h 
major_gc.o : major_gc.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h fail.h freelist.h gc.h globals.h major_gc.h misc.h roots.h 
memory.o : memory.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h freelist.h gc.h major_gc.h misc.h memory.h minor_gc.h 
meta.o : meta.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  globals.h major_gc.h freelist.h misc.h memory.h gc.h minor_gc.h prims.h 
minor_gc.o : minor_gc.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h fail.h gc.h major_gc.h freelist.h misc.h memory.h minor_gc.h roots.h 
misc.o : misc.c config.h ../../config/m.h ../../config/s.h debugger.h mlvalues.h \
  misc.h 
parsing.o : parsing.c config.h ../../config/m.h ../../config/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h 
prims.o : prims.c mlvalues.h config.h ../../config/m.h ../../config/s.h prims.h 
roots.o : roots.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h stacks.h 
signals.o : signals.c mlvalues.h config.h ../../config/m.h ../../config/s.h \
  signals.h instruct.h alloc.h stacks.h memory.h gc.h major_gc.h freelist.h misc.h \
  minor_gc.h 
stacks.o : stacks.c config.h ../../config/m.h ../../config/s.h debugger.h mlvalues.h \
  fail.h misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h 
str.o : str.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h 
sys.o : sys.c config.h ../../config/m.h ../../config/s.h alloc.h mlvalues.h \
  fail.h globals.h instruct.h signals.h stacks.h memory.h gc.h major_gc.h freelist.h \
  misc.h minor_gc.h 
version.o : version.c 
alloc.d.o : alloc.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h major_gc.h freelist.h misc.h memory.h gc.h minor_gc.h stacks.h 
debugger.d.o : debugger.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  instruct.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h opnames.h stacks.h \
  unalignd.h 
equal.d.o : equal.c fail.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
fail.d.o : fail.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h signals.h 
fix_code.d.o : fix_code.c config.h ../../config/m.h ../../config/s.h misc.h mlvalues.h \
  instruct.h reverse.h 
floats.d.o : floats.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h debugger.h 
freelist.d.o : freelist.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h freelist.h gc.h major_gc.h misc.h 
hash.d.o : hash.c mlvalues.h config.h ../../config/m.h ../../config/s.h memory.h \
  gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
interp.d.o : interp.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h fail.h instruct.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h \
  prims.h signals.h stacks.h str.h unalignd.h 
intext.d.o : intext.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h misc.h minor_gc.h reverse.h 
ints.d.o : ints.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h 
io.d.o : io.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h fail.h \
  io.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h signals.h sys.h 
lexing.d.o : lexing.c mlvalues.h config.h ../../config/m.h ../../config/s.h instruct.h \
  stacks.h memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h str.h 
main.d.o : main.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  exec.h fail.h gc.h globals.h intext.h io.h misc.h stacks.h memory.h major_gc.h \
  freelist.h minor_gc.h sys.h 
major_gc.d.o : major_gc.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h fail.h freelist.h gc.h globals.h major_gc.h misc.h roots.h 
memory.d.o : memory.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  fail.h freelist.h gc.h major_gc.h misc.h memory.h minor_gc.h 
meta.d.o : meta.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  globals.h major_gc.h freelist.h misc.h memory.h gc.h minor_gc.h prims.h 
minor_gc.d.o : minor_gc.c config.h ../../config/m.h ../../config/s.h debugger.h \
  mlvalues.h fail.h gc.h major_gc.h freelist.h misc.h memory.h minor_gc.h roots.h 
misc.d.o : misc.c config.h ../../config/m.h ../../config/s.h debugger.h mlvalues.h \
  misc.h 
parsing.d.o : parsing.c config.h ../../config/m.h ../../config/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h 
prims.d.o : prims.c mlvalues.h config.h ../../config/m.h ../../config/s.h prims.h 
roots.d.o : roots.c debugger.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  memory.h gc.h major_gc.h freelist.h misc.h minor_gc.h stacks.h 
signals.d.o : signals.c mlvalues.h config.h ../../config/m.h ../../config/s.h \
  signals.h instruct.h alloc.h stacks.h memory.h gc.h major_gc.h freelist.h misc.h \
  minor_gc.h 
stacks.d.o : stacks.c config.h ../../config/m.h ../../config/s.h debugger.h mlvalues.h \
  fail.h misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h 
str.d.o : str.c alloc.h mlvalues.h config.h ../../config/m.h ../../config/s.h \
  debugger.h 
sys.d.o : sys.c config.h ../../config/m.h ../../config/s.h alloc.h mlvalues.h \
  fail.h globals.h instruct.h signals.h stacks.h memory.h gc.h major_gc.h freelist.h \
  misc.h minor_gc.h 
version.d.o : version.c 
