228 lines
5 KiB
Makefile
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
|