OCAMLC=ocamlc -w A -c
OCAMLLINK=ocamlc -w A
OCAMLOPT=ocamlopt.opt  -w A -c
OCAMLOPTLINK=ocamlopt.opt -w A
OCAMLDEP=ocamldep
OCAMLLEX:=ocamllex
OCAMLYACC:=ocamlyacc -v

OBJS:=colors activebuffer types dns utils conflex confpars conf \
      request answer main

OBJS-SWIFT:=$(patsubst %, %.cmo, $(OBJS))
OBJS-SWIFT-NAT:=$(patsubst %, %.cmx, $(OBJS))

all: nat

byte: swift

swift: $(OBJS-SWIFT)
	$(OCAMLLINK) -custom -o swift unix.cma str.cma \
	$(OBJS-SWIFT) -cclib -lunix -cclib -lstr

nat: swift.opt

swift.opt: $(OBJS-SWIFT-NAT)
	$(OCAMLOPTLINK) -o swift.opt unix.cmxa str.cmxa \
	$(OBJS-SWIFT-NAT) -cclib -lunix -cclib -lstr

conflex.ml: conflex.mll
confpars.mli confpars.ml: confpars.mly
	$(OCAMLYACC) confpars.mly

clean:
	rm -f confpars.mli confpars.ml confpars.output conflex.ml
	rm -f *.out *.opt *.cm[oixa] *.cmxa *.o *~
	rm -f swift swift.opt

dep: conflex.ml confpars.ml
	ocamldep *.ml *.mli > .depend

.SUFFIXES:
.SUFFIXES: .mll .ml .mli .cmi .cmo .cmx

.mll.ml:
	$(OCAMLLEX) $<
.mli.cmi:
	$(OCAMLC) $<
.ml.cmo:
	$(OCAMLC) $<
.ml.cmx:
	$(OCAMLOPT) $<

-include .depend
