obj = \
	my_String.cmo 		\
	shell.cmo		\
	flags.cmo		\
	generic_parser.cmo	\
	macro.cmo		\
	yacc_parser.cmo		\
	yacc_lexer.cmo		\
	expression_parser.cmo	\
	expander.cmo		\
	macros_parser.cmo	\
	spec_parser.cmo		\
	main.cmo
objx = $(obj:.cmo=.cmx)
OCAMLC = ocamlc
OCAMLOPT = ocamlopt
OFLAGS = -g
target = rspp
version = 0.0.2

all: $(target)

opt: $(target).opt

$(target): $(obj)
	$(OCAMLC) str.cma unix.cma $(OFLAGS) -o $(target) $(obj)

$(target).opt: $(objx)
	$(OCAMLOPT) str.cmxa unix.cmxa -o $(target).opt $(objx)
	
%.cmo: %.ml %.cmi
	$(OCAMLC) $(OFLAGS) -c $<

%.cmx: %.ml %.cmi
	$(OCAMLOPT) -c $<

%.cmi: %.mli
	$(OCAMLC) $(OFLAGS) -c $<

%.ml: %.mll
	ocamllex $<
	
%.ml: %.mly
	ocamlyacc $<

.deps: yacc_lexer.ml yacc_parser.ml
	ocamldep *.ml *.mli > .deps
	
tags:
	otags -vi *.ml ast.mli

clean:
	rm -f *.cm* *.o $(target) $(target).opt tags .deps
	rm -f yacc_lexer.ml yacc_parser.ml yacc_parser.mli

dist:
	svn up
	if svn status | grep -v '^?' | grep . ; then false ; fi
	rm -rf rspp-$(version)
	svn export . rspp-$(version)
	tar zcf rspp-$(version).tar.gz rspp-$(version)
	rm -rf rspp-$(version)
	
include .deps
