PageRenderTime 27ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/gnu/usr.bin/gmp/Makefile

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