1# $NetBSD: Makefile,v 1.24 2013/12/19 01:07:03 gdt Exp $ 2 3.include <bsd.init.mk> 4 5# We don't install gmp, just provide it for GCC. 6LIBISPRIVATE?= yes 7 8GMP_MACHINE_ARCH?= ${MACHINE_ARCH:S/earmv4/arm/:C/armv[5-7]/arm/} 9 10.if ${LIBISPRIVATE} != "yes" 11INCS= gmp.h 12INCSDIR= /usr/include 13.endif 14 15DIST=${.CURDIR}/../../dist 16 17LIB= gmp 18 19MPF_SRCS = \ 20 init.c init2.c inits.c set.c \ 21 set_ui.c set_si.c set_str.c set_d.c \ 22 set_z.c iset.c iset_ui.c iset_si.c \ 23 iset_str.c iset_d.c clear.c clears.c \ 24 get_str.c dump.c size.c eq.c reldiff.c \ 25 sqrt.c random2.c inp_str.c out_str.c \ 26 add.c add_ui.c sub.c sub_ui.c ui_sub.c \ 27 mul.c mul_ui.c div.c div_ui.c \ 28 cmp.c cmp_d.c cmp_ui.c cmp_si.c \ 29 mul_2exp.c div_2exp.c abs.c neg.c \ 30 set_q.c get_d.c get_d_2exp.c set_dfl_prec.c \ 31 set_prc.c set_prc_raw.c get_dfl_prec.c \ 32 get_prc.c ui_div.c sqrt_ui.c \ 33 ceilfloor.c trunc.c pow_ui.c \ 34 urandomb.c swap.c \ 35 fits_sint.c fits_slong.c fits_sshort.c \ 36 fits_uint.c fits_ulong.c fits_ushort.c \ 37 get_si.c get_ui.c \ 38 int_p.c 39 40MPZ_SRCS = \ 41 abs.c add.c add_ui.c \ 42 aorsmul.c aorsmul_i.c and.c array_init.c \ 43 bin_ui.c bin_uiui.c \ 44 cdiv_q.c cdiv_q_ui.c \ 45 cdiv_qr.c cdiv_qr_ui.c \ 46 cdiv_r.c cdiv_r_ui.c cdiv_ui.c \ 47 cfdiv_q_2exp.c cfdiv_r_2exp.c \ 48 clear.c clears.c clrbit.c \ 49 cmp.c cmp_d.c cmp_si.c cmp_ui.c \ 50 cmpabs.c cmpabs_d.c cmpabs_ui.c \ 51 com.c combit.c \ 52 cong.c cong_2exp.c cong_ui.c \ 53 divexact.c divegcd.c dive_ui.c \ 54 divis.c divis_ui.c divis_2exp.c dump.c \ 55 export.c fac_ui.c fdiv_q.c \ 56 fdiv_q_ui.c fdiv_qr.c fdiv_qr_ui.c \ 57 fdiv_r.c fdiv_r_ui.c \ 58 fdiv_ui.c fib_ui.c fib2_ui.c fits_sint.c \ 59 fits_slong.c fits_sshort.c fits_uint.c \ 60 fits_ulong.c fits_ushort.c gcd.c \ 61 gcd_ui.c gcdext.c get_d.c get_d_2exp.c \ 62 get_si.c get_str.c get_ui.c getlimbn.c \ 63 hamdist.c \ 64 import.c init.c init2.c inits.c \ 65 inp_raw.c inp_str.c invert.c \ 66 ior.c iset.c iset_d.c iset_si.c \ 67 iset_str.c iset_ui.c jacobi.c kronsz.c \ 68 kronuz.c kronzs.c kronzu.c \ 69 lcm.c lcm_ui.c lucnum_ui.c lucnum2_ui.c \ 70 millerrabin.c mod.c mul.c mul_2exp.c \ 71 mul_si.c mul_ui.c \ 72 n_pow_ui.c neg.c nextprime.c \ 73 out_raw.c out_str.c perfpow.c perfsqr.c \ 74 popcount.c pow_ui.c powm.c powm_sec.c \ 75 powm_ui.c pprime_p.c random.c random2.c \ 76 realloc.c realloc2.c remove.c \ 77 root.c rootrem.c rrandomb.c scan0.c \ 78 scan1.c set.c set_d.c set_f.c \ 79 set_q.c set_si.c set_str.c set_ui.c \ 80 setbit.c \ 81 size.c sizeinbase.c sqrt.c \ 82 sqrtrem.c sub.c sub_ui.c swap.c \ 83 tdiv_ui.c tdiv_q.c tdiv_q_2exp.c \ 84 tdiv_q_ui.c tdiv_qr.c tdiv_qr_ui.c \ 85 tdiv_r.c tdiv_r_2exp.c tdiv_r_ui.c \ 86 tstbit.c ui_pow_ui.c ui_sub.c urandomb.c \ 87 urandomm.c xor.c 88 89MPQ_SRCS = \ 90 abs.c aors.c \ 91 canonicalize.c clear.c clears.c \ 92 cmp.c cmp_si.c cmp_ui.c div.c \ 93 get_d.c get_den.c get_num.c get_str.c \ 94 init.c inits.c inp_str.c inv.c \ 95 md_2exp.c mul.c neg.c out_str.c \ 96 set.c set_den.c set_num.c \ 97 set_si.c set_str.c set_ui.c \ 98 equal.c set_z.c set_d.c \ 99 set_f.c swap.c 100 101MPN_GENERIC_SRCS = \ 102 popcount.c \ 103 hamdist.c 104 105PRINTF_SRCS = \ 106 asprintf.c asprntffuns.c \ 107 doprnt.c doprntf.c doprnti.c \ 108 fprintf.c \ 109 obprintf.c obvprintf.c obprntffuns.c \ 110 printf.c printffuns.c \ 111 snprintf.c snprntffuns.c \ 112 sprintf.c sprintffuns.c \ 113 vasprintf.c vfprintf.c vprintf.c \ 114 vsnprintf.c vsprintf.c \ 115 repl-vsnprintf.c 116 117SCANF_SRCS = \ 118 doscan.c fscanf.c fscanffuns.c \ 119 scanf.c sscanf.c sscanffuns.c \ 120 vfscanf.c vscanf.c vsscanf.c 121 122SRCS+= \ 123 assert.c compat.c errno.c extract-dbl.c invalid.c memory.c \ 124 mp_bpl.c mp_clz_tab.c mp_dv_tab.c mp_minv_tab.c mp_get_fns.c \ 125 mp_set_fns.c randclr.c randdef.c randiset.c randlc2s.c \ 126 randlc2x.c randmt.c randmts.c rands.c randsd.c randsdui.c \ 127 randbui.c randmui.c version.c nextprime.c 128 129SRCS+= tal-reent.c 130 131# these are generated 132SRCS+= fib_table.c mp_bases.c 133 134# Build the files that may have multiple identical base names under 135# different names. 136.for _dir _srcfile in \ 137 ${MPF_SRCS:C/^/mpf /} \ 138 ${MPZ_SRCS:C/^/mpz /} \ 139 ${MPQ_SRCS:C/^/mpq /} \ 140 ${PRINTF_SRCS:C/^/printf /} \ 141 ${SCANF_SRCS:C/^/scanf /} 142${_dir}_${_srcfile}: #Makefile 143 echo '#include "'${_dir}/${_srcfile}'"' > ${.TARGET} 144 145SRCS+= ${_dir}_${_srcfile} 146CLEANFILES+= ${_dir}_${_srcfile} 147 148.endfor 149 150CPPFLAGS+= -I. -I${DIST} -I${.CURDIR}/arch/${GMP_MACHINE_ARCH} \ 151 -D__GMP_WITHIN_GMP -DHAVE_CONFIG_H 152 153WITHOUT_MAN= yes 154 155DPSRCS= fac_table.h fib_table.h fib_table.c jacobitab.h mp_bases.h \ 156 mp_bases.c perfsqr.h trialdivtab.h 157 158gen-fac: gen-fac.c 159 ${HOST_CC} -o ${.OBJDIR}/gen-fac ${.ALLSRC} 160 161fac_table.h: gen-fac 162 ${.OBJDIR}/gen-fac ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fac_table.h 163 164gen-fib: gen-fib.c 165 ${HOST_CC} -o ${.OBJDIR}/gen-fib ${.ALLSRC} 166 167fib_table.h: gen-fib 168 ${.OBJDIR}/gen-fib header ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fib_table.h 169 170fib_table.c: gen-fib 171 ${.OBJDIR}/gen-fib table ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fib_table.c 172 173gen-bases: gen-bases.c 174 ${HOST_CC} -o ${.OBJDIR}/gen-bases ${.ALLSRC} -lm 175 176mp_bases.h: gen-bases 177 ${.OBJDIR}/gen-bases header ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/mp_bases.h 178 179mp_bases.c: gen-bases 180 ${.OBJDIR}/gen-bases table ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/mp_bases.c 181 182gen-jacobitab: gen-jacobitab.c 183 ${HOST_CC} -o ${.OBJDIR}/gen-jacobitab ${.ALLSRC} -lm 184 185jacobitab.h: gen-jacobitab 186 ${.OBJDIR}/gen-jacobitab > ${.OBJDIR}/jacobitab.h 187 188perfsqr.h: gen-psqr.c 189 ${HOST_CC} -o ${.OBJDIR}/gen-psqr ${.ALLSRC} 190 ${.OBJDIR}/gen-psqr ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/perfsqr.h 191 192gen-trialdivtab: gen-trialdivtab.c 193 ${HOST_CC} -o ${.OBJDIR}/gen-trialdivtab ${.ALLSRC} -lm 194 195trialdiv.c: trialdivtab.h 196trialdivtab.h: gen-trialdivtab Makefile 197 ${.OBJDIR}/gen-trialdivtab $(GMP_LIMB_BITS) 8000 > ${.OBJDIR}/trialdivtab.h 198 199CLEANFILES+= ${DPSRCS} gen-fac gen-fib gen-bases gen-jacobitab \ 200 gen-psqr gen-trialdivtab 201 202.include "${.CURDIR}/arch/${GMP_MACHINE_ARCH}/Makefile.inc" 203 204# Makefile.inc must define GMP_LIMB_BITS. 205.if !defined(GMP_LIMB_BITS) 206.BEGIN: 207 @echo "GMP_LIMB_BITS not defined!" 208 false 209.endif 210 211# XXX stuff looks for "../config.m4" 212dummy: 213 mkdir dummy 214${.OBJDIR}/config.m4: ${.CURDIR}/arch/${GMP_MACHINE_ARCH}/config.m4 215 rm -f ${.OBJDIR}/config.m4 && cp ${.CURDIR}/arch/${GMP_MACHINE_ARCH}/config.m4 ${.OBJDIR}/config.m4 216 217CLEANFILES+= config.m4 218clean: cleandummy 219cleandummy: .PHONY 220 -rmdir dummy 221 222BUILD_S_INCS= -I${.CURDIR} -I${.OBJDIR}/dummy -I${DIST}/ -I${DIST}/mpn \ 223 -I${.OBJDIR} 224 225.for _build _src in ${ASM_SRCS_LIST} 226${_build:R}.s: Makefile dummy ${.OBJDIR}/config.m4 ${DIST}/${_src} 227 ${TOOL_M4} -DCONFIG_TOP_SRCDIR=${DIST} ${BUILD_S_INCS} \ 228 ${M4FLAGS} ${M4FLAGS.${.TARGET:R}} \ 229 -DOPERATION_${.TARGET:R} ${DIST}/${_src} > ${.TARGET} 230 231SRCS+= ${_build:R}.s 232CLEANFILES+= ${_build:R}.s 233.endfor 234 235.for _build _src in ${C_SRCS_LIST} 236mpn_${_build}: Makefile 237 echo '#include "${_src}"' > ${.TARGET} 238 239CPPFLAGS.mpn_${_build}+= -DOPERATION_${_build:R} 240 241SRCS+= mpn_${_build} 242CLEANFILES+= mpn_${_build} 243.endfor 244 245.include <bsd.lib.mk> 246 247.PATH: ${DIST} \ 248 ${DIST}/rand \ 249 ${DIST}/mpn/generic \ 250 ${.CURDIR}/arch/${GMP_MACHINE_ARCH} \ 251 ${DIST}/mpf \ 252 ${DIST}/mpz 253 254# Don't warn about functions which cannot be stack smash protected as 255# there are a lot of them. 256COPTS += -Wno-stack-protector 257.if !empty(GMP_MACHINE_ARCH:M*arm*) 258COPTS += -marm 259.endif 260 261CWARNFLAGS.clang+= -Wno-unused-value -Wno-tautological-compare -Wno-parentheses 262