summaryrefslogtreecommitdiff
path: root/Makefile
blob: eca6ae89b1c081cf21b0f238648b1de2970deb6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Use GNU Make !
RANLIB= ranlib

OCAML_LIBDIR:= $(shell ocamlc -where)
GMP_INCLUDES= -I/opt/gmp/include -I/users/absint2/local/include -I$(HOME)/packages/gmp/include

GMP_LIBDIR=/opt/gmp/lib
DESTDIR= $(OCAML_LIBDIR)/gmp

RLIBFLAGS= -cclib "-Wl,-rpath $(GMP_LIBDIR)" # Linux, FreeBSD
#RLIBFLAGS= -cclib "-Wl,-R $(GMP_LIBDIR)" # Solaris
# RLIBFLAGS= # MacOS X

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=
CFLAGS_INCLUDE= -I $(OCAML_LIBDIR) $(GMP_INCLUDES)
CFLAGS= $(CFLAGS_MISC) $(CFLAGS_INCLUDE)

OCAMLC= ocamlc -g
OCAMLOPT= ocamlopt
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

all:	$(LIBS) tests

install: all
	-mkdir $(DESTDIR)
	cp $(LIBS) gmp.mli $(DESTDIR)

tests:	$(LIBS) $(TESTS)
	./test_suite
	./test_suite.opt

%.i: %.c
	$(CC) $(CFLAGS) -E $*.c > $*.i

%.cmo: %.ml %.cmi
	$(OCAMLC) $(OCAMLFLAGS) -c $*.ml

%.cmx: %.ml %.cmi
	$(OCAMLOPT) $(OCAMLFLAGS) -c $*.ml

%.cmo: %.ml
	$(OCAMLC) $(OCAMLFLAGS) -c $*.ml

%.cmx: %.ml
	$(OCAMLOPT) $(OCAMLFLAGS) -c $*.ml

%.cmi: %.mli
	$(OCAMLC) $(OCAMLFLAGS) -c $*.mli

$(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 $@

pretty_gmp.cmo: pretty_gmp.cmi gmp.cmo

toplevel: gmp.cma creal.cmo pretty_gmp.cmo install_pp.cmo creal_pp.cmo install_creal_pp.cmo
	ocamlmktop -custom $+ -o $@

essai:	gmp.cma essai.cmo
	$(OCAMLC) -custom $+ -o $@

essai.opt:	gmp.cmxa essai.cmx
	$(OCAMLOPT) $+ -o $@

test_creal:	gmp.cma creal.cmo test_creal.cmo
	$(OCAMLC) -custom $+ -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.opt:	gmp.cmxa test_suite.cmx
	$(OCAMLOPT) $+ -o $@

clean:
	rm -f *.o *.cm* $(PROGRAMS) *.a

depend:
	ocamldep *.ml *.mli > depend

.PHONY: clean

include	depend