Below is the file 'Makefile' from this revision. You can also download the file.


include config.make

NAME    = git-viz
VERSION = 0.1

OCAMLNET     := ocamlnet-0.97.1
EXTLIB       := extlib-1.3

VPATH = glib crypto

MLINCDIRS = -I $(LABLGTK_DIR) -I glib -I crypto
CINCDIRS  = -I $(LABLGTK_DIR) -ccopt "$(GTK_CFLAGS) $(CRYPTO_CFLAGS)"
GTK_CFLAGS := $(shell pkg-config gtk+-2.0 --cflags)


SRC = gspawn.ml gspawn.mli giochannel.ml giochannel.mli \
      crypto.ml crypto.mli \
      viz_misc.ml viz_misc.mli viz_types.ml viz_types.mli \
      q.ml q.mli heap.ml heap.mli \
      dot_lexer.ml dot_parser.ml dot_parser.mli \
      revision_types.mli revision_lexer.ml revision_parser.ml revision_parser.mli \
      subprocess.ml subprocess.mli \
      status.ml \
      database.ml database.mli agraph.ml agraph.mli \
      autocolor.ml autocolor.mli viz_style.ml viz_style.mli \
      icon.ml unidiff.ml unidiff.mli \
      view.ml view.mli ui.ml main.ml

USE_P4 = viz_style.ml

OBJ  = $(patsubst %.ml,%.cmo,$(filter %.ml, $(SRC)))
OBJX = $(patsubst %.ml,%.cmx,$(filter %.ml, $(SRC)))

DISTSRC = Makefile configure.ac config.make.in ocaml.m4 configure aclocal.m4 \
          monotone-viz.style.sample README INSTALL NEWS \
          viz_misc.ml viz_misc.mli viz_types.ml viz_types.mli q.ml q.mli \
          autocolor.ml autocolor.mli viz_style.ml viz_style.mli heap.ml heap.mli \
          dot_types.mli dot_lexer.mll dot_parser.mly \
          subprocess.ml subprocess.mli icon.ml status.ml ui.ml \
          revision_types.mli revision_lexer.mll revision_parser.mly \
          git.ml database-mt.ml database.mli agraph.ml agraph.mli \
          unidiff.ml unidiff.mli view.ml view.mli main.ml \
          glib/gspawn.ml glib/gspawn.mli glib/giochannel.ml glib/giochannel.mli \
          glib/ocaml-gspawn.c glib/ocaml-giochannel.c \
          glib/gspawn_tags.var glib/giochannel_tags.var \
          crypto/ocaml-openssl.c crypto/crypto.ml crypto/crypto.mli


ifeq ($(OCAMLBEST), opt)
git-viz: $(OBJX) lib3rdparty.a
	$(OCAMLOPT) -o $@ -I . -I $(LABLGTK_DIR) $(MLLIBS) $^ $(CRYPTO_LIB)
git-viz : MLLIBS = str.cmxa lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa
else
git-viz:
	ln -sf git.ml database.ml
	$(OCAMLC) -custom -o $@ -I . -I $(LABLGTK_DIR) $(MLLIBS) $^ $(CRYPTO_LIB)
git-viz : MLLIBS = str.cma lablgtk.cma gtkInit.cmo lablgnomecanvas.cma
endif

database.ml :
	ln -s git.ml $@

lib3rdparty.a : glib/ocaml-gspawn.o glib/ocaml-giochannel.o crypto/ocaml-openssl.o
	ar crs lib3rdparty.a $^

glib/ocaml-gspawn.o : gspawn_tags.c gspawn_tags.h
glib/ocaml-giochannel.o : giochannel_tags.c giochannel_tags.h

%.ml : %.mll
	$(OCAMLLEX) $<

%.mli %.ml : %.mly
	$(OCAMLYACC) $<

PP = $(if $(findstring $(1),$(USE_P4)),-pp $(CAMLP4O))

%.cmo : %.ml
	$(OCAMLC) $(MLFLAGS) $(MLINCDIRS) $(call PP,$<) -c $<

%.cmx : %.ml
	$(OCAMLOPT) $(MLFLAGS) $(MLINCDIRS) $(call PP,$<) -c $<

%.cmi : %.mli
	$(OCAMLC) $(MLINCDIRS) $<

%.o : %.c
	cd $(<D) ; $(OCAMLC) $(CINCDIRS) $(<F)

%.c %.h : %.var
	cd $(<D) ; $(LABLGTK_DIR)/varcc -static $(<F)

clean :
	rm -f *.a *.so *.o *.cm* monotone-viz
	rm -f dot_lexer.ml dot_parser.ml dot_parser.mli
	rm -f revision_lexer.ml revision_parser.ml revision_parser.mli
	cd glib   && rm -f *.o *.cm*
	cd crypto && rm -f *.o *.cm*

.PHONY : clean dist

ifeq ($OCAMLBEST, opt)
DEP_FLAGS = -native
endif

-include .depend
.depend : $(SRC)
	@echo "making deps ..."
	@$(OCAMLDEP) $(DEP_FLAGS) $(addprefix -I ,$(VPATH)) $(filter-out $(USE_P4),$^) > $@
	@$(OCAMLDEP) $(DEP_FLAGS) -pp '$(CAMLP4O)' $(USE_P4) >> $@

dist : ../$(NAME)-$(VERSION).tar.gz
../$(NAME)-$(VERSION).tar.gz : $(DISTSRC)
	export DIRNAME="$${PWD##*/}" ; \
        cd .. && mv "$$DIRNAME" $(NAME)-$(VERSION) && \
        tar zcvf $(@F) $(addprefix $(NAME)-$(VERSION)/,$(DISTSRC)) && \
        mv $(NAME)-$(VERSION) "$$DIRNAME"

# not config.make
ifndef OCAMLLEX
$(error run ./configure first (cf README))
endif