158 lines
3.8 KiB
Makefile
158 lines
3.8 KiB
Makefile
# This file is part of the Zarith library
|
|
# http://forge.ocamlcore.org/projects/zarith .
|
|
# It is distributed under LGPL 2 licensing, with static linking exception.
|
|
# See the LICENSE file included in the distribution.
|
|
#
|
|
# Copyright (c) 2010-2011 Antoine Miné, Abstraction project.
|
|
# Abstraction is part of the LIENS (Laboratoire d'Informatique de l'ENS),
|
|
# a joint laboratory by:
|
|
# CNRS (Centre national de la recherche scientifique, France),
|
|
# ENS (École normale supérieure, Paris, France),
|
|
# INRIA Rocquencourt (Institut national de recherche en informatique, France).
|
|
|
|
ifeq "$(shell $(OCAMLC) -config |grep ccomp_type)" "ccomp_type: msvc"
|
|
OBJSUFFIX := obj
|
|
LIBSUFFIX := lib
|
|
DLLSUFFIX := dll
|
|
EXE := .exe
|
|
else
|
|
OBJSUFFIX := o
|
|
LIBSUFFIX := a
|
|
ifeq "$(findstring mingw,$(shell $(OCAMLC) -config |grep system))" "mingw"
|
|
DLLSUFFIX := dll
|
|
EXE := .exe
|
|
else
|
|
DLLSUFFIX := so
|
|
EXE :=
|
|
endif
|
|
endif
|
|
|
|
|
|
# project files
|
|
###############
|
|
|
|
CSRC = caml_z.c
|
|
MLSRC = zarith_version.ml z.ml q.ml big_int_Z.ml
|
|
MLISRC = z.mli q.mli big_int_Z.mli
|
|
|
|
AUTOGEN = zarith_version.ml
|
|
|
|
CMIOBJ = $(MLISRC:%.mli=%.cmi)
|
|
CMXOBJ = $(MLSRC:%.ml=%.cmx)
|
|
CMIDOC = $(MLISRC:%.mli=%.cmti)
|
|
|
|
TOBUILD = zarith.cma libzarith.$(LIBSUFFIX) $(CMIOBJ) zarith_top.cma z.mli
|
|
|
|
TOINSTALL = $(TOBUILD) zarith.h q.mli big_int_Z.mli
|
|
|
|
ifeq ($(HASOCAMLOPT),yes)
|
|
TOBUILD += zarith.cmxa $(CMXOBJ)
|
|
TOINSTALL += zarith.$(LIBSUFFIX)
|
|
endif
|
|
OCAMLFLAGS += -I +compiler-libs
|
|
OCAMLOPTFLAGS += -I +compiler-libs
|
|
|
|
ifeq ($(HASDYNLINK),yes)
|
|
TOBUILD += zarith.cmxs
|
|
endif
|
|
|
|
ifeq ($(HASBINANNOT),yes)
|
|
TOINSTALL += $(CMIDOC)
|
|
OCAMLFLAGS += -bin-annot
|
|
endif
|
|
|
|
# build targets
|
|
###############
|
|
|
|
all: $(TOBUILD)
|
|
|
|
tests:
|
|
make -C tests test
|
|
|
|
zarith.cma: $(MLSRC:%.ml=%.cmo)
|
|
$(OCAMLMKLIB) -failsafe -o zarith $+ $(LIBS) $(LDFLAGS)
|
|
|
|
zarith.cmxa: $(MLSRC:%.ml=%.cmx)
|
|
$(OCAMLMKLIB) -failsafe -o zarith $+ $(LIBS) $(LDFLAGS)
|
|
|
|
zarith.cmxs: zarith.cmxa libzarith.$(LIBSUFFIX)
|
|
$(OCAMLOPT) -shared -o $@ -I . zarith.cmxa -linkall
|
|
|
|
libzarith.$(LIBSUFFIX): $(CSRC:%.c=%.$(OBJSUFFIX))
|
|
$(OCAMLMKLIB) -failsafe -o zarith $+ $(LIBS) $(LDFLAGS)
|
|
|
|
zarith_top.cma: zarith_top.cmo
|
|
$(OCAMLC) -o $@ -a $<
|
|
|
|
doc: $(MLISRC)
|
|
ifneq ($(OCAMLDOC),)
|
|
mkdir -p html
|
|
$(OCAMLDOC) -html -d html -charset utf8 $+
|
|
else
|
|
$(error ocamldoc is required to build the documentation)
|
|
endif
|
|
|
|
zarith_version.ml: META
|
|
(echo "let"; grep "version" META | head -1) > zarith_version.ml
|
|
|
|
# install targets
|
|
#################
|
|
|
|
ifeq ($(INSTMETH),install)
|
|
install:
|
|
install -d $(INSTALLDIR) $(INSTALLDIR)/zarith $(INSTALLDIR)/stublibs
|
|
for i in $(TOINSTALL); do \
|
|
if test -f $$i; then $(INSTALL) -m 0644 $$i $(INSTALLDIR)/zarith/$$i; fi; \
|
|
done
|
|
if test -f dllzarith.$(DLLSUFFIX); then $(INSTALL) -m 0755 dllzarith.$(DLLSUFFIX) $(INSTALLDIR)/stublibs/dllzarith.$(DLLSUFFIX); fi
|
|
|
|
uninstall:
|
|
for i in $(TOINSTALL); do \
|
|
rm -f $(INSTALLDIR)/zarith/$$i; \
|
|
done
|
|
if test -f $(INSTALLDIR)/stublibs/dllzarith.$(DLLSUFFIX); then rm -f $(INSTALLDIR)/stublibs/dllzarith.$(DLLSUFFIX); fi
|
|
endif
|
|
|
|
ifeq ($(INSTMETH),findlib)
|
|
install:
|
|
$(OCAMLFIND) install -destdir "$(INSTALLDIR)" zarith META $(TOINSTALL) -optional dllzarith.$(DLLSUFFIX)
|
|
|
|
uninstall:
|
|
$(OCAMLFIND) remove -destdir "$(INSTALLDIR)" zarith
|
|
endif
|
|
|
|
|
|
# rules
|
|
#######
|
|
|
|
%.cmi: %.mli
|
|
$(OCAMLC) $(OCAMLFLAGS) $(OCAMLINC) -c $<
|
|
|
|
%.cmo: %.ml %.cmi
|
|
$(OCAMLC) $(OCAMLFLAGS) $(OCAMLINC) -c $<
|
|
|
|
%.cmx: %.ml %.cmi
|
|
$(OCAMLOPT) $(OCAMLOPTFLAGS) $(OCAMLINC) -c $<
|
|
|
|
%.cmo: %.ml
|
|
$(OCAMLC) $(OCAMLFLAGS) $(OCAMLINC) -c $<
|
|
|
|
%.cmx: %.ml
|
|
$(OCAMLOPT) $(OCAMLOPTFLAGS) $(OCAMLINC) -c $<
|
|
|
|
%.$(OBJSUFFIX): %.c
|
|
$(OCAMLC) -ccopt "$(CFLAGS)" -c $<
|
|
|
|
clean:
|
|
/bin/rm -rf *.$(OBJSUFFIX) *.$(LIBSUFFIX) *.$(DLLSUFFIX) *.cmi *.cmo *.cmx *.cmxa *.cmxs *.cma *.cmt *.cmti *~ \#* depend test $(AUTOGEN) tmp.c depend
|
|
make -C tests clean
|
|
|
|
depend: $(AUTOGEN)
|
|
$(OCAMLDEP) $(OCAMLINC) $(MLSRC) $(MLISRC) > depend
|
|
|
|
include depend
|
|
|
|
$(CSRC:%.c=%.$(OBJSUFFIX)): zarith.h
|
|
|
|
.PHONY: clean
|
|
.PHONY: tests
|