#  C2caml : parses c headers and produces appropriate caml bindings for it
#  Copyright (C) 1999  Sven LUTHER
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

# $Id: Makefile,v 1.1 1999/06/19 14:59:19 sven Exp $

CC =		gcc
CDEP =		gcc -MM
CAMLC =		ocamlc 
CAMLMKTOP =	ocamlmktop 
CAMLOPT =	ocamlopt
CAMLDEP =	ocamldep
CAMLLEX =	ocamllex
CAMLYACC =	ocamlyacc
AR =		ar
RANLIB =	ranlib

DIROBJS =	Objets
VPATH =	 	$(DIROBJS)

CAMLFLAGS =	-I $(DIROBJS)
CAMLOPTFLAGS =	-I $(DIROBJS)

CAMLLIB=/usr/lib/ocaml

SUBDIRS=''

EXE=c2caml_top c2caml

OBJS= 			\
	expr.cmo	\
	var.cmo		\
	par.cmo		\
	lex.cmo		\
	process.cmo	\

all: $(DIROBJS) core $(EXE)

c2caml_top: $(OBJS)
	ocamlmktop -custom $(CAMLFLAGS) -o $@ unix.cma $+ -cclib -lunix

c2caml: $(OBJS) main.cmo
	ocamlc -custom $(CAMLFLAGS) -o $@ unix.cma $+ -cclib -lunix

lex.ml: lex.mll par.cmo var.cmo
	$(CAMLLEX) lex.mll
	$(CAMLDEP) lex.ml >> .depend

par.ml par.mli: par.mly expr.cmo var.cmo
	$(CAMLYACC) par.mly
	$(CAMLDEP) par.mli par.ml >> .depend

par.cmo: par.cmi
main.cmo: lex.cmo par.cmo

clean:
	rm -rf $(DIROBJS) core .depend par.ml par.mli lex.ml $(EXE) 

.PHONY: co ci tag dep depend

co:	
	cvs update

ci:
	cvs ci

tag:
	cvs -R tag 

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

.mli.cmi:
	$(CAMLC) $(CAMLFLAGS) -c $<
	mv $@ $(DIROBJS)

.ml.cmo:
	$(CAMLC) $(CAMLFLAGS) -c $<
	if test -f $*.cmi; then mv $*.cmi $(DIROBJS); fi
	mv $@ $(DIROBJS)

.ml.cmx .ml.o:
	$(CAMLOPT) $(CAMLOPTFLAGS) -c $<
	mv $@ $(DIROBJS)
	if test -f $*.cmi; then mv $*.cmi $(DIROBJS); fi
	mv $*.o $(DIROBJS)

$(DIROBJS):
	mkdir $(DIROBJS)

core:
	mkdir core

depend .depend dep:
	$(CAMLDEP) $(INCLUDES) *.mli *.ml > .depend

include .depend
