include config.make OCAMLNET := ocamlnet-0.97.1 EXTLIB := extlib-1.3 MLINCDIRS_LOCAL = -I $(OCAMLNET) -I mlsqlite -I $(EXTLIB) -I glib -I crypto MLINCDIRS = -I $(LABLGTK_DIR) $(MLINCDIRS_LOCAL) GTK_CFLAGS := $(shell pkg-config gtk+-2.0 --cflags) GNOMECANVAS_CFLAGS := $(shell pkg-config libgnomecanvas-2.0 --cflags) SRC = $(OCAMLNET)/base64.ml $(OCAMLNET)/base64.mli \ mlsqlite/sqlite3.ml mlsqlite/sqlite3.mli \ $(EXTLIB)/IO.mli $(EXTLIB)/IO.ml $(EXTLIB)/unzip.ml $(EXTLIB)/unzip.mli \ glib/gspawn.ml glib/gspawn.mli glib/giochannel.ml glib/giochannel.mli \ glib/viz_gmisc.ml glib/gpattern.ml \ crypto/crypto.ml crypto/crypto.mli \ viz_misc.ml viz_misc.mli viz_types.ml viz_types.mli \ q.ml q.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 \ components.ml schema_lexer.ml \ database.ml database.mli agraph.ml agraph.mli \ autocolor.ml autocolor.mli viz_style.ml viz_style.mli \ icon.ml ui.ml ui.mli unidiff.ml unidiff.mli \ view.ml view.mli query.ml query.mli app.ml app.mli version.ml main.ml C_OBJ = mlsqlite/ocaml-sqlite3.o \ glib/ocaml-gspawn.o glib/ocaml-giochannel.o \ glib/ocaml-misc.o glib/ocaml-gdate.o glib/ocaml-gpattern.o \ crypto/ocaml-openssl.o \ gnomecanvas_hack.o 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 COPYING version.ml.in \ 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 \ dot_types.mli dot_lexer.mll dot_parser.mly \ subprocess.ml subprocess.mli icon.ml ui.ml ui.mli \ revision_types.mli revision_lexer.mll revision_parser.mly \ components.ml schema_lexer.mll database.ml database.mli agraph.ml agraph.mli \ unidiff.ml unidiff.mli gnomecanvas_hack.c view.ml view.mli \ query.ml query.mli app.mli app.ml main.ml \ mlsqlite/sqlite3.ml mlsqlite/sqlite3.mli \ mlsqlite/config.h mlsqlite/ocaml-sqlite3.h mlsqlite/ocaml-sqlite3.c \ ocamlnet-0.97.1/base64.ml ocamlnet-0.97.1/base64.mli ocamlnet-0.97.1/LICENSE \ extlib-1.3/IO.ml extlib-1.3/IO.mli extlib-1.3/unzip.ml extlib-1.3/unzip.mli \ glib/gspawn.ml glib/gspawn.mli glib/giochannel.ml glib/giochannel.mli \ glib/viz_gmisc.ml glib/gpattern.ml \ glib/ocaml-gspawn.c glib/ocaml-giochannel.c \ glib/ocaml-misc.c glib/ocaml-gdate.c glib/ocaml-gpattern.c \ glib/gspawn_tags.var glib/giochannel_tags.var \ crypto/ocaml-openssl.c crypto/crypto.ml crypto/crypto.mli DIST_LABLGTK= lablgtk/configure lablgtk/configure.in lablgtk/config.make.in \ lablgtk/COPYING lablgtk/CHANGES lablgtk/README* \ lablgtk/Makefile lablgtk/src/Makefile lablgtk/src/.depend \ lablgtk/src/*.ml lablgtk/src/*.ml[il4] lablgtk/src/*.props \ lablgtk/src/*.[ch] lablgtk/src/*.var lablgtk/src/lablgtk2.in ifdef SQLITE_LIBS LIB3RDPARTY_OBJ = $(C_OBJ) SQLITE_LINK = -cclib "$(SQLITE_LIBS)" else LIB3RDPARTY_OBJ = $(MONOTONE_DIR)/sqlite/lib3rdparty_a-*.o $(C_OBJ) endif ifeq ($(OCAMLBEST), opt) monotone-viz : $(OBJX) lib3rdparty.a $(OCAMLOPT) -o $@ -I $(LABLGTK_DIR) $(MLLIBS) $^ $(CRYPTO_LIB) $(SQLITE_LINK) monotone-viz : MLLIBS = str.cmxa lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa ifeq ($(LOCAL_LABLGTK), yes) $(OBJX) : .lablgtk endif else monotone-viz : $(OBJ) lib3rdparty.a $(OCAMLC) -custom -o $@ -I $(LABLGTK_DIR) $(MLLIBS) $^ $(CRYPTO_LIB) $(SQLITE_LINK) monotone-viz : MLLIBS = str.cma lablgtk.cma gtkInit.cmo lablgnomecanvas.cma ifeq ($(LOCAL_LABLGTK), yes) $(OBJ) : .lablgtk endif endif lib3rdparty.a : $(C_OBJ) ar crs lib3rdparty.a $(LIB3RDPARTY_OBJ) glib/ocaml-gspawn.o : glib/gspawn_tags.c glib/gspawn_tags.h glib/ocaml-giochannel.o : glib/giochannel_tags.c glib/giochannel_tags.h glib/ocaml-%.o : CINCDIRS = -I $(LABLGTK_DIR) -ccopt "$(GTK_CFLAGS)" ifdef SQLITE_LIBS mlsqlite/ocaml-sqlite3.o : CINCDIRS = -ccopt "$(SQLITE_CFLAGS)" else mlsqlite/ocaml-sqlite3.o : CINCDIRS = -I $(MONOTONE_DIR)/sqlite endif crypto/ocaml-openssl.o : CINCDIRS = -ccopt "$(CRYPTO_CFLAGS)" gnomecanvas_hack.o : CINCDIRS = -ccopt "$(GNOMECANVAS_CFLAGS)" $(EXTLIB)/unzip.% : MLFLAGS += -w y REVISION_FILE := $(shell test -r _MTN/revision && echo _MTN/revision) REVISION_ID = $(shell mtn automate get_base_revision_id || ( test -r _MTN/revision && cat _MTN/revision )) version.ml : version.ml.in $(REVISION_FILE) sed -e 's/@REVISION@/$(REVISION_ID)/' -e 's/@VERSION@/$(VERSION)/' < $< > $@ %.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 $( $@ @$(OCAMLDEP) $(DEP_FLAGS) -pp '$(CAMLP4O)' $(USE_P4) >> $@ dist : ../$(NAME)-$(VERSION).tar.gz dist-nolablgtk : ../$(NAME)-$(VERSION)-nolablgtk.tar.gz ../$(NAME)-$(VERSION).tar.gz : $(DISTSRC) $(DIST_LABLGTK) ../$(NAME)-$(VERSION)-nolablgtk.tar.gz : $(DISTSRC) ../%.tar.gz : export DIRNAME="$${PWD##*/}" ; \ cd .. && mv "$$DIRNAME" $(NAME)-$(VERSION) && \ tar zcvf $(@F) $(addprefix $(NAME)-$(VERSION)/,$^) && \ mv $(NAME)-$(VERSION) "$$DIRNAME" # no config.make ifndef OCAMLLEX $(error run ./configure first (cf README)) endif .lablgtk : $(MAKE) -C lablgtk world touch $@