# (C) 1999-2004                                                
# Cuihtlauac Alvarado, France Telecon, Recherche & Developement
# Jean-Franois Monin, Universit Joseph Fourier - VERIMAG     

# $Id: Makefile,v 1.12 2004/07/29 12:38:51 alvaracu Exp $ 

all: targets

include Makefile.here
include Makefile.config

NAME=${shell ./mk_name}
VERSION=${shell ./mk_version}
RELEASE=${NAME}-${VERSION}

TAGS_MLI=line_number.mli splay.mli
EMACS_MLI=emacs.mli
VI_MLI=vi.mli
OTAGS_ML=otags.ml
TAGS_ML=splay.ml line_number.ml editor.ml pr.ml
EMACS_ML=emacs.ml pr_emacs_tags.ml 
VI_ML=vi.ml pr_vi_tags.ml
MLI_SRC=${TAGS_MLI} ${EMACS_MLI} ${VI_MLI}
ML_SRC=${OTAGS_ML} ${TAGS_ML} ${EMACS_ML} ${VI_ML}
SRC=${MLI_SRC} ${ML_SRC}
MAKEFILES=Makefile Makefile.config Makefile.depend Makefile.here.tpl
DOCS=COPYING README INSTALL HISTORY AUTHORS THANKS
OBJ=otags camlp4o_pr_emacs camlp4o_pr_vi
LIBS=tags.cma pr_emacs_tags.cma pr_vi_tags.cma
SCRIPTS=configure mk_conf mk_test mk_version mk_name

targets: $(LIBS) $(OBJ)

include Makefile.depend

tags::
	./otags -v ${ZLIBS} $(SRC)

check: all
	mkdir tmp
	./mk_test otags.ml
	./mk_test test.ml
	./mk_test testmli.mli

#tags.cma: libotags(${IMPLEM:.ml=.o})
#	ranlib $+

tags.cma(%.cmo): %cmo

tags.cma: ${TAGS_ML:%.ml=%.cmo}
	ocamlc -a -o $@ ${ZLIBS} $+

tags.cmxa: ${TAGS_ML:%.ml=%.cmx}
	ocamlopt -a -o $@ ${ZLIBS} $+

pr_emacs_tags.cma: ${EMACS_ML:%.ml=%.cmo}
	ocamlc -a -o $@ ${ZLIBS} $+

pr_vi_tags.cma: ${VI_ML:%.ml=%.cmo}
	ocamlc -a -o $@ ${ZLIBS} $+

pr_emacs_tags.cmxa: ${EMACS_ML:%.ml=%.cmx}
	ocamlopt -a -o $@ ${ZLIBS} $+

pr_vi_tags.cmxa: ${VI_ML:%.ml=%.cmx}
	ocamlopt -a -o $@ ${ZLIBS} $+

otags: conf.cmx otags.cmx
	$(CAMLLD) unix.cmxa -o $@ $+ -cclib -lunix

camlp4o_pr_emacs: tags.cmxa pr_emacs_tags.cmxa
	${CAMLLD} -linkall -o $@ -I ${CAMLP4DIR} odyl.cmxa camlp4.cmxa pa_o.cmx $+

camlp4o_pr_vi: tags.cmxa pr_vi_tags.cmxa 
	${CAMLLD} -linkall -o $@ -I ${CAMLP4DIR} odyl.cmxa camlp4.cmxa pa_o.cmx $+

clean::
	rm -f *~
	rm -f *.cm[iaox] *.o *.cmxa *.a *.ppo 
	rm -f *.orig *.old *.new *.bak core.*
	rm -f *.*.ps *.*.dvi *.*.log *.*.tex *.*.aux
	rm -f TAGS *.tags *.dep *.tmp
	rm -f *.cmxa *.a
	rm -f $(OBJ)
	rm -f *.tar*

distclean:: clean
	rm -fr $(RELEASE)
	rm Makefile.here conf.ml

install: $(LIBS) $(OBJ)
	mkdir -p $(BINDIR) $(INSTALLLIBDIR)
	install -m 644 $(LIBS) $(INSTALLLIBDIR)
	install -m 755 $(OBJ) $(BINDIR)
	if [ $(CAMLSRC_SPEC) = "true" ] ; then \
		install -m 755 $(NCAMLP4) $(BINDIR); \
	fi

uninstall:
	(cd $(INSTALLLIBDIR); rm -f $(LIBS))
	(cd $(BINDIR); rm -f $(OBJ))

dist:
	mkdir $(RELEASE)
	cp -a $(SRC) $(MAKEFILES) $(SCRIPTS) ${DOCS} test.ml testmli.mli $(RELEASE)
	tar -cvf $(RELEASE).tar $(RELEASE); rm -rf $(RELEASE)
	gzip $(RELEASE).tar
	rm -fr $(RELEASE)

depend: ${MLI_SRC:.mli=.dep} ${ML_SRC:.ml=.dep} otags.dep
	cat *.dep > Makefile.depend
	echo "pr_emacs_tags.cmo: emacs.cmo" >> Makefile.depend
	echo "pr_emacs_tags.cmx: emacs.cmx" >> Makefile.depend
	echo "pr_vi_tags.cmo: vi.cmo" >> Makefile.depend
	echo "pr_vi_tags.cmx: vi.cmx" >> Makefile.depend
	rm -f *.dep
