1
#########################################################################
5
# Xavier Leroy, projet Cristal, INRIA Rocquencourt #
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. #
11
#########################################################################
13
# $Id: Makefile.shared,v 1.5 2007/11/22 22:14:43 doligez Exp $
15
include ../config/Makefile
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 \
23
COMPFLAGS= -warn-error A $(INCLUDES)
26
all: ocamldep ocamlprof ocamlcp ocamlmktop ocamlmklib scrapelabels addlabels \
33
# The dependency generator
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
40
ocamldep: depend.cmi $(CAMLDEP_OBJ)
41
$(CAMLC) $(LINKFLAGS) -o ocamldep $(CAMLDEP_IMPORTS) $(CAMLDEP_OBJ)
43
ocamldep.opt: depend.cmi $(CAMLDEP_OBJ:.cmo=.cmx)
44
$(CAMLOPT) $(LINKFLAGS) -o ocamldep.opt $(CAMLDEP_IMPORTS:.cmo=.cmx) \
45
$(CAMLDEP_OBJ:.cmo=.cmx)
47
# ocamldep is precious: sometimes we are stuck in the middle of a
48
# bootstrap and we need to remake the dependencies
50
if test -f ocamldep; then mv -f ocamldep ocamldep.bak; else :; fi
54
cp ocamldep $(BINDIR)/ocamldep$(EXE)
55
if test -f ocamldep.opt; \
56
then cp ocamldep.opt $(BINDIR)/ocamldep.opt$(EXE); else :; fi
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
65
ocamlprof: $(CSLPROF) profiling.cmo
66
$(CAMLC) $(LINKFLAGS) -o ocamlprof $(CSLPROF_IMPORTS) $(CSLPROF)
69
$(CAMLC) $(LINKFLAGS) -o ocamlcp main_args.cmo ocamlcp.cmo
72
cp ocamlprof $(BINDIR)/ocamlprof$(EXE)
73
cp ocamlcp $(BINDIR)/ocamlcp$(EXE)
74
cp profiling.cmi profiling.cmo $(LIBDIR)
77
rm -f ocamlprof ocamlcp
80
cp ocamlmktop $(BINDIR)/ocamlmktop$(EXE)
85
# To help building mixed-mode libraries (Caml + C)
87
ocamlmklib: myocamlbuild_config.cmo ocamlmklib.cmo
88
$(CAMLC) $(LINKFLAGS) -o ocamlmklib myocamlbuild_config.cmo \
91
ocamlmklib.cmo: myocamlbuild_config.cmi
93
myocamlbuild_config.cmi: myocamlbuild_config.cmo
95
myocamlbuild_config.ml: ../config/Makefile ../build/mkmyocamlbuild_config.sh
96
../build/mkmyocamlbuild_config.sh
97
cp ../myocamlbuild_config.ml .
100
cp ocamlmklib $(BINDIR)/ocamlmklib$(EXE)
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
116
beforedepend:: ocamlmklib.ml
121
# To make custom toplevels (see Makefile/Makefile.nt)
124
cp ocamlmktop $(BINDIR)/ocamlmktop$(EXE)
130
# Converter olabl/ocaml 2.99 to ocaml 3
132
OCAML299TO3= lexer299.cmo ocaml299to3.cmo
133
LIBRARY3= misc.cmo warnings.cmo linenum.cmo location.cmo
135
ocaml299to3: $(OCAML299TO3)
136
$(CAMLC) $(LINKFLAGS) -o ocaml299to3 $(LIBRARY3) $(OCAML299TO3)
138
lexer299.ml: lexer299.mll
139
$(CAMLLEX) lexer299.mll
142
# cp ocaml299to3 $(BINDIR)/ocaml299to3$(EXE)
145
rm -f ocaml299to3 lexer299.ml
147
# Label remover for interface files (upgrade 3.02 to 3.03)
149
SCRAPELABELS= lexer301.cmo scrapelabels.cmo
151
scrapelabels: $(SCRAPELABELS)
152
$(CAMLC) $(LINKFLAGS) -o scrapelabels $(LIBRARY3) $(SCRAPELABELS)
154
lexer301.ml: lexer301.mll
155
$(CAMLLEX) lexer301.mll
158
cp scrapelabels $(LIBDIR)
161
rm -f scrapelabels lexer301.ml
163
# Insert labels following an interface file (upgrade 3.02 to 3.03)
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
169
addlabels: addlabels.ml
170
$(CAMLC) $(LINKFLAGS) -w sl -o addlabels \
171
$(ADDLABELS_IMPORTS) addlabels.ml
174
cp addlabels $(LIBDIR)
179
# The preprocessor for asm generators
181
CVT_EMIT=cvt_emit.cmo
183
cvt_emit: $(CVT_EMIT)
184
$(CAMLC) $(LINKFLAGS) -o cvt_emit $(CVT_EMIT)
186
# cvt_emit is precious: sometimes we are stuck in the middle of a
187
# bootstrap and we need to remake the dependencies
189
if test -f cvt_emit; then mv -f cvt_emit cvt_emit.bak; else :; fi
191
cvt_emit.ml: cvt_emit.mll
192
$(CAMLLEX) cvt_emit.mll
197
beforedepend:: cvt_emit.ml
199
# The bytecode disassembler
201
DUMPOBJ=opnames.cmo dumpobj.cmo
204
$(CAMLC) $(LINKFLAGS) -o dumpobj \
205
misc.cmo tbl.cmo config.cmo ident.cmo \
206
opcodes.cmo bytesections.cmo $(DUMPOBJ)
211
opnames.ml: ../byterun/instruct.h
212
unset LC_ALL || : ; \
213
unset LC_CTYPE || : ; \
214
unset LC_COLLATE LANG || : ; \
217
-e 's/enum \(.*\) {/let names_of_\1 = [|/' \
219
-e 's/\([A-Z][A-Z_0-9a-z]*\)/"\1"/g' \
221
../byterun/instruct.h > opnames.ml
226
beforedepend:: opnames.ml
230
dumpapprox: dumpapprox.cmo
231
$(CAMLC) $(LINKFLAGS) -o dumpapprox config.cmo dumpapprox.cmo
236
# Print imported interfaces for .cmo files
239
$(CAMLC) $(LINKFLAGS) -o objinfo config.cmo objinfo.cmo
244
# Scan object files for required primitives
249
$(CAMLC) $(LINKFLAGS) -o primreq config.cmo $(PRIMREQ)
257
.SUFFIXES: .ml .cmo .mli .cmi .cmx
260
$(CAMLC) -c $(COMPFLAGS) $<
263
$(CAMLC) -c $(COMPFLAGS) $<
266
$(CAMLOPT) $(COMPFLAGS) -c $<
272
$(CAMLRUN) ./ocamldep $(INCLUDES) *.mli *.ml > .depend
274
.PHONY: clean install beforedepend depend