1 ########################## User's variables #####################
3 # The Caml sources (including camlyacc and camllex source files)
5 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
7 # The executable file to generate
11 # Path to ocaml include header files
12 export OCAML_INCLUDE_PATH
14 # Path to sndfile library
15 #SNDFILE_PATH = /home/wang/Desktop/libsndfile-ocaml
19 FAUST_PATH
= faust-0.9
.47mr3
21 # Path to preprocessor library
22 PREPROCESSOR_PATH
= $(FAUST_PATH
)/compiler
24 # Path to preprocessor header files
25 PREPROCESSOR_INCLUDE_PATH
= $(PREPROCESSOR_PATH
)/headers
27 # Path to the interpretor documentation
28 OCAML_DOC_PATH
= ..
/documentation
30 ########################## Advanced user's variables #####################
33 # You may fix here the path to access the Caml compiler on your machine
34 # You may also have to add various -I options.
43 # The list of Caml libraries needed by the program
45 # LIBS=$(WITHGRAPHICS) $(WITHUNIX) $(WITHSTR) $(WITHNUMS) $(WITHTHREADS)\
48 LIBS
= $(WITHSNDFILE
) $(WITHUNIX
)
50 # Should be set to -INCLUDE if you use any of the libraries above
51 # or if any C code have to be linked with your program
52 # (irrelevant for ocamlopt)
56 INCLUDE
= -I
$(SNDFILE_PATH
)
58 # Default setting of the WITH* variables. Should be changed if your
59 # local libraries are not found by the compiler.
60 #WITHGRAPHICS =graphics.cma -cclib -lgraphics -cclib -L/usr/X11R6/lib -cclib -lX11
62 #WITHUNIX =unix.cma -cclib -lunix
64 #WITHSTR =str.cma -cclib -lstr
66 #WITHNUMS =nums.cma -cclib -lnums
68 #WITHTHREADS =threads.cma -cclib -lthreads
70 #WITHDBM =dbm.cma -cclib -lmldbm -cclib -lndbm
74 WITHSNDFILE
= sndfile.cma
79 # The list of options for each compiler
80 CAMLC_OPTIONS
= $(GPP_CALL
) $(INCLUDE
) $(LIBS
)
82 CAMLOPT_OPTIONS
= -p
$(GPP_CALL
) $(INCLUDE
) $(LIBS
:.cma
=.cmxa
)
84 CAMLDOC_OPTIONS
= -d
$(OCAML_DOC_PATH
) -html
$(INCLUDE
)
85 CC_OPTIONS
= -c
-I
$(PREPROCESSOR_INCLUDE_PATH
) -I
$(OCAML_INCLUDE_PATH
)
87 ################ End of user's variables #####################
90 ##############################################################
91 ################ This part should be generic
92 ################ Nothing to set up or fix here
93 ##############################################################
95 all:: .depend.input .depend preprocessor
$(EXEC
)
97 opt
: .depend.input .depend preprocessor
$(EXEC
).opt
101 #ocamlc -INCLUDE other options graphics.cma other files -cclib -lgraphics -cclib -lX11
102 #ocamlc -thread -INCLUDE other options threads.cma other files -cclib -lthreads
103 #ocamlc -INCLUDE other options str.cma other files -cclib -lstr
104 #ocamlc -INCLUDE other options nums.cma other files -cclib -lnums
105 #ocamlc -INCLUDE other options unix.cma other files -cclib -lunix
106 #ocamlc -INCLUDE other options dbm.cma other files -cclib -lmldbm -cclib -lndbm
108 SMLIY
= $(SOURCES
:.mly
=.ml
)
109 SMLIYL
= $(SMLIY
:.mll
=.ml
)
110 SMLYL
= $(filter %.ml
, $(SMLIYL
))
111 OBJS
= $(SMLYL
:.ml
=.cmo
)
112 OPTOBJS
= $(OBJS
:.cmo
=.cmx
)
114 CSOURCES
= $(filter %.
cpp, $(SOURCES
))
115 COBJS
= $(CSOURCES
:.
cpp=.o
)
116 CLIBS
= $(PREPROCESSOR_PATH
)/preprocess.a
118 PARSER_MLY
= $(filter %.mly
, $(SOURCES
))
119 LEXER_MLL
= $(filter %.mll
, $(SOURCES
))
120 MIDDLE_ML
= $(PARSER_MLY
:.mly
=.ml
) $(LEXER_MLL
:.mll
=.ml
)
123 @
(cd
$(FAUST_PATH
) && $(MAKE
))
125 $(EXEC
): $(OBJS
) $(COBJS
)
126 $(CAMLC
) $(CAMLC_OPTIONS
) -o
$(EXEC
) $(OBJS
) $(COBJS
) $(CLIBS
)
128 $(EXEC
).opt
: $(OPTOBJS
) $(COBJS
)
129 $(CAMLOPT
) $(CAMLOPT_OPTIONS
) -o
$(EXEC
) $(OPTOBJS
) $(COBJS
) $(CLIBS
)
131 document
: $(SMLYL
) $(OBJS
)
132 $(CAMLDOC
) $(CAMLDOC_OPTIONS
) $(SMLYL
)
135 $(CAMLC
) $(INCLUDE
) -c
$<
138 $(CAMLOPT
) $(INCLUDE
) -c
$<
140 preprocess.cmo
: preprocess.ml
141 $(CAMLC
) $(GPP_CALL
) -c
$<
143 preprocess.cmx
: preprocess.ml
144 $(CAMLOPT
) $(GPP_CALL
) -c
$<
146 preprocess_stubs.o
: preprocess_stubs.
cpp
147 $(CC
) $(CC_OPTIONS
) $<
149 .SUFFIXES
: .ml .mli .cmo .cmi .cmx .mll .mly
189 rm -f
*.cm
[iox
] *~ .
*~
#*#
190 rm -f
$(MIDDLE_ML
) *.o
*.mli .depend
*
195 .depend.input
: Makefile
196 @echo
-n
'--Checking Ocaml input files: '
197 @
(ls
$(SMLIY
) $(SMLIY
:.ml
=.mli
) 2>/dev
/null || true
) \
199 @diff .depend.new .depend.input
2>/dev
/null
1>/dev
/null
&& \
200 (echo
'unchanged'; rm -f .depend.new
) || \
201 (echo
'changed'; mv .depend.new .depend.input
)
205 .depend
:: $(SMLIY
) .depend.input
206 @echo
'--Re-building dependencies'
207 $(CAMLDEP
) $(SMLIY
) $(SMLIY
:.ml
=.mli
) > .depend