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

include mkflags
include mk.inf

WSDIR?=		/usr/local/ws
OCAMLC=		ocamlc
OCAMLOPT=	ocamlopt
CAMLP4=		camlp4o
OCAMLLIB!=	$(shell $(OCAMLC) -where)
CAMLP4LIB!=	$(shell $(CAMLP4) -where)
#OCAMLLIB!=	$(OCAMLC) -where
#CAMLP4LIB!=	$(CAMLP4) -where
MOD_SWIGP4=	swigp4.cma
PROJ_NAME=	$(TARGET)
EXE_PREFIX=
MLOBJS2=		$(OBJS:$(TARGET).o= )
MLOBJS3=		$(MLOBJS2:%.o= %.cmx)
MLOBJS=		$(MLOBJS3) $(TARGET).cmx
MLOBJS_BYTE2=	$(OBJS:$(TARGET).o= )
MLOBJS_BYTE3=	$(MLOBJS_BYTE2:%.o= %.cmo)
MLOBJS_BYTE=	$(MLOBJS_BYTE3) $(TARGET).cmo
EXE=		$(PROJ_NAME)$(EXE_PREFIX)
EXE_BYTE=	$(PROJ_NAME)_byte$(EXE_PREFIX)
LIBS=		mpfc.cmxa
LD=		g++
LDFLAGS=	-L$(WSDIR)/lib -L$(WSDIR)/lib/ocaml
LDLIBS=		-lwssheet -lwsr -lwsc -lwsx11nomain -lwsb -lwsj3w -lws -pthread
LIBS_BYTE=	mpfc.cma
#INCDIR=		$(WSDIR)/lib $(WSDIR)/lib/ocaml
INCDIR=		$(WSDIR)/lib/ocaml
PP=		-pp "$(CAMLP4) -I $(INCDIR) $(MOD_SWIGP4)"
#OC_FLAGS=	-I $(INCDIR) -w s
OC_FLAGS=	-I $(INCDIR)
OC_FLAGS_BYTE=	-I $(INCDIR) -g
DEP_FILE=	.depend

all: $(EXE_BYTE) $(EXE)

native: $(EXE)

bytecode: $(EXE_BYTE)

$(EXE): $(MLOBJS)
	$(OCAMLOPT) -o $(EXE) $(OC_FLAGS) -cc "$(LD)" -ccopt "$(LDFLAGS)" $(LIBS) $(MLOBJS)

$(EXE_BYTE): $(MLOBJS_BYTE)
	$(OCAMLC) -o $(EXE_BYTE) $(OC_FLAGS_BYTE) $(LIBS_BYTE) $(MLOBJS_BYTE)

.ml.cmo:
	$(OCAMLC) -c $(OC_FLAGS_BYTE) $(PP) $<

.ml.cmx:
	$(OCAMLOPT) -c $(OC_FLAGS) $(PP) $<

clean:
	rm -f *.cmi *.cmo *.cmx *.o $(EXE) $(EXE_BYTE)

dep: depend

depend:
	ocamldep -I "$(INCDIR)" $(PP) *.mli *.ml > $(DEP_FILE)

ifeq ($(wildcard $(DEP_FILE)), $(DEP_FILE))
include $(DEP_FILE)
endif
