1#************************************************************************** 2#* * 3#* OCaml * 4#* * 5#* Xavier Leroy, projet Cristal, INRIA Rocquencourt * 6#* * 7#* Copyright 1999 Institut National de Recherche en Informatique et * 8#* en Automatique. * 9#* * 10#* All rights reserved. This file is distributed under the terms of * 11#* the GNU Lesser General Public License version 2.1, with the * 12#* special exception on linking described in the file LICENSE. * 13#* * 14#************************************************************************** 15 16# Makefile for the dynamic link library 17 18# FIXME reduce redundancy by including ../Makefile 19 20include ../../config/Makefile 21CAMLRUN ?= ../../boot/ocamlrun 22CAMLYACC ?= ../../boot/ocamlyacc 23 24ROOTDIR = ../.. 25OCAMLC = $(CAMLRUN) $(ROOTDIR)/ocamlc -nostdlib -I $(ROOTDIR)/stdlib 26OCAMLOPT = $(CAMLRUN) $(ROOTDIR)/ocamlopt -nostdlib -I $(ROOTDIR)/stdlib 27 28INCLUDES=-I ../../utils -I ../../typing -I ../../bytecomp -I ../../asmcomp 29COMPFLAGS=$(INCLUDES) -absname -w +a-4-9-41-42-44-45-48 -bin-annot -g \ 30 -I ../../stdlib -warn-error A \ 31 -safe-string -strict-sequence -strict-formats 32ifeq "$(FLAMBDA)" "true" 33OPTCOMPFLAGS=-O3 34else 35OPTCOMPFLAGS= 36endif 37 38OBJS=dynlinkaux.cmo dynlink.cmo 39 40COMPILEROBJS=\ 41 ../../utils/misc.cmo ../../utils/config.cmo \ 42 ../../utils/identifiable.cmo ../../utils/numbers.cmo \ 43 ../../utils/arg_helper.cmo ../../utils/clflags.cmo \ 44 ../../utils/tbl.cmo ../../utils/consistbl.cmo \ 45 ../../utils/terminfo.cmo ../../utils/warnings.cmo \ 46 ../../parsing/asttypes.cmi \ 47 ../../parsing/location.cmo ../../parsing/longident.cmo \ 48 ../../parsing/docstrings.cmo ../../parsing/syntaxerr.cmo \ 49 ../../parsing/ast_helper.cmo \ 50 ../../parsing/ast_mapper.cmo ../../parsing/ast_iterator.cmo \ 51 ../../parsing/attr_helper.cmo \ 52 ../../parsing/builtin_attributes.cmo \ 53 ../../typing/ident.cmo ../../typing/path.cmo \ 54 ../../typing/primitive.cmo ../../typing/types.cmo \ 55 ../../typing/btype.cmo ../../typing/subst.cmo ../../typing/predef.cmo \ 56 ../../typing/datarepr.cmo ../../typing/cmi_format.cmo ../../typing/env.cmo \ 57 ../../bytecomp/lambda.cmo ../../bytecomp/instruct.cmo \ 58 ../../bytecomp/cmo_format.cmi ../../bytecomp/opcodes.cmo \ 59 ../../bytecomp/runtimedef.cmo ../../bytecomp/bytesections.cmo \ 60 ../../bytecomp/dll.cmo ../../bytecomp/meta.cmo \ 61 ../../bytecomp/symtable.cmo 62 63NATOBJS=dynlink.cmx 64 65all: dynlink.cma extract_crc 66 67allopt: dynlink.cmxa 68 69dynlink.cma: $(OBJS) 70 $(OCAMLC) $(COMPFLAGS) -ccopt "$(NATDYNLINKOPTS)" -a -o dynlink.cma \ 71 $(OBJS) 72 73dynlink.cmxa: $(NATOBJS) 74 $(OCAMLOPT) $(COMPFLAGS) -ccopt "$(NATDYNLINKOPTS)" -a -o dynlink.cmxa \ 75 $(NATOBJS) 76 77dynlinkaux.cmo: $(COMPILEROBJS) 78 $(OCAMLC) $(COMPFLAGS) -pack -o dynlinkaux.cmo $(COMPILEROBJS) 79 80dynlinkaux.cmi: dynlinkaux.cmo 81 82dynlink.cmx: dynlink.cmi natdynlink.ml 83 cp natdynlink.ml dynlink.mlopt 84 $(OCAMLOPT) -c $(COMPFLAGS) -impl dynlink.mlopt 85 rm -f dynlink.mlopt 86 87extract_crc: dynlink.cma extract_crc.cmo 88 $(OCAMLC) -o extract_crc dynlink.cma extract_crc.cmo 89 90INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR) 91 92install: 93 cp dynlink.cmi dynlink.cmti dynlink.cma dynlink.mli "$(INSTALL_LIBDIR)" 94 cp extract_crc "$(INSTALL_LIBDIR)/extract_crc$(EXE)" 95 96installopt: 97 if $(NATDYNLINK); then \ 98 cp $(NATOBJS) dynlink.cmxa dynlink.$(A) "$(INSTALL_LIBDIR)" && \ 99 cd "$(INSTALL_LIBDIR)" && $(RANLIB) dynlink.$(A); \ 100 fi 101 102partialclean: 103 rm -f extract_crc *.cm[ioaxt] *.cmti *.cmxa 104 105clean: partialclean 106 rm -f *.$(A) *.$(O) *.so *.dll dynlink.mlopt 107 108.SUFFIXES: .ml .mli .cmo .cmi .cmx 109 110.mli.cmi: 111 $(OCAMLC) -c $(COMPFLAGS) $< 112 113.ml.cmo: 114 $(OCAMLC) -c $(COMPFLAGS) $< 115 116.ml.cmx: 117 $(OCAMLOPT) -c $(COMPFLAGS) $(OPTCOMPFLAGS) $< 118 119depend: 120 121dynlink.cmi: dynlinkaux.cmi 122dynlink.cmo: dynlink.cmi dynlinkaux.cmo 123extract_crc.cmo: dynlink.cmi 124