ocaml/tools/Makefile

112 lines
2.0 KiB
Makefile

include ../Makefile.config
CAMLRUN=../boot/cslrun
CAMLC=$(CAMLRUN) ../boot/cslc -I ../boot
CAMLLEX=$(CAMLRUN) ../boot/csllex
INCLUDES=-I ../utils -I ../parsing -I ../typing -I ../bytecomp -I ../asmcomp
COMPFLAGS=$(INCLUDES)
LINKFLAGS=$(INCLUDES)
all: csldep cslprof
# The dependency generator
CAMLDEP=csldep.cmo
csldep: $(CAMLDEP)
$(CAMLC) $(LINKFLAGS) -o csldep misc.cmo $(CAMLDEP)
clean::
rm -f csldep
csldep.ml: csldep.mll
$(CAMLLEX) csldep.mll
clean::
rm -f csldep.ml
install::
cp csldep $(BINDIR)/csldep
beforedepend:: csldep
# The profiler
CSLPROF=cslprof.cmo
CSLPROF_IMPORTS=misc.cmo config.cmo clflags.cmo terminfo.cmo \
location.cmo longident.cmo pstream.cmo parser.cmo lexer.cmo parse.cmo
cslprof: $(CSLPROF) profiling.cmo
$(CAMLC) $(LINKFLAGS) -o cslprof $(CSLPROF_IMPORTS) $(CSLPROF)
install::
cp cslprof $(BINDIR)/cslprof
cp cslcp $(BINDIR)/cslcp
cp profiling.cmi profiling.cmo $(LIBDIR)
clean::
rm -f cslprof
# To make custom toplevels
install::
cp cslmktop $(BINDIR)/cslmktop
# The bytecode disassembler
DUMPOBJ=opnames.cmo dumpobj.cmo
dumpobj: $(DUMPOBJ)
$(CAMLC) $(LINKFLAGS) -o dumpobj misc.cmo tbl.cmo config.cmo ident.cmo opcodes.cmo runtimedef.cmo $(DUMPOBJ)
clean::
rm -f dumpobj
opnames.ml: ../byterun/instruct.h
sed -e '/\/\*/d' \
-e 's/enum \(.*\) {/let names_of_\1 = [|/' \
-e 's/};$$/ |]/' \
-e 's/\([A-Z][A-Z_0-9a-z]*\)/"\1"/g' \
-e 's/,/;/g' \
../byterun/instruct.h > opnames.ml
clean::
rm -f opnames.ml
beforedepend:: opnames.ml
# Dump .cmx files
dumpapprox: dumpapprox.cmo
$(CAMLC) $(LINKFLAGS) -o dumpapprox config.cmo dumpapprox.cmo
clean::
rm -f dumpapprox
# Print imported interfaces for .cmo files
objinfo: objinfo.cmo
$(CAMLC) $(LINKFLAGS) -o objinfo config.cmo objinfo.cmo
clean::
rm -f objinfo
# Common stuff
.SUFFIXES:
.SUFFIXES: .ml .cmo .mli .cmi
.ml.cmo:
$(CAMLC) -c $(COMPFLAGS) $<
.mli.cmi:
$(CAMLC) -c $(COMPFLAGS) $<
clean::
rm -f *.cmo *.cmi
depend: beforedepend
$(CAMLRUN) ./csldep $(INCLUDES) *.mli *.ml > .depend
include .depend