[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / runtime / gmp / Jmakefile
1 /* based on the Makefile that comes with "gmp" */
2
3 GMP_OBJS = $(MPZ_OBJS) $(MPQ_OBJS) $(MPN_OBJS) $(IMPL_OBJS) mp_bases.o
4
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
9
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
34
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
43
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
48
49 CC_OPTS = -I.
50
51 SuffixRule_c_o()
52
53 all depend :: gmp-mparam.h
54
55 libgmp.a :: stamp-stddefh
56
57 NormalLibraryTarget(gmp,$(GMP_OBJS))
58
59 #if DoInstallGHCSystem == YES
60 InstallLibraryTarget(gmp,$(INSTLIBDIR_GHC))
61 #endif /* DoInstallGHCSystem */
62
63 ExtraStuffToClean(test-with-stddefh.c stamp-stddefh cre-mparam gmp-mparam.h mp_bases.c cre-conv-tab)
64
65 /* ToDo: something to make the doc */
66
67 /* from here on, it is magic from the original Makefile */
68
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.
73
74 LOCAL_CC = $(CC)
75
76 stamp-stddefh:
77         rm -f stddef.h
78         rm -f test-stddefh.c
79         (       echo '#include <stddef.h>'                              ;\
80                 echo 'main(){size_t foo=sizeof(size_t);exit(0);}'       ;\
81         ) > test-stddefh.c
82         @if $(LOCAL_CC) $(CFLAGS) test-stddefh.c -c 2> /dev/null        ;\
83         then true                                                       ;\
84         else                                                            \
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                                      ;\
88         fi
89         rm -f test-stddefh.o
90         touch stamp-stddefh
91
92 mp_bases.c: cre-conv-tab
93         ./cre-conv-tab > tmp-$@
94         mv 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
99
100 gmp-mparam.h: cre-mparam
101         ./cre-mparam > tmp-$@
102         mv tmp-$@ $@
103 cre-mparam: cre-mparam.c stamp-stddefh gmp.h
104         $(LOCAL_CC) $(CFLAGS) cre-mparam.c -o $@
105
106 /* OK, this is my own idea again: */
107
108 CDependTarget( $(IMPL_SRCS) $(MPZ_SRCS) $(MPQ_SRCS) $(MPN_SRCS) )