# Bitmatch syntax extension. # Copyright (C) 2008 Red Hat Inc., Richard W.M. Jones # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # $Id$ PACKAGE = @PACKAGE_NAME@ VERSION = @PACKAGE_VERSION@ OCAMLFIND = @OCAMLFIND@ OCAMLMKLIB = @OCAMLMKLIB@ OCAMLDOC = @OCAMLDOC@ INSTALL = @INSTALL@ OCAMLCFLAGS = -g OCAMLCPACKAGES = OCAMLOPTFLAGS = OCAMLOPTPACKAGES = OCAMLDOCFLAGS = -html -sort EXAMPLES = $(patsubst %.ml,%,$(wildcard examples/*.ml)) TESTS = $(patsubst %.ml,%,$(wildcard tests/*.ml)) all: bitmatch.cma bitmatch.cmxa pa_bitmatch.cmo bitmatch.cma: bitmatch_types.cmo bitmatch_config.cmo bitmatch.cmo $(OCAMLFIND) ocamlc -a -o $@ $^ bitmatch.cmxa: bitmatch_types.cmx bitmatch_config.cmx bitmatch.cmx $(OCAMLFIND) ocamlopt -a -o $@ $^ pa_bitmatch.cmo: pa_bitmatch.ml bitmatch.cma $(OCAMLFIND) ocamlc bitmatch.cma -I +camlp4 camlp4lib.cma \ -pp camlp4of.opt -c $< -o $@ # Tests and examples. PP = -pp "camlp4o bitmatch.cma pa_bitmatch.cmo" test: pa_bitmatch.cmo bitmatch.cma @for f in $(TESTS); do \ echo Building $$f; \ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) $(PP) \ -package unix -linkpkg -I . bitmatch.cma $$f.ml -o $$f; \ if [ $$? -ne 0 ]; then exit 1; fi; \ echo Running $$f; \ $$f; \ if [ $$? -ne 0 ]; then exit 1; fi; \ done examples: pa_bitmatch.cmo bitmatch.cma @for f in $(EXAMPLES); do \ echo Building $$f; \ $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(PP) \ -package unix -linkpkg -I . bitmatch.cma $$f.ml -o $$f; \ if [ $$? -ne 0 ]; then exit 1; fi; \ done print-tests: pa_bitmatch.cmo @for f in $(TESTS); do \ echo Test: $$f.ml; \ cmd="camlp4o bitmatch.cma pa_bitmatch.cmo -printer pr_o.cmo $$f.ml"; \ echo $$cmd; \ $$cmd; \ done print-examples: pa_bitmatch.cmo @for f in $(EXAMPLES); do \ echo Example: $$f.ml; \ camlp4o bitmatch.cma pa_bitmatch.cmo -printer pr_o.cmo $$f.ml; \ if [ $$? -ne 0 ]; then exit 1; fi; \ done # Clean. clean: rm -f core *~ *.cmi *.cmo *.cmx *.cma *.cmxa *.a *.o rm -f tests/*~ tests/*.cmi tests/*.cmo $(TESTS) rm -f examples/*~ examples/*.cmi examples/*.cmo $(EXAMPLES) distclean: clean rm -rf autom4te.cache rm -f config.log config.status rm -f config.h Makefile META bitmatch_config.ml # Documentation. ifneq ($(OCAMLDOC),) doc: rm -rf html mkdir html $(OCAMLDOC) $(OCAMLDOCFLAGS) -d html bitmatch.mli bitmatch.ml endif # Install. install: ocamlfind install bitmatch META *.mli *.cmx *.cma *.cmxa *.a \ bitmatch.cmi \ pa_bitmatch.cmo # Standard rules. .mli.cmi: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) $(OCAMLCPACKAGES) -c $< .ml.cmo: $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) $(OCAMLCPACKAGES) -c $< .ml.cmx: $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) $(OCAMLOPTPACKAGES) -c $< depend: .depend .depend: bitmatch.ml bitmatch.mli rm -f .depend $(OCAMLFIND) ocamldep $(OCAMLCPACKAGES) $^ > $@ ifeq ($(wildcard .depend),.depend) include .depend endif # Distribution. dist: $(MAKE) check-manifest rm -rf $(PACKAGE)-$(VERSION) mkdir $(PACKAGE)-$(VERSION) tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf - $(INSTALL) -m 0755 configure $(PACKAGE)-$(VERSION)/ $(INSTALL) -m 0644 config.h.in $(PACKAGE)-$(VERSION)/ tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) ls -l $(PACKAGE)-$(VERSION).tar.gz check-manifest: svn -R list | grep -v '/$$' | sort > .check-manifest sort MANIFEST > .orig-manifest; \ diff -u .orig-manifest .check-manifest; rv=$$?; \ rm -f .orig-manifest .check-manifest; \ exit $$rv .PHONY: depend dist check-manifest dpkg doc \ print-examples print-tests examples test .SUFFIXES: .cmo .cmi .cmx .ml .mli .mll