############################ Documentation ######################
#
# To use this Makefile:
# -- You must fix the value of the variable SOURCES below.
# (The variable SOURCES is the list of your Caml source files.)
# -- You must create a file .depend, using
# $touch .depend
# (This file will contain the dependancies between your Caml modules,
# automatically computed by this Makefile.)
# Usage of this Makefile:
# To incrementally recompile the system, type
# make
# To recompute dependancies between modules, type
# make depend
# To remove the executable and all the compiled files, type
# make clean
# To compile using the native code compiler
# make opt
#
##################################################################
##################################################################
#
# Advanced usage:
# ---------------
# If you want to fix the name of the executable, set the variable
# EXEC, for instance, if you want to obtain a program named my_prog:
# EXEC = my_prog
# If you need special libraries provided with the Caml system,
# (graphics, arbitrary precision numbers, regular expression on strings, ...),
# you must set the variable LIBS to the proper set of libraries. For
# instance, to use the graphics library set LIBS to $(WITHGRAPHICS):
# LIBS=$(WITHGRAPHICS)
# You may use any of the following predefined variable
# WITHGRAPHICS : provides the graphics library
# WITHUNIX : provides the Unix interface library
# WITHSTR : provides the regular expression string manipulation library
# WITHNUMS : provides the arbitrary precision arithmetic package
# WITHTHREADS : provides the byte-code threads library
# WITHDBM : provides the Data Base Manager library
#
#
########################## End of Documentation ####################
########################## User's variables #####################
#
# The Caml sources (including camlyacc and camllex source files)
SOURCES = lexer.mll parser.mly ast.ml main.ml
# The executable file to generate
EXEC = ../bin/sat
########################## Advanced user's variables #####################
#
# The Caml compilers.
# You may fix here the path to access the Caml compiler on your machine
# You may also have to add various -I options.
CAMLC = ocamlc
CAMLOPT = ocamlopt
CAMLDEP = ocamldep
CAMLLEX = ocamllex
CAMLYACC = ocamlyacc
################ End of user's variables #####################
##############################################################
################ This part should be generic
################ Nothing to set up or fix here
##############################################################
all: depend $(EXEC)
opt : $(EXEC).opt
#ocamlc -custom other options graphics.cma other files -cclib -lgraphics -cclib -lX11
#ocamlc -thread -custom other options threads.cma other files -cclib -lthreads
#ocamlc -custom other options str.cma other files -cclib -lstr
#ocamlc -custom other options nums.cma other files -cclib -lnums
#ocamlc -custom other options unix.cma other files -cclib -lunix
#ocamlc -custom other options dbm.cma other files -cclib -lmldbm -cclib -lndbm
SOURCES1 = $(SOURCES:.mly=.ml)
SOURCES2 = $(SOURCES1:.mll=.ml)
OBJS = $(SOURCES2:.ml=.cmo)
OPTOBJS = $(SOURCES2:.ml=.cmx)
$(EXEC): $(OBJS)
$(CAMLC) $(CUSTOM) -o $(EXEC) $(LIBS) $(OBJS)
$(EXEC).opt: $(OPTOBJS)
$(CAMLOPT) -o $(EXEC).opt $(LIBS:.cma=.cmxa) $(OPTOBJS)
.SUFFIXES:
.SUFFIXES: .ml .mli .cmo .cmi .cmx .mll .mly
.ml.cmo:
$(CAMLC) -c $<
.mli.cmi:
$(CAMLC) -c $<
.ml.cmx:
$(CAMLOPT) -c $<
.mll.cmo:
$(CAMLLEX) $<
$(CAMLC) -c $*.ml
.mll.cmx:
$(CAMLLEX) $<
$(CAMLOPT) -c $*.ml
.mly.cmo:
$(CAMLYACC) $<
$(CAMLC) -c $*.mli
$(CAMLC) -c $*.ml
.mly.cmx:
$(CAMLYACC) $<
$(CAMLOPT) -c $*.mli
$(CAMLOPT) -c $*.ml
.mly.cmi:
$(CAMLYACC) $<
$(CAMLC) -c $*.mli
.mll.ml:
$(CAMLLEX) $<
.mly.ml:
$(CAMLYACC) $<
clean:
rm -f *.cm[iox] *.o *~ .*~ #*#
rm -f $(EXEC)
rm -f $(EXEC).opt
depend: $(SOURCES2)
$(CAMLDEP) *.mli *.ml > .depend
include .depend