summaryrefslogtreecommitdiff
path: root/tools/Makefile.nt
blob: 87cada26c4fb87971f2d4ffc5cace9022d9082de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
!include ..\config\Makefile.nt

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.exe

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.exe
	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