#
# The Caml sources (including camlyacc and camllex source files)
-SOURCES = types.ml parser.mly lexer.mll basic.ml symbol.ml aux.ml value.ml signal.ml beam.ml process.ml faustio.ml preprocess.ml main.ml preprocess_stubs.cpp
+SOURCES = types.ml parser.mly lexer.mll aux.ml basic.ml symbol.ml value.ml signal.ml beam.ml process.ml faustio.ml preprocess.ml main.ml preprocess_stubs.cpp
# The executable file to generate
EXEC = faustine
OCAML_INCLUDE_PATH := $(subst bin,lib,$(shell which ocaml))
# Path to sndfile library
-SNDFILE_PATH := lib/libsndfile
+SNDFILE_PATH := lib
+
+# Path to sndfile-ocaml library
+SNDFILE_OCAML_PATH := $(SNDFILE_PATH)/src/libsndfile-ocaml
# Path to Faust.mr3
FAUST_PATH = preprocessor/faust-0.9.47mr3
# INCLUDE=-INCLUDE
-INCLUDE = -I $(SNDFILE_PATH)
+INCLUDE = -I $(SNDFILE_OCAML_PATH)
+SNDFILE_STUB := $(SNDFILE_OCAML_PATH)/sndfile_stub.o
# Default setting of the WITH* variables. Should be changed if your
# local libraries are not found by the compiler.
################ Nothing to set up or fix here
##############################################################
-all:: .depend.input .depend preprocessor $(EXEC)
+all:: .depend.input .depend preprocessor libsndfile-ocaml $(EXEC)
-opt : .depend.input .depend preprocessor $(EXEC).opt
+opt : .depend.input .depend preprocessor libsndfile-ocaml $(EXEC).opt
doc : document
SMLIYL = $(SMLIY:.mll=.ml)
SMLYL = $(filter %.ml, $(SMLIYL))
OBJS = $(SMLYL:.ml=.cmo)
+MLYS = $(filter %.mly, $(SOURCES))
+MLIS = $(MLYS:.mly=.mli)
OPTOBJS = $(OBJS:.cmo=.cmx)
CSOURCES = $(filter %.cpp, $(SOURCES))
preprocessor::
@echo "Compiling preprocessor..."
- cd $(FAUST_PATH) && $(MAKE)
+ $(MAKE) -C $(FAUST_PATH) preprocessor
+
+libsndfile-ocaml::
+ @echo "Compiling libsndfile-ocaml..."
+ $(MAKE) -C $(SNDFILE_PATH)
+
$(EXEC): $(OBJS) $(COBJS) $(CLIBS)
@echo "Compiling $(EXEC)..."
+ cp $(SNDFILE_STUB) .
$(CAMLC) $(CAMLC_OPTIONS) -o $(EXEC) $(OBJS) $(COBJS) $(CLIBS)
$(EXEC).opt: $(OPTOBJS) $(COBJS) $(CLIBS)
@echo "Compiling optimized $(EXEC)..."
+ cp $(SNDFILE_STUB) .
$(CAMLOPT) $(CAMLOPT_OPTIONS) -o $(EXEC) $(OPTOBJS) $(COBJS) $(CLIBS)
document: $(SMLYL) $(OBJS)
$(CAMLYACC) $<
clean::
- rm -f *.cm[iox] *~ .*~ #*#
- rm -f $(MIDDLE_ML) *.o *.mli .depend*
+ rm -f *.cm[iox] *~ .*~
+ rm -f $(MIDDLE_ML) *.o $(MLIS) # .depend*
+ @$(MAKE) -C $(SNDFILE_PATH) clean
mrproper: clean
- rm -f $(EXEC)*
+ @$(MAKE) -C $(SNDFILE_PATH) mrproper
+ rm -f $(EXEC)* .depend*
.depend.input: Makefile
@echo -n '--Checking Ocaml input files: '