[project @ 1998-11-26 09:17:22 by sof]
[ghc-hetmet.git] / ghc / runtime / gmp / Makefile.original
1 # Makefile for GNU MP (a.k.a. biGNUm)
2 # Copyright (C) 1991, 1993 Free Software Foundation, Inc.
3
4 # This file is part of the GNU MP Library.
5
6 # The GNU MP Library is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10
11 # The GNU MP Library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with the GNU MP Library; see the file COPYING.  If not, write to
18 # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19
20 CC = gcc
21
22 # If you cross compile on a machine with the same sizes of the integral
23 # types ("int", "long int", "short int", and "char") define this as the
24 # local compiler.  Otherwise, you need look for the uses of LOCAL_CC below,
25 # and handle those cases manually.
26 LOCAL_CC = $(CC)
27 OPT = -O -g
28 CFLAGS = -I. $(OPT)
29 AR = ar
30 RANLIB=`if [ -r /bin/ranlib -o -r /usr/bin/ranlib ]; \
31         then echo ranlib; else echo true; fi`
32 SHELL = /bin/sh
33
34 SRCS = $(MPZ_SRCS) $(MPQ_SRCS) $(BSDMP_SRCS) $(MPN_SRCS) $(IMPL_SRCS)
35 OBJS = $(MPZ_OBJS) $(MPQ_OBJS) $(BSDMP_OBJS) $(MPN_OBJS) $(IMPL_OBJS)
36
37 MP_OBJS = $(BSDMP_OBJS) $(MPN_OBJS) $(IMPL_OBJS) mp_bases.o mpz_sizeinb.o
38 GMP_OBJS = $(MPZ_OBJS) $(MPQ_OBJS) $(MPN_OBJS) $(IMPL_OBJS) mp_bases.o
39
40 IMPL_SRCS = memory.c mp_set_fns.c _mpz_set_str.c _mpz_get_str.c \
41   mpz_realloc.c mp_clz_tab.c alloca.c
42 IMPL_OBJS = memory.o mp_set_fns.o _mpz_set_str.o _mpz_get_str.o \
43   mpz_realloc.o mp_clz_tab.o alloca.o
44
45 MPZ_SRCS = mpz_init.c mpz_set.c mpz_set_ui.c mpz_set_si.c mpz_set_str.c \
46   mpz_iset.c mpz_iset_ui.c mpz_iset_si.c mpz_iset_str.c mpz_clear.c \
47   mpz_get_ui.c mpz_get_si.c mpz_get_str.c mpz_size.c mpz_sizeinb.c \
48   mpz_add.c mpz_add_ui.c mpz_sub.c mpz_sub_ui.c mpz_mul.c mpz_mul_ui.c \
49   mpz_div.c mpz_div_ui.c mpz_mod.c mpz_mod_ui.c mpz_dm.c mpz_dm_ui.c \
50   mpz_mdiv.c mpz_mmod.c mpz_mdm.c mpz_mdiv_ui.c mpz_mmod_ui.c mpz_mdm_ui.c \
51   mpz_gcd.c mpz_gcdext.c mpz_sqrt.c mpz_sqrtrem.c mpz_powm.c mpz_powm_ui.c \
52   mpz_cmp.c mpz_cmp_ui.c mpz_cmp_si.c mpz_mul_2exp.c mpz_div_2exp.c \
53   mpz_mod_2exp.c mpz_abs.c mpz_neg.c mpz_com.c mpz_and.c mpz_ior.c \
54   mpz_inp_raw.c mpz_inp_str.c mpz_out_raw.c mpz_out_str.c \
55   mpz_perfsqr.c mpz_random.c mpz_random2.c mpz_pow_ui.c \
56   mpz_clrbit.c mpz_fac_ui.c mpz_pprime_p.c
57 MPZ_OBJS = mpz_init.o mpz_set.o mpz_set_ui.o mpz_set_si.o mpz_set_str.o \
58   mpz_iset.o mpz_iset_ui.o mpz_iset_si.o mpz_iset_str.o mpz_clear.o \
59   mpz_get_ui.o mpz_get_si.o mpz_get_str.o mpz_size.o mpz_sizeinb.o \
60   mpz_add.o mpz_add_ui.o mpz_sub.o mpz_sub_ui.o mpz_mul.o mpz_mul_ui.o \
61   mpz_div.o mpz_div_ui.o mpz_mod.o mpz_mod_ui.o mpz_dm.o mpz_dm_ui.o \
62   mpz_mdiv.o mpz_mmod.o mpz_mdm.o mpz_mdiv_ui.o mpz_mmod_ui.o mpz_mdm_ui.o \
63   mpz_gcd.o mpz_gcdext.o mpz_sqrt.o mpz_sqrtrem.o mpz_powm.o mpz_powm_ui.o \
64   mpz_cmp.o mpz_cmp_ui.o mpz_cmp_si.o mpz_mul_2exp.o mpz_div_2exp.o \
65   mpz_mod_2exp.o mpz_abs.o mpz_neg.o mpz_com.o mpz_and.o mpz_ior.o \
66   mpz_inp_raw.o mpz_inp_str.o mpz_out_raw.o mpz_out_str.o \
67   mpz_perfsqr.o mpz_random.o mpz_random2.o mpz_pow_ui.o \
68   mpz_clrbit.o mpz_fac_ui.o mpz_pprime_p.o
69
70 MPQ_SRCS = mpq_init.c mpq_set.c mpq_set_ui.c mpq_set_si.c \
71   mpq_set_num.c mpq_set_den.c mpq_get_num.c mpq_get_den.c \
72   mpq_add.c mpq_sub.c mpq_mul.c mpq_div.c \
73   mpq_clear.c mpq_cmp.c mpq_inv.c mpq_neg.c
74 MPQ_OBJS = mpq_init.o mpq_set.o mpq_set_ui.o mpq_set_si.o \
75   mpq_set_num.o mpq_set_den.o mpq_get_num.o mpq_get_den.o \
76   mpq_add.o mpq_sub.o mpq_mul.o mpq_div.o \
77   mpq_clear.o mpq_cmp.o mpq_inv.o mpq_neg.o
78
79 MPN_SRCS = mpn_add.c mpn_sub.c mpn_cmp.c mpn_mul.c mpn_div.c mpn_dm_1.c \
80   mpn_mod_1.c mpn_lshift.c mpn_rshift.c mpn_rshiftci.c mpn_sqrt.c
81 MPN_OBJS = mpn_add.o mpn_sub.o mpn_cmp.o mpn_mul.o mpn_div.o mpn_dm_1.o \
82   mpn_mod_1.o mpn_lshift.o mpn_rshift.o mpn_rshiftci.o mpn_sqrt.o
83
84 # There are fewer members in the BSDMP_SRCS list that in the BSDMP_OBJS
85 # list because some of the .c files are created by this Makefile.
86 BSDMP_SRCS = itom.c mdiv.c move.c mtox.c xtom.c sdiv.c mout.c min.c mfree.c
87 BSDMP_OBJS = gcd.o itom.o madd.o mcmp.o mdiv.o move.o msub.o mtox.o mult.o \
88   pow.o rpow.o xtom.o msqrt.o sdiv.o mout.o min.o mfree.o
89
90 all: libgmp.a libmp.a
91
92 check: libgmp.a
93         cd tests; $(MAKE) CC="$(CC)" SHELL="$(SHELL)" OPT="$(OPT)"
94
95 libgmp.a: stamp-stddefh $(GMP_OBJS)
96         rm -f $@
97         $(AR) cr $@ $(GMP_OBJS)
98         $(RANLIB) $@
99
100 # libmp.a depend on libgmp.a, to get around Unix(tm) ar/ranlib concurrency bug.
101 libmp.a: stamp-stddefh $(MP_OBJS) libgmp.a
102         rm -f $@
103         $(AR) cr $@ $(MP_OBJS)
104         $(RANLIB) $@
105
106 stamp-stddefh:
107         rm -f stddef.h
108         rm -f test-stddefh.c
109         (       echo '#include <stddef.h>'                              ;\
110                 echo 'main(){size_t foo=sizeof(size_t);exit(0);}'       ;\
111         ) > test-stddefh.c
112         @if $(LOCAL_CC) $(CFLAGS) test-stddefh.c -c 2> /dev/null        ;\
113         then true                                                       ;\
114         else                                                            \
115           echo 'This machine has no "stddef.h".  Creating a minimal in ./';\
116           $(LOCAL_CC) $(CFLAGS) cre-stddefh.c -o cre-stddefh            ;\
117           ./cre-stddefh > stddef.h                                      ;\
118         fi
119         rm -f test-stddefh.o
120         touch stamp-stddefh
121
122 mp_bases.c: cre-conv-tab
123         ./cre-conv-tab > tmp-$@
124         mv tmp-$@ $@
125 cre-conv-tab: cre-conv-tab.c gmp.h gmp-impl.h gmp-mparam.h longlong.h
126         $(LOCAL_CC) $(CFLAGS) `if [ x$(firstword $^) = x ];     \
127                                then echo cre-conv-tab.c;        \
128                                else echo $(firstword $^); fi` -o $@ -lm
129
130 gmp-mparam.h: cre-mparam
131         ./cre-mparam > tmp-$@
132         mv tmp-$@ $@
133 cre-mparam: cre-mparam.c stamp-stddefh gmp.h
134         $(LOCAL_CC) $(CFLAGS) cre-mparam.c -o $@
135
136 gcd.c : mpz_gcd.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h longlong.h 
137         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_gcd.c \
138           | grep -v '^#' > $@
139 pow.c : mpz_powm.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h longlong.h 
140         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_powm.c\
141           | grep -v '^#' > $@
142 rpow.c: mpz_pow_ui.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h longlong.h 
143         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_pow_ui.c\
144           | grep -v '^#' > $@
145 madd.c : mpz_add.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h
146         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_add.c\
147           | grep -v '^#' > $@
148 msub.c : mpz_sub.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h
149         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_sub.c\
150           | grep -v '^#' > $@
151 mult.c : mpz_mul.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h
152         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_mul.c\
153           | grep -v '^#' > $@
154 mcmp.c : mpz_cmp.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h
155         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_cmp.c\
156           | grep -v '^#' > $@
157 msqrt.c : mpz_sqrtrem.c stamp-stddefh mp.h gmp.h gmp-impl.h gmp-mparam.h
158         $(CC) $(CFLAGS) -E -DBERKELEY_MP mpz_sqrtrem.c\
159           | grep -v '^#' > $@
160
161 doc: gmp.dvi gmp.info
162 LN = ln -s
163 gmp.dvi: gmp.texi
164         rm -f tmp.texi
165         $(LN) gmp.texi tmp.texi
166         tex tmp.texi < /dev/null
167         texindex tmp.cp tmp.fn
168         tex tmp.texi < /dev/null 2> /dev/null
169         mv tmp.dvi gmp.dvi
170 gmp.info: gmp.texi
171         makeinfo gmp.texi
172
173 clean:
174         rm -f *.o libgmp.a libmp.a cre-conv-tab cre-mparam cre-stddefh \
175  gmp.dvi gmp.info mp_bases.c gmp-mparam.h stamp-stddefh test-stddefh.c \
176  stddef.h gcd.c pow.c rpow.c madd.c msub.c mult.c mcmp.c msqrt.c \
177  tmp.* tmp-* gmp.ps core
178         -cd tests; $(MAKE) clean
179 realclean: clean
180
181 # Automatically generated dependencies
182
183 _mpz_get_str.o : _mpz_get_str.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
184 _mpz_set_str.o : _mpz_set_str.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
185 cre-conv-tab.o : cre-conv-tab.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
186 cre-mparam.o : cre-mparam.c gmp.h 
187 cre-stddefh.o : cre-stddefh.c 
188 itom.o : itom.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
189 mdiv.o : mdiv.c mp.h gmp.h gmp-impl.h gmp-mparam.h longlong.h mpz_dmincl.c 
190 memory.o : memory.c gmp.h gmp-impl.h gmp-mparam.h 
191 mfree.o : mfree.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
192 min.o : min.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
193 mout.o : mout.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
194 move.o : move.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
195 mp_bases.o : mp_bases.c gmp.h gmp-impl.h gmp-mparam.h 
196 mp_clz_tab.o : mp_clz_tab.c gmp.h gmp-impl.h gmp-mparam.h 
197 mp_set_fns.o : mp_set_fns.c gmp.h gmp-impl.h gmp-mparam.h 
198 mpn_add.o : mpn_add.c gmp.h gmp-impl.h gmp-mparam.h 
199 mpn_cmp.o : mpn_cmp.c gmp.h gmp-impl.h gmp-mparam.h 
200 mpn_div.o : mpn_div.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
201 mpn_dm_1.o : mpn_dm_1.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
202 mpn_lshift.o : mpn_lshift.c gmp.h gmp-impl.h gmp-mparam.h 
203 mpn_mod_1.o : mpn_mod_1.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
204 mpn_mul.o : mpn_mul.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
205 mpn_rshift.o : mpn_rshift.c gmp.h gmp-impl.h gmp-mparam.h 
206 mpn_rshiftci.o : mpn_rshiftci.c gmp.h gmp-impl.h gmp-mparam.h 
207 mpn_sqrt.o : mpn_sqrt.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
208 mpn_sub.o : mpn_sub.c gmp.h gmp-impl.h gmp-mparam.h 
209 mpq_add.o : mpq_add.c gmp.h gmp-impl.h gmp-mparam.h 
210 mpq_clear.o : mpq_clear.c gmp.h gmp-impl.h gmp-mparam.h 
211 mpq_cmp.o : mpq_cmp.c gmp.h gmp-impl.h gmp-mparam.h 
212 mpq_div.o : mpq_div.c gmp.h gmp-impl.h gmp-mparam.h 
213 mpq_get_den.o : mpq_get_den.c gmp.h gmp-impl.h gmp-mparam.h 
214 mpq_get_num.o : mpq_get_num.c gmp.h gmp-impl.h gmp-mparam.h 
215 mpq_init.o : mpq_init.c gmp.h gmp-impl.h gmp-mparam.h 
216 mpq_inv.o : mpq_inv.c gmp.h gmp-impl.h gmp-mparam.h 
217 mpq_mul.o : mpq_mul.c gmp.h gmp-impl.h gmp-mparam.h 
218 mpq_neg.o : mpq_neg.c gmp.h gmp-impl.h gmp-mparam.h 
219 mpq_set.o : mpq_set.c gmp.h gmp-impl.h gmp-mparam.h 
220 mpq_set_den.o : mpq_set_den.c gmp.h gmp-impl.h gmp-mparam.h 
221 mpq_set_num.o : mpq_set_num.c gmp.h gmp-impl.h gmp-mparam.h 
222 mpq_set_si.o : mpq_set_si.c gmp.h gmp-impl.h gmp-mparam.h 
223 mpq_set_ui.o : mpq_set_ui.c gmp.h gmp-impl.h gmp-mparam.h 
224 mpq_sub.o : mpq_sub.c gmp.h gmp-impl.h gmp-mparam.h 
225 mpz_abs.o : mpz_abs.c gmp.h gmp-impl.h gmp-mparam.h 
226 mpz_add.o : mpz_add.c gmp.h gmp-impl.h gmp-mparam.h 
227 mpz_add_ui.o : mpz_add_ui.c gmp.h gmp-impl.h gmp-mparam.h 
228 mpz_and.o : mpz_and.c gmp.h gmp-impl.h gmp-mparam.h 
229 mpz_clear.o : mpz_clear.c gmp.h gmp-impl.h gmp-mparam.h 
230 mpz_clrbit.o : mpz_clrbit.c gmp.h gmp-impl.h gmp-mparam.h 
231 mpz_cmp.o : mpz_cmp.c gmp.h gmp-impl.h gmp-mparam.h 
232 mpz_cmp_si.o : mpz_cmp_si.c gmp.h gmp-impl.h gmp-mparam.h 
233 mpz_cmp_ui.o : mpz_cmp_ui.c gmp.h gmp-impl.h gmp-mparam.h 
234 mpz_com.o : mpz_com.c gmp.h gmp-impl.h gmp-mparam.h 
235 mpz_div.o : mpz_div.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
236 mpz_div_2exp.o : mpz_div_2exp.c gmp.h gmp-impl.h gmp-mparam.h 
237 mpz_div_ui.o : mpz_div_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
238 mpz_dm.o : mpz_dm.c gmp.h gmp-impl.h gmp-mparam.h longlong.h mpz_dmincl.c 
239 mpz_dm_ui.o : mpz_dm_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
240 mpz_fac_ui.o : mpz_fac_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
241 mpz_gcd.o : mpz_gcd.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
242 mpz_gcdext.o : mpz_gcdext.c gmp.h gmp-impl.h gmp-mparam.h 
243 mpz_get_si.o : mpz_get_si.c gmp.h gmp-impl.h gmp-mparam.h 
244 mpz_get_str.o : mpz_get_str.c gmp.h gmp-impl.h gmp-mparam.h 
245 mpz_get_ui.o : mpz_get_ui.c gmp.h gmp-impl.h gmp-mparam.h 
246 mpz_init.o : mpz_init.c gmp.h gmp-impl.h gmp-mparam.h 
247 mpz_inp_raw.o : mpz_inp_raw.c gmp.h gmp-impl.h gmp-mparam.h 
248 mpz_inp_str.o : mpz_inp_str.c gmp.h gmp-impl.h gmp-mparam.h 
249 mpz_ior.o : mpz_ior.c gmp.h gmp-impl.h gmp-mparam.h 
250 mpz_iset.o : mpz_iset.c gmp.h gmp-impl.h gmp-mparam.h 
251 mpz_iset_si.o : mpz_iset_si.c gmp.h gmp-impl.h gmp-mparam.h 
252 mpz_iset_str.o : mpz_iset_str.c gmp.h gmp-impl.h gmp-mparam.h 
253 mpz_iset_ui.o : mpz_iset_ui.c gmp.h gmp-impl.h gmp-mparam.h 
254 mpz_mdiv.o : mpz_mdiv.c gmp.h gmp-impl.h gmp-mparam.h 
255 mpz_mdiv_ui.o : mpz_mdiv_ui.c gmp.h gmp-impl.h gmp-mparam.h 
256 mpz_mdm.o : mpz_mdm.c gmp.h gmp-impl.h gmp-mparam.h 
257 mpz_mdm_ui.o : mpz_mdm_ui.c gmp.h gmp-impl.h gmp-mparam.h 
258 mpz_mmod.o : mpz_mmod.c gmp.h gmp-impl.h gmp-mparam.h 
259 mpz_mmod_ui.o : mpz_mmod_ui.c gmp.h gmp-impl.h gmp-mparam.h 
260 mpz_mod.o : mpz_mod.c gmp.h gmp-impl.h gmp-mparam.h longlong.h mpz_dmincl.c 
261 mpz_mod_2exp.o : mpz_mod_2exp.c gmp.h gmp-impl.h gmp-mparam.h 
262 mpz_mod_ui.o : mpz_mod_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
263 mpz_mul.o : mpz_mul.c gmp.h gmp-impl.h gmp-mparam.h 
264 mpz_mul_2exp.o : mpz_mul_2exp.c gmp.h gmp-impl.h gmp-mparam.h 
265 mpz_mul_ui.o : mpz_mul_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
266 mpz_neg.o : mpz_neg.c gmp.h gmp-impl.h gmp-mparam.h 
267 mpz_out_raw.o : mpz_out_raw.c gmp.h gmp-impl.h gmp-mparam.h 
268 mpz_out_str.o : mpz_out_str.c gmp.h gmp-impl.h gmp-mparam.h 
269 mpz_perfsqr.o : mpz_perfsqr.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
270 mpz_pow_ui.o : mpz_pow_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
271 mpz_powm.o : mpz_powm.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
272 mpz_powm_ui.o : mpz_powm_ui.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
273 mpz_pprime_p.o : mpz_pprime_p.c gmp.h gmp-impl.h gmp-mparam.h 
274 mpz_random.o : mpz_random.c gmp.h gmp-impl.h gmp-mparam.h 
275 mpz_random2.o : mpz_random2.c gmp.h gmp-impl.h gmp-mparam.h 
276 mpz_realloc.o : mpz_realloc.c gmp.h gmp-impl.h gmp-mparam.h 
277 mpz_set.o : mpz_set.c gmp.h gmp-impl.h gmp-mparam.h 
278 mpz_set_si.o : mpz_set_si.c gmp.h gmp-impl.h gmp-mparam.h 
279 mpz_set_str.o : mpz_set_str.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
280 mpz_set_ui.o : mpz_set_ui.c gmp.h gmp-impl.h gmp-mparam.h 
281 mpz_size.o : mpz_size.c gmp.h gmp-impl.h gmp-mparam.h 
282 mpz_sizeinb.o : mpz_sizeinb.c gmp.h gmp-impl.h gmp-mparam.h longlong.h 
283 mpz_sqrt.o : mpz_sqrt.c gmp.h gmp-impl.h gmp-mparam.h 
284 mpz_sqrtrem.o : mpz_sqrtrem.c gmp.h gmp-impl.h gmp-mparam.h 
285 mpz_sub.o : mpz_sub.c gmp.h gmp-impl.h gmp-mparam.h 
286 mpz_sub_ui.o : mpz_sub_ui.c gmp.h gmp-impl.h gmp-mparam.h 
287 mtox.o : mtox.c mp.h gmp.h gmp-impl.h gmp-mparam.h 
288 sdiv.o : sdiv.c mp.h gmp.h gmp-impl.h gmp-mparam.h longlong.h 
289 xtom.o : xtom.c mp.h gmp.h gmp-impl.h gmp-mparam.h