4 CONTRIBDIR
= ${.CURDIR
}/..
/..
/..
/contrib
/gmp
7 .
include "${.CURDIR}/Makefile.${MACHINE_ARCH}"
9 CFLAGS
+= -D__GMP_WITHIN_GMP
-I
${CONTRIBDIR} -I
${.OBJDIR
} -I
${.CURDIR
}
10 CFLAGS
+= -I
${CONTRIBDIR}/mpn
/generic
11 CFLAGS
+= -D__LONG_INT_BYTES
=${LONG_INT_BYTES}
12 CFLAGS
+= -D__INT_BITS
=${INT_BITS}
13 CFLAGS
+= -DHAVE_HOST_CPU_FAMILY_
${CPU_FAMILY}=1
16 # The following comes verbatim from Makefile.am
18 MPF_OBJECTS
= mpf
/init
$U.lo mpf
/init2
$U.lo mpf
/inits
$U.lo mpf
/set
$U.lo \
19 mpf
/set_ui
$U.lo mpf
/set_si
$U.lo mpf
/set_str
$U.lo mpf
/set_d
$U.lo \
20 mpf
/set_z
$U.lo mpf
/iset
$U.lo mpf
/iset_ui
$U.lo mpf
/iset_si
$U.lo \
21 mpf
/iset_str
$U.lo mpf
/iset_d
$U.lo mpf
/clear
$U.lo mpf
/clears
$U.lo \
22 mpf
/get_str
$U.lo mpf
/dump
$U.lo mpf
/size
$U.lo mpf
/eq
$U.lo mpf
/reldiff
$U.lo \
23 mpf
/sqrt
$U.lo mpf
/random2
$U.lo mpf
/inp_str
$U.lo mpf
/out_str
$U.lo \
24 mpf
/add
$U.lo mpf
/add_ui
$U.lo mpf
/sub
$U.lo mpf
/sub_ui
$U.lo mpf
/ui_sub
$U.lo \
25 mpf
/mul
$U.lo mpf
/mul_ui
$U.lo mpf
/div
$U.lo mpf
/div_ui
$U.lo \
26 mpf
/cmp
$U.lo mpf
/cmp_d
$U.lo mpf
/cmp_ui
$U.lo mpf
/cmp_si
$U.lo \
27 mpf
/mul_2exp
$U.lo mpf
/div_2exp
$U.lo mpf
/abs
$U.lo mpf
/neg
$U.lo \
28 mpf
/set_q
$U.lo mpf
/get_d
$U.lo mpf
/get_d_2exp
$U.lo mpf
/set_dfl_prec
$U.lo \
29 mpf
/set_prc
$U.lo mpf
/set_prc_raw
$U.lo mpf
/get_dfl_prec
$U.lo \
30 mpf
/get_prc
$U.lo mpf
/ui_div
$U.lo mpf
/sqrt_ui
$U.lo \
31 mpf
/ceilfloor
$U.lo mpf
/trunc
$U.lo mpf
/pow_ui
$U.lo \
32 mpf
/urandomb
$U.lo mpf
/swap
$U.lo \
33 mpf
/fits_sint
$U.lo mpf
/fits_slong
$U.lo mpf
/fits_sshort
$U.lo \
34 mpf
/fits_uint
$U.lo mpf
/fits_ulong
$U.lo mpf
/fits_ushort
$U.lo \
35 mpf
/get_si
$U.lo mpf
/get_ui
$U.lo \
38 MPZ_OBJECTS
= mpz
/abs
$U.lo mpz
/add
$U.lo mpz
/add_ui
$U.lo \
39 mpz
/aorsmul
$U.lo mpz
/aorsmul_i
$U.lo mpz
/and
$U.lo mpz
/array_init
$U.lo \
40 mpz
/bin_ui
$U.lo mpz
/bin_uiui
$U.lo \
41 mpz
/cdiv_q
$U.lo mpz
/cdiv_q_ui
$U.lo \
42 mpz
/cdiv_qr
$U.lo mpz
/cdiv_qr_ui
$U.lo \
43 mpz
/cdiv_r
$U.lo mpz
/cdiv_r_ui
$U.lo mpz
/cdiv_ui
$U.lo \
44 mpz
/cfdiv_q_2exp
$U.lo mpz
/cfdiv_r_2exp
$U.lo \
45 mpz
/clear
$U.lo mpz
/clears
$U.lo mpz
/clrbit
$U.lo \
46 mpz
/cmp
$U.lo mpz
/cmp_d
$U.lo mpz
/cmp_si
$U.lo mpz
/cmp_ui
$U.lo \
47 mpz
/cmpabs
$U.lo mpz
/cmpabs_d
$U.lo mpz
/cmpabs_ui
$U.lo \
48 mpz
/com
$U.lo mpz
/combit
$U.lo \
49 mpz
/cong
$U.lo mpz
/cong_2exp
$U.lo mpz
/cong_ui
$U.lo \
50 mpz
/divexact
$U.lo mpz
/divegcd
$U.lo mpz
/dive_ui
$U.lo \
51 mpz
/divis
$U.lo mpz
/divis_ui
$U.lo mpz
/divis_2exp
$U.lo mpz
/dump
$U.lo \
52 mpz
/export$U.lo mpz
/fac_ui
$U.lo mpz
/fdiv_q
$U.lo \
53 mpz
/fdiv_q_ui
$U.lo mpz
/fdiv_qr
$U.lo mpz
/fdiv_qr_ui
$U.lo \
54 mpz
/fdiv_r
$U.lo mpz
/fdiv_r_ui
$U.lo \
55 mpz
/fdiv_ui
$U.lo mpz
/fib_ui
$U.lo mpz
/fib2_ui
$U.lo mpz
/fits_sint
$U.lo \
56 mpz
/fits_slong
$U.lo mpz
/fits_sshort
$U.lo mpz
/fits_uint
$U.lo \
57 mpz
/fits_ulong
$U.lo mpz
/fits_ushort
$U.lo mpz
/gcd
$U.lo \
58 mpz
/gcd_ui
$U.lo mpz
/gcdext
$U.lo mpz
/get_d
$U.lo mpz
/get_d_2exp
$U.lo \
59 mpz
/get_si
$U.lo mpz
/get_str
$U.lo mpz
/get_ui
$U.lo mpz
/getlimbn
$U.lo \
61 mpz
/import
$U.lo mpz
/init
$U.lo mpz
/init2
$U.lo mpz
/inits
$U.lo \
62 mpz
/inp_raw
$U.lo mpz
/inp_str
$U.lo mpz
/invert
$U.lo \
63 mpz
/ior
$U.lo mpz
/iset
$U.lo mpz
/iset_d
$U.lo mpz
/iset_si
$U.lo \
64 mpz
/iset_str
$U.lo mpz
/iset_ui
$U.lo mpz
/jacobi
$U.lo mpz
/kronsz
$U.lo \
65 mpz
/kronuz
$U.lo mpz
/kronzs
$U.lo mpz
/kronzu
$U.lo \
66 mpz
/lcm
$U.lo mpz
/lcm_ui
$U.lo mpz
/lucnum_ui
$U.lo mpz
/lucnum2_ui
$U.lo \
67 mpz
/millerrabin
$U.lo mpz
/mod
$U.lo mpz
/mul
$U.lo mpz
/mul_2exp
$U.lo \
68 mpz
/mul_si
$U.lo mpz
/mul_ui
$U.lo \
69 mpz
/n_pow_ui
$U.lo mpz
/neg
$U.lo mpz
/nextprime
$U.lo \
70 mpz
/out_raw
$U.lo mpz
/out_str
$U.lo mpz
/perfpow
$U.lo mpz
/perfsqr
$U.lo \
71 mpz
/popcount
$U.lo mpz
/pow_ui
$U.lo mpz
/powm
$U.lo mpz
/powm_sec
$U.lo \
72 mpz
/powm_ui
$U.lo mpz
/pprime_p
$U.lo mpz
/random
$U.lo mpz
/random2
$U.lo \
73 mpz
/realloc
$U.lo mpz
/realloc2
$U.lo mpz
/remove
$U.lo \
74 mpz
/root
$U.lo mpz
/rootrem
$U.lo mpz
/rrandomb
$U.lo mpz
/scan0
$U.lo \
75 mpz
/scan1
$U.lo mpz
/set
$U.lo mpz
/set_d
$U.lo mpz
/set_f
$U.lo \
76 mpz
/set_q
$U.lo mpz
/set_si
$U.lo mpz
/set_str
$U.lo mpz
/set_ui
$U.lo \
78 mpz
/size
$U.lo mpz
/sizeinbase
$U.lo mpz
/sqrt
$U.lo \
79 mpz
/sqrtrem
$U.lo mpz
/sub
$U.lo mpz
/sub_ui
$U.lo mpz
/swap
$U.lo \
80 mpz
/tdiv_ui
$U.lo mpz
/tdiv_q
$U.lo mpz
/tdiv_q_2exp
$U.lo \
81 mpz
/tdiv_q_ui
$U.lo mpz
/tdiv_qr
$U.lo mpz
/tdiv_qr_ui
$U.lo \
82 mpz
/tdiv_r
$U.lo mpz
/tdiv_r_2exp
$U.lo mpz
/tdiv_r_ui
$U.lo \
83 mpz
/tstbit
$U.lo mpz
/ui_pow_ui
$U.lo mpz
/ui_sub
$U.lo mpz
/urandomb
$U.lo \
84 mpz
/urandomm
$U.lo mpz
/xor
$U.lo
86 MPQ_OBJECTS
= mpq
/abs
$U.lo mpq
/aors
$U.lo \
87 mpq
/canonicalize
$U.lo mpq
/clear
$U.lo mpq
/clears
$U.lo \
88 mpq
/cmp
$U.lo mpq
/cmp_si
$U.lo mpq
/cmp_ui
$U.lo mpq
/div
$U.lo \
89 mpq
/get_d
$U.lo mpq
/get_den
$U.lo mpq
/get_num
$U.lo mpq
/get_str
$U.lo \
90 mpq
/init
$U.lo mpq
/inits
$U.lo mpq
/inp_str
$U.lo mpq
/inv
$U.lo \
91 mpq
/md_2exp
$U.lo mpq
/mul
$U.lo mpq
/neg
$U.lo mpq
/out_str
$U.lo \
92 mpq
/set
$U.lo mpq
/set_den
$U.lo mpq
/set_num
$U.lo \
93 mpq
/set_si
$U.lo mpq
/set_str
$U.lo mpq
/set_ui
$U.lo \
94 mpq
/equal
$U.lo mpq
/set_z
$U.lo mpq
/set_d
$U.lo \
95 mpq
/set_f
$U.lo mpq
/swap
$U.lo
97 MPN_OBJECTS
= mpn
/fib_table
$U.lo mpn
/mp_bases
$U.lo
100 printf
/asprintf
$U.lo printf
/asprntffuns
$U.lo \
101 printf
/doprnt
$U.lo printf
/doprntf
$U.lo printf
/doprnti
$U.lo \
102 printf
/fprintf
$U.lo \
103 printf
/printf
$U.lo printf
/printffuns
$U.lo \
104 printf
/snprintf
$U.lo printf
/snprntffuns
$U.lo \
105 printf
/sprintf
$U.lo printf
/sprintffuns
$U.lo \
106 printf
/vasprintf
$U.lo printf
/vfprintf
$U.lo printf
/vprintf
$U.lo \
107 printf
/vsnprintf
$U.lo printf
/vsprintf
$U.lo
109 # only when HAVE_OBSTACK_VPRINTF
111 printf
/obprintf
$U.lo printf
/obvprintf
$U.lo printf
/obprntffuns
$U.lo
113 # only when ! HAVE_VSNPRINTF (when don't have vsnprintf)
115 printf
/repl-vsnprintf
$U.lo
118 scanf
/doscan
$U.lo scanf
/fscanf
$U.lo scanf
/fscanffuns
$U.lo \
119 scanf
/scanf
$U.lo scanf
/sscanf
$U.lo scanf
/sscanffuns
$U.lo \
120 scanf
/vfscanf
$U.lo scanf
/vscanf
$U.lo scanf
/vsscanf
$U.lo
122 libgmp_la_SOURCES
= gmp-impl.h longlong.h randmt.h \
123 assert.c compat.c errno.c extract-dbl.c invalid.c memory.c \
124 mp_bpl.c mp_dv_tab.c mp_minv_tab.c mp_get_fns.c mp_set_fns.c \
125 rand.c randclr.c randdef.c randiset.c randlc2s.c randlc2x.c randmt.c \
126 randmts.c rands.c randsd.c randsdui.c randbui.c randmui.c version.c \
129 # only when COUNT_LEADING_ZEROS_NEED_CLZ_TAB
130 #libgmp_la_SOURCES = mp_clz_tab.c
133 gmp_mpn_functions_optional
=umul udiv \
134 invert_limb sqr_diagonal \
136 addmul_2 addmul_3 addmul_4 addmul_5 addmul_6 addmul_7 addmul_8 \
137 addlsh1_n sublsh1_n rsblsh1_n rsh1add_n rsh1sub_n \
138 addlsh2_n sublsh2_n rsblsh2_n \
139 addlsh_n sublsh_n rsblsh_n \
140 add_n_sub_n addaddmul_1msb0
142 gmp_mpn_functions
=${extra_functions} \
143 add add_1 add_n sub sub_1 sub_n neg com mul_1 addmul_1 \
144 submul_1 lshift rshift dive_1 diveby3 divis divrem divrem_1 divrem_2 \
145 fib2_ui mod_1 mod_34lsub1 mode1o pre_divrem_1 pre_mod_1 dump \
146 mod_1_1 mod_1_2 mod_1_3 mod_1_4 lshiftc \
147 mul mul_fft mul_n sqr mul_basecase sqr_basecase nussbaumer_mul \
148 random random2 pow_1 \
149 rootrem sqrtrem get_str set_str scan0 scan1 popcount hamdist cmp \
151 gcd_1 gcd gcdext_1 gcdext gcd_lehmer gcd_subdiv_step \
152 gcdext_lehmer gcdext_subdiv_step \
153 div_q tdiv_qr jacbase get_d \
154 matrix22_mul hgcd2 hgcd mullo_n mullo_basecase \
155 toom22_mul toom32_mul toom42_mul toom52_mul toom62_mul \
156 toom33_mul toom43_mul toom53_mul toom63_mul \
158 toom6h_mul toom6_sqr toom8h_mul toom8_sqr \
159 toom_couple_handling \
160 toom2_sqr toom3_sqr toom4_sqr \
161 toom_eval_dgr3_pm1 toom_eval_dgr3_pm2 \
162 toom_eval_pm1 toom_eval_pm2 toom_eval_pm2exp toom_eval_pm2rexp \
163 toom_interpolate_5pts toom_interpolate_6pts toom_interpolate_7pts \
164 toom_interpolate_8pts toom_interpolate_12pts toom_interpolate_16pts \
165 invertappr invert binvert mulmod_bnm1 sqrmod_bnm1 \
166 sbpi1_div_q sbpi1_div_qr sbpi1_divappr_q \
167 dcpi1_div_q dcpi1_div_qr dcpi1_divappr_q \
168 mu_div_qr mu_divappr_q mu_div_q \
170 sbpi1_bdiv_q sbpi1_bdiv_qr \
171 dcpi1_bdiv_q dcpi1_bdiv_qr \
172 mu_bdiv_q mu_bdiv_qr \
174 divexact bdiv_dbm1c redc_1 redc_2 redc_n powm powlo powm_sec subcnd_n \
175 redc_1_sec trialdiv remove \
176 and_n andn_n nand_n ior_n iorn_n nior_n xor_n xnor_n \
178 ${gmp_mpn_functions_optional}
182 MULFUNC_add_n
= aors_n
183 MULFUNC_sub_n
= aors_n
184 MULFUNC_addmul_1
= aorsmul_1
185 MULFUNC_submul_1
= aorsmul_1
186 MULFUNC_popcount
= popham
187 MULFUNC_hamdist
= popham
188 MULFUNC_and_n
= logops_n
189 MULFUNC_andn_n
= logops_n
190 MULFUNC_nand_n
= logops_n
191 MULFUNC_ior_n
= logops_n
192 MULFUNC_iorn_n
= logops_n
193 MULFUNC_nior_n
= logops_n
194 MULFUNC_xor_n
= logops_n
195 MULFUNC_xnor_n
= logops_n
196 MULFUNC_lshift
= lorrshift
197 MULFUNC_rshift
= lorrshift
198 MULFUNC_addlsh1_n
= aorslsh1_n
199 MULFUNC_sublsh1_n
= aorslsh1_n
200 MULFUNC_rsh1add_n
= rsh1aors_n
201 MULFUNC_rsh1sub_n
= rsh1aors_n
206 LO_OBJECTS
= ${MPF_OBJECTS} ${MPZ_OBJECTS} ${MPQ_OBJECTS} ${MPN_OBJECTS} \
207 ${PRINTF_OBJECTS} ${SCANF_OBJECTS}
209 .for func in
${gmp_mpn_functions}
210 .for mapfunc in
${func} ${MULFUNC_
${func}}
211 .for mapsource in mpn
/generic
/${mapfunc}.c
212 .for source in mpn
/generic
/${func}.c
213 .if exists
(${mapsource}) && empty
(MPNSRC
:M
${source})
215 .if
!exists
(${source})
216 ${source}: ${mapsource} mkdirs
217 cp
${.ALLSRC
:Nmkdirs
} ${.TARGET
}
218 CLEANFILES
+= ${source}
219 .ORDER
: mkdirs
${source}
223 ${source
:.c
=.o
}: ${source}
224 ${CC} -o
${.TARGET
} ${CFLAGS} -DOPERATION_
${func} -c
${.ALLSRC
}
231 SRCS
= ${LO_OBJECTS
:.lo
=.c
} ${libgmp_la_SOURCES} ${MPNSRC}
234 # the following are generated sources, so we have to add them
236 GENSRC
= fac_ui.h fib_table.h mpn
/fib_table.c mp_bases.h perfsqr.h
237 GENSRC
+= trialdivtab.h
239 CLEANFILES
+= ${GENSRC}
242 fac_ui.h
: gen-fac_ui.nx
243 ${.OBJDIR
}/gen-fac_ui.nx
${LONG_INT_BITS} 0 > ${.TARGET
}
245 fib_table.h
: gen-fib.nx
246 ${.OBJDIR
}/gen-fib.nx header
${LONG_INT_BITS} 0 > ${.TARGET
}
248 mpn
/fib_table.c
: gen-fib.nx
249 ${.OBJDIR
}/gen-fib.nx table
${LONG_INT_BITS} 0 > ${.TARGET
}
251 mp_bases.h
: gen-bases.nx
252 ${.OBJDIR
}/gen-bases.nx header
${LONG_INT_BITS} 0 > ${.TARGET
}
254 mpn
/mp_bases.c
: gen-bases.nx
255 ${.OBJDIR
}/gen-bases.nx table
${LONG_INT_BITS} 0 > ${.TARGET
}
257 perfsqr.h
: gen-psqr.nx
258 ${.OBJDIR
}/gen-psqr.nx
${LONG_INT_BITS} 0 > ${.TARGET
}
260 trialdivtab.h
: gen-trialdivtab.nx
261 ${.OBJDIR
}/gen-trialdivtab.nx
$(LONG_INT_BITS
) 8000 > ${.TARGET
}
263 .for _gen in fac_ui fib bases psqr trialdivtab
264 gen-
${_gen}.nx
: gen-
${_gen}.c dumbmp.c
265 ${NXCC} ${.ALLSRC
:M
*/gen-
*} -o
${.TARGET
} -lm
266 CLEANFILES
+= gen-
${_gen}.nx
269 GENDIRS
= mpf mpz mpq mpn mpn
/generic printf scanf
270 CLEANDIRS
+= ${GENDIRS}
275 .
include <bsd.lib.mk
>