# Win32 Makefile for Moscow ML 1.43b0 version of the Caml Light runtime system

CC=cl
#OPTS= /nologo /MT /W1 /GX /GB /O2 /Oy- /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS"
OPTS= /nologo /LD /MT /W1 /GB /O2 /Oy- /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS"
#OPTS= /nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" 
BASECFLAGS= /D "unix" /D "CAMLRT" $(OPTS)
BASELIBS=

!include ..\Makedefs.w32

BASEOBJS=interp.obj expand.obj misc.obj stacks.obj fix_code.obj main.obj fail.obj signals.obj \
  freelist.obj major_gc.obj minor_gc.obj memory.obj alloc.obj roots.obj \
  compare.obj ints.obj floats.obj str.obj io.obj \
  extern.obj externcp.obj intern.obj interncp.obj \
  hash.obj sys.obj meta.obj parsing.obj lexing.obj gc_ctrl.obj mosml.obj unix.obj \
  runtime.obj md5sum.obj callback.obj

UNIXPRIMS=compare.c extern.c externcp.c floats.c gc_ctrl.c hash.c \
  intern.c interncp.c interp.c ints.c io.c lexing.c meta.c parsing.c \
  str.c sys.c mosml.c unix.c md5sum.c callback.c

DOSPRIMS=compare.c extern.c externcp.c floats.c gc_ctrl.c hash.c \
  intern.c interncp.c interp.c ints.c io.c lexing.c meta.c parsing.c \
  str.c sys.c graph.c mosml.c msdos.c md5sum.c

BASEPRIMS=$(UNIXPRIMS)

PRIMS=$(BASEPRIMS) $(ADDPRIMS)
OBJS=$(BASEOBJS) $(ADDOBJS)
LIBS=$(BASELIBS) $(ADDRUNLIBS)
CFLAGS=$(BASECFLAGS) $(ADDCFLAGS)

all: camlrt.dll

gensrc : prims.c jumptbl.h

camlrt.dll: $(OBJS) prims.obj
#        $(CC) $(CFLAGS) /Fecamlrt.dll prims.obj $(OBJS) $(LIBS) /link /subsystem:console /def:"mosmldll.def"
        $(CC) $(CFLAGS) /Fecamlrt.dll prims.obj $(OBJS) $(LIBS) /link /subsystem:console

#camlrunr.exe: $(OBJS) prims.obj
#	$(CC) $(CFLAGS) /Fecamlrunr prims.obj $(OBJS) $(LIBS) -lreadline

clean:
	-del camlrt.dll
	-del camlrt.exp
	-del camlrt.lib
	-del *.obj
	-del prims
	-del prims.c
	-del opnames.h
	-del jumptbl.h
	-del makefile.bak

install:
	copy/b camlrt.dll $(BINDIR)

prims:  $(PRIMS)
	perl ..\tools\findprim prims <<
$(PRIMS)
<<

prims.c: prims
	perl ..\tools\mkprims prims > prims.c

#opnames.h : instruct.h
#	perl ..\tools\mkopnam instruct.h > opnames.h

# jumptbl.h is required only if you have GCC 2.0 or later
jumptbl.h : instruct.h
	perl ..\tools\mkjumptb instruct.h > jumptbl.h

depend : prims.c opnames.h jumptbl.h
#	del makefile.bak
#	rename makefile makefile.bak
#	perl ..\tools\cutdeps makefile.bak > makefile
#	gcc -MM $(CFLAGS) *.c >> makefile

### EVERYTHING THAT GOES BEYOND THIS COMMENT WILL BE ERASED WITHOUT WARNING
### DO NOT DELETE THIS LINE
alloc.obj : alloc.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  debugger.h major_gc.h freelist.h memory.h gc.h minor_gc.h stacks.h
compare.obj : compare.c fail.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h str.h
debugger.obj : debugger.c
extern.obj : extern.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h
externcp.obj : externcp.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h \
  mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h \
  reverse.h
fail.obj : fail.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h signals.h
fix_code.obj : fix_code.c config.h ../config.w32/m.h ../config.w32/s.h misc.h mlvalues.h \
  instruct.h reverse.h
floats.obj : floats.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  debugger.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h
freelist.obj : freelist.c config.h ../config.w32/m.h ../config.w32/s.h debugger.h misc.h \
  mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h
gc_ctrl.obj : gc_ctrl.c alloc.h misc.h config.h ../config.w32/m.h \
  ../config.w32/s.h mlvalues.h debugger.h gc.h gc_ctrl.h major_gc.h freelist.h minor_gc.h
hash.obj : hash.c mlvalues.h config.h ../config.w32/m.h ../config.w32/s.h misc.h memory.h \
  gc.h major_gc.h freelist.h minor_gc.h str.h
intern.obj : intern.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
interncp.obj : interncp.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h \
  mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h \
  reverse.h
interp.obj : interp.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  debugger.h fail.h instruct.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
  prims.h signals.h stacks.h str.h unalignd.h jumptbl.h
ints.obj : ints.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h
io.obj : io.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h fail.h \
  io.h memory.h gc.h major_gc.h freelist.h minor_gc.h signals.h sys.h
largeint.obj : largeint.c mlvalues.h config.h ../config.w32/m.h ../config.w32/s.h misc.h \
  fail.h alloc.h
lexing.obj : lexing.c mlvalues.h config.h ../config.w32/m.h ../config.w32/s.h misc.h stacks.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h str.h
main.obj : main.c version.h alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h \
  mlvalues.h exec.h fail.h gc.h globals.h intext.h io.h stacks.h memory.h major_gc.h \
  freelist.h minor_gc.h sys.h
major_gc.obj : major_gc.c config.h ../config.w32/m.h ../config.w32/s.h debugger.h misc.h \
  mlvalues.h fail.h freelist.h gc.h gc_ctrl.h globals.h major_gc.h roots.h runtime.h
md5sum.obj : md5sum.c mlvalues.h config.h ..\config.w32\m.h ..\config.w32\s.h \
 alloc.h misc.h
memory.obj : memory.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  fail.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h
meta.obj : meta.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  globals.h major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h
minor_gc.obj : minor_gc.c config.h ../config.w32/m.h ../config.w32/s.h debugger.h misc.h \
  mlvalues.h fail.h gc.h gc_ctrl.h major_gc.h freelist.h memory.h minor_gc.h roots.h \
  runtime.h
misc.obj : misc.c config.h ../config.w32/m.h ../config.w32/s.h debugger.h misc.h mlvalues.h \
  io.h
mosml.obj : mosml.c fail.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h str.h runtime.h
msdos.obj : msdos.c mlvalues.h config.h ../config.w32/m.h ../config.w32/s.h misc.h signals.h \
  instruct.h fail.h
parsing.obj : parsing.c config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h misc.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h
prims.obj : prims.c mlvalues.h config.h ../config.w32/m.h ../config.w32/s.h misc.h prims.h
roots.obj : roots.c debugger.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h stacks.h
runtime.obj : runtime.c config.h ../config.w32/m.h ../config.w32/s.h runtime.h
signals.obj : signals.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  signals.h stacks.h memory.h gc.h major_gc.h \
  freelist.h minor_gc.h fail.h instruct.h
stacks.obj : stacks.c config.h ../config.w32/m.h ../config.w32/s.h debugger.h misc.h mlvalues.h \
  fail.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h
str.obj : str.c alloc.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  debugger.h
sys.obj : sys.c config.h ../config.w32/m.h ../config.w32/s.h alloc.h misc.h mlvalues.h \
  fail.h globals.h instruct.h signals.h stacks.h memory.h gc.h major_gc.h \
  freelist.h minor_gc.h io.h
unix.obj : unix.c fail.h misc.h config.h ../config.w32/m.h ../config.w32/s.h mlvalues.h \
  memory.h gc.h major_gc.h freelist.h minor_gc.h str.h
