1 /* based on the Makefile that comes with "gmp" */
3 GMP_OBJS = $(MPZ_OBJS) $(MPQ_OBJS) $(MPN_OBJS) $(IMPL_OBJS) mp_bases.o
5 IMPL_SRCS = memory.c mp_set_fns.c _mpz_set_str.c _mpz_get_str.c \
6 mpz_realloc.c mp_clz_tab.c alloca.c
7 IMPL_OBJS = memory.o mp_set_fns.o _mpz_set_str.o _mpz_get_str.o \
8 mpz_realloc.o mp_clz_tab.o alloca.o
10 MPZ_SRCS = mpz_init.c mpz_set.c mpz_set_ui.c mpz_set_si.c mpz_set_str.c \
11 mpz_iset.c mpz_iset_ui.c mpz_iset_si.c mpz_iset_str.c mpz_clear.c \
12 mpz_get_ui.c mpz_get_si.c mpz_get_str.c mpz_size.c mpz_sizeinb.c \
13 mpz_add.c mpz_add_ui.c mpz_sub.c mpz_sub_ui.c mpz_mul.c mpz_mul_ui.c \
14 mpz_div.c mpz_div_ui.c mpz_mod.c mpz_mod_ui.c mpz_dm.c mpz_dm_ui.c \
15 mpz_mdiv.c mpz_mmod.c mpz_mdm.c mpz_mdiv_ui.c mpz_mmod_ui.c mpz_mdm_ui.c \
16 mpz_gcd.c mpz_gcdext.c mpz_sqrt.c mpz_sqrtrem.c mpz_powm.c mpz_powm_ui.c \
17 mpz_cmp.c mpz_cmp_ui.c mpz_cmp_si.c mpz_mul_2exp.c mpz_div_2exp.c \
18 mpz_mod_2exp.c mpz_abs.c mpz_neg.c mpz_com.c mpz_and.c mpz_ior.c \
19 mpz_inp_raw.c mpz_inp_str.c mpz_out_raw.c mpz_out_str.c \
20 mpz_perfsqr.c mpz_random.c mpz_random2.c mpz_pow_ui.c \
21 mpz_clrbit.c mpz_fac_ui.c mpz_pprime_p.c
22 MPZ_OBJS = mpz_init.o mpz_set.o mpz_set_ui.o mpz_set_si.o mpz_set_str.o \
23 mpz_iset.o mpz_iset_ui.o mpz_iset_si.o mpz_iset_str.o mpz_clear.o \
24 mpz_get_ui.o mpz_get_si.o mpz_get_str.o mpz_size.o mpz_sizeinb.o \
25 mpz_add.o mpz_add_ui.o mpz_sub.o mpz_sub_ui.o mpz_mul.o mpz_mul_ui.o \
26 mpz_div.o mpz_div_ui.o mpz_mod.o mpz_mod_ui.o mpz_dm.o mpz_dm_ui.o \
27 mpz_mdiv.o mpz_mmod.o mpz_mdm.o mpz_mdiv_ui.o mpz_mmod_ui.o mpz_mdm_ui.o \
28 mpz_gcd.o mpz_gcdext.o mpz_sqrt.o mpz_sqrtrem.o mpz_powm.o mpz_powm_ui.o \
29 mpz_cmp.o mpz_cmp_ui.o mpz_cmp_si.o mpz_mul_2exp.o mpz_div_2exp.o \
30 mpz_mod_2exp.o mpz_abs.o mpz_neg.o mpz_com.o mpz_and.o mpz_ior.o \
31 mpz_inp_raw.o mpz_inp_str.o mpz_out_raw.o mpz_out_str.o \
32 mpz_perfsqr.o mpz_random.o mpz_random2.o mpz_pow_ui.o \
33 mpz_clrbit.o mpz_fac_ui.o mpz_pprime_p.o
35 MPQ_SRCS = mpq_init.c mpq_set.c mpq_set_ui.c mpq_set_si.c \
36 mpq_set_num.c mpq_set_den.c mpq_get_num.c mpq_get_den.c \
37 mpq_add.c mpq_sub.c mpq_mul.c mpq_div.c \
38 mpq_clear.c mpq_cmp.c mpq_inv.c mpq_neg.c
39 MPQ_OBJS = mpq_init.o mpq_set.o mpq_set_ui.o mpq_set_si.o \
40 mpq_set_num.o mpq_set_den.o mpq_get_num.o mpq_get_den.o \
41 mpq_add.o mpq_sub.o mpq_mul.o mpq_div.o \
42 mpq_clear.o mpq_cmp.o mpq_inv.o mpq_neg.o
44 MPN_SRCS = mpn_add.c mpn_sub.c mpn_cmp.c mpn_mul.c mpn_div.c mpn_dm_1.c \
45 mpn_mod_1.c mpn_lshift.c mpn_rshift.c mpn_rshiftci.c mpn_sqrt.c
46 MPN_OBJS = mpn_add.o mpn_sub.o mpn_cmp.o mpn_mul.o mpn_div.o mpn_dm_1.o \
47 mpn_mod_1.o mpn_lshift.o mpn_rshift.o mpn_rshiftci.o mpn_sqrt.o
53 all depend :: gmp-mparam.h
55 libgmp.a :: stamp-stddefh
57 NormalLibraryTarget(gmp,$(GMP_OBJS))
59 #if DoInstallGHCSystem == YES
60 InstallLibraryTarget(gmp,$(INSTLIBDIR_GHC))
61 #endif /* DoInstallGHCSystem */
63 ExtraStuffToClean(test-with-stddefh.c stamp-stddefh cre-mparam gmp-mparam.h mp_bases.c cre-conv-tab)
65 /* ToDo: something to make the doc */
67 /* from here on, it is magic from the original Makefile */
69 XCOMM If you cross compile on a machine with the same sizes of the integral
70 XCOMM types ("int", "long int", "short int", and "char") define this as the
71 XCOMM local compiler. Otherwise, you need look for the uses of LOCAL_CC below,
72 XCOMM and handle those cases manually.
79 ( echo '#include <stddef.h>' ;\
80 echo 'main(){size_t foo=sizeof(size_t);exit(0);}' ;\
82 @if $(LOCAL_CC) $(CFLAGS) test-stddefh.c -c 2> /dev/null ;\
85 echo 'This machine has no "stddef.h". Creating a minimal in ./';\
86 $(LOCAL_CC) $(CFLAGS) cre-stddefh.c -o cre-stddefh ;\
87 ./cre-stddefh > stddef.h ;\
92 mp_bases.c: cre-conv-tab
93 ./cre-conv-tab > tmp-$@
95 cre-conv-tab: cre-conv-tab.c gmp.h gmp-impl.h gmp-mparam.h longlong.h
96 $(LOCAL_CC) $(CFLAGS) `if [ x$(firstword $^) = x ]; \
97 then echo cre-conv-tab.c; \
98 else echo $(firstword $^); fi` -o $@ -lm
100 gmp-mparam.h: cre-mparam
101 ./cre-mparam > tmp-$@
103 cre-mparam: cre-mparam.c stamp-stddefh gmp.h
104 $(LOCAL_CC) $(CFLAGS) cre-mparam.c -o $@
106 /* OK, this is my own idea again: */
108 CDependTarget( $(IMPL_SRCS) $(MPZ_SRCS) $(MPQ_SRCS) $(MPN_SRCS) )