Merge branch 'libsndfile'
[Faustine.git] / interpretor / lib / src / libsndfile-ocaml / Makefile
diff --git a/interpretor/lib/src/libsndfile-ocaml/Makefile b/interpretor/lib/src/libsndfile-ocaml/Makefile
new file mode 100644 (file)
index 0000000..442bf57
--- /dev/null
@@ -0,0 +1,70 @@
+LIBSNDFILEDIR = $(realpath ../../libsndfile/lib)
+
+CC = gcc
+CFLAGS = -g -W -Wall -Werror -Wno-missing-field-initializers
+
+OCAMLC = ocamlc
+OCAMLOPT = ocamlopt
+OCAMLDEP = ocamldep
+OCAMLDOC = ocamldoc
+
+SNDFILE_CFLAGS = $(shell pkg-config --cflags sndfile)
+SNDFILE_LIBS = $(shell pkg-config --libs sndfile)
+
+OCAML_BINDIR = $(shell which ocaml)
+OCAML_LIBDIR = $(subst bin,lib,$(OCAML_BINDIR))
+OCAML_CFLAGS = -I $(OCAML_LIBDIR)
+
+LIBSNDFILE = -ccopt -L$(LIBSNDFILEDIR) -cclib -lsndfile -cclib -lm
+
+all: sndfile.cma sndfile.cmxa
+
+sndfile.cma: sndfile.ml sndfile.cmi sndfile_stub.o
+       $(OCAMLC) -c sndfile.ml
+       $(OCAMLC) -a -o $@  -custom sndfile_stub.o sndfile.cmo $(LIBSNDFILE)
+
+
+sndfile.cmxa: sndfile.ml sndfile.cmi sndfile_stub.o
+       $(OCAMLOPT) -c sndfile.ml
+       $(OCAMLOPT) -a -o $@  sndfile.cmx sndfile_stub.o $(LIBSNDFILE)
+
+Sndfile.html: sndfile.mli sndfile.cmi
+       $(OCAMLDOC) -stars -html -colorize-code $<
+
+
+sndfile_stub.o: sndfile_stub.c
+       $(CC) $(CFLAGS) $(SNDFILE_CFLAGS) $(OCAML_CFLAGS) -c $<
+
+sndfile_stub.e: sndfile_stub.c
+       $(CC) $(CFLAGS) -E $(SNDFILE_CFLAGS) $(OCAML_CFLAGS) -c $< > $@
+
+%.cmi: %.mli
+       $(OCAMLC) -c $<
+
+
+depend: sndfile.ml sndfile.mli
+       $(OCAMLDEP) *.mli *.ml > .depend
+
+.depend: sndfile.ml sndfile.mli
+       $(OCAMLDEP) *.mli *.ml > .depend
+
+include .depend
+
+########################################################################
+
+test_sndfile: sndfile.cma test_sndfile.ml
+       $(OCAMLC) -o $@ sndfile.cma test_sndfile.ml
+
+test_sndfile.opt: sndfile.cmxa test_sndfile.ml
+       $(OCAMLOPT) -o $@ sndfile.cmxa test_sndfile.ml
+
+check : test_sndfile test_sndfile.opt
+       ./test_sndfile
+       ./test_sndfile.opt
+
+########################################################################
+
+clean:
+       rm -f *~ .*~ *.o *.cm[aiox] *.cmxa *.a *.so test_sndfile test_sndfile.opt
+       @ find . -type f -perm +u=x -exec rm -f {} \;
+       @ rm -f *.html *.css