-# Makefile for lablgtk_mathview.
-
PACKAGE = @PACKAGE@
VERSION = @VERSION@
-LABLGTKDIR = @LABLGTK_LIB_DIR@
-MLMINIDOMDIR = @MLMINIDOM_LIB_DIR@
+INCLUDEDIR = @OCAML_INCLUDE_DIR@
+PROPCC = @OCAML_LIB_DIR@/lablgtk2/propcc
+PREFIX =
+OBJECTS_C = ml_gtk_mathview.o
+OBJECTS = gtkMathViewProps.cmo ogtkMathViewProps.cmo gtk_mathview.cmo gtkMathView.cmo gMathView.cmo gMathViewAux.cmo
+OBJECTS_OPT = gtkMathViewProps.cmx ogtkMathViewProps.cmx gtkMathView.cmx gtk_mathview.cmx gMathView.cmx gMathViewAux.cmx
+GENERATED_FILES = gtkMathViewProps.ml ogtkMathViewProps.ml
+INST = \
+ META gMathView.mli gMathView.cmi gtkMathView.cmi gtk_mathview.cmi \
+ gtkMathViewProps.cmi ogtkMathViewProps.cmi \
+ gMathViewAux.cmi gMathViewAux.mli
+DIST_FILES = \
+ Makefile.in configure.in gMathView.ml gMathView.mli \
+ gMathViewAux.ml gMathViewAux.mli gtkMathView.ml \
+ gtk_mathview.ml ml_gtk_mathview.c META.in .depend debian/ test/ \
+ configure gtkMathView.props
+DIST_DIR = $(PACKAGE)-$(VERSION)
+DOC_FILES = AUTHORS COPYING ChangeLog NEWS README LICENSE
+REQUIRES = gdome2 lablgtk2
+PREDICATES =
+SHARED_LIBS = @GDOME_LIBS@ @GTKMATHVIEW_LIBS@ -lmlgdome
+
+OCAMLFIND = ocamlfind
+OCAMLC = $(OCAMLFIND) ocamlc
+OCAMLOPT = $(OCAMLFIND) ocamlopt
+OCAMLDEP = ocamldep
+OCAMLMKLIB = ocamlmklib
+OCAML_STUB_DIR = @OCAML_STUB_DIR@
+
+ARCHIVE = $(PACKAGE)
+DLL = dll$(ARCHIVE).so
+
TESTDIR = ./test
-MLFLAGS += -I $(LABLGTKDIR) -I $(MLMINIDOMDIR)
+TMPDIR = .test
+TMPPKGDIR = $(TMPDIR)/$(PACKAGE)
-DIST_FILES = \
- AUTHORS COPYING ChangeLog LICENSE Makefile.in NEWS README configure \
- configure.in configure.mk gMathView.ml gtkMathView.ml gtk_mathview.ml \
- ml_gtk_mathview.c
+all: $(ARCHIVE).cma
+opt: $(ARCHIVE).cmxa
+test: $(TESTDIR)/test
+test.opt: $(TESTDIR)/test.opt
+world: all opt
-TARGETS = ml_gtk_mathview.o lablgtkmathview.cma
+dist:
+ rm -rf $(DIST_DIR)/
+ mkdir $(DIST_DIR)/
+ cp -a $(DIST_FILES) $(DOC_FILES) $(DIST_DIR)/
+ -find $(DIST_DIR) -name CVS -type d -exec rm -rf {} \;
+ -find $(DIST_DIR) -name .cvsignore -type f -exec rm {} \;
+ tar cvfz $(DIST_DIR).tar.gz $(DIST_DIR)/
+ rm -rf $(DIST_DIR)/
-all: $(TARGETS)
+deb: dist
+ if [ -d $(DIST_DIR)/ ]; then rm -rf $(DIST_DIR); else true; fi
+ tar xvzf $(DIST_DIR).tar.gz
+ (cd $(DIST_DIR)/ && debuild)
+ rm -rf $(DIST_DIR)
-opt: lablgtkmathviewopt
+$(GENERATED_FILES): gtkMathView.props
+
+ml_gtk_mathview.o: ml_gtk_mathview.c
+ gcc -c -I$(INCLUDEDIR) -fPIC `ocamlfind query -i-format lablgtk2` @GTKMATHVIEW_CFLAGS@ @GDOME_CFLAGS@ `ocamlfind query -i-format gdome2` $<
+
+.SUFFIXES: .cmo .cmi .cmx .ml .mli
-dist:
- rm -rf lablgtkmathview-$(VERSION)
- mkdir lablgtkmathview-$(VERSION)
- cp $(DIST_FILES) lablgtkmathview-$(VERSION)
- tar cvfz lablgtkmathview-$(VERSION).tar.gz lablgtkmathview-$(VERSION)
- rm -rf lablgtkmathview-$(VERSION)
-
-configure:
- @rm -f config.make
- @$(MAKE) --no-print-directory -f configure.mk
-
-depend:
- @rm -f .depend
- @$(MAKE) --no-print-directory -f configure.mk .depend
-
-.depend config.make:
- @$(MAKE) --no-print-directory -f configure.mk
-
-COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c
-LINKER = $(CAMLC) $(MLFLAGS)
-COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c
-LINKOPT = $(CAMLOPT) $(MLFLAGS)
-
-include config.make
-
-INSTALLDIR = $(LIBDIR)/lablgtkmathview
-
-MLLIBS = lablgtkmathview.cma
-CLIBS =
-MLLINK = unix.cma str.cma
-
-ifdef DEBUG
-CFLAGS = -g $(GTKCFLAGS)
-MLLINK += -cclib -lcamlrund
-MLFLAGS += -g
-else
-CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS)
-endif
-CFLAGS += $(MINIDOMCFLAGS) $(GTKMATHVIEWCFLAGS)
-
-THFLAGS = -thread
-THLINK = unix.cma threads.cma
-
-ifdef USE_CC
-CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS)
-else
-CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)"
-endif
-
-# Rules
-.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def
-.c.o:
- $(CCOMPILER) $<
.ml.cmo:
- $(COMPILER) $<
+ $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $<
.mli.cmi:
- $(COMPILER) $<
+ $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $<
.ml.cmx:
- $(COMPOPT) $<
-.var.h:
- ./var2def < $< > $@
-.var.c:
- ./var2conv < $< > $@
+ $(OCAMLOPT) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $<
+
+%Props.ml o%Props.ml: %.props $(PROPCC)
+ $(PROPCC) $<
+
+depend: *.ml *.mli $(GENERATED_FILES)
+ $(OCAMLDEP) *.ml *.mli >.depend
+include .depend
+
+$(ARCHIVE).cma $(DLL): $(OBJECTS) $(OBJECTS_C)
+ $(OCAMLMKLIB) -o $(ARCHIVE) -L$(OCAML_STUB_DIR) $^ $(SHARED_LIBS)
+$(ARCHIVE).cmxa $(ARCHIVE).a: $(OBJECTS_OPT)
+ $(OCAMLMKLIB) -o $(ARCHIVE) -L$(OCAML_STUB_DIR) $^ $(OBJECTS_C) $(SHARED_LIBS)
-# Targets
-COBJS = ml_gtk_mathview.o
-MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo
-ALLOBJS = $(MLOBJS)
+$(TESTDIR)/test: $(OBJECTS_C) $(ARCHIVE).cma $(TESTDIR)/test.ml
+ mkdir -p $(TMPPKGDIR)
+ cp $(OBJECTS_C) $(DLL) $(ARCHIVE).cma $(INST) $(TMPPKGDIR)
+ cd $(TESTDIR) ; export OCAMLPATH=../$(TMPDIR):$$OCAMLPATH ; make
+ rm -r $(TMPDIR)
-lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa)
+$(TESTDIR)/test.opt: $(OBJECTS_C) $(ARCHIVE).a $(ARCHIVE).cmxa $(TESTDIR)/test.ml
+ mkdir -p $(TMPPKGDIR)
+ cp $(OBJECTS_C) $(ARCHIVE).a $(ARCHIVE).cmxa $(INST) $(TMPPKGDIR)
+ cd $(TESTDIR) ; export OCAMLPATH=../$(TMPDIR):$$OCAMLPATH ; make opt
+ rm -r $(TMPDIR)
install:
- if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi
- cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR)
- if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi
- cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR)
- cp $(MLLIBS) $(INSTALLDIR)
- cp $(COBJS) $(INSTALLDIR)
- if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi
- if test -f lablgtkmathview.cmxa; then \
- cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \
- $(INSTALLDIR); fi
-
-lablgtkmathview.cma: $(MLOBJS)
- $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)"
-lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx)
- $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)"
-
-ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \
- $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h
+ test ! -f $(ARCHIVE).cmxa || extra="$(ARCHIVE).a $(ARCHIVE).cmxa" ; \
+ if [ "$(PREFIX)" = "" ]; then \
+ $(OCAMLFIND) install \
+ $(PACKAGE) $(OBJECTS_C) $(ARCHIVE).cma $(DLL) $(INST) $$extra; \
+ ln -fs $(DLL) $(shell $(OCAMLFIND) printconf destdir)/stublibs/lib$(ARCHIVE).so; \
+ else \
+ $(OCAMLFIND) install -destdir $(PREFIX) \
+ $(PACKAGE) $(OBJECTS_C) $(ARCHIVE).cma $(DLL) $(INST) $$extra; \
+ ln -fs $(DLL) $(PREFIX)/stublibs/lib$(ARCHIVE).so; \
+ fi
+
+uninstall:
+ if [ "$(PREFIX)" = "" ]; then \
+ ocamlfind remove $(PACKAGE); \
+ else \
+ ocamlfind remove -destdir $(PREFIX) $(PACKAGE); \
+ fi
clean:
- rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS)
- cd $(TESTDIR); make clean
+ rm -f *.[ao] *.cm[iaxo] *.cmxa *.so $(GENERATED_FILES)
+ cd $(TESTDIR) ; make clean
+ rm -rf $(TMPDIR)
distclean: clean
- rm -f configure config.cache config.status config.log Makefile
-
-include .depend
+ rm -f config.log config.cache config.status Makefile META
+ cd $(TESTDIR) ; make distclean