Implement stdin, stdout and stderr to Faustine.
[Faustine.git] / Makefile
index 9eb9354..5f8cbba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,58 @@
+# Faustine top-level Makefile.
 
-SOURCE_DIR = interpretor
-PREPROCESSOR_DIR = $(SOURCE_DIR)/faust-0.9.47mr3
+EXEC = faustine
+SRC_DIR = interpreter
+PREPROCESSOR_DIR = $(SRC_DIR)/preprocessor/faust-0.9.47mr3
+EXAMPLES_DIR = examples
+SINWAVE_DIR = $(EXAMPLES_DIR)/sinwave
 
-all: Faustine
+DESTDIR ?= 
+PREFIX ?= /usr/local
+prefix := $(DESTDIR)$(PREFIX)
+lib    := $(wildcard lib/*.*)
 
-Faustine:
-       @(cp $(SNDFILE_PATH)/sndfile_stub.o $(SOURCE_DIR))
-       @(cd $(SOURCE_DIR) && $(MAKE) opt OCAML_INCLUDE_PATH=$(OCAML_INCLUDE_PATH) SNDFILE_PATH=$(SNDFILE_PATH))
-       @(cd $(SOURCE_DIR) && $(MAKE) clean)
+all: $(EXEC)
+
+faustine:
+       $(MAKE) -C $(SRC_DIR) opt    # using ocamlopt compiler (optimized)
+
+.PHONY: clean mrproper test help install uninstall
+
+help :
+       @echo "make or make all : compiler the faustine interpreter"
+       @echo "make clean : remove all object files"
+       @echo "make doc : generate the documentation using ocamldoc (TODO)"
+       @echo "make install : install the interpreter and the library files in $(prefix)/bin $(prefix)/lib/faustine"
+       @echo "make uninstall : undo what install did"
+       @echo "make dist : make a tar.gz file ready for distribution (TODO)"
 
 clean:
-       @(cd $(SOURCE_DIR) && $(MAKE) clean)
+       @($(MAKE) -C $(SRC_DIR) clean)
        @(rm -f *~)
 
 mrproper: clean
-       @(cd $(SOURCE_DIR) && $(MAKE) mrproper)
-       @(cd $(PREPROCESSOR_DIR) && $(MAKE) clean)
+       @($(MAKE) -C $(SRC_DIR) mrproper)
+       @($(MAKE) -C $(PREPROCESSOR_DIR) clean)
+       @($(MAKE) -C $(EXAMPLES_DIR) clean)
+
+test:
+       @$(MAKE) -C $(SINWAVE_DIR)
+       @ls -l $(SINWAVE_DIR)/output1.wav
+
+       @echo "    You might want to check the output file with either:"
+       @echo "audacity $(SINWAVE_DIR)/output1.wav"
+       @echo "open $(SINWAVE_DIR)/output1.wav"
+       @echo "octave -q --eval 'plot(wavread(\"$(SINWAVE_DIR)/output1.wav\")); pause'"
+
+examples::
+       @($(MAKE) -C $(EXAMPLES_DIR))
 
-# Sndfile-ocaml library path
+install :
+       mkdir -p $(prefix)/lib/faustine/
+       mkdir -p $(prefix)/bin/
+       install $(SRC_DIR)/faustine $(prefix)/bin/
+       install -m 0644 $(lib) $(prefix)/lib/faustine/
 
-OCAML_INCLUDE_PATH = /usr/lib/ocaml
-SNDFILE_PATH = ~/Desktop/libsndfile-ocaml
+uninstall :
+       rm -rf $(prefix)/lib/faustine/
+       rm -f $(prefix)/bin/faustine