### Makefile for building and installing Camlot

include configuration

RM=rm -f

SUBDIRS=Runtime Lib Compiler GC Linker K2 Tests

work: camlot camlot.local
	cd K2; $(GNUMAKE) k2
	cd Compiler; $(GNUMAKE) work
	cd Lib; $(GNUMAKE) work
	cd Linker; $(GNUMAKE) work
	cd Runtime; $(GNUMAKE) work
	cd GC; $(GNUMAKE) work
	@ echo "The Camlot compiler has been successfully built."
	
install:
	- mkdir $(LIBDIR) $(BINDIR)
	rm -f $(LIBDIR)/*
	cd Runtime; $(GNUMAKE) install
	cd Lib; $(GNUMAKE) install
	cd Compiler; $(GNUMAKE) install
	cd GC; $(GNUMAKE) install
	cd Linker; $(GNUMAKE) install
	cd K2; $(GNUMAKE) install
	cd Man; cp camlot.1 $(MANDIR)/camlot.$(MANEXT)
	cd Include; cp macros.k2 main.h z2k2.h config.h prims.h public.h sys.h parametres.h alloc.h fail.h $(LIBDIR)
	cp camlot $(BINDIR)/camlot
	cd $(LIBDIR); ranlib *.a
	@ echo "The Camlot compiler is now installed."

test:
	cd Tests; $(GNUMAKE) test
	@ echo "The Camlot compiler is up and running."

rminstall:
	rm -rf $(LIBDIR)

clean:
	- $(RM) camlot camlot.local
	for d in $(SUBDIRS); \
	do (cd $$d; $(GNUMAKE) clean); \
        done

scratch:
	- $(RM) camlot camlot.local
	for d in $(SUBDIRS); \
	do (cd $$d; $(GNUMAKE) scratch); \
        done

camlot: camlot.p camlot.h
	cp camlot.h camlot
	@echo "stdlib=$(LIBDIR)" >> camlot
	@echo "z2k2=$(LIBDIR)/z2k2" >> camlot
	@echo "k2=$(BINDIR)/k2" >> camlot
	@echo "linker=$(LIBDIR)/linker" >> camlot
	@echo "cc=\"$(CC)\"" >> camlot
	@echo "option_O=\"$(CFLAGS)\"" >> camlot
	@echo "macros_k2=$(LIBDIR)/macros.k2" >> camlot
	@echo "cb=\"$(CB)\"" >> camlot
	@echo "runtime=$(LIBDIR)/runtime.a" >> camlot
	@echo "gc=$(LIBDIR)/gc.a" >> camlot
	@echo "header=$(LIBDIR)/z2k2.h" >> camlot
	cat camlot.p >> camlot
	chmod a+x camlot

camlot.local: camlot.p camlot.h
	cp camlot.h camlot.local
	@echo "stdlib=`pwd`/Lib" >> camlot.local
	@echo "z2k2=`pwd`/Compiler/z2k2" >> camlot.local
	@echo "k2=`pwd`/K2/k2" >> camlot.local
	@echo "linker=`pwd`/Linker/linker" >> camlot.local
	@echo "cc=\"$(CC)\"" >> camlot.local
	@echo "option_O=\"$(CFLAGS)\"" >> camlot.local
	@echo "macros_k2=`pwd`/Include/macros.k2" >> camlot.local
	@echo "cb=\"$(CB)\"" >> camlot.local
	@echo "runtime=`pwd`/Runtime/runtime.a" >> camlot.local
	@echo "gc=`pwd`/GC/gc.a" >> camlot.local
	@echo "header=`pwd`/Include/z2k2.h" >> camlot.local
	cat camlot.p >> camlot.local
	chmod a+x camlot.local
