BINDIR=C:\caml386\bin
LIBDIR=C:\caml386\lib

.SWAP

world:
	cd runtime
	make all
	copy camlrun.exe ..
	cd ..\launch
	make all
	cd ..\yacc
	make all
	copy camlyacc.exe ..
	cd ..\lib
	make all
	cd ..\compiler
	make all
	cd ..\linker
	make all
	cd ..\librar
	make all
	cd ..\lex
	make all
	cd ..\toplevel
	make all
	cd ..

bootstrap: promote again compare

promote:
	del camlcomp.bak
	rename camlcomp camlcomp.bak
	copy compiler\camlcomp camlcomp
	del camllink.bak
	rename camllink camllink.bak
	copy linker\camllink camllink
	del camllibr.bak
	rename camllibr camllibr.bak
	copy librar\camllibr camllibr
	del camltop.bak
	rename camltop camltop.bak
	copy toplevel\camltop camltop
	del camllex.bak
	rename camllex camllex.bak
	copy lex\camllex camllex

again:
	cd lib
	make scratch all
	cd ..\compiler
	make scratch all
	cd ..\linker
	make scratch all
	cd ..\librar
	make scratch all
	cd ..\lex
	make scratch all
	cd ..\toplevel
	make scratch all
	cd ..

compare:
	- tools\cmpcode camlcomp compiler\camlcomp
	- tools\cmpcode camllink linker\camllink
	- tools\cmpcode camllibr librar\camllibr
	- tools\cmpcode camltop toplevel\camltop
	- tools\cmpcode camllex lex\camllex

install:
	- mkdir $(LIBDIR)
	- mkdir $(BINDIR)
	cd runtime
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\launch
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\lib
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\compiler
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\linker
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\librar
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\toplevel
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\yacc
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..\lex
	make -DBINDIR=$(BINDIR) -DLIBDIR=$(LIBDIR) install
	cd ..

rminstall:
	rm -r $(BINDIR) $(LIBDIR)

scratch:
	cd runtime
	make scratch
	cd ..\launch
	make scratch
	cd ..\lib
	make scratch
	cd ..\compiler
	make scratch
	cd ..\linker
	make scratch
	cd ..\librar
	make scratch
	cd ..\toplevel
	make scratch
	cd ..\yacc
	make scratch
	cd ..\lex
	make scratch
	cd ..
