~ubuntu-branches/debian/sid/ocaml/sid

« back to all changes in this revision

Viewing changes to tools/Makefile.shared

  • Committer: Bazaar Package Importer
  • Author(s): Stefano Zacchiroli
  • Date: 2009-02-22 08:49:13 UTC
  • mfrom: (12.1.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090222084913-3i0uw2bhd0lgw0ok
* Uploading to unstable
* debian/control: bump dh-ocaml to (>= 0.4) to avoid buggy ocamlinit.mk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#########################################################################
 
2
#                                                                       #
 
3
#                            Objective Caml                             #
 
4
#                                                                       #
 
5
#            Xavier Leroy, projet Cristal, INRIA Rocquencourt           #
 
6
#                                                                       #
 
7
#   Copyright 1999 Institut National de Recherche en Informatique et    #
 
8
#   en Automatique.  All rights reserved.  This file is distributed     #
 
9
#   under the terms of the Q Public License version 1.0.                #
 
10
#                                                                       #
 
11
#########################################################################
 
12
 
 
13
# $Id: Makefile.shared,v 1.5 2007/11/22 22:14:43 doligez Exp $
 
14
 
 
15
include ../config/Makefile
 
16
 
 
17
CAMLRUN=../boot/ocamlrun
 
18
CAMLC=$(CAMLRUN) ../boot/ocamlc -nostdlib -I ../boot
 
19
CAMLOPT=$(CAMLRUN) ../ocamlopt -nostdlib -I ../stdlib
 
20
CAMLLEX=$(CAMLRUN) ../boot/ocamllex
 
21
INCLUDES=-I ../utils -I ../parsing -I ../typing -I ../bytecomp -I ../asmcomp \
 
22
         -I ../driver
 
23
COMPFLAGS= -warn-error A $(INCLUDES)
 
24
LINKFLAGS=$(INCLUDES)
 
25
 
 
26
all: ocamldep ocamlprof ocamlcp ocamlmktop ocamlmklib scrapelabels addlabels \
 
27
     dumpobj
 
28
.PHONY: all
 
29
 
 
30
opt.opt: ocamldep.opt
 
31
.PHONY: opt.opt
 
32
 
 
33
# The dependency generator
 
34
 
 
35
CAMLDEP_OBJ=depend.cmo ocamldep.cmo
 
36
CAMLDEP_IMPORTS=misc.cmo config.cmo clflags.cmo terminfo.cmo \
 
37
  linenum.cmo warnings.cmo location.cmo longident.cmo \
 
38
  syntaxerr.cmo parser.cmo lexer.cmo parse.cmo
 
39
 
 
40
ocamldep: depend.cmi $(CAMLDEP_OBJ)
 
41
        $(CAMLC) $(LINKFLAGS) -o ocamldep $(CAMLDEP_IMPORTS) $(CAMLDEP_OBJ)
 
42
 
 
43
ocamldep.opt: depend.cmi $(CAMLDEP_OBJ:.cmo=.cmx)
 
44
        $(CAMLOPT) $(LINKFLAGS) -o ocamldep.opt $(CAMLDEP_IMPORTS:.cmo=.cmx) \
 
45
                   $(CAMLDEP_OBJ:.cmo=.cmx)
 
46
 
 
47
# ocamldep is precious: sometimes we are stuck in the middle of a
 
48
# bootstrap and we need to remake the dependencies
 
49
clean::
 
50
        if test -f ocamldep; then mv -f ocamldep ocamldep.bak; else :; fi
 
51
        rm -f ocamldep.opt
 
52
 
 
53
install::
 
54
        cp ocamldep $(BINDIR)/ocamldep$(EXE)
 
55
        if test -f ocamldep.opt; \
 
56
          then cp ocamldep.opt $(BINDIR)/ocamldep.opt$(EXE); else :; fi
 
57
 
 
58
# The profiler
 
59
 
 
60
CSLPROF=ocamlprof.cmo
 
61
CSLPROF_IMPORTS=misc.cmo config.cmo clflags.cmo terminfo.cmo \
 
62
  linenum.cmo warnings.cmo location.cmo longident.cmo \
 
63
  syntaxerr.cmo parser.cmo lexer.cmo parse.cmo
 
64
 
 
65
ocamlprof: $(CSLPROF) profiling.cmo
 
66
        $(CAMLC) $(LINKFLAGS) -o ocamlprof $(CSLPROF_IMPORTS) $(CSLPROF)
 
67
 
 
68
ocamlcp: ocamlcp.cmo
 
69
        $(CAMLC) $(LINKFLAGS) -o ocamlcp main_args.cmo ocamlcp.cmo
 
70
 
 
71
install::
 
72
        cp ocamlprof $(BINDIR)/ocamlprof$(EXE)
 
73
        cp ocamlcp $(BINDIR)/ocamlcp$(EXE)
 
74
        cp profiling.cmi profiling.cmo $(LIBDIR)
 
75
 
 
76
clean::
 
77
        rm -f ocamlprof ocamlcp
 
78
 
 
79
install::
 
80
        cp ocamlmktop $(BINDIR)/ocamlmktop$(EXE)
 
81
 
 
82
clean::
 
83
        rm -f ocamlmktop
 
84
 
 
85
# To help building mixed-mode libraries (Caml + C)
 
86
 
 
87
ocamlmklib: myocamlbuild_config.cmo ocamlmklib.cmo
 
88
        $(CAMLC) $(LINKFLAGS) -o ocamlmklib myocamlbuild_config.cmo \
 
89
                 ocamlmklib.cmo
 
90
 
 
91
ocamlmklib.cmo: myocamlbuild_config.cmi
 
92
 
 
93
myocamlbuild_config.cmi: myocamlbuild_config.cmo
 
94
 
 
95
myocamlbuild_config.ml: ../config/Makefile ../build/mkmyocamlbuild_config.sh
 
96
        ../build/mkmyocamlbuild_config.sh
 
97
        cp ../myocamlbuild_config.ml .
 
98
 
 
99
install::
 
100
        cp ocamlmklib $(BINDIR)/ocamlmklib$(EXE)
 
101
 
 
102
clean::
 
103
        rm -f ocamlmklib
 
104
 
 
105
ocamlmklib.ml: ocamlmklib.mlp ../config/Makefile
 
106
        echo '(* THIS FILE IS GENERATED FROM ocamlmklib.mlp *)' >ocamlmklib.ml
 
107
        sed -e "s|%%BINDIR%%|$(BINDIR)|" \
 
108
            -e "s|%%SUPPORTS_SHARED_LIBRARIES%%|$(SUPPORTS_SHARED_LIBRARIES)|" \
 
109
            -e "s|%%MKSHAREDLIB%%|$(MKSHAREDLIB)|" \
 
110
            -e "s|%%BYTECCRPATH%%|$(BYTECCRPATH)|" \
 
111
            -e "s|%%NATIVECCRPATH%%|$(NATIVECCRPATH)|" \
 
112
            -e "s|%%MKSHAREDLIBRPATH%%|$(MKSHAREDLIBRPATH)|" \
 
113
            -e "s|%%RANLIB%%|$(RANLIB)|" \
 
114
          ocamlmklib.mlp >> ocamlmklib.ml
 
115
 
 
116
beforedepend:: ocamlmklib.ml
 
117
 
 
118
clean::
 
119
        rm -f ocamlmklib.ml
 
120
 
 
121
# To make custom toplevels (see Makefile/Makefile.nt)
 
122
 
 
123
install::
 
124
        cp ocamlmktop $(BINDIR)/ocamlmktop$(EXE)
 
125
 
 
126
clean::
 
127
        rm -f ocamlmktop
 
128
 
 
129
 
 
130
# Converter olabl/ocaml 2.99 to ocaml 3
 
131
 
 
132
OCAML299TO3= lexer299.cmo ocaml299to3.cmo
 
133
LIBRARY3= misc.cmo warnings.cmo linenum.cmo location.cmo
 
134
 
 
135
ocaml299to3: $(OCAML299TO3)
 
136
        $(CAMLC) $(LINKFLAGS) -o ocaml299to3 $(LIBRARY3) $(OCAML299TO3)
 
137
 
 
138
lexer299.ml: lexer299.mll
 
139
        $(CAMLLEX) lexer299.mll
 
140
 
 
141
#install::
 
142
#       cp ocaml299to3 $(BINDIR)/ocaml299to3$(EXE)
 
143
 
 
144
clean::
 
145
        rm -f ocaml299to3 lexer299.ml
 
146
 
 
147
# Label remover for interface files (upgrade 3.02 to 3.03)
 
148
 
 
149
SCRAPELABELS= lexer301.cmo scrapelabels.cmo
 
150
 
 
151
scrapelabels: $(SCRAPELABELS)
 
152
        $(CAMLC) $(LINKFLAGS) -o scrapelabels $(LIBRARY3) $(SCRAPELABELS)
 
153
 
 
154
lexer301.ml: lexer301.mll
 
155
        $(CAMLLEX) lexer301.mll
 
156
 
 
157
install::
 
158
        cp scrapelabels $(LIBDIR)
 
159
 
 
160
clean::
 
161
        rm -f scrapelabels lexer301.ml
 
162
 
 
163
# Insert labels following an interface file (upgrade 3.02 to 3.03)
 
164
 
 
165
ADDLABELS_IMPORTS=misc.cmo config.cmo clflags.cmo terminfo.cmo \
 
166
  linenum.cmo warnings.cmo location.cmo longident.cmo \
 
167
  syntaxerr.cmo parser.cmo lexer.cmo parse.cmo
 
168
 
 
169
addlabels: addlabels.ml
 
170
        $(CAMLC) $(LINKFLAGS) -w sl -o addlabels \
 
171
                $(ADDLABELS_IMPORTS) addlabels.ml
 
172
 
 
173
install::
 
174
        cp addlabels $(LIBDIR)
 
175
 
 
176
clean::
 
177
        rm -f addlabels
 
178
 
 
179
# The preprocessor for asm generators
 
180
 
 
181
CVT_EMIT=cvt_emit.cmo
 
182
 
 
183
cvt_emit: $(CVT_EMIT)
 
184
        $(CAMLC) $(LINKFLAGS) -o cvt_emit $(CVT_EMIT)
 
185
 
 
186
# cvt_emit is precious: sometimes we are stuck in the middle of a
 
187
# bootstrap and we need to remake the dependencies
 
188
clean::
 
189
        if test -f cvt_emit; then mv -f cvt_emit cvt_emit.bak; else :; fi
 
190
 
 
191
cvt_emit.ml: cvt_emit.mll
 
192
        $(CAMLLEX) cvt_emit.mll
 
193
 
 
194
clean::
 
195
        rm -f cvt_emit.ml
 
196
 
 
197
beforedepend:: cvt_emit.ml
 
198
 
 
199
# The bytecode disassembler
 
200
 
 
201
DUMPOBJ=opnames.cmo dumpobj.cmo
 
202
 
 
203
dumpobj: $(DUMPOBJ)
 
204
        $(CAMLC) $(LINKFLAGS) -o dumpobj \
 
205
                 misc.cmo tbl.cmo config.cmo ident.cmo \
 
206
                 opcodes.cmo bytesections.cmo $(DUMPOBJ)
 
207
 
 
208
clean::
 
209
        rm -f dumpobj
 
210
 
 
211
opnames.ml: ../byterun/instruct.h
 
212
        unset LC_ALL || : ; \
 
213
        unset LC_CTYPE || : ; \
 
214
        unset LC_COLLATE LANG || : ; \
 
215
        sed -e '/\/\*/d' \
 
216
            -e '/^#/d' \
 
217
            -e 's/enum \(.*\) {/let names_of_\1 = [|/' \
 
218
            -e 's/};$$/ |]/' \
 
219
            -e 's/\([A-Z][A-Z_0-9a-z]*\)/"\1"/g' \
 
220
            -e 's/,/;/g' \
 
221
        ../byterun/instruct.h > opnames.ml
 
222
 
 
223
clean::
 
224
        rm -f opnames.ml
 
225
 
 
226
beforedepend:: opnames.ml
 
227
 
 
228
# Dump .cmx files
 
229
 
 
230
dumpapprox: dumpapprox.cmo
 
231
        $(CAMLC) $(LINKFLAGS) -o dumpapprox config.cmo dumpapprox.cmo
 
232
 
 
233
clean::
 
234
        rm -f dumpapprox
 
235
 
 
236
# Print imported interfaces for .cmo files
 
237
 
 
238
objinfo: objinfo.cmo
 
239
        $(CAMLC) $(LINKFLAGS) -o objinfo config.cmo objinfo.cmo
 
240
 
 
241
clean::
 
242
        rm -f objinfo
 
243
 
 
244
# Scan object files for required primitives
 
245
 
 
246
PRIMREQ=primreq.cmo
 
247
 
 
248
primreq: $(PRIMREQ)
 
249
        $(CAMLC) $(LINKFLAGS) -o primreq config.cmo $(PRIMREQ)
 
250
 
 
251
clean::
 
252
        rm -f primreq
 
253
 
 
254
# Common stuff
 
255
 
 
256
.SUFFIXES:
 
257
.SUFFIXES: .ml .cmo .mli .cmi .cmx
 
258
 
 
259
.ml.cmo:
 
260
        $(CAMLC) -c $(COMPFLAGS) $<
 
261
 
 
262
.mli.cmi:
 
263
        $(CAMLC) -c $(COMPFLAGS) $<
 
264
 
 
265
.ml.cmx:
 
266
        $(CAMLOPT) $(COMPFLAGS) -c $<
 
267
 
 
268
clean::
 
269
        rm -f *.cmo *.cmi
 
270
 
 
271
depend: beforedepend
 
272
        $(CAMLRUN) ./ocamldep $(INCLUDES) *.mli *.ml > .depend
 
273
 
 
274
.PHONY: clean install beforedepend depend
 
275
 
 
276
include .depend