From a8a046cb4acca5337683c470ad63a0be46534b77 Mon Sep 17 00:00:00 2001 From: Mike Furr Date: Mon, 17 Jul 2017 09:52:23 +0200 Subject: Handling non-native archs and proper handling of .so generation Gbp-Pq: Name 0002-Handling-non-native-archs-and-proper-handling-of-.so.patch --- Makefile | 72 +++++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index eca6ae8..d93bbd1 100644 --- a/Makefile +++ b/Makefile @@ -2,12 +2,14 @@ RANLIB= ranlib OCAML_LIBDIR:= $(shell ocamlc -where) -GMP_INCLUDES= -I/opt/gmp/include -I/users/absint2/local/include -I$(HOME)/packages/gmp/include +GMP_INCLUDES= -GMP_LIBDIR=/opt/gmp/lib -DESTDIR= $(OCAML_LIBDIR)/gmp +GMP_LIBDIR= +PREFIX= $(OCAML_LIBDIR) +PKGDIR= $(PREFIX)/gmp/ +STUBDIR= $(PREFIX)/stublibs/ -RLIBFLAGS= -cclib "-Wl,-rpath $(GMP_LIBDIR)" # Linux, FreeBSD +#RLIBFLAGS= -cclib "-Wl,-rpath $(GMP_LIBDIR)" # Linux, FreeBSD #RLIBFLAGS= -cclib "-Wl,-R $(GMP_LIBDIR)" # Solaris # RLIBFLAGS= # MacOS X @@ -15,33 +17,53 @@ LIBFLAGS= -cclib -L. -cclib -L$(GMP_LIBDIR) $(RLIBFLAGS) \ -cclib -lmpfr -cclib -lgmp -cclib -L$(DESTDIR) CC= gcc -CFLAGS_MISC= -Wall -Wno-unused -g -O3 +CFLAGS_MISC= -Wall -Wno-unused -g -O2 -fPIC #CFLAGS_MISC= CFLAGS_INCLUDE= -I $(OCAML_LIBDIR) $(GMP_INCLUDES) CFLAGS= $(CFLAGS_MISC) $(CFLAGS_INCLUDE) OCAMLC= ocamlc -g OCAMLOPT= ocamlopt +OCAMLMKLIB= ocamlmklib OCAMLFLAGS= CMODULES= mlgmp_z.c mlgmp_q.c mlgmp_f.c mlgmp_fr.c mlgmp_random.c mlgmp_misc.c CMODULES_O= $(CMODULES:%.c=%.o) -LIBS= libmlgmp.a gmp.a gmp.cma gmp.cmxa gmp.cmi PROGRAMS= test_creal test_creal.opt essai essai.opt toplevel\ test_suite test_suite.opt -TESTS= test_suite test_suite.opt + +C_STATIC = libgmpstub.a +C_SHARED = dllgmpstub.so + +HAS_OPT= +BYTE_LIBS= gmp.cma gmp.cmi +BYTE_TESTS= test_suite + +ifdef HAS_OPT + OPT_LIBS= gmp.cmxa + OPT_CMX= gmp.cmx + OPT_TESTS= test_suite.opt +else + OPT_LIBS= + OPT_CMX= + OPT_TESTS= +endif + +LIBS = $(C_SHARED) $(BYTE_LIBS) $(OPT_LIBS) all: $(LIBS) tests install: all - -mkdir $(DESTDIR) - cp $(LIBS) gmp.mli $(DESTDIR) + install -d $(DESTDIR)$(PKGDIR) + install -m 0644 -c $(BYTE_LIBS) $(OPT_LIBS) *.a gmp.mli $(DESTDIR)$(PKGDIR) + install -d $(STUBDIR) + install -m 0644 -c $(C_SHARED) $(STUBDIR) -tests: $(LIBS) $(TESTS) +tests: $(LIBS) $(BYTE_TESTS) $(OPT_TESTS) ./test_suite - ./test_suite.opt + if [ -e ./test_suite.opt ]; then ./test_suite.opt; fi %.i: %.c $(CC) $(CFLAGS) -E $*.c > $*.i @@ -63,15 +85,9 @@ tests: $(LIBS) $(TESTS) $(CMODULES_O): conversions.c config.h -libmlgmp.a: $(CMODULES_O) - $(AR) -rc $@ $+ - $(RANLIB) $@ - -gmp.cma: gmp.cmo libmlgmp.a - $(OCAMLC) $(OCAMLFLAGS) -a gmp.cmo -cclib -lmlgmp $(LIBFLAGS) -o $@ - -gmp.a gmp.cmxa: gmp.cmx libmlgmp.a - $(OCAMLOPT) $(OCAMLFLAGS) -a gmp.cmx -cclib -lmlgmp $(LIBFLAGS) -o $@ +dllgmpstub.so libgmpstub.a gmp.cma gmp.cmxa: gmp.cmo $(OPT_CMX) $(CMODULES_O) + $(OCAMLMKLIB) $(OCAMLFLAGS) -o gmp -oc gmpstub gmp.cmo \ + $(OPT_CMX) $(CMODULES_O) -lgmp pretty_gmp.cmo: pretty_gmp.cmi gmp.cmo @@ -81,27 +97,27 @@ toplevel: gmp.cma creal.cmo pretty_gmp.cmo install_pp.cmo creal_pp.cmo install_c essai: gmp.cma essai.cmo $(OCAMLC) -custom $+ -o $@ -essai.opt: gmp.cmxa essai.cmx +essai.opt: gmp.cmxa essai.cmx $(OCAMLOPT) $+ -o $@ -test_creal: gmp.cma creal.cmo test_creal.cmo - $(OCAMLC) -custom $+ -o $@ +test_creal: gmp.cma creal.cmo test_creal.cmo + $(OCAMLC) $+ -o $@ test_creal.opt: gmp.cmxa creal.cmx test_creal.cmx $(OCAMLOPT) $+ -o $@ -test_suite: gmp.cma test_suite.cmo - $(OCAMLC) -custom $+ -o $@ +test_suite: gmp.cma test_suite.cmo + $(OCAMLC) -custom $+ -o $@ -cclib -L. test_suite.opt: gmp.cmxa test_suite.cmx - $(OCAMLOPT) $+ -o $@ + $(OCAMLOPT) $+ -o $@ -cclib -L. clean: - rm -f *.o *.cm* $(PROGRAMS) *.a + -rm -f *.o *.cm* $(PROGRAMS) *.a *.so depend: ocamldep *.ml *.mli > depend .PHONY: clean -include depend +-include depend -- cgit v1.2.3