heptagon/compiler/Makefile
2010-06-21 11:58:57 +02:00

228 lines
5 KiB
Makefile

# $Id$
DATE = \`eval date\`
LIBDIR = \`eval pwd\`/../lib
BIN = hec
TARGET = opt
OCAMLFLAGS = -dtypes -g
OCAMLOPTFLAGS = -dtypes -g
CPP = cpp
#gcc -E
CPPFLAGS = -P
SED=sed
# lablgtk
LABLGTKPREFIX = /usr/lib/ocaml
LABLGTKFLAGS = -I $(LABLGTKPREFIX)/lablgtk2 -I $(LABLGTKPREFIX)/stublibs
LABLGTKLINKFLAGS = -dllpath $(LABLGTKPREFIX)/stublibs
OCAMLC = ocamlc
OCAMLLEX = ocamllex
OCAMLYACC = ocamlyacc
OCAMLOPT = ocamlopt
OCAMLDEP = ocamldep
UNIX = str.cma unix.cma
UNIXX = str.cmxa unix.cmxa
INCLUDES =
DIRECTORIES = global parsing analysis translation dataflow sigali sequential \
simulation main
INCLUDES = $(DIRECTORIES:%=-I %)
GENSOURCES = parsing/lexer.ml parsing/parser.mli parsing/parser.ml
GLOBAL = global/names.cmo \
global/ident.cmo \
global/static.cmo \
global/location.cmo \
global/misc.cmo \
global/linearity.cmo \
global/graph.cmo \
global/dep.cmo \
global/parsetree.cmo \
global/heptagon.cmo \
global/global.cmo \
global/modules.cmo \
global/printer.cmo \
global/initial.cmo \
global/interference_graph.cmo \
global/scoping.cmo
PARSING = parsing/lexer.cmo \
parsing/parser.cmo
ANALYSIS = analysis/typing.cmo \
analysis/causal.cmo \
analysis/causality.cmo \
analysis/interface.cmo \
analysis/initialization.cmo \
analysis/linear_typing.cmo \
analysis/automata_mem.cmo
TRANSLATION = translation/completion.cmo \
translation/automata.cmo \
translation/present.cmo \
translation/last.cmo \
translation/reset.cmo \
translation/reset_new.cmo \
translation/every.cmo
# translation/inline.cmo
DATAFLOW = dataflow/minils.cmo \
dataflow/merge.cmo \
dataflow/dfcausality.cmo \
dataflow/normalize.cmo \
dataflow/schedule.cmo \
dataflow/clocking.cmo \
dataflow/intermediate.cmo \
dataflow/cse.cmo \
dataflow/cmse.cmo \
dataflow/tomato.cmo \
dataflow/tommls.cmo \
dataflow/deadcode.cmo \
dataflow/mls2dot.cmo \
dataflow/interference2dot.cmo \
dataflow/interference.cmo \
dataflow/memalloc.cmo \
dataflow/splitting.cmo \
dataflow/schedule_interf.cmo \
dataflow/callgraph.cmo
# dataflow/init.cmo
SIGALI = sigali/boolean.cmo \
sigali/sigali.cmo \
sigali/dynamic_system.cmo
SEQUENTIAL = sequential/obc.cmo \
sequential/control.cmo \
sequential/translate.cmo \
sequential/c_old.cmo \
sequential/caml.cmo \
sequential/java.cmo \
sequential/c.cmo \
sequential/csubst.cmo \
sequential/rename.cmo \
sequential/cgen.cmo \
sequential/vhdl.cmo \
sequential/mls2vhdl.cmo
# sequential/lustre.cmo
MAIN = main/compiler.cmo \
main/main.cmo
OBJ = $(GLOBAL) $(MODULES) $(PARSING) $(ANALYSIS) $(TRANSLATION) \
$(DATAFLOW) $(SEQUENTIAL) $(MAIN) \
$(SIMULATION)
OBJ_OPT = $(OBJ:.cmo=.cmx)
SRC = $(OBJ:.cmo=.ml)
INTERFACES = $(SRC:.ml=.mli)
SIM_BIN = hes
# Objs needed for compiling simulator
SIM_OBJ = global/misc.cmo \
global/heptagon.cmo \
global/global.cmo \
global/modules.cmo \
simulation/simulator.cmo
SIM_LIBS = lablgtk.cma unix.cma
SIM_OBJ_OPT = $(SIM_OBJ:.cmo=.cmx)
SIM_LIBS_OPT = $(SIM_LIBS:.cma=.cmxa)
world: all
all: $(TARGET)
opt: $(BIN).opt
byte: $(BIN).byte
$(BIN).opt: $(OBJ_OPT)
$(OCAMLOPT) $(UNIXX) $(OCAMLOPTFLAGS) $(INCLUDES) $(OBJ_OPT) -o $(BIN).opt
$(BIN).byte: $(OBJ)
$(OCAMLC) -custom $(UNIX) $(OCAMLFLAGS) $(INCLUDES) $(OBJ) -o $(BIN).byte
sim: $(SIM_BIN).byte
simopt:$(SIM_BIN).opt
$(SIM_BIN).opt: $(SIM_OBJ_OPT)
$(OCAMLOPT) $(OCAMLOPTFLAGS) \
$(LABLGTKFLAGS) \
$(INCLUDES) $(SIM_LIBS_OPT) $(SIM_OBJ_OPT) -o $(SIM_BIN).opt
$(SIM_BIN).byte: $(SIM_OBJ)
$(OCAMLC) -custom $(UNIX) $(OCAMLFLAGS) \
$(LABLGTKFLAGS) $(LABLGTKLINKFLAGS) \
$(INCLUDES) $(SIM_LIBS) $(SIM_OBJ) -o $(SIM_BIN).byte
debug: OCAMLFLAGS += -g
debug: byte
profile: OCAMLOPTFLAGS += -p
profile: opt
depend .depend: $(GENSOURCES)
(for d in $(DIRECTORIES); \
do $(OCAMLDEP) $(INCLUDES) $$d/*.mli $$d/*.ml; \
done) > .depend
interfaces: $(INTERFACES)
# Extra dependences
parsing/parser.mli parsing/parser.ml: parsing/parser.mly
$(OCAMLYACC) -v parsing/parser.mly
parsing/lexer.cmi: parsing/parser.mli
parsing/lexer.ml: parsing/lexer.mll
$(OCAMLLEX) parsing/lexer.mll
global/misc.cmo: OCAMLFLAGS := \
-pp "$(SED) -e \"s|DATE|`date`|\" -e \"s|STDLIB|$(LIBDIR)|\""
# -pp "$(CPP) $(CPPFLAGS) -DSTDLIB=\\\"$(LIBDIR)\\\" \
# -DDATE=\\\"\"`date`\"\\\""
global/misc.cmx: OCAMLOPTFLAGS := \
-pp "$(SED) -e \"s|DATE|`date`|\" -e \"s|STDLIB|$(LIBDIR)|\""
# -pp "$(CPP) $(CPPFLAGS) -DSTDLIB=\\\"$(LIBDIR)\\\" \
# -DDATE=\\\"\"`date`\"\\\""
simulation/simulator.cmo: OCAMLFLAGS += $(LABLGTKFLAGS)
simulation/simulator.cmx: OCAMLOPTFLAGS += $(LABLGTKFLAGS)
# Common rules
.SUFFIXES : .mli .ml .cmi .cmo .cmx
%.cmo: %.ml
$(OCAMLC) $(OCAMLFLAGS) -c $(INCLUDES) $<
%.cmi: %.mli
$(OCAMLC) $(OCAMLFLAGS) -c $(INCLUDES) $<
%.cmx: %.ml
$(OCAMLOPT) $(OCAMLOPTFLAGS) -c $(INCLUDES) $<
# %.mli: %.ml
# $(OCAMLC) $(OCAMLFLAGS) -i -c $(INCLUDES) $< > $@
# Clean up
clean:
rm -f $(GENSOURCES) parsing/parser.output
# to avoid the make warnings:
rm -f parsing/parser.ml
rm -f parsing/lexer.ml
(for d in $(DIRECTORIES); \
do rm -f $$d/*.annot $$d/*.cm[iox] $$d/*.o; \
done)
rm -f $(BIN).byte $(BIN).opt
ML = $(OBJ:.cmo=.ml)
wc:
wc $(ML)
include .depend