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# FIXME reduce redundancy by including ../Makefile 17 18include ../../config/Makefile 19CAMLRUN ?= ../../boot/ocamlrun 20CAMLYACC ?= ../../boot/ocamlyacc 21 22CC=$(BYTECC) 23CFLAGS=-I../../byterun $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS) -g 24ROOTDIR=../.. 25CAMLC=$(CAMLRUN) $(ROOTDIR)/ocamlc -nostdlib \ 26 -I $(ROOTDIR)/stdlib -I $(ROOTDIR)/otherlibs/unix 27MKLIB=$(CAMLRUN) ../../tools/ocamlmklib 28COMPFLAGS=-w +33..39 -warn-error A -bin-annot -g -safe-string 29 30C_OBJS=scheduler.o 31 32CAML_OBJS=thread.cmo mutex.cmo condition.cmo event.cmo threadUnix.cmo 33 34LIB=../../stdlib 35 36LIB_OBJS=$(LIB)/camlinternalFormatBasics.cmo pervasives.cmo \ 37 $(LIB)/array.cmo $(LIB)/list.cmo $(LIB)/char.cmo $(LIB)/bytes.cmo \ 38 $(LIB)/string.cmo $(LIB)/sys.cmo $(LIB)/sort.cmo marshal.cmo \ 39 $(LIB)/obj.cmo $(LIB)/int32.cmo $(LIB)/int64.cmo \ 40 $(LIB)/nativeint.cmo $(LIB)/lexing.cmo $(LIB)/parsing.cmo \ 41 $(LIB)/set.cmo $(LIB)/map.cmo $(LIB)/stack.cmo $(LIB)/queue.cmo \ 42 $(LIB)/camlinternalLazy.cmo $(LIB)/lazy.cmo $(LIB)/stream.cmo \ 43 $(LIB)/buffer.cmo $(LIB)/camlinternalFormat.cmo $(LIB)/printf.cmo \ 44 $(LIB)/arg.cmo $(LIB)/printexc.cmo $(LIB)/gc.cmo $(LIB)/digest.cmo \ 45 $(LIB)/random.cmo $(LIB)/hashtbl.cmo $(LIB)/format.cmo \ 46 $(LIB)/scanf.cmo $(LIB)/callback.cmo $(LIB)/camlinternalOO.cmo \ 47 $(LIB)/oo.cmo $(LIB)/camlinternalMod.cmo $(LIB)/genlex.cmo \ 48 $(LIB)/weak.cmo $(LIB)/ephemeron.cmo $(LIB)/filename.cmo \ 49 $(LIB)/complex.cmo $(LIB)/arrayLabels.cmo $(LIB)/listLabels.cmo \ 50 $(LIB)/bytesLabels.cmo $(LIB)/stringLabels.cmo \ 51 $(LIB)/moreLabels.cmo $(LIB)/stdLabels.cmo 52 53UNIXLIB=../unix 54 55UNIXLIB_OBJS=unix.cmo $(UNIXLIB)/unixLabels.cmo 56 57all: libvmthreads.a threads.cma stdlib.cma unix.cma 58 59allopt: 60 61libvmthreads.a: $(C_OBJS) 62 $(MKLIB) -o threads -oc vmthreads $(C_OBJS) 63 64threads.cma: $(CAML_OBJS) 65 $(MKLIB) -ocamlc '$(CAMLC)' -o threads -oc vmthreads $(CAML_OBJS) 66 67stdlib.cma: $(LIB_OBJS) 68 $(CAMLC) -a -o stdlib.cma $(LIB_OBJS) 69 70unix.cma: $(UNIXLIB_OBJS) 71 $(MKLIB) -ocamlc '$(CAMLC)' -o unix -linkall $(UNIXLIB_OBJS) 72 73pervasives.cmo: pervasives.mli pervasives.cmi pervasives.ml 74 $(CAMLC) ${COMPFLAGS} -nopervasives -c pervasives.ml 75 76pervasives.mli: $(LIB)/pervasives.mli 77 ln -s $(LIB)/pervasives.mli pervasives.mli 78 79pervasives.cmi: $(LIB)/pervasives.cmi 80 ln -s $(LIB)/pervasives.cmi pervasives.cmi 81 82marshal.cmo: marshal.mli marshal.cmi marshal.ml 83 $(CAMLC) ${COMPFLAGS} -c marshal.ml 84 85marshal.mli: $(LIB)/marshal.mli 86 ln -s $(LIB)/marshal.mli marshal.mli 87 88marshal.cmi: $(LIB)/marshal.cmi 89 ln -s $(LIB)/marshal.cmi marshal.cmi 90 91unix.mli: $(UNIXLIB)/unix.mli 92 ln -s -f $(UNIXLIB)/unix.mli unix.mli 93 94unix.cmi: $(UNIXLIB)/unix.cmi 95 ln -s -f $(UNIXLIB)/unix.cmi unix.cmi 96 97unix.cmo: unix.mli unix.cmi $(UNIXLIB)/unixLabels.cmo 98 $(CAMLC) ${COMPFLAGS} -c unix.ml 99 100partialclean: 101 rm -f *.cm* 102 103clean: partialclean 104 rm -f libvmthreads.a dllvmthreads.so *.o 105 rm -f pervasives.mli marshal.mli unix.mli 106 107INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR) 108INSTALL_STUBLIBDIR=$(DESTDIR)$(STUBLIBDIR) 109 110CMIFILES=thread.cmi mutex.cmi condition.cmi event.cmi threadUnix.cmi 111 112install: 113 if test -f dllvmthreads.so; then \ 114 cp dllvmthreads.so $(INSTALL_STUBLIBDIR)/.; \ 115 fi 116 mkdir -p $(INSTALL_LIBDIR)/vmthreads 117 cp libvmthreads.a $(INSTALL_LIBDIR)/vmthreads/libvmthreads.a 118 cd $(INSTALL_LIBDIR)/vmthreads; $(RANLIB) libvmthreads.a 119 cp $(CMIFILES) $(CMIFILES:.cmi=.mli) $(CMIFILES:.cmi=.cmti) \ 120 threads.cma stdlib.cma unix.cma $(INSTALL_LIBDIR)/vmthreads 121 122installopt: 123 124.SUFFIXES: .ml .mli .cmo .cmi .cmx 125 126.mli.cmi: 127 $(CAMLC) -c $(COMPFLAGS) $< 128 129.ml.cmo: 130 $(CAMLC) -c $(COMPFLAGS) $< 131 132depend: 133 $(CC) -MM $(CFLAGS) *.c > .depend 134 $(CAMLRUN) ../../tools/ocamldep -slash *.mli *.ml >> .depend 135 136include .depend 137