ocaml/otherlibs/threads/Makefile

147 lines
5.0 KiB
Makefile

#**************************************************************************
#* *
#* OCaml *
#* *
#* Xavier Leroy, projet Cristal, INRIA Rocquencourt *
#* *
#* Copyright 1999 Institut National de Recherche en Informatique et *
#* en Automatique. *
#* *
#* All rights reserved. This file is distributed under the terms of *
#* the GNU Lesser General Public License version 2.1, with the *
#* special exception on linking described in the file LICENSE. *
#* *
#**************************************************************************
# FIXME reduce redundancy by including ../Makefile
include ../../config/Makefile
CAMLRUN ?= ../../boot/ocamlrun
CAMLYACC ?= ../../boot/ocamlyacc
CFLAGS += $(SHAREDCCCOMPOPTS)
CPPFLAGS += -I../../byterun
ROOTDIR=../..
CAMLC=$(CAMLRUN) $(ROOTDIR)/ocamlc -nostdlib \
-I $(ROOTDIR)/stdlib -I $(ROOTDIR)/otherlibs/unix
MKLIB=$(CAMLRUN) ../../tools/ocamlmklib
COMPFLAGS=-w +33..39 -warn-error A -bin-annot -g -safe-string
C_OBJS=scheduler.o
CAML_OBJS=thread.cmo mutex.cmo condition.cmo event.cmo threadUnix.cmo
LIB=../../stdlib
# Object file prefix
P=stdlib__
LIB_OBJS=$(LIB)/camlinternalFormatBasics.cmo stdlib.cmo \
$(LIB)/$(P)array.cmo $(LIB)/$(P)list.cmo $(LIB)/$(P)char.cmo $(LIB)/$(P)bytes.cmo \
$(LIB)/$(P)string.cmo $(LIB)/$(P)sys.cmo $(LIB)/$(P)sort.cmo marshal.cmo \
$(LIB)/$(P)obj.cmo $(LIB)/$(P)int32.cmo $(LIB)/$(P)int64.cmo \
$(LIB)/$(P)nativeint.cmo $(LIB)/$(P)lexing.cmo $(LIB)/$(P)parsing.cmo \
$(LIB)/$(P)set.cmo $(LIB)/$(P)map.cmo $(LIB)/$(P)stack.cmo $(LIB)/$(P)queue.cmo \
$(LIB)/camlinternalLazy.cmo $(LIB)/$(P)lazy.cmo $(LIB)/$(P)stream.cmo \
$(LIB)/$(P)buffer.cmo $(LIB)/camlinternalFormat.cmo $(LIB)/$(P)printf.cmo \
$(LIB)/$(P)arg.cmo $(LIB)/$(P)printexc.cmo $(LIB)/$(P)gc.cmo $(LIB)/$(P)digest.cmo \
$(LIB)/$(P)random.cmo $(LIB)/$(P)hashtbl.cmo $(LIB)/$(P)format.cmo \
$(LIB)/$(P)scanf.cmo $(LIB)/$(P)callback.cmo $(LIB)/camlinternalOO.cmo \
$(LIB)/$(P)oo.cmo $(LIB)/camlinternalMod.cmo $(LIB)/$(P)genlex.cmo \
$(LIB)/$(P)weak.cmo $(LIB)/$(P)ephemeron.cmo $(LIB)/$(P)filename.cmo \
$(LIB)/$(P)complex.cmo $(LIB)/$(P)arrayLabels.cmo $(LIB)/$(P)listLabels.cmo \
$(LIB)/$(P)bytesLabels.cmo $(LIB)/$(P)stringLabels.cmo \
$(LIB)/$(P)moreLabels.cmo $(LIB)/$(P)stdLabels.cmo
UNIXLIB=../unix
UNIXLIB_OBJS=unix.cmo $(UNIXLIB)/unixLabels.cmo
all: libvmthreads.a threads.cma stdlib.cma unix.cma
allopt:
libvmthreads.a: $(C_OBJS)
$(MKLIB) -o threads -oc vmthreads $(C_OBJS)
threads.cma: $(CAML_OBJS)
$(MKLIB) -ocamlc '$(CAMLC)' -o threads -oc vmthreads $(CAML_OBJS)
stdlib.cma: $(LIB_OBJS)
$(CAMLC) -a -o stdlib.cma $(LIB_OBJS)
unix.cma: $(UNIXLIB_OBJS)
$(MKLIB) -ocamlc '$(CAMLC)' -o unix -linkall $(UNIXLIB_OBJS)
stdlib.cmo: stdlib.mli stdlib.cmi stdlib.ml
$(CAMLC) ${COMPFLAGS} -nopervasives \
-pp "$(AWK) -f $(LIB)/expand_module_aliases.awk" -o $@ -c stdlib.ml
stdlib.mli: $(LIB)/stdlib.mli
ln -s $(LIB)/stdlib.mli stdlib.mli
stdlib.cmi: $(LIB)/stdlib.cmi
rm -f stdlib.cmi
ln -s $(LIB)/stdlib.cmi stdlib.cmi
$(P)marshal.cmo: marshal.mli $(P)marshal.cmi marshal.ml
$(CAMLC) ${COMPFLAGS} -o$@ -c marshal.ml
marshal.mli: $(LIB)/marshal.mli
ln -s $(LIB)/marshal.mli marshal.mli
$(P)marshal.cmi: $(LIB)/$(P)marshal.cmi
ln -s $(LIB)/$(P)marshal.cmi $(P)marshal.cmi
unix.mli: $(UNIXLIB)/unix.mli
ln -s -f $(UNIXLIB)/unix.mli unix.mli
unix.cmi: $(UNIXLIB)/unix.cmi
ln -s -f $(UNIXLIB)/unix.cmi unix.cmi
unix.cmo: unix.mli unix.cmi $(UNIXLIB)/unixLabels.cmo
$(CAMLC) ${COMPFLAGS} -c unix.ml
partialclean:
rm -f *.cm*
clean: partialclean
rm -f libvmthreads.a dllvmthreads.so *.o
rm -f stdlib.mli marshal.mli unix.mli
INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR)
INSTALL_STUBLIBDIR=$(DESTDIR)$(STUBLIBDIR)
CMIFILES=thread.cmi mutex.cmi condition.cmi event.cmi threadUnix.cmi
install:
if test -f dllvmthreads.so; then \
cp dllvmthreads.so "$(INSTALL_STUBLIBDIR)"; \
fi
mkdir -p "$(INSTALL_LIBDIR)/vmthreads"
cp libvmthreads.a "$(INSTALL_LIBDIR)/vmthreads"
cd "$(INSTALL_LIBDIR)/vmthreads"; $(RANLIB) libvmthreads.a
cp $(CMIFILES) $(CMIFILES:.cmi=.mli) $(CMIFILES:.cmi=.cmti) \
threads.cma stdlib.cma unix.cma "$(INSTALL_LIBDIR)/vmthreads"
installopt:
.SUFFIXES: .ml .mli .cmo .cmi .cmx
.mli.cmi:
$(CAMLC) -c $(COMPFLAGS) $<
.ml.cmo:
$(CAMLC) -c $(COMPFLAGS) $<
.PHONY: depend
depend:
ifeq "$(TOOLCHAIN)" "msvc"
$(error Dependencies cannot be regenerated using the MSVC ports)
else
$(CC) -MM $(CPPFLAGS) *.c > .depend
$(CAMLRUN) ../../tools/ocamldep -slash *.mli *.ml >> .depend
endif
include .depend